From f4be36f30a802e70038bde438d1689eb749032fd Mon Sep 17 00:00:00 2001
From: zhangchao <zc857179121@qq.com>
Date: 星期五, 22 十一月 2024 08:49:19 +0800
Subject: [PATCH] 采用定长的线程池,防止定时任务的异常导致大量线程被占用
---
src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java | 112 +++++++++++++++++++++++++++++++++++--------------------
1 files changed, 71 insertions(+), 41 deletions(-)
diff --git a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
index 4f5abc1..9733c90 100644
--- a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
@@ -5,6 +5,8 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
+import com.core.common.R;
+import com.core.common.SnowflakeIdWorker;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.MesBuyPakinReportParam;
@@ -24,6 +26,7 @@
import java.io.IOException;
import java.util.*;
+import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@Slf4j
@@ -46,7 +49,7 @@
add(101);
add(12);
add(53);
- add(101);
+ add(103);
add(108);
add(111);
add(112);
@@ -57,6 +60,8 @@
@Value("${agvBasDev.maxWorkNum}")
private int maxWrokNum;
+ @Value("${mes.report}")
+ private Boolean flag;
@Value("${mes.url}")
private String url;
@Value("${mes.getTokenUrl}")
@@ -105,12 +110,18 @@
private DocTypeService docTypeService;
@Autowired
private OrderDetlService orderDetlService;
+ @Autowired
+ private SnowflakeIdWorker snowflakeIdWorker;
+ @Autowired
+ private FlowLogService flowLogService;
@Transactional
public ReturnT<String> completedPutWayWrk(AgvWrkMast agvWrkMast) {
//鐢ㄤ簬涓婃姤mes鐨勫伐浣滄。鏄庣粏
List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
+ long flowId = snowflakeIdWorker.nextId();
+ Date now = new Date();
try {
int wrkNo = agvWrkMast.getWrkNo();
String barcode = agvWrkMast.getBarcode();
@@ -169,6 +180,34 @@
AgvLocDetl agvLocDetl = agvLocDetlService.selectByMatnrAndBatchAndCsocodeAndisoCode(agvWrkMast.getLocNo(), agvWrkDetl.getMatnr(), agvWrkDetl.getBatch(), agvWrkDetl.getThreeCode(), agvWrkDetl.getDeadTime());
if (!Cools.isEmpty(agvLocDetl)) {
double updateAnfme = agvLocDetl.getAnfme() - agvWrkDetl.getAnfme();
+// OrderDetl orderDetl = orderDetlService.selectItem(agvWrkDetl.getOrderNo(), agvWrkDetl.getMatnr(), agvWrkDetl.getThreeCode());
+// FlowLog flowLog = new FlowLog();
+// flowLog.setFid(String.valueOf(flowId));
+// flowLog.setSpare2(String.valueOf(agvWrkMast.getWrkNo()));
+// flowLog.setLocNo(agvWrkMast.getLocNo());
+// flowLog.setSpare1(agvWrkDetl.getSuppCode());
+// flowLog.setOpType(53L);
+// flowLog.setOrderNo(agvWrkDetl.getOrderNo());
+// flowLog.setThreeCode(agvWrkDetl.getThreeCode());
+// flowLog.setMatnr(agvWrkDetl.getMatnr());
+// flowLog.setMaktx(agvWrkDetl.getMaktx());
+//
+// flowLog.setOrderPrevious(orderDetl.getAnfme());
+// flowLog.setOrderCurrent(orderDetl.getAnfme());
+// flowLog.setOrderChanged(0.0);
+//
+// flowLog.setQtyPrevious(orderDetl.getQty());
+// flowLog.setQtyCurrent(updateAnfme);
+// flowLog.setQtyChanged(agvWrkDetl.getAnfme());
+//
+// flowLog.setLocPrevious(agvLocDetl.getAnfme());
+// flowLog.setLocCurrent(updateAnfme);
+// flowLog.setLocChanged(agvWrkDetl.getAnfme());
+//
+// flowLog.setAppeTime(now);
+// if (!flowLogService.insert(flowLog)) {
+// throw new CoolException("鍚屾鍗婃垚鍝佽皟鎷ㄥ崟娴佹按璁板綍澶辫触");
+// }
agvLocDetlService.updateAnfme(updateAnfme, agvLocDetl.getLocNo(), agvLocDetl.getMatnr(), agvLocDetl.getBatch(), agvLocDetl.getThreeCode(), agvLocDetl.getDeadTime());
}
//AgvLocDetl agvLocDetl = agvLocDetlService.selectLocdetl(agvWrkMast.getLocNo(),agvWrkDetl.getMatnr(),agvWrkDetl.getBatch(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime());
@@ -178,7 +217,6 @@
agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue());
break;
case 57:
- Date now = new Date();
// 鏇存柊搴撳瓨鏄庣粏
List<AgvWrkDetl> wrkDetlList = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
wrkDetlList.forEach(agvWrkDetl -> {
@@ -297,12 +335,12 @@
if (!isJSON(orderNo)) {
//妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚
- orderService.checkComplete(orderNo, agvWrkMast.getLocNo());
+ orderService.checkComplete(orderNo, agvWrkMast.getPltType());
} else {
List<Map> maps = JSONArray.parseArray(orderNo, Map.class);
maps.forEach(map -> {
String o = map.get("orderNo").toString();
- orderService.checkComplete(o, agvWrkMast.getLocNo());
+ orderService.checkComplete(o, agvWrkMast.getPltType());
});
}
@@ -318,11 +356,7 @@
}
//TODO
//鏆傛椂鍔犱笂trycatch
- try {
- reportMes(agvWrkMast, agvWrkDetlListOld);
- } catch (Exception e) {
- e.printStackTrace();
- }
+ reportMes(agvWrkMast, agvWrkDetlListOld);
return SUCCESS;
}
@@ -375,6 +409,7 @@
wrkMast.setAppeTime(now);
wrkMast.setModiUser(9527L);
wrkMast.setModiTime(now);
+ wrkMast.setPltType(agvWrkMast.getPltType());
wrkMast.setLogErrMemo("completedCarryWrk");
if (!agvWrkMastService.insertByIncrease(wrkMast)) {
throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
@@ -404,12 +439,12 @@
agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo));
if (!isJSON(orderNo)) {
//妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚
- orderService.checkComplete(orderNo, agvWrkMast.getLocNo());
+ orderService.checkComplete(orderNo, agvWrkMast.getPltType());
} else {
List<Map> maps = JSONArray.parseArray(orderNo, Map.class);
maps.forEach(map -> {
String o = map.get("orderNo").toString();
- orderService.checkComplete(o, agvWrkMast.getLocNo());
+ orderService.checkComplete(o, agvWrkMast.getPltType());
});
}
@@ -425,6 +460,7 @@
reportMes(agvWrkMast, agvWrkDetlListOld);
return SUCCESS;
}
+
@Transactional
public ReturnT<String> completedCarryWrk2(AgvWrkMast agvWrkMast) {
@@ -461,12 +497,12 @@
agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo));
if (!isJSON(orderNo)) {
//妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚
- orderService.checkComplete(orderNo, agvWrkMast.getLocNo());
+ orderService.checkComplete(orderNo, agvWrkMast.getPltType());
} else {
List<Map> maps = JSONArray.parseArray(orderNo, Map.class);
maps.forEach(map -> {
String o = map.get("orderNo").toString();
- orderService.checkComplete(o, agvWrkMast.getLocNo());
+ orderService.checkComplete(o, agvWrkMast.getPltType());
});
}
//涓婃姤mes
@@ -479,6 +515,7 @@
} catch (Exception e) {
log.error("" + e.getMessage());
}
+ //TODO 寮犺秴
reportMes(agvWrkMast, agvWrkDetlListOld);
return SUCCESS;
}
@@ -504,7 +541,7 @@
return SUCCESS;
} catch (Exception e) {
//TODO
- //log.error("淇敼AGV鍏ュ簱閫氱煡妗g姸鎬佸叆鍑虹姸鎬佷负Y" + e.getMessage());
+ log.error("淇敼AGV鍏ュ簱閫氱煡妗g姸鎬佸叆鍑虹姸鎬佷负Y" + e.getMessage());
}
return FAIL;
}
@@ -654,20 +691,26 @@
}
private void reportMes(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls) {
+ if (!flag) {
+ return;
+ }
if (Cools.isEmpty(agvWrkDetls)) {
return;
}
//鍖哄垎涓嶅悓浠诲姟绫诲瀷鐨勪笂鎶ユ柟寮�
if (IN_TYPE_LIST.contains(agvWrkMast.getIoType())) {
- reportMesPakinOrder(agvWrkMast, agvWrkDetls);
+ String barcode = agvWrkMast.getBarcode();
+ if (barcode.startsWith("20") || barcode.startsWith("21") || barcode.startsWith("40")) {
+ reportMesPakinOrder(agvWrkMast, agvWrkDetls);
+ }
}
- if (OUT_TYPE_List.contains(agvWrkMast.getIoType())) {
- reportMesPakoutOrder(agvWrkMast, agvWrkDetls);
- }
- if (MOVE_TYPE_List.contains(agvWrkMast.getIoType())) {
- generateMesParam(agvWrkMast, agvWrkDetls);
- }
+// if (OUT_TYPE_List.contains(agvWrkMast.getIoType())) {
+// reportMesPakoutOrder(agvWrkMast, agvWrkDetls);
+// }
+// if (MOVE_TYPE_List.contains(agvWrkMast.getIoType())) {
+// generateMesParam(agvWrkMast, agvWrkDetls);
+// }
}
private void reportMesPakinOrder(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls) {
@@ -704,9 +747,9 @@
} else {
MesPakinReportParam mesPakinReportParam = new MesPakinReportParam();
- mesPakinReportParam.setInboundOrderCode(agvWrkDetl.getOrderNo());
+ //mesPakinReportParam.setInboundOrderCode(agvWrkDetl.getOrderNo());
mesPakinReportParam.setBizType("0");
- mesPakinReportParam.setInventoryAttr(new MesPakinReportParam.InventoryAttr(agvWrkDetl.getThreeCode().trim(), agvWrkDetl.getMatnr(), agvWrkMast.getLocNo()));
+ mesPakinReportParam.setInventoryAttr(new MesPakinReportParam.InventoryAttr(null, agvWrkDetl.getMatnr(), agvWrkMast.getLocNo()));
mesPakinReportParam.setNoQrCodeExecAmount(new MesPakinReportParam.NoQrCodeExecAmount(agvWrkDetl.getAnfme(), agvWrkDetl.getUnit(), null));
doHttpRequest(mesPakinReportParam, getMesTokenInfo(), "涓婃姤mes鍏ュ簱淇℃伅", url, pakinReportPath, null, "127.0.0.1");
@@ -826,18 +869,13 @@
boolean success = false;
try {
- response = new HttpHandler.Builder()
- .setUri(url)
- .setPath(path)
- .setHeaders(headParam)
- .setJson(JSONObject.toJSONString(requestParam))
- .setHttps(true)
- .build()
- .doPost();
+ response = new HttpHandler.Builder().setUri(url).setPath(path).setTimeout(30, TimeUnit.SECONDS).setHeaders(headParam).setJson(JSONObject.toJSONString(requestParam)).setHttps(true).build().doPost();
JSONObject jsonObject = JSON.parseObject(response);
if (Cools.isEmpty(jsonObject.get("code")) || Integer.parseInt(jsonObject.get("code").toString()) != 200) {
- throw new CoolException(jsonObject.get("dsc").toString());
+ log.info("mes鎺ュ彛璋冪敤澶辫触锛岃繑鍥炰俊鎭細" + jsonObject);
+ //TODO 寮犺秴
+ throw new CoolException("mes鎺ュ彛璋冪敤澶辫触锛岃繑鍥炰俊鎭�:" + jsonObject);
}
success = true;
return jsonObject;
@@ -854,15 +892,7 @@
log.error(e.getMessage());
throw new CoolException(e.getMessage());
} finally {
- apiLogService.save(
- namespace,
- url + path,
- appkey,
- ip,
- JSON.toJSONString(JSONObject.toJSONString(requestParam)),
- response,
- success
- );
+ apiLogService.save(namespace, url + path, appkey, ip, JSON.toJSONString(JSONObject.toJSONString(requestParam)), response, success);
}
}
--
Gitblit v1.9.1