From 8731471f40df61a849c5d1f681cfa182307604dc Mon Sep 17 00:00:00 2001
From: tqs <56479841@qq.com>
Date: 星期四, 30 三月 2023 14:54:31 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |   63 ++++++++++++++++++++++++++-----
 1 files changed, 53 insertions(+), 10 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 1e6e50b..82359ae 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -493,7 +493,7 @@
                         Integer code = jsonObject.getInteger("code");
                         if (code.equals(200)) {
                             StartupDto dto = jsonObject.getObject("data", StartupDto.class);
-
+                            News.info("鍐嶅叆搴撹幏鍙栨柊搴撲綅鎴愬姛锛岃繑鍥炴暟鎹�===>>", JSON.toJSON(dto));
 //                            // 鑾峰彇鐩爣绔�
 //                            Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
 //                                    .eq("type_no", wrkMast.getIoType() - 50)
@@ -521,6 +521,7 @@
                             // 鏇存柊宸ヤ綔妗f暟鎹姸鎬�
                             wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57
                             wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋
+                            wrkMast.setIoPri(13D);
                             wrkMast.setSourceStaNo(pickSta.getStaNo()); // 婧愮珯
                             wrkMast.setStaNo(dto.getStaNo()); // 鐩爣绔�
                             wrkMast.setCrnNo(dto.getCrnNo());
@@ -564,6 +565,9 @@
 
                             ledThread.errorReset();
 
+                            if(wrkMast.getIoType()>100){
+                                throw new CoolException("鍐嶅叆搴撴洿鏂板伐浣滄。澶辫触锛屼笉鑳界粰PLC涓嬪彂浠诲姟===>>" + wrkMast.getWrkNo());
+                            }
                             // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
                             staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
                             staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
@@ -744,6 +748,7 @@
                         // 鏇存柊宸ヤ綔妗g姸鎬佷负 17.鍑哄簱瀹屾垚
                         wrkMast.setWrkSts(17L);
                         wrkMast.setSteNo(0);
+                        wrkMast.setIoPri(15D);
                         wrkMast.setCrnEndTime(new Date());
                         if (wrkMastMapper.updateById(wrkMast) != 0) {
                             // 澶嶄綅鍫嗗灈鏈�
@@ -1154,6 +1159,8 @@
                                         .last(" and wrk_sts in (12,13,14,15,16)"));
                                 if(one2==null) {
                                     moveLocForDeepLoc(slave, shallowLoc);
+                                } else {
+                                    News.error("娴呭簱浣嶉樆濉炴椂锛屼笖娴呭簱浣嶅瓨鍦ㄤ綔涓氫腑鍑哄簱浠诲姟锛佸伐浣滃彿={}", one2.getWrkNo());
                                 }
                                 flag = true;
                                 break;
@@ -1171,11 +1178,17 @@
                             break;
                         }
 
+                        //20230307 ADD锛屽啀鍔犱竴娆″垽鏂紝褰撴祬搴撲綅鐘舵�佷笉涓篛鏃讹紝涓嶆墽琛屽綋鍓嶅嚭搴撲换鍔�
+                        if(shallowLoc!=null && !shallowLoc.getLocSts().equals("O")){
+                            News.error("鍋氫簡娴呭簱浣嶉樆濉炲鐞嗗悗鍙嶅鍒ゆ柇锛屾祬搴撲綅鐘舵�佷笉涓篛 ===>> 娴呭簱浣嶅簱浣嶇姸鎬佷负鍏ュ簱棰勭害锛佸嚭搴撳簱浣�={},娴呭簱浣嶅彿={}", wrkMast.getSourceLocNo(), shallowLoc.getLocNo());
+                            flag = true;
+                            break;
+                        }
                     }
                 }
             }
             if(flag){
-                continue;
+                return false;
             }
 
             // 宸ヤ綔妗g姸鎬佸垽鏂�
@@ -1596,6 +1609,10 @@
                             && !deepLoc.getLocSts().equals("O")
                             && (waitWrkMast!=null && waitWrkMast.getWrkSts()<18)){
                         News.error("绉诲簱鍐嶅洖搴撴椂锛屾繁搴撲綅缁勬繁搴撲綅鐘舵�佷负浣滀笟涓� ===>> deepLoc={},loc_sts={}", deepLoc.getLocNo(), deepLoc.getLocSts());
+                        if(waitWrkMast.getIoPri()<9999) {//璋冮珮浼樺厛绾�
+                            waitWrkMast.setIoPri(waitWrkMast.getIoPri() + 1);
+                            wrkMastService.updateById(waitWrkMast);
+                        }
                         flag = true;
                         break;
                     }
@@ -2294,6 +2311,10 @@
         SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo);
         SteProtocol steProtocol = steThread.getSteProtocol();
         if (steProtocol == null) { return; }
+        if(steProtocol.getLoad() == 1){
+            News.error("灏忚溅涓婃柟鏈夎揣锛屾棤娉曚笅鍙戜换鍔�===>>{}", steNo);
+            return;
+        }
         if (steProtocol.isIdle() && steProtocol.getLoad() == 0) {
             // 鍫嗗灈鏈虹┖闂�
             if (crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() == 0) {
@@ -2314,18 +2335,35 @@
                     crnCommand.setDestinationPosX(Utils.getGroupRow(locMast.getLocNo()).shortValue());     // 鐩爣搴撲綅鎺�
                     crnCommand.setDestinationPosY(locMast.getBay1().shortValue());     // 鐩爣搴撲綅鍒�
                     crnCommand.setDestinationPosZ(locMast.getLev1().shortValue());     // 鐩爣搴撲綅灞�
-                    if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
-                        News.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
-                    } else {
+
+                    if( crnCommand.getSourcePosX() == crnCommand.getDestinationPosX()
+                        && crnCommand.getSourcePosY() == crnCommand.getDestinationPosY()
+                        && crnCommand.getSourcePosZ() == crnCommand.getDestinationPosZ()){
+                        //鎵撹ˉ涓侊紝濡傛灉鍑虹幇婧愭帓鍒楀眰 鍜岀洰鏍囨帓鍒楀眰瀹屽叏鐩稿悓鏃讹紝涓嶇粰鍫嗗灈鏈哄彂浠诲姟锛岀姸鎬佺洿鎺ョ敱3 ==>> 6
                         // 淇敼绌挎杞﹁繍琛屼腑鎺掑垪灞�
                         steThread.modifyPos(Utils.getGroupRow(locMast.getLocNo()), locMast.getBay1(), locMast.getLev1());
-                        // 淇敼宸ヤ綔妗g姸鎬� 3.灏忚溅寰呮惉 => 4.杩佸叆灏忚溅
+                        // 淇敼宸ヤ綔妗g姸鎬� 3.灏忚溅寰呮惉 => 6.灏忚溅寰呭叆
                         Date now = new Date();
-                        wrkMast.setWrkSts(4L);
+                        wrkMast.setWrkSts(6L);
                         wrkMast.setCrnStrTime(now);
                         wrkMast.setModiTime(now);
                         if (wrkMastMapper.updateById(wrkMast) == 0) {
-                            News.error("淇敼宸ヤ綔妗g姸鎬� 3.灏忚溅寰呮惉 => 4.杩佸叆灏忚溅 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                            News.error("淇敼宸ヤ綔妗g姸鎬� 3.灏忚溅寰呮惉 => 6.灏忚溅寰呭叆 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                        }
+                    } else {
+                        if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
+                            News.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
+                        } else {
+                            // 淇敼绌挎杞﹁繍琛屼腑鎺掑垪灞�
+                            steThread.modifyPos(Utils.getGroupRow(locMast.getLocNo()), locMast.getBay1(), locMast.getLev1());
+                            // 淇敼宸ヤ綔妗g姸鎬� 3.灏忚溅寰呮惉 => 4.杩佸叆灏忚溅
+                            Date now = new Date();
+                            wrkMast.setWrkSts(4L);
+                            wrkMast.setCrnStrTime(now);
+                            wrkMast.setModiTime(now);
+                            if (wrkMastMapper.updateById(wrkMast) == 0) {
+                                News.error("淇敼宸ヤ綔妗g姸鎬� 3.灏忚溅寰呮惉 => 4.杩佸叆灏忚溅 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                            }
                         }
                     }
                 // 鍑哄簱鎼�
@@ -2684,7 +2722,7 @@
                             SteCommand steCommand = new SteCommand();
                             steCommand.setSteNo(wrkMast.getSteNo()); // 绌挎杞︾紪鍙�
                             steCommand.setTaskNo(9999); // 宸ヤ綔鍙�
-                            steCommand.setTaskMode(SteTaskModeType.findWaiting(basSte.getRow())); // 浠诲姟妯″紡:  鍘昏繎鐐� 绛夊緟鍫嗗灈鏈哄弶鍙�
+                            steCommand.setTaskMode(SteTaskModeType.findWaiting(basSte.getRow())); // 浠诲姟妯″紡:  鍘诲緟鏈轰綅閬胯
 //                        steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue()).shortValue());
 //                        steCommand.setBay(steProtocol.getBay());
 //                        steCommand.setLev(steProtocol.getLev());
@@ -3404,6 +3442,7 @@
                 }
                 ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
                 ledCommand.setStaNo(wrkMast.getStaNo());
+                ledCommand.setBarcode(wrkMast.getBarcode());
                 if (wrkMast.getIoType() != 110) {
                     List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
                     wrkDetls.forEach(wrkDetl -> {
@@ -3857,7 +3896,11 @@
                     boolean success = true;
                     List<String> insideLoc = Utils.getGroupInsideLoc(one.getLocNo());
                     for (String inside : insideLoc) {
-                        if (locMastService.selectById(inside).getLocSts().equals("P")
+                        LocMast locMast = locMastService.selectById(inside);
+                        if(Cools.isEmpty(locMast)){
+                            continue;
+                        }
+                        if (locMast.getLocSts().equals("P")
                                 || locMastService.selectById(inside).getLocSts().equals("R")
                                 || locMastService.selectById(inside).getLocSts().equals("S")
                                 || locMastService.selectById(inside).getLocSts().equals("Q")) {

--
Gitblit v1.9.1