From 63837b34d35f8f66f3ff17eca0894c1ac9703450 Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期二, 23 十二月 2025 12:39:48 +0800
Subject: [PATCH] #移库事务回滚修改
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 300 +++++++++++++++++++++++++++++++++++++----------------------
1 files changed, 189 insertions(+), 111 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 a085a60..da7c778 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -170,7 +170,7 @@
continue;
}
staProtocol.setWorkNo(wrkNo);
- News.info("{}鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg, wrkNo);
+ News.info("{}PLC鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg, wrkNo);
wrkNo++;
staProtocol.setStaNo(inSta.getBackSta().shortValue());
devpThread.setPakMk(staProtocol.getSiteId(), false);
@@ -188,7 +188,7 @@
News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
staProtocol.setWorkNo(wrkNo);
- News.info("{}鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg, wrkNo);
+ News.info("{}barcode鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", inSta.getStaNo(), errMsg, wrkNo);
wrkNo++;
staProtocol.setStaNo(inSta.getBackSta().shortValue());
devpThread.setPakMk(staProtocol.getSiteId(), false);
@@ -199,32 +199,33 @@
// 鍒ゆ柇閲嶅宸ヤ綔妗�
WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode);
if (wrkMast != null) {
- int wrkNo1 = basDevpService.selectCount(new EntityWrapper<BasDevp>().eq("wrk_no", wrkMast.getWrkNo()));
- if (wrkNo1 != 0) {
- News.error(barcode + "鏉$爜宸插瓨鍦ㄧ姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,璇锋煡鐪媁CS杈撻�佺嚎鐣岄潰,宸ヤ綔鍙�={}", wrkMast.getWrkNo());
- if (ledThread != null) {
- News.error(methodName + ":鎵爜澶辫触锛岃閲嶈瘯");
- MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, barcode + "鏉$爜宸插瓨鍦ㄧ姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑浠诲姟,宸ヤ綔鍙�=" + wrkMast.getWrkNo()));
- }
- continue;
- }
- barcodeThread.setBarcode("");
- staProtocol.setWorkNo(wrkMast.getWrkNo());
- staProtocol.setStaNo(RouteUtils.SouStaEnd(null, wrkMast.getSourceStaNo()));
- devpThread.setPakMk(staProtocol.getSiteId(), false);
- boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
- log.info("杈撻�佺嚎涓嬪彂(瀛樺湪璁惧涓婅蛋鐨勫伐浣滄。锛岀洿鎺ヤ笅鍙戯紒))锛�" + wrkMast.getWrkNo() + "," + wrkMast.getStaNo());
-
- ledThread.errorReset();
- log.info("缁勬墭璇锋眰鍚嶭ED閿欒娓呴櫎");
-
- if (!result) {
- News.error(methodName + ":鏇存柊plc绔欑偣淇℃伅澶辫触");
- log.error("杈撻�佺嚎涓嬪彂(瀛樺湪璁惧涓婅蛋鐨勫伐浣滄。锛岀洿鎺ヤ笅鍙戯紒)==>鏇存柊plc绔欑偣淇℃伅澶辫触");
-
-// throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
- continue;
- }
+// int wrkNo1 = basDevpService.selectCount(new EntityWrapper<BasDevp>().eq("wrk_no", wrkMast.getWrkNo()));
+// if (wrkNo1 != 0){
+// if (ledThread != null) {
+// News.error(methodName + ":鎵爜澶辫触锛岃閲嶈瘯");
+// }
+//
+// }
+ News.error(barcode + "鏉$爜宸插瓨鍦ㄧ姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,璇锋煡鐪媁CS杈撻�佺嚎鐣岄潰,宸ヤ綔鍙�={}", wrkMast.getWrkNo());
+ MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, barcode + "鏉$爜宸插瓨鍦ㄧ姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑浠诲姟,宸ヤ綔鍙�=" + wrkMast.getWrkNo()));
+ continue;
+// barcodeThread.setBarcode("");
+// staProtocol.setWorkNo(wrkMast.getWrkNo());
+// staProtocol.setStaNo(RouteUtils.SouStaEnd(null,wrkMast.getSourceStaNo()));
+// devpThread.setPakMk(staProtocol.getSiteId(), false);
+// boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+// log.info("杈撻�佺嚎涓嬪彂(瀛樺湪璁惧涓婅蛋鐨勫伐浣滄。锛岀洿鎺ヤ笅鍙戯紒))锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo());
+//
+// ledThread.errorReset();
+// log.info("缁勬墭璇锋眰鍚嶭ED閿欒娓呴櫎");
+//
+// if (!result) {
+// News.error(methodName + ":鏇存柊plc绔欑偣淇℃伅澶辫触");
+// log.error("杈撻�佺嚎涓嬪彂(瀛樺湪璁惧涓婅蛋鐨勫伐浣滄。锛岀洿鎺ヤ笅鍙戯紒)==>鏇存柊plc绔欑偣淇℃伅澶辫触");
+//
+//// throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+// continue;
+// }
}
WrkMast checkPick = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
@@ -242,6 +243,7 @@
param.setSourceStaNo(inSta.getStaNo());
param.setLocType1(locTypeDto.getLocType1());
String response = new HttpHandler.Builder()
+ .setTimeout(30,TimeUnit.SECONDS)
.setUri(wmsUrl)
.setPath("/rpc/pakin/loc/v1")
.setJson(JSON.toJSONString(param))
@@ -268,24 +270,27 @@
}
} else {
if (jsonObject.getString("msg").equals("宸ヤ綔妗e凡瀛樺湪")) {
- //宸ヤ綔妗e凡瀛樺湪 鍐嶆杩涘幓
- wrkMast = wrkMastMapper.selectPakInStepBarcode(barcode);
- if (wrkMast != null) {
- barcodeThread.setBarcode("");
- staProtocol.setWorkNo(wrkMast.getWrkNo());
- //staProtocol.setStaNo(RouteUtils.SouStaEnd(dto.getStaNo(),dto.getSourceStaNo()));
- staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
- devpThread.setPakMk(staProtocol.getSiteId(), false);
- boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
- log.error("杈撻�佺嚎涓嬪彂2锛�" + wrkMast.getWrkNo() + "," + wrkMast.getStaNo());
- ledThread.errorReset();
- log.error("缁勬墭璇锋眰鍚嶭ED閿欒娓呴櫎");
- if (!result) {
- News.error(methodName + ":鏇存柊plc绔欑偣淇℃伅澶辫触");
- throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
- }
- }
+ //宸ヤ綔妗e凡瀛樺湪 鍐嶆杩涘幓
+// wrkMast = wrkMastMapper.selectPakInStepBarcode(barcode);
+// if (wrkMast != null) {
+// barcodeThread.setBarcode("");
+// staProtocol.setWorkNo(9999);
+// //staProtocol.setWorkNo(wrkMast.getWrkNo());
+// //staProtocol.setStaNo(RouteUtils.SouStaEnd(dto.getStaNo(),dto.getSourceStaNo()));
+// staProtocol.setStaNo(inSta.getBackSta().shortValue());
+// devpThread.setPakMk(staProtocol.getSiteId(), false);
+// boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+// log.error("杈撻�佺嚎涓嬪彂2锛�" + wrkMast.getWrkNo() + "," + wrkMast.getStaNo());
+// ledThread.errorReset();
+// log.error("缁勬墭璇锋眰鍚嶭ED閿欒娓呴櫎");
+// if (!result) {
+// News.error(methodName + ":鏇存柊plc绔欑偣淇℃伅澶辫触");
+//
+// throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+// }
+// }
+
continue;
}
staProtocol.setWorkNo(wrkNo);
@@ -398,6 +403,79 @@
continue;
}
String barcode = barcodeThread.getBarcode();
+ // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭�
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+
+ StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo());
+
+ // 灏哄妫�娴嬪紓甯�
+ boolean back = false;
+ String errMsg = "";
+ if (staProtocol.isFrontErr()) {
+ errMsg = "鍓嶈秴闄�";
+ back = true;
+ }
+ if (!back && staProtocol.isBackErr()) {
+ errMsg = "鍚庤秴闄�";
+ back = true;
+ }
+ if (!back && staProtocol.isHighErr()) {
+ errMsg = "楂樿秴闄�";
+ back = true;
+ }
+ if (!back && staProtocol.isLeftErr()) {
+ errMsg = "宸﹁秴闄�";
+ back = true;
+ }
+ if (!back && staProtocol.isRightErr()) {
+ errMsg = "鍙宠秴闄�";
+ back = true;
+ }
+ if (!back && staProtocol.isWeightErr()) {
+ errMsg = "瓒呴噸";
+ back = true;
+ }
+ if (!back && staProtocol.isBarcodeErr()) {
+ errMsg = "鎵爜澶辫触";
+ back = true;
+ }
+
+ // 閫�鍥�
+ if (back) {
+ log.info("errmsg: " + errMsg);
+// News.warn("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", inSta.getStaNo(), errMsg);
+ MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(5, errMsg));
+ if (!staProtocol.isLoading()) {
+ continue;
+ }
+ if (!staProtocol.isPakMk()) {
+ continue;
+ }
+ staProtocol.setWorkNo(wrkNo);
+ News.info("{}鍏ュ簱鍥為��锛歿}锛屼换鍔″彿锛歿}", pickSta.getStaNo(), errMsg, wrkNo);
+ wrkNo++;
+ staProtocol.setStaNo(pickSta.getBackSta().shortValue());
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+ log.error("杈撻�佺嚎涓嬪彂1锛�" + 9999 + "," + pickSta.getBackSta());
+ LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed());
+
+ // led 寮傚父鏄剧ず
+ if (ledThread != null) {
+ MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(5, errMsg));
+ }
+ continue;
+ }
+ if (!Cools.isEmpty(barcode)) {
+ News.infoNoLog("" + mark + " - 1" + " - {}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
+ if ("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
+ continue;
+ }
+ } else {
+ continue;
+ }
+
+
if (!Cools.isEmpty(barcode)) {
// News.info(""+mark+" - 1"+" - {}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode);
if ("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
@@ -407,9 +485,7 @@
continue;
}
- // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭�
- SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
- StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo());
+
if (staProtocol == null) {
continue;
} else {
@@ -1941,75 +2017,77 @@
if (null == loc) {
News.error("" + mark + "moveLocForDeepLoc" + " - 1" + " - 鍙屾繁搴撲綅 --- 娴呭簱浣嶉樆濉炲紓甯革紒 寰呯Щ杞祬搴撲綅锛�" + shallowLoc.getLocNo());
- throw new CoolException("鍙屾繁搴撲綅 --- 娴呭簱浣嶉樆濉炲紓甯革紒 寰呯Щ杞祬搴撲綅锛�" + shallowLoc.getLocNo());
- }
- // 鑾峰彇宸ヤ綔鍙�
- int workNo = commonService.getWorkNo(0);
- // 淇濆瓨宸ヤ綔妗�
- WrkMast wrkMast = new WrkMast();
- wrkMast.setWrkNo(workNo);
- wrkMast.setIoTime(new Date());
- wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
- wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
- wrkMast.setIoPri(13D);
- wrkMast.setCrnNo(crn.getId());
- wrkMast.setSourceLocNo(shallowLoc.getLocNo()); // 婧愬簱浣�
- wrkMast.setLocNo(loc.getLocNo()); // 鐩爣搴撲綅
- wrkMast.setFullPlt(shallowLoc.getFullPlt()); // 婊℃澘
- wrkMast.setPicking("N"); // 鎷f枡
- wrkMast.setExitMk("N"); // 閫�鍑�
- wrkMast.setEmptyMk(shallowLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘
- wrkMast.setBarcode(shallowLoc.getBarcode()); // 鎵樼洏鐮�
- wrkMast.setLinkMis("N");
- wrkMast.setAppeTime(new Date());
- wrkMast.setModiTime(new Date());
- int res = wrkMastMapper.insert(wrkMast);
- if (res == 0) {
- News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 2" + " - 淇濆瓨宸ヤ綔妗eけ璐�");
- throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
- }
- // 宸ヤ綔妗f槑缁嗕繚瀛�
- if (shallowLoc.getLocSts().equals("F")) {
- List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", shallowLoc.getLocNo()));
- for (LocDetl locDetl : locDetls) {
- WrkDetl wrkDetl = new WrkDetl();
- wrkDetl.setWrkNo(workNo);
- wrkDetl.setIoTime(new Date());
- wrkDetl.setAnfme(locDetl.getAnfme());
- VersionUtils.setWrkDetl(wrkDetl, locDetl); // 鐗堟湰鎺у埗
- wrkDetl.setAppeTime(new Date());
- wrkDetl.setModiTime(new Date());
- if (!wrkDetlService.insert(wrkDetl)) {
- News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 3" + " - 淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
- throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+ }else{
+ // 鑾峰彇宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(0);
+ // 淇濆瓨宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(new Date());
+ wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
+ wrkMast.setIoPri(13D);
+ wrkMast.setCrnNo(crn.getId());
+ wrkMast.setSourceLocNo(shallowLoc.getLocNo()); // 婧愬簱浣�
+ wrkMast.setLocNo(loc.getLocNo()); // 鐩爣搴撲綅
+ wrkMast.setFullPlt(shallowLoc.getLocSts().equals("F") ? "Y" : "N"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk(shallowLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘
+ wrkMast.setBarcode(shallowLoc.getBarcode()); // 鎵樼洏鐮�
+ wrkMast.setLinkMis("N");
+ wrkMast.setAppeTime(new Date());
+ wrkMast.setModiTime(new Date());
+ int res = wrkMastMapper.insert(wrkMast);
+ if (res == 0) {
+ News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 2" + " - 淇濆瓨宸ヤ綔妗eけ璐�");
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+ // 宸ヤ綔妗f槑缁嗕繚瀛�
+ if (shallowLoc.getLocSts().equals("F")) {
+ List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", shallowLoc.getLocNo()));
+ for (LocDetl locDetl : locDetls) {
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.setWrkNo(workNo);
+ wrkDetl.setIoTime(new Date());
+ wrkDetl.setAnfme(locDetl.getAnfme());
+ VersionUtils.setWrkDetl(wrkDetl, locDetl); // 鐗堟湰鎺у埗
+ wrkDetl.setAppeTime(new Date());
+ wrkDetl.setModiTime(new Date());
+ if (!wrkDetlService.insert(wrkDetl)) {
+ News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 3" + " - 淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+ throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+ }
}
}
- }
- // 淇敼婧愬簱浣嶇姸鎬�
- if (shallowLoc.getLocSts().equals("D") || shallowLoc.getLocSts().equals("F")) {
- shallowLoc.setLocSts("R"); // R.鍑哄簱棰勭害
- shallowLoc.setModiTime(new Date());
- if (!locMastService.updateById(shallowLoc)) {
- News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 4" + " - 鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
- throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
+ // 淇敼婧愬簱浣嶇姸鎬�
+ if (shallowLoc.getLocSts().equals("D") || shallowLoc.getLocSts().equals("F")) {
+ shallowLoc.setLocSts("R"); // R.鍑哄簱棰勭害
+ shallowLoc.setModiTime(new Date());
+ if (!locMastService.updateById(shallowLoc)) {
+ News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 4" + " - 鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
+ throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
+ }
+ } else {
+ News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 5" + " - 婧愬簱浣嶅嚭搴撳け璐�");
+ throw new CoolException("婧愬簱浣嶅嚭搴撳け璐�");
}
- } else {
- News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 5" + " - 婧愬簱浣嶅嚭搴撳け璐�");
- throw new CoolException("婧愬簱浣嶅嚭搴撳け璐�");
- }
- // 淇敼鐩爣搴撲綅鐘舵��
- if (loc.getLocSts().equals("O")) {
- loc.setLocSts("S"); // S.鍏ュ簱棰勭害
- loc.setModiTime(new Date());
- if (!locMastService.updateById(loc)) {
- News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 6" + " - 鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
- throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+ // 淇敼鐩爣搴撲綅鐘舵��
+ if (loc.getLocSts().equals("O")) {
+ loc.setLocSts("S"); // S.鍏ュ簱棰勭害
+ loc.setModiTime(new Date());
+ if (!locMastService.updateById(loc)) {
+ News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 6" + " - 鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+ throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+ }
+ } else {
+ News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 7" + " - 绉昏浆澶辫触");
+ throw new CoolException("绉昏浆澶辫触");
}
- } else {
- News.errorNoLog("" + mark + "moveLocForDeepLoc" + " - 7" + " - 绉昏浆澶辫触");
- throw new CoolException("绉昏浆澶辫触");
}
+
+
} catch (Exception e) {
News.error("" + mark + "moveLocForDeepLoc" + " - 8" + " - 鍙屾繁搴撲綅闃诲锛屽娴呭簱浣嶈繘琛岀Щ杞け璐�", e);
e.printStackTrace();
--
Gitblit v1.9.1