From 28e0b9b18b07ab2a331a8f3b1eda5afabc280725 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期五, 28 二月 2025 09:58:45 +0800
Subject: [PATCH] #
---
src/main/resources/mapper/OrderMapper.xml | 9 +
src/main/java/com/zy/asrs/service/OrderService.java | 1
src/main/java/com/zy/asrs/mapper/LocDetlMapper.java | 3
src/main/java/com/zy/asrs/service/LocDetlService.java | 2
src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java | 5 +
src/main/java/com/zy/asrs/mapper/OrderMapper.java | 1
src/main/resources/mapper/LocDetlMapper.xml | 153 ++++++++++++++++++++++++++++++
src/main/webapp/static/js/order/order.js | 12 +-
src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java | 7 +
src/main/java/com/zy/asrs/task/OrderSyncScheduler.java | 21 +++
src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java | 49 +++++++++
src/main/java/com/zy/asrs/controller/OutController.java | 6
12 files changed, 257 insertions(+), 12 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java
index fb01a95..972d79c 100644
--- a/src/main/java/com/zy/asrs/controller/OutController.java
+++ b/src/main/java/com/zy/asrs/controller/OutController.java
@@ -80,7 +80,8 @@
if (issued <= 0.0D) {
continue;
}
- List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(), orderDetl.getBatch(), null, exist);
+ List<LocDetl> locDetls = locDetlService.queryStockAll(null, exist,orderDetl.getMatnr(), orderDetl.getBatch(),
+ orderDetl.getBrand(),orderDetl.getStandby1(),orderDetl.getStandby2(),orderDetl.getStandby3(),orderDetl.getBoxType1(),orderDetl.getBoxType2(),orderDetl.getBoxType3());
for (LocDetl locDetl : locDetls) {
if (issued > 0) {
LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(),
@@ -109,7 +110,8 @@
if (issued <= 0.0D) {
continue;
}
- List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(), orderDetl.getBatch(), null, exist);
+ List<LocDetl> locDetls = locDetlService.queryStockAll(null, exist,orderDetl.getMatnr(), orderDetl.getBatch(),
+ orderDetl.getBrand(),orderDetl.getStandby1(),orderDetl.getStandby2(),orderDetl.getStandby3(),orderDetl.getBoxType1(),orderDetl.getBoxType2(),orderDetl.getBoxType3());
for (LocDetl locDetl : locDetls) {
if (issued > 0) {
LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(),
diff --git a/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java b/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
index a764efc..bbf8ac8 100644
--- a/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
@@ -71,6 +71,9 @@
// -------------------------------------------------
List<LocDetl> queryStock(@Param("matnr")String matnr, @Param("batch")String batch, @Param("orderNo")String orderNo, @Param("locNos") Set<String> locNos);
+ List<LocDetl> queryStockAll(@Param("orderNo")String orderNo, @Param("locNos") Set<String> locNos, @Param("matnr")String matnr, @Param("batch")String batch,
+ @Param("brand")String brand,@Param("standby1")String standby1,@Param("standby2")String standby2,
+ @Param("standby3")String standby3,@Param("boxType1")String boxType1,@Param("boxType2")String boxType2,@Param("boxType3")String boxType3);
Double queryStockAnfme(String matnr, String batch);
diff --git a/src/main/java/com/zy/asrs/mapper/OrderMapper.java b/src/main/java/com/zy/asrs/mapper/OrderMapper.java
index ae0223b..69f50ce 100644
--- a/src/main/java/com/zy/asrs/mapper/OrderMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/OrderMapper.java
@@ -16,6 +16,7 @@
List<Order> selectComplete();
List<Order> selectComplete1();
+ List<Order> selectComplete99();
List<Order> selectComplete8();
int addToLogTable(Order order);
diff --git a/src/main/java/com/zy/asrs/service/LocDetlService.java b/src/main/java/com/zy/asrs/service/LocDetlService.java
index fff4fab..2bdc4f2 100644
--- a/src/main/java/com/zy/asrs/service/LocDetlService.java
+++ b/src/main/java/com/zy/asrs/service/LocDetlService.java
@@ -67,6 +67,8 @@
List<LocDetl> queryStock(String matnr, String batch, String orderNo, Set<String> locNos);
+ List<LocDetl> queryStockAll(String orderNo, Set<String> locNos,String matnr, String batch, String brand, String standby1, String standby2, String standby3, String boxType1, String boxType2, String boxType3);
+
Double queryStockAnfme(String matnr, String batch);
List<StockVo> queryStockTotal();
diff --git a/src/main/java/com/zy/asrs/service/OrderService.java b/src/main/java/com/zy/asrs/service/OrderService.java
index 1d3d2c6..878002f 100644
--- a/src/main/java/com/zy/asrs/service/OrderService.java
+++ b/src/main/java/com/zy/asrs/service/OrderService.java
@@ -26,6 +26,7 @@
List<Order> selectComplete();
List<Order> selectComplete1();
+ List<Order> selectComplete99();
List<Order> selectComplete8();
boolean addToLogTable(Order order);
diff --git a/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
index 63c203f..2e14e9b 100644
--- a/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
@@ -111,6 +111,13 @@
return this.baseMapper.queryStock(matnr, batch, orderNo, locNos);
}
+
+
+ @Override
+ public List<LocDetl> queryStockAll(String orderNo, Set<String> locNos,String matnr, String batch, String brand, String standby1, String standby2, String standby3, String boxType1, String boxType2, String boxType3) {
+ return this.baseMapper.queryStockAll(orderNo,locNos, matnr, batch,brand,standby1,standby2,standby3,boxType1,boxType2,boxType3);
+ }
+
@Override
public Double queryStockAnfme(String matnr, String batch) {
return this.baseMapper.queryStockAnfme(matnr, batch);
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
index 0b4877b..ba05f58 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
@@ -181,6 +181,11 @@
}
@Override
+ public List<Order> selectComplete99() {
+ return this.baseMapper.selectComplete99();
+ }
+
+ @Override
public List<Order> selectComplete8() {
return this.baseMapper.selectComplete8();
}
diff --git a/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java b/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
index d223b49..70a7f46 100644
--- a/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
+++ b/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
@@ -41,6 +41,23 @@
@Scheduled(cron = "0/5 * * * * ? ")
@Async("orderThreadPool")
+ public void completeAndReportOrderIssuedOnceMore() {
+ List<Order> orderList = orderService.selectComplete99();
+ for (Order order : orderList) {
+ try {
+ ReturnT<String> result = orderSyncHandler.startOrderIssuedOnceMore(order);
+ if (!result.isSuccess()) {
+ log.error("鍗曟嵁[orderNo={}]鍐嶆杞墽琛岃〃澶辫触", order.getOrderNo());
+ }
+ } catch (Exception e){
+ log.error(e.getMessage());
+ log.error("鍗曟嵁[orderNo={}]鍐嶆杞墽琛岃〃澶辫触", order.getOrderNo());
+ }
+ }
+ }
+
+ @Scheduled(cron = "0/5 * * * * ? ")
+ @Async("orderThreadPool")
public void completeAndReportOrderIssued() {
// String erpReport = Parameter.get().getErpReport();
// if (!Cools.isEmpty(erpReport) && erpReport.equals("true")) {
@@ -50,11 +67,11 @@
try {
ReturnT<String> result = orderSyncHandler.startOrderIssued(order);
if (!result.isSuccess()) {
- log.error("鍗曟嵁[orderNo={}]涓婃姤erp澶辫触", order.getOrderNo());
+ log.error("鍗曟嵁[orderNo={}]杞墽琛岃〃澶辫触", order.getOrderNo());
}
} catch (Exception e){
log.error(e.getMessage());
- log.error("鍗曟嵁[orderNo={}]涓婃姤erp澶辫触", order.getOrderNo());
+ log.error("鍗曟嵁[orderNo={}]杞墽琛岃〃澶辫触", order.getOrderNo());
}
}
// }
diff --git a/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java b/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
index b4f717d..847c54f 100644
--- a/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
@@ -46,6 +46,42 @@
private ApiLogService apiLogService;
@Autowired
private DocTypeService docTypeService;
+
+ @Transactional
+ public ReturnT<String> startOrderIssuedOnceMore(Order order) {
+ DocType docType = docTypeService.selectById(order.getDocType());
+ if (null == docType) {
+ return SUCCESS;
+ }
+
+ Order order1 = OrderInAndOutUtil.selectByNo(order.getPakinPakoutStatus$(), order.getOrderNo());
+ if (!Cools.isEmpty(order1)){
+ return FAIL.setMsg("璇风瓑寰�...璁㈠崟鎵ц妗f姝e湪杞巻鍙叉。妗堬紒锛侊紒");
+ }
+ List<OrderDetl> orderDetls = OrderInAndOutUtil.selectByOrderId(order.getPakinPakoutStatus$(), order.getId());
+ if (!Cools.isEmpty(orderDetls) || !orderDetls.isEmpty()) {
+ return FAIL.setMsg("璇风瓑寰�...璁㈠崟鎵ц鏄庣粏妗f姝e湪杞巻鍙叉。妗堬紒锛侊紒");
+ }
+
+ // 鍗曟嵁鏄庣粏妗�
+ List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId());
+ for (OrderDetl orderDetl : orderDetlList){
+ if (orderDetl.getQty().equals(0D)){
+ continue;
+ }
+ orderDetl.setWorkQty(orderDetl.getQty());
+ orderDetl.setAnfme(orderDetl.getAnfme()-orderDetl.getQty());
+ orderDetl.setQty(0D);
+ orderDetlService.updateById(orderDetl);
+ }
+
+ // 淇敼璁㈠崟鐘舵�� 99.鍐嶆浣滀笟 ===>> 1.寰呬綔涓�
+ if (!orderService.updateSettle(order.getId(), 1L, null)) {
+ throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
+ }
+ return SUCCESS;
+ }
+
@Transactional
public ReturnT<String> startOrderIssued(Order order) {
DocType docType = docTypeService.selectById(order.getDocType());
@@ -84,6 +120,7 @@
}
return SUCCESS;
}
+
@Transactional
public ReturnT<String> startOrderInAndOutUtil(Order order) {
DocType docType = docTypeService.selectById(order.getDocType());
@@ -133,6 +170,7 @@
if (null == docType) {
return SUCCESS;
}
+ long settle = 6L;
List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
// 鍏ュ簱瀹屾垚涓婃姤
if (docType.getPakin() == 1) {
@@ -141,9 +179,13 @@
pakinParam.setLgortFrom("5008");
pakinParam.setLgortTo("5006");
for (OrderDetl orderDetl : orderDetls) {
+ if (!orderDetl.getQty().equals(orderDetl.getAnfme())){
+ settle = 99L;//浜屾鐢熸垚鍗曟嵁
+ }
String serial = Cools.isEmpty(orderDetl.getBatch()) ? "" : orderDetl.getBatch();
pakinParam.getList().add(new MesPakinParam.Detl(orderDetl.getMatnr() + (Cools.isEmpty(serial) ? "" : "-" + serial), orderDetl.getAnfme()));
}
+
String response = "";
boolean success = false;
try {
@@ -157,7 +199,7 @@
if (jsonObject.getInteger("code").equals(200)) {
success = true;
// 淇敼璁㈠崟鐘舵�� 4.瀹屾垚 ===>> 6.宸蹭笂鎶�
- if (!orderService.updateSettle(order.getId(), 6L, null)) {
+ if (!orderService.updateSettle(order.getId(), settle, null)) {
throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
}
} else {
@@ -195,6 +237,9 @@
}
pakoutParam.setOrderNo(order.getOrderNo());
for (OrderDetl orderDetl : orderDetls) {
+ if (!orderDetl.getQty().equals(orderDetl.getAnfme())){
+ settle = 99L;//浜屾鐢熸垚鍗曟嵁
+ }
String serial = Cools.isEmpty(orderDetl.getBatch()) ? "" : orderDetl.getBatch();
pakoutParam.getList().add(new MesPakoutParam.Detl(orderDetl.getMatnr() + (Cools.isEmpty(serial) ? "" : "-" + serial), orderDetl.getAnfme()));
}
@@ -211,7 +256,7 @@
if (jsonObject.getInteger("code").equals(200)) {
success = true;
// 淇敼璁㈠崟鐘舵�� 4.瀹屾垚 ===>> 6.宸蹭笂鎶�
- if (!orderService.updateSettle(order.getId(), 6L, null)) {
+ if (!orderService.updateSettle(order.getId(), settle, null)) {
throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
}
} else {
diff --git a/src/main/resources/mapper/LocDetlMapper.xml b/src/main/resources/mapper/LocDetlMapper.xml
index e248a83..958190a 100644
--- a/src/main/resources/mapper/LocDetlMapper.xml
+++ b/src/main/resources/mapper/LocDetlMapper.xml
@@ -119,6 +119,72 @@
</otherwise>
</choose>
</sql>
+ <sql id="batchSeqA">
+ <choose>
+ <when test="batch != null and batch != ''">
+ and a.batch = #{batch}
+ </when>
+ <otherwise>
+ and (a.batch IS NULL OR a.batch = '')
+ </otherwise>
+ </choose>
+ <choose>
+ <when test="brand != null and brand != ''">
+ and a.brand = #{brand}
+ </when>
+ <otherwise>
+ and (a.brand IS NULL OR a.brand = '')
+ </otherwise>
+ </choose>
+ <choose>
+ <when test="standby1 != null and standby1 != ''">
+ and a.standby1 = #{standby1}
+ </when>
+ <otherwise>
+ and (a.standby1 IS NULL OR a.standby1 = '')
+ </otherwise>
+ </choose>
+ <choose>
+ <when test="standby2 != null and standby2 != ''">
+ and a.standby2 = #{standby2}
+ </when>
+ <otherwise>
+ and (a.standby2 IS NULL OR a.standby2 = '')
+ </otherwise>
+ </choose>
+ <choose>
+ <when test="standby3 != null and standby3 != ''">
+ and a.standby3 = #{standby3}
+ </when>
+ <otherwise>
+ and (a.standby3 IS NULL OR a.standby3 = '')
+ </otherwise>
+ </choose>
+ <choose>
+ <when test="boxType1 != null and boxType1 != ''">
+ and a.box_type1 = #{boxType1}
+ </when>
+ <otherwise>
+ and (a.box_type1 IS NULL OR a.box_type1 = '')
+ </otherwise>
+ </choose>
+ <choose>
+ <when test="boxType2 != null and boxType2 != ''">
+ and a.box_type2 = #{boxType2}
+ </when>
+ <otherwise>
+ and (a.box_type2 IS NULL OR a.box_type2 = '')
+ </otherwise>
+ </choose>
+ <choose>
+ <when test="boxType3 != null and boxType3 != ''">
+ and a.box_type3 = #{boxType3}
+ </when>
+ <otherwise>
+ and (a.box_type3 IS NULL OR a.box_type3 = '')
+ </otherwise>
+ </choose>
+ </sql>
<sql id="batchSeqNew">
<choose>
<when test="batch != null and batch != ''">
@@ -456,6 +522,93 @@
desc
</select>
+ <select id="queryStockAll" resultMap="BaseResultMap">
+ select a.*
+ from asr_loc_detl a
+ left join asr_loc_mast b on a.loc_no = b.loc_no
+ where 1=1
+ and b.loc_sts = 'F'
+ and a.matnr = #{matnr}
+ <!-- <choose>-->
+ <!-- <when test="batch != null and batch != ''">-->
+ <!-- and a.batch = #{batch}-->
+ <!-- </when>-->
+ <!-- <otherwise>-->
+ <!-- and (a.batch IS NULL OR a.batch = '')-->
+ <!-- </otherwise>-->
+ <!-- </choose>-->
+ <if test="orderNo != null and orderNo != ''">
+ and a.order_no = #{orderNo}
+ </if>
+
+ <include refid="batchSeqA"></include>
+
+
+ <if test="locNos != null and locNos.size > 0">
+ and b.loc_no not in
+ <foreach item="item" collection="locNos" index="index" separator="," open="(" close=")">
+ #{item}
+ </foreach>
+ </if>
+
+ order by
+ DATEPART(yyyy,a.modi_time),DATEPART(mm,a.modi_time),DATEPART(dd,a.modi_time), a.anfme
+ desc,
+ NEWID(),
+ case
+ when (left(a.loc_no, 2) = '01') then 0
+ when (left(a.loc_no, 2) = '02') then 1
+ when (left(a.loc_no, 2) = '03') then 1
+ when (left(a.loc_no, 2) = '04') then 0
+ when (left(a.loc_no, 2) = '05') then 0
+ when (left(a.loc_no, 2) = '06') then 1
+ when (left(a.loc_no, 2) = '07') then 1
+ when (left(a.loc_no, 2) = '08') then 0
+ when (left(a.loc_no, 2) = '09') then 0
+ when (left(a.loc_no, 2) = '10') then 1
+ when (left(a.loc_no, 2) = '11') then 1
+ when (left(a.loc_no, 2) = '12') then 0
+ when (left(a.loc_no, 2) = '13') then 0
+ when (left(a.loc_no, 2) = '14') then 1
+ when (left(a.loc_no, 2) = '15') then 1
+ when (left(a.loc_no, 2) = '16') then 0
+ when (left(a.loc_no, 2) = '17') then 0
+ when (left(a.loc_no, 2) = '18') then 1
+ when (left(a.loc_no, 2) = '19') then 1
+ when (left(a.loc_no, 2) = '20') then 0
+ when (left(a.loc_no, 2) = '21') then 0
+ when (left(a.loc_no, 2) = '22') then 1
+ when (left(a.loc_no, 2) = '23') then 1
+ when (left(a.loc_no, 2) = '24') then 0
+ when (left(a.loc_no, 2) = '25') then 0
+ when (left(a.loc_no, 2) = '26') then 1
+ when (left(a.loc_no, 2) = '27') then 1
+ when (left(a.loc_no, 2) = '28') then 0
+ when (left(a.loc_no, 2) = '29') then 0
+ when (left(a.loc_no, 2) = '30') then 1
+ when (left(a.loc_no, 2) = '31') then 1
+ when (left(a.loc_no, 2) = '32') then 0
+ when (left(a.loc_no, 2) = '33') then 0
+ when (left(a.loc_no, 2) = '34') then 1
+ when (left(a.loc_no, 2) = '35') then 1
+ when (left(a.loc_no, 2) = '36') then 0
+ when (left(a.loc_no, 2) = '37') then 0
+ when (left(a.loc_no, 2) = '38') then 1
+ when (left(a.loc_no, 2) = '39') then 1
+ when (left(a.loc_no, 2) = '40') then 0
+ when (left(a.loc_no, 2) = '41') then 0
+ when (left(a.loc_no, 2) = '42') then 1
+ when (left(a.loc_no, 2) = '43') then 1
+ when (left(a.loc_no, 2) = '44') then 0
+ when (left(a.loc_no, 2) = '45') then 0
+ when (left(a.loc_no, 2) = '46') then 1
+ when (left(a.loc_no, 2) = '47') then 1
+ when (left(a.loc_no, 2) = '48') then 0
+ else 0
+ end
+ desc
+ </select>
+
<select id="queryStockAnfme" resultType="java.lang.Double">
select sum(anfme) as count from man_loc_detl
where 1=1
diff --git a/src/main/resources/mapper/OrderMapper.xml b/src/main/resources/mapper/OrderMapper.xml
index 0e7e9a8..f8c5070 100644
--- a/src/main/resources/mapper/OrderMapper.xml
+++ b/src/main/resources/mapper/OrderMapper.xml
@@ -73,6 +73,15 @@
order by create_time asc
</select>
+ <select id="selectComplete99" resultMap="BaseResultMap">
+ select top 5 *
+ from man_order
+ where 1=1
+ and settle = 99
+ and status = 1
+ order by create_time asc
+ </select>
+
<select id="selectComplete8" resultMap="BaseResultMap">
select top 5 *
from man_order
diff --git a/src/main/webapp/static/js/order/order.js b/src/main/webapp/static/js/order/order.js
index ad09170..6345ea7 100644
--- a/src/main/webapp/static/js/order/order.js
+++ b/src/main/webapp/static/js/order/order.js
@@ -124,10 +124,11 @@
{type: 'numbers'},
{field: 'matnr', title: '鍟嗗搧缂栫爜', width: 160},
{field: 'maktx', title: '鍟嗗搧鍚嶇О', width: 160},
+ {field: 'specs', title: '瑙勬牸'},
{field: 'batch', title: '鎵瑰彿'},
- {field: 'anfme', title: '鏁伴噺'},
- {field: 'workQty', title: '浣滀笟鏁伴噺'},
- {field: 'qty', title: '瀹屾垚鏁伴噺', style: 'font-weight: bold'},
+ {field: 'anfme', title: '寰呭畬缁撴暟閲�'},
+ {field: 'qty', title: '寰呬笂鎶ユ暟閲�', style: 'font-weight: bold'},
+ {field: 'workQty', title: '宸蹭笂鎶ユ暟閲�'},
// {field: 'unit', title: '鍗曚綅'},
// {
// field: 'createTime$', title: '鍒涘缓鏃堕棿', sort: true, templet: function (d) {
@@ -135,8 +136,7 @@
// }, width: 180
// },
// {field: 'inQty', title: '宸插叆搴撻噺'},
- // {field: 'color', title: '棰滆壊'},
- {field: 'specs', title: '瑙勬牸'}
+ // {field: 'color', title: '棰滆壊'}
]],
request: {
pageName: 'curr',
@@ -501,7 +501,7 @@
var traceCharts = echarts.init(document.getElementById('wrkTraceCharts'));
var traceOptions = {
title: {
- text: '鎬婚噺/浣滀笟/瀹屾垚', x: 'center', y: '38%',
+ text: '浣滀笟/瀹岀粨/涓婃姤', x: 'center', y: '38%',
textStyle: {fontSize: 18, color: '#262626', fontWeight: 'normal'},
subtextStyle: {fontSize: 36, color: '#10B4E8'},
itemGap: 20
--
Gitblit v1.9.1