From c5e8e45124d314166d229bb63a9846f8d6b9c69b Mon Sep 17 00:00:00 2001
From: zhangchao <zc857179121@qq.com>
Date: 星期六, 07 九月 2024 14:26:27 +0800
Subject: [PATCH] 1

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  210 ++++++++++++++++++++++++++++-----------------------
 1 files changed, 115 insertions(+), 95 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 b3e674b..d818a4f 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -91,17 +91,17 @@
     @Value("${wms.url}")
     private String wmsUrl;
 
-    private Short getWorkMode(Integer bay) {
-        if (bay == 2 || bay == 7) {
+    private Short getWorkMode(Short locType1, Integer bay) {
+        if (locType1 == 2) {
             return (short) 3;
-        } else if (bay == 3) {
-            return (short) 2;
-        } else if (bay == 4) {
-            return (short) 2;
-        } else if (bay == 5) {
-            return (short) 1;
+        } else if (locType1 == 5) {
+            return (short) 3;
         } else {
-            return (short) 0;
+            if (bay == 5) {
+                return (short) 1;
+            } else {
+                return (short) 2;
+            }
         }
     }
 
@@ -224,29 +224,39 @@
                     }
 
                     // 鍒ゆ柇閲嶅宸ヤ綔妗�
-                    WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode);
-                    //杩囨护鍒ゆ柇锛岄槻姝㈡嫞鏂欏啀鍏ュ簱璐х墿锛岀粡杩囧叆搴撶珯鍐嶅叆搴撴椂锛岃閫�鍥炲埌閫�搴撶珯
-                    WrkMast wrkMast1 = wrkMastMapper.selectPakInStepBarcode(barcode);
-                    if (wrkMast1 != null) {
-                        if (wrkMast1.getIoType() == 103 || wrkMast1.getIoType() == 107 || wrkMast1.getIoType() == 104) {
+                    WrkMast wrkMast = wrkMastMapper.selectPakInStepBarcode(barcode);
+                    if (wrkMast != null && wrkMast.getWrkSts() == 2) {
+                        int wrkNo1 = basDevpService.count(new QueryWrapper<BasDevp>().eq("wrk_no", wrkMast.getWrkNo()));
+                        if (wrkNo1 != 0) {
+                            News.error(barcode + "鏉$爜宸插瓨鍦ㄧ姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,璇锋煡鐪媁CS杈撻�佺嚎鐣岄潰,宸ヤ綔鍙�={}", wrkMast.getWrkNo());
+                            if (ledThread != null) {
+                                News.error(":鎵爜澶辫触锛岃閲嶈瘯");
+                                MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, barcode + "鏉$爜宸插瓨鍦ㄧ姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑浠诲姟,宸ヤ綔鍙�=" + wrkMast.getWrkNo()));
+                            }
                             continue;
                         }
-                    }
-                    if (wrkMast != null) {
-                        News.error("" + mark + " - 4" + " - 宸ヤ綔妗d腑宸插瓨鍦ㄨ绔欑姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,宸ヤ綔鍙�={}", wrkMast.getWrkNo());
-                        staProtocol.setWorkNo((short) 9999);
-                        staProtocol.setStaNo(inSta.getBackSta().shortValue());
+                        barcodeThread.setBarcode("");
+                        staProtocol.setWorkNo(Short.parseShort(wrkMast.getWrkNo() + ""));
+                        staProtocol.setStaNo(Short.parseShort(wrkMast.getStaNo() + ""));
                         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) {
-                            throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+                            News.error(":鏇存柊plc绔欑偣淇℃伅澶辫触");
+                            log.error("杈撻�佺嚎涓嬪彂(瀛樺湪璁惧涓婅蛋鐨勫伐浣滄。锛岀洿鎺ヤ笅鍙戯紒)==>鏇存柊plc绔欑偣淇℃伅澶辫触");
+//                            throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+                            continue;
                         }
 
-                        // led 寮傚父鏄剧ず
-                        if (ledThread != null) {
-                            String errorMsg = "宸ヤ綔妗e凡瀛樺湪璇ユ潯鐮佸彿===>>" + barcode;
-                            MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg));
-                        }
+                    }
+                    WrkMast checkPick = wrkMastMapper.selectOne(new QueryWrapper<WrkMast>()
+                            .eq("barcode", barcode)
+                            .in("io_type", 107, 103, 57));
+                    if (!Cools.isEmpty(checkPick)) {
                         continue;
                     }
 
@@ -489,10 +499,16 @@
                 if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()) {
                     News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛�");
                     WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode);
-//                    WrkMast wrkMast = wrkMastMapper.selectPakInStep3(staProtocol.getWorkNo().intValue());
+                    // WrkMast wrkMast = wrkMastMapper.selectPakInStep3(staProtocol.getWorkNo().intValue());
                     if (wrkMast == null) {
-                        // 鏃犳嫞鏂欐暟鎹�
-                        continue;
+                        WrkMast wrkMast1 = wrkMastMapper.selectPakInStepBarcode(barcode);
+                        if (!(wrkMast1 != null && wrkMast1.getWrkSts() == 2 && wrkMast1.getIoType() == 53)) {
+                            // 鏃犳嫞鏂欐暟鎹�
+                            continue;
+                        } else {
+                            wrkMast1.setIoType(103);
+                            wrkMast = wrkMast1;
+                        }
                     }
                     if ((wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107) || Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo())) {
                         continue;
@@ -508,12 +524,13 @@
 //                        log.error("{}鍙蜂换鍔℃暟鎹紓甯革紒", wrkMast.getWrkNo());
 //                    }
                     // 鑾峰彇鐩爣绔�
+
                     Wrapper<StaDesc> wrapper = new QueryWrapper<StaDesc>().eq("type_no", wrkMast.getIoType() - 50).eq("stn_no", pickSta.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
                             .eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿
                     StaDesc staDesc = staDescService.getOne(wrapper);
                     if (Cools.isEmpty(staDesc)) {
                         News.error("" + mark + " - 2" + " - 鍏ュ簱璺緞涓嶅瓨鍦紒type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo());
-                        staProtocol.setWorkNo((short) 9989);
+                        staProtocol.setWorkNo((short) 9999);
                         staProtocol.setStaNo((short) (pickSta.getStaNo().shortValue() - (short) 1));
                         devpThread.setPakMk(staProtocol.getSiteId(), false);
                         MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
@@ -646,7 +663,7 @@
                                 crnThread.setResetFlag(true);
                             } else if (statusTypeTwo == CrnStatusType.WAITING_TWO) {
                                 crnThread.setResetFlagTwo(true);
-                            } else {
+                            } else if (statusTypeTwo == CrnStatusType.WAITING_All) {
                                 crnThread.setResetFlag(true);
                                 crnThread.setResetFlagTwo(true);
                             }
@@ -803,8 +820,7 @@
                 flag = true;
             }
             if (!flag) {
-                //TODO
-                News.error("" + mark + " - 1" + " - 3" + " - 鍫嗗灈鏈哄叆搴撶珯淇℃伅(浠ヤ笅闇�瑕佸叏true):" + "鑷姩淇″彿" + staProtocol.isAutoing() + "鏈夌墿淇″彿" + staProtocol.isLoading() + "宸ヤ綔鍙�>0" + staProtocol.getWorkNo() + "鍙叆淇″彿" + staProtocol.isInEnable() + "鑳藉叆淇″彿锛坵ms璁剧疆锛�.equals(\"Y\")" + staDetl.getCanining());
+                News.errorNoLog("" + mark + " - 1" + " - 3" + " - 鍫嗗灈鏈哄叆搴撶珯淇℃伅(浠ヤ笅闇�瑕佸叏true):" + "鑷姩淇″彿" + staProtocol.isAutoing() + "鏈夌墿淇″彿" + staProtocol.isLoading() + "宸ヤ綔鍙�>0" + staProtocol.getWorkNo() + "鍙叆淇″彿" + staProtocol.isInEnable() + "鑳藉叆淇″彿锛坵ms璁剧疆锛�.equals(\"Y\")" + staDetl.getCanining());
                 continue;
             }
             // 鑾峰彇宸ヤ綔鐘舵�佷负2锛堣澶囦笂璧帮級鐨勫叆搴撳伐浣滄。
@@ -883,7 +899,7 @@
             CrnCommand crnCommand = new CrnCommand();
             crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
             crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
-            Short workMode = getWorkMode(locMast.getBay1());
+            Short workMode = getWorkMode(locMast.getLocType1(), locMast.getBay1());
             if (workMode == 2) {
                 //CrnTaskModeType璇ユ灇涓剧被鏃犳晥锛屽彧鏈�1浠h〃宸ヤ綅锛�2浠h〃宸ヤ綅2锛�3鍙屽伐浣�
                 crnCommand.setTaskMode(CrnTaskModeType.PAKOUT);
@@ -1055,12 +1071,13 @@
                     News.warnNoLog("" + mark + " - 2" + " - 12" + " - 鍛戒护涓嬪彂 : 宸ヤ綔鍙�={},婧愭帓={},婧愬垪={},婧愬眰={},鐩爣鎺�={},鐩爣鍒�={},鐩爣灞�={}", wrkMast.getWrkNo().shortValue(), sourceSta.getRow1().shortValue(), sourceSta.getBay1().shortValue(), sourceSta.getLev1().shortValue(), crnStn.getRow().shortValue(), crnStn.getBay().shortValue(), crnStn.getLev().shortValue());
 
                     String locNo = sourceSta.getLocNo();
-
+                    // 鑾峰彇鐩爣搴撲綅淇℃伅
+                    LocMast sta = locMastService.getById(sourceSta.getLocNo());
                     // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔�
                     CrnCommand crnCommand = new CrnCommand();
                     crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
                     crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
-                    Short workMode = getWorkMode(sourceSta.getBay1());
+                    Short workMode = getWorkMode(sta.getLocType1(), sourceSta.getBay1());
                     if (workMode == 2) {
                         //CrnTaskModeType璇ユ灇涓剧被鏃犳晥锛屽彧鏈�1浠h〃宸ヤ綅锛�2浠h〃宸ヤ綅2锛�3鍙屽伐浣�
                         crnCommand.setTaskMode(CrnTaskModeType.PAKOUT);
@@ -1268,10 +1285,11 @@
         CrnCommand crnCommand = new CrnCommand();
         crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
         crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
-        Short workMode = getWorkMode(sourceSta.getBay1());
+        Short workMode = getWorkMode(sta.getLocType1(), sourceSta.getBay1());
         crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
         if (workMode == 2) {
             //CrnTaskModeType璇ユ灇涓剧被鏃犳晥锛屽彧鏈�1浠h〃宸ヤ綅锛�2浠h〃宸ヤ綅2锛�3鍙屽伐浣�
+            crnCommand.setTaskMode(CrnTaskModeType.PAKOUT);
             crnCommand.setSourcePosXTwo(sourceSta.getRow1().shortValue());     // 婧愬簱浣嶆帓
             crnCommand.setSourcePosYTwo(sourceSta.getBay1().shortValue());     // 婧愬簱浣嶅垪
             crnCommand.setSourcePosZTwo(sourceSta.getLev1().shortValue());     // 婧愬簱浣嶅眰
@@ -1329,8 +1347,38 @@
             //  鐘舵�侊細绛夊緟纭 骞朵笖  浠诲姟瀹屾垚浣� = 1
             if (wait && crnProtocol.getTaskNo() != 0) {
                 News.warnNoLog("" + mark + " - 0" + " - 寮�濮嬫墽琛屽宸ヤ綔妗g殑瀹屾垚鎿嶄綔");
-                if (crnProtocol.getTaskNo() == 9999) {
+//                if (crnProtocol.getTaskNo() == 9999) {
+//                    // 鍫嗗灈鏈哄浣�
+//                    if (statusType == CrnStatusType.WAITING_ONE) {
+//                        crnThread.setResetFlag(true);
+//                    } else if (statusTypeTwo == CrnStatusType.WAITING_TWO) {
+//                        crnThread.setResetFlagTwo(true);
+//                    } else {
+//                        crnThread.setResetFlag(true);
+//                        crnThread.setResetFlagTwo(true);
+//                    }
+//                } else {
+                // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
+                WrkMast wrkMast = wrkMastMapper.selectPakInStep3(crnProtocol.getTaskNo().intValue());
+                if (wrkMast == null) {
+                    News.error("" + mark + " - 1" + " - 鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo());
+                    continue;
+                }
+                // 鍏ュ簱 + 搴撲綅杞Щ  ==> 4.鍏ュ簱瀹屾垚
+                if (wrkMast.getWrkSts() == 3 || (wrkMast.getWrkSts() == 12 && wrkMast.getIoType() == 11)) {
+                    wrkMast.setWrkSts(4L);
+                } else {
+                    //TODO
+                    News.info("鐘舵�佷笉瀵�,鐘舵��={}锛屽伐浣滃彿={}", wrkMast.getWrkSts(), crnProtocol.getTaskNo());
+                    continue;
+                }
+                Date now = new Date();
+                wrkMast.setCrnEndTime(now);
+                wrkMast.setModiTime(now);
+                // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
+                if (wrkMastMapper.updateById(wrkMast) > 0) {
                     // 鍫嗗灈鏈哄浣�
+                    News.info("" + mark + " - 2" + " - 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満 : 鍫嗗灈鏈哄彿={}", crnThread.getCrnProtocol().getCrnNo());
                     if (statusType == CrnStatusType.WAITING_ONE) {
                         crnThread.setResetFlag(true);
                     } else if (statusTypeTwo == CrnStatusType.WAITING_TWO) {
@@ -1340,39 +1388,11 @@
                         crnThread.setResetFlagTwo(true);
                     }
                 } else {
-                    // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
-                    WrkMast wrkMast = wrkMastMapper.selectPakInStep3(crnProtocol.getTaskNo().intValue());
-                    if (wrkMast == null) {
-                        News.error("" + mark + " - 1" + " - 鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo());
-                        continue;
-                    }
-                    // 鍏ュ簱 + 搴撲綅杞Щ  ==> 4.鍏ュ簱瀹屾垚
-                    if (wrkMast.getWrkSts() == 3 || (wrkMast.getWrkSts() == 12 && wrkMast.getIoType() == 11)) {
-                        wrkMast.setWrkSts(4L);
-                    } else {
-                        continue;
-                    }
-                    Date now = new Date();
-                    wrkMast.setCrnEndTime(now);
-                    wrkMast.setModiTime(now);
-                    // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
-                    if (wrkMastMapper.updateById(wrkMast) > 0) {
-                        // 鍫嗗灈鏈哄浣�
-                        News.info("" + mark + " - 2" + " - 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満 : 鍫嗗灈鏈哄彿={}", crnThread.getCrnProtocol().getCrnNo());
-                        if (statusType == CrnStatusType.WAITING_ONE) {
-                            crnThread.setResetFlag(true);
-                        } else if (statusTypeTwo == CrnStatusType.WAITING_TWO) {
-                            crnThread.setResetFlagTwo(true);
-                        } else {
-                            crnThread.setResetFlag(true);
-                            crnThread.setResetFlagTwo(true);
-                        }
-                    } else {
-                        News.error("" + mark + " - 2" + " - 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満 澶辫触锛侊紒锛屽爢鍨涙満鍙�={}", crnThread.getCrnProtocol().getCrnNo());
-                    }
+                    News.error("" + mark + " - 2" + " - 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満 澶辫触锛侊紒锛屽爢鍨涙満鍙�={}", crnThread.getCrnProtocol().getCrnNo());
                 }
-
             }
+
+            //}
         }
         News.infoNoLog("" + mark + " - 0" + " - 瀵瑰伐浣滄。鐨勫畬鎴愭搷浣滄墽琛屽畬鎴�");
     }
@@ -1918,7 +1938,7 @@
             LocMast loc = null;
             for (Integer row : rows) {
                 if (Utils.isDeepLoc(slaveProperties, row)) {
-                    loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType1(), shallowLoc.getLocType2());
+                    loc = locMastService.queryFreeLocMast(row, shallowLoc.getBay1(), shallowLoc.getLocType1(), shallowLoc.getLocType2());
                     if (loc != null) {
                         if (Utils.isDeepLoc(slaveProperties, loc.getLocNo())) {
                             String shallowLocNo = Utils.getShallowLoc(slaveProperties, loc.getLocNo());
@@ -1930,25 +1950,25 @@
                     }
                     if (null != loc) {
                         //璋冩暣鐨勫師鍥狅細鍙屽伐浣嶇殑鎯呭喌锛�5鍒楋紝鍙兘2鍙峰伐浣嶅彇鏀撅紝34鍒楋紝鍙兘宸ヤ綅1鍙栨斁
-                        if (shallowLoc.getLocType1() == 1) {
-                            if (shallowLoc.getBay1() == 5 && loc.getBay1() == 5) {
-                                break;
-                            } else if (shallowLoc.getBay1() == 3 || shallowLoc.getBay1() == 4) {
-                                if (loc.getBay1() == 3 || loc.getBay1() == 4) {
-                                    break;
-                                }
-                            }
-                            loc = null;
-                        } else {
-                            break;
-                        }
+//                        if (shallowLoc.getLocType1() == 1) {
+//                            if (shallowLoc.getBay1() == 5 && loc.getBay1() == 5) {
+//                                break;
+//                            } else if (shallowLoc.getBay1() == 3 || shallowLoc.getBay1() == 4) {
+//                                if (loc.getBay1() == 3 || loc.getBay1() == 4) {
+//                                    break;
+//                                }
+//                            }
+//                            loc = null;
+//                        } else {
+                        break;
+                        // }
                     }
                 }
             }
             if (null == loc) {
                 for (Integer row : rows) {
                     if (Utils.isShallowLoc(slaveProperties, row)) {
-                        loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType1(), shallowLoc.getLocType2());
+                        loc = locMastService.queryFreeLocMast(row, shallowLoc.getBay1(), shallowLoc.getLocType1(), shallowLoc.getLocType2());
 
                         if (null != loc) {//瀵瑰簲娣卞簱浣嶉潪鍦ㄥ簱鐘舵��,涓嶈兘绉诲簱
                             String deepLoc = Utils.getDeepLoc(slaveProperties, loc.getLocNo());
@@ -1959,19 +1979,19 @@
                         }
 
                         if (null != loc) {
-                            //璋冩暣鐨勫師鍥狅細鍙屽伐浣嶇殑鎯呭喌锛�5鍒楋紝鍙兘2鍙峰伐浣嶅彇鏀撅紝34鍒楋紝鍙兘宸ヤ綅1鍙栨斁
-                            if (shallowLoc.getLocType1() == 1) {
-                                if (shallowLoc.getBay1() == 5 && loc.getBay1() == 5) {
-                                    break;
-                                } else if (shallowLoc.getBay1() == 3 || shallowLoc.getBay1() == 4) {
-                                    if (loc.getBay1() == 3 || loc.getBay1() == 4) {
-                                        break;
-                                    }
-                                }
-                                loc = null;
-                            } else {
-                                break;
-                            }
+//                            //璋冩暣鐨勫師鍥狅細鍙屽伐浣嶇殑鎯呭喌锛�5鍒楋紝鍙兘2鍙峰伐浣嶅彇鏀撅紝34鍒楋紝鍙兘宸ヤ綅1鍙栨斁
+//                            if (shallowLoc.getLocType1() == 1) {
+//                                if (shallowLoc.getBay1() == 5 && loc.getBay1() == 5) {
+//                                    break;
+//                                } else if (shallowLoc.getBay1() == 3 || shallowLoc.getBay1() == 4) {
+//                                    if (loc.getBay1() == 3 || loc.getBay1() == 4) {
+//                                        break;
+//                                    }
+//                                }
+//                                loc = null;
+//                            } else {
+                            break;
+                            // }
                         }
                     }
                 }

--
Gitblit v1.9.1