From d635a99e20e207b40b16b8536c02a0b74df63c61 Mon Sep 17 00:00:00 2001
From: zzgtfwq <zzgtfwq>
Date: 星期一, 23 三月 2026 14:19:10 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 265 +++++++++++++++++++++++++++++-----------------------
1 files changed, 148 insertions(+), 117 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index 0ea3a1f..d5f5afb 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -10,6 +10,7 @@
import com.zy.asrs.domain.enums.LedErrorAreaType;
import com.zy.asrs.domain.enums.TaskStatusType;
import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.param.InboundTaskApplyParam;
import com.zy.asrs.mapper.*;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.*;
@@ -82,9 +83,13 @@
private BasDevpPositionService basDevpPositionService;
@Autowired
private TaskWrkService taskWrkService;
+ @Autowired
+ private OpenService openService;
@Value("${wms.url}")
private String wmsUrl;
+ @Value("${wms.urlWMS}")
+ private String urlWMS;
@Value("${inventory.number}")
private Integer inventoryNumber;
@@ -137,16 +142,6 @@
if (barcodeThread == null) {
continue;
}
- String barcode = barcodeThread.getBarcode();
-
- if (!Cools.isEmpty(barcode)) {
-// log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
- if ("00000000".endsWith(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || !CodeDetectionUtil.barcodeDetection(barcode)) {
- continue;
- }
- } else {
- continue;
- }
// 鑾峰彇鍏ュ簱绔欎俊鎭�
// SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
@@ -156,6 +151,17 @@
continue;
} else {
staProtocol = staProtocol.clone();
+ }
+
+ String barcode = barcodeThread.getBarcode();
+
+ if (!Cools.isEmpty(barcode)) {
+// log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
+ if ("00000000".endsWith(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || !CodeDetectionUtil.barcodeDetection(barcode)) {
+ continue;
+ }
+ } else {
+ continue;
}
// 灏哄妫�娴嬪紓甯�
@@ -191,6 +197,15 @@
}
// 閫�鍥�
if (back) {
+ barcodeThread.setBarcode("");
+ // 鑾峰彇宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(3);
+
+ staProtocol.setWorkNo(workNo);
+ staProtocol.setStaNo(inSta.getBackSta().shortValue());
+
+ devpThread.setPakMk(staProtocol.getSiteId(), false,201);
+ boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
// led 寮傚父鏄剧ず
LedErrorThreadUtil.ledErrorThread(errMsg,inSta.getLed(), LedErrorAreaType.FOUR_BARCODE.getDesc());
continue;
@@ -207,7 +222,7 @@
&& staProtocol.isLoading()
&& staProtocol.isInEnable()
&& !staProtocol.isEmptyMk()
- && staProtocol.getWorkNo() == 0
+ && staProtocol.getWorkNo() == 9999
&& staProtocol.isPakMk()) {// && !Cools.isEmpty(barcode)) {
// if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode)) {
@@ -248,46 +263,81 @@
try {
- LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
-
- SearchLocParam param = new SearchLocParam();
- param.setBarcode(barcode);
- param.setIoType(1);
- param.setSourceStaNo(inSta.getStaNo());
- param.setLocType1(locTypeDto.getLocType1());
+ // 鏇挎崲涓烘柊鐨勪换鍔$敵璇锋帴鍙�
+ InboundTaskApplyParam applyParam = new InboundTaskApplyParam();
+ applyParam.setBarcode(barcode);
+ applyParam.setStationCode(String.valueOf(inSta.getStaNo()));
+ applyParam.setStatus(1); // 1:婊℃澘
+
String response = new HttpHandler.Builder()
- .setUri(wmsUrl)
- .setPath("/rpc/pakin/loc/v1")
- .setJson(JSON.toJSONString(param))
+ .setUri(urlWMS)
+ .setPath("/inboundTaskApply")
+ .setJson(JSON.toJSONString(applyParam))
.build()
.doPost();
+
+ // 瑙f瀽鍝嶅簲锛屽彧纭鐢宠鏄惁鎴愬姛
JSONObject jsonObject = JSON.parseObject(response);
- if (jsonObject.getInteger("code").equals(200)) {
- StartupDto dto = jsonObject.getObject("data", StartupDto.class);
-
-// LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
+ if (jsonObject != null && jsonObject.getInteger("code") != null && jsonObject.getInteger("code") == 200) {
+ log.info("鍏ュ簱浠诲姟鐢宠鎴愬姛锛岀瓑寰匴MS涓嬪彂浠诲姟銆傛潯鐮侊細{}锛岀珯鐐癸細{}", barcode, inSta.getStaNo());
+ devpThread.setPakMk(staProtocol.getSiteId(), false,9998);
- barcodeThread.setBarcode("");
- staProtocol.setWorkNo(dto.getWorkNo());
-
-// if(Cools.isEmpty(dto.getRgvNo()) || dto.getRgvNo() <= 0) {
-// staProtocol.setStaNo(607);//607
-// } else {//濡傛灉瀛樺湪RGV缂栧彿锛岃鏄庨渶瑕丷GV鎺ラ┏锛屽厛涓嬪彂浠诲姟鍒癛GV婧愮珯
- staProtocol.setStaNo(dto.getRgvSstaNo().shortValue());
-// }
-
- devpThread.setPakMk(staProtocol.getSiteId(), false,283);
- boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
- if (!result) {
- LedErrorThreadUtil.ledErrorThread("鏇存柊plc绔欑偣淇℃伅澶辫触!绔欑偣鍙凤細"+inSta.getStaNo(),inSta.getLed(), LedErrorAreaType.ONE_OTHER.getDesc());
- throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
- }
} else {
+ // // 鑾峰彇宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(3);
+
+ staProtocol.setWorkNo(workNo);
+ staProtocol.setStaNo(inSta.getBackSta().shortValue());
+
+ devpThread.setPakMk(staProtocol.getSiteId(), false,201);
+ boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
// led 寮傚父鏄剧ず
LedErrorThreadUtil.ledErrorThread("鍏ュ簱璇锋眰澶辫触"+jsonObject.getInteger("code"),inSta.getLed(), LedErrorAreaType.ONE_OTHER.getDesc());
- log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
+ log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/inboundTaskApply", JSON.toJSONString(applyParam), response);
}
+
+ // 鍘熸湁閫昏緫娉ㄩ噴鎺�
+// LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
+//
+// SearchLocParam param = new SearchLocParam();
+// param.setBarcode(barcode);
+// param.setIoType(1);
+// param.setSourceStaNo(inSta.getStaNo());
+// param.setLocType1(locTypeDto.getLocType1());
+// String response = new HttpHandler.Builder()
+// .setUri(wmsUrl)
+// .setPath("/rpc/pakin/loc/v1")
+// .setJson(JSON.toJSONString(param))
+// .build()
+// .doPost();
+// JSONObject jsonObject = JSON.parseObject(response);
+// if (jsonObject.getInteger("code").equals(200)) {
+// StartupDto dto = jsonObject.getObject("data", StartupDto.class);
+//
+// barcodeThread.setBarcode("");
+// staProtocol.setWorkNo(dto.getWorkNo());
+// staProtocol.setStaNo(wrkMast.getStaNoSou$().shortValue());
+//
+// devpThread.setPakMk(staProtocol.getSiteId(), false,283);
+// boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+// if (!result) {
+// LedErrorThreadUtil.ledErrorThread("鏇存柊plc绔欑偣淇℃伅澶辫触!绔欑偣鍙凤細"+inSta.getStaNo(),inSta.getLed(), LedErrorAreaType.ONE_OTHER.getDesc());
+// throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+// }
+// } else {
+// // 鑾峰彇宸ヤ綔鍙�
+// int workNo = commonService.getWorkNo(3);
+//
+// staProtocol.setWorkNo(workNo);
+// staProtocol.setStaNo(inSta.getBackSta().shortValue());
+//
+// devpThread.setPakMk(staProtocol.getSiteId(), false,201);
+// boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+// // led 寮傚父鏄剧ず
+// LedErrorThreadUtil.ledErrorThread("鍏ュ簱璇锋眰澶辫触"+jsonObject.getInteger("code"),inSta.getLed(), LedErrorAreaType.ONE_OTHER.getDesc());
+// log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
+// }
} catch (Exception e) {
e.printStackTrace();
@@ -317,36 +367,35 @@
}
// 绔欑偣鏉′欢鍒ゆ柇
if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()
- && staProtocol.isEmptyMk() && ((staProtocol.getWorkNo() > 9000 && staProtocol.getWorkNo() <= 9999) || staProtocol.getWorkNo()==0) && staProtocol.isPakMk()) {
+ && staProtocol.isEmptyMk() && ((staProtocol.getWorkNo() > 9000 && staProtocol.getWorkNo() <= 9997) || staProtocol.getWorkNo()==0) && staProtocol.isPakMk()) {
try {
LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
- SearchLocParam param = new SearchLocParam();
- param.setIoType(10);
- param.setSourceStaNo(emptyInSta.getStaNo());
- param.setLocType1(locTypeDto.getLocType1());
+ InboundTaskApplyParam applyParam = new InboundTaskApplyParam();
+ applyParam.setBarcode(null);
+ applyParam.setStationCode(String.valueOf(emptyInSta.getStaNo()));
+ applyParam.setStatus(0); // 1:婊℃澘
+
String response = new HttpHandler.Builder()
.setUri(wmsUrl)
- .setPath("/rpc/pakin/loc/v1")
- .setJson(JSON.toJSONString(param))
+ .setPath("/inboundTaskApply")
+ .setJson(JSON.toJSONString(applyParam))
.build()
.doPost();
- JSONObject jsonObject = JSON.parseObject(response);
- if (jsonObject.getInteger("code").equals(200)) {
- StartupDto dto = jsonObject.getObject("data", StartupDto.class);
- // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
- staProtocol.setWorkNo(dto.getWorkNo());
- staProtocol.setStaNo(dto.getStaNoSou$(dto.getStaNo(),staProtocol.getSiteId()).shortValue());
- devpThread.setPakMk(staProtocol.getSiteId(), false,4087);
+ // 瑙f瀽鍝嶅簲锛屽彧纭鐢宠鏄惁鎴愬姛
+ JSONObject jsonObject = JSON.parseObject(response);
+ if (jsonObject != null && jsonObject.getInteger("code") != null && jsonObject.getInteger("code") == 200) {
+ log.info("鍏ュ簱浠诲姟鐢宠鎴愬姛锛岀瓑寰匴MS涓嬪彂浠诲姟锛岀珯鐐癸細{}",emptyInSta.getStaNo());
+ staProtocol.setWorkNo(9998);//璁剧疆涓�9998绛夊緟涓婁綅鏈轰笅鍙戜换鍔�
boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
if (!result) {
LedErrorThreadUtil.ledErrorThread("鏇存柊plc绔欑偣淇℃伅澶辫触!绔欑偣鍙凤細"+emptyInSta.getStaNo(),emptyInSta.getLed(), LedErrorAreaType.ONE_OTHER.getDesc());
throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
}
} else {
- log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
+ log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/inboundTaskApply", JSON.toJSONString(applyParam), response);
}
} catch (Exception e) {
e.printStackTrace();
@@ -365,19 +414,18 @@
// 閬嶅巻鎷f枡鍏ュ簱鍙�
for (DevpSlave.Sta pickSta : devp.getPickSta()) {
// // 鑾峰彇鏉$爜鎵弿浠俊鎭�
-// BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode());
-// if (barcodeThread == null) {
-// continue;
-// }
-// String barcode = barcodeThread.getBarcode();
-// if(!Cools.isEmpty(barcode)) {
-// log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
-// if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
-// continue;
-// }
-// } else {
-// continue;
-// }
+ BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode());
+ if (barcodeThread == null) {
+ continue;
+ }
+ String barcode = barcodeThread.getBarcode();
+ if(!Cools.isEmpty(barcode)) {
+ if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
+ continue;
+ }
+ } else {
+ continue;
+ }
// 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭�
SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
@@ -391,9 +439,9 @@
// // 鍏ュ嚭搴撴ā寮忓垽鏂�
// if (devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; }
- if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()) {
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk() && staProtocol.getWorkNo() == 9998) {
// WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode);
- WrkMast wrkMast = wrkMastMapper.selectPakInStep5(staProtocol.getSiteId(),"7");
+ WrkMast wrkMast = wrkMastMapper.selectPakInStep6(barcode);
if (wrkMast == null) {
// 鏃犳嫞鏂欐暟鎹�
continue;
@@ -406,59 +454,38 @@
// 鑾峰彇搴撲綅鍙�
try {
SearchLocParam param = new SearchLocParam();
+ Integer staNo = wrkMast.getSourceStaNo();
param.setBarcode(wrkMast.getBarcode());
param.setIoType(wrkMast.getIoType());
param.setSourceStaNo(pickSta.getStaNo()); //浣滀笟绔欑偣
param.setLocType1((short)1);
- String response = "";
- log.info("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS===>>鍙傛暟锛�" + param);
- try {
- response = new HttpHandler.Builder()
- .setUri(wmsUrl)
- .setPath("/rpc/pakin2/loc/v1")
- .setJson(JSON.toJSONString(param))
- .setTimeout(15, TimeUnit.SECONDS)
- .build()
- .doPost();
- } catch(Exception e){
- log.error("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS===>>鍙傛暟锛�" + param);
- log.error("stnToCrnStnPick2===>>鐩樼偣鏌ュ簱浣嶅叆搴撴帴鍙eけ璐�", e);
- e.printStackTrace();
- continue;
+ wrkMast.setIoType(wrkMast.getIoType() - 50);
+ wrkMast.setWrkSts(2L);
+ wrkMast.setSourceStaNo(wrkMast.getStaNo()-1);
+ wrkMast.setStaNo(staNo - 2);
+ wrkMast.setLocNo(wrkMast.getSourceLocNo());
+ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no",wrkMast.getLocNo()));
+ if(locMast.getLocSts().equals("P")){
+ locMast.setLocSts("Q");
+ locMastService.updateById(locMast);
}
- log.info("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS===>>鍙傛暟锛�" + param);
- log.info("鍏ュ簱浣滀笟绔�"+pickSta.getStaNo()+"涓嬪彂鐩樼偣鍐嶅叆搴撲换鍔¤姹俉MS杩斿洖缁撴灉===>>" + response);
- if(response.equals("")) {
- continue;
- }
- JSONObject jsonObject = JSON.parseObject(response);
-// LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed());
- Integer code = jsonObject.getInteger("code");
- if (code == 200) {
- StartupDto dto = jsonObject.getObject("data", StartupDto.class);
- if (Cools.isEmpty(dto) || Cools.isEmpty(dto.getStaNo())) {
- log.error("浠诲姟鍙�"+wrkMast.getWrkNo()+"鐩樼偣鍐嶅叆搴撴煡璇㈠簱浣嶅け璐�===>>" + jsonObject.toJSONString());
- } else {
- log.info("浠诲姟鍙�"+wrkMast.getWrkNo()+"鐩樼偣鍐嶅叆搴撴煡璇㈠簱浣嶆垚鍔�===>>" + jsonObject.toJSONString());
- try {
- // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
- staProtocol.setWorkNo(wrkMast.getWrkNo());
- staProtocol.setStaNo(dto.getStaNo().shortValue());
- devpThread.setPakMk(staProtocol.getSiteId(), false,1096);
+ if (wrkMastService.updateById(wrkMast)) {
+ try {
+ // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
+ staProtocol.setWorkNo(wrkMast.getWrkNo());
+ staProtocol.setStaNo((short)(wrkMast.getSourceStaNo() - 1));
+ devpThread.setPakMk(staProtocol.getSiteId(), false,9998);
// ledThread.errorReset();
- boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
- if (!result) {
- log.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
- }
- log.info("浠诲姟鍙�"+wrkMast.getWrkNo()+"鐩樼偣/鎷f枡鍐嶅叆搴撲换鍔′笅鍙戞垚鍔�===>>" + staProtocol);
- } catch (Exception e) {
- log.error("鐩樼偣鍐嶅叆搴撳け璐�===>>" + e);
- e.printStackTrace();
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+ if (!result) {
+ log.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
}
+ log.info("浠诲姟鍙�"+wrkMast.getWrkNo()+"鐩樼偣/鎷f枡鍐嶅叆搴撲换鍔′笅鍙戞垚鍔�===>>" + staProtocol);
+ } catch (Exception e) {
+ log.error("鐩樼偣鍐嶅叆搴撳け璐�===>>" + e);
+ e.printStackTrace();
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
- } else {
- log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin2/loc/v1", JSON.toJSONString(param), response);
}
} catch (Exception e) {
log.error("stnToCrnStnPick2===>>fail", e);
@@ -525,6 +552,10 @@
if (wrkMastMapper.updateById(wrkMast) != 0) {
// 澶嶄綅鍫嗗灈鏈�
crnThread.setResetFlag(true);
+ if(wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107) { //鎷f枡鍑哄簱浠诲姟鐘舵�佷笂鎶ワ紝鍏朵粬涓婃姤鍦╳ms浠诲姟瀹屾垚瀹氭椂浠诲姟涓�
+ openService.reportTaskStatus(String.valueOf(wrkMast.getWrkNo()),3,1,wrkMast.getBarcode());
+ }
+
} else {
log.error("鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo());
}
@@ -1363,7 +1394,7 @@
if (!WrkMastLogList.isEmpty()) {
boolean signT = false;
for (WrkMast wrkMast : WrkMastLogList){
- Date completeTime = wrkMast.getIoTime();
+ Date completeTime = wrkMast.getModiTime();
if (completeTime==null){
continue;
}
--
Gitblit v1.9.1