From e89d0cdf971ecb56d4d323f17afff2e3e139a58d Mon Sep 17 00:00:00 2001
From: L <L@132>
Date: 星期二, 15 七月 2025 13:00:00 +0800
Subject: [PATCH] *

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  224 +++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 191 insertions(+), 33 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 fdcb0d3..6f9f172 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -137,31 +137,55 @@
                         back = true;
                     }
                     if (staProtocol.isFrontErr()) {
-                        errMsg = "鍓嶈秴闄�";
+                        if (!back){
+                            errMsg = "鍓嶈秴闄�";
+                        } else {
+                            errMsg = errMsg+"---"+"鍓嶈秴闄�";
+                        }
                         back = true;
                     }
-                    if (!back && staProtocol.isBackErr()) {
-                        errMsg = "鍚庤秴闄�";
+                    if (staProtocol.isBackErr()) {
+                        if (!back){
+                            errMsg = "鍚庤秴闄�";
+                        } else {
+                            errMsg = errMsg+"---"+"鍚庤秴闄�";
+                        }
                         back = true;
                     }
-                    if (!back && staProtocol.isHighErr()) {
-                        errMsg = "楂樿秴闄�";
+                    if (staProtocol.isHighErr()) {
+                        if (!back){
+                            errMsg = "楂樿秴闄�";
+                        } else {
+                            errMsg = errMsg+"---"+"楂樿秴闄�";
+                        }
                         back = true;
                     }
-                    if (!back && staProtocol.isLeftErr()) {
-                        errMsg = "宸﹁秴闄�";
+                    if (staProtocol.isLeftErr()) {
+                        if (!back){
+                            errMsg = "宸﹁秴闄�";
+                        } else {
+                            errMsg = errMsg+"---"+"宸﹁秴闄�";
+                        }
                         back = true;
                     }
-                    if (!back && staProtocol.isRightErr()) {
-                        errMsg = "鍙宠秴闄�";
+                    if (staProtocol.isRightErr()) {
+                        if (!back){
+                            errMsg = "鍙宠秴闄�";
+                        } else {
+                            errMsg = errMsg+"---"+"鍙宠秴闄�";
+                        }
                         back = true;
                     }
 //                    if (!back && staProtocol.isWeightErr()) {
 //                        errMsg = "瓒呴噸";
 //                        back = true;
 //                    }
-                    if (!back && staProtocol.isBarcodeErr()) {
-                        errMsg = "鎵爜澶辫触";
+                    if (staProtocol.isBarcodeErr()) {
+                        if (!back){
+                            errMsg = "鎵爜澶辫触";
+                        } else {
+                            errMsg = errMsg+"---"+"鎵爜澶辫触";
+                        }
                         back = true;
                     }
                     // 閫�鍥�
@@ -180,6 +204,7 @@
                         staProtocol.setWorkNo(9999);
                         staProtocol.setStaNo(inSta.getBackSta());
                         devpThread.setPakMk(staProtocol.getSiteId(), false);
+                        devpThread.setPakMkRun(staProtocol.getSiteId(), false);
                         devpThread.setErrorDev(staProtocol.getSiteId(), errMsg);
                         MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                         TaskWrk taskWrk = taskWrkMapper.selectByWrkNo(Integer.valueOf(workNo));
@@ -644,6 +669,9 @@
             }
 
             CrnSlave crnSlave = new CrnSlave(crn);
+            if (Cools.isEmpty(crnProtocol.getLaneNo()) || crnProtocol.getLaneNo()==0){
+                continue;
+            }
 
             if (!crn.getId().equals(crnProtocol.getLaneNo())) {
                 for (CrnSlave crnOther : slaveProperties.getCrn()) {
@@ -751,7 +779,7 @@
                         // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
                         CrnCommand crnCommand = new CrnCommand();
                         crnCommand.setCrnNo(crnProtocol.getCrnNo()); // 鍫嗗灈鏈虹紪鍙�
-                        crnCommand.setCrnNo(crnProtocol.getLaneNo()); // 鍫嗗灈鏈哄贩閬撶紪鍙�
+                        crnCommand.setLaneNo(crnProtocol.getLaneNo()); // 鍫嗗灈鏈哄贩閬撶紪鍙�
                         crnCommand.setTaskNo((short)999); // 宸ヤ綔鍙�
                         crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
                         crnCommand.setTaskMode(CrnTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡:  搴撲綅绉昏浆
@@ -804,6 +832,9 @@
             }
 
             CrnSlave crn = new CrnSlave(crnSlave);
+            if (Cools.isEmpty(crnProtocol.getLaneNo()) || crnProtocol.getLaneNo()==0){
+                continue;
+            }
 
             if (!crnSlave.getId().equals(crnProtocol.getLaneNo())) {
                 for (CrnSlave crnOther : slaveProperties.getCrn()) {
@@ -910,6 +941,41 @@
 
                 // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
                 if (taskWrkMapper.selectCrnWorking(crnProtocol.getLaneNo()) != null) {
+                    TaskWrk taskWrkNow3 = taskWrkMapper.selectCrnWorking(crnProtocol.getLaneNo());
+                    if (taskWrkNow3.getWrkSts() == 3){
+                        try{
+                            // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+                            CrnCommand crnCommand = new CrnCommand();
+                            crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+                            crnCommand.setLaneNo(crnProtocol.getLaneNo()); // 鍫嗗灈鏈哄贩閬撶紪鍙�
+                            crnCommand.setTaskNo(taskWrkNow3.getWrkNo().shortValue()); // 宸ヤ綔鍙�
+                            crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+                            crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
+                            crnCommand.setSourcePosX(crnStn.getRow().shortValue());     // 婧愬簱浣嶆帓
+                            crnCommand.setSourcePosY(crnStn.getBay().shortValue());     // 婧愬簱浣嶅垪
+                            crnCommand.setSourcePosZ(crnStn.getLev().shortValue());   // 婧愬簱浣嶅眰
+                            crnCommand.setDestinationPosX(Utils.getRowShort(taskWrkNow3.getTargetPoint()));     // 鐩爣搴撲綅鍒�
+                            int bay1 = Utils.getBayShort(taskWrkNow3.getTargetPoint()) + 1;
+                            crnCommand.setDestinationPosY((short)bay1);     // 鐩爣搴撲綅灞�
+                            crnCommand.setDestinationPosZ(Utils.getLevShort(taskWrkNow3.getTargetPoint()));     // 鐩爣搴撲綅鎺�
+//                crnCommand.setCommand((short) 1);
+                            try{
+                                DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+                                deviceErrorService.addDeviceError("CrnErr", slave.getId(), "宸烽亾鍙�"+crnCommand.getLaneNo()+";鍫嗗灈鏈哄懡浠ゅ湴鍧�琛ヤ竵閲嶆柊鍐欏叆:"+JSON.toJSONString(crnCommand.getNowTask()));
+                            } catch (Exception e2){
+                            }
+                            if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand))) {
+                                log.error("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand));
+                                devpThread.setErrorDev(staProtocol.getSiteId(), crnProtocol.getLaneNo()+"宸烽亾鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
+                                CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "杩愯鍛戒护涓嬪彂澶辫触");
+
+                                throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
+                            }
+                        } catch (Exception eNow3){
+
+                        }
+                    }
+
                     devpThread.setErrorDev(staProtocol.getSiteId(), crnProtocol.getLaneNo()+"宸烽亾鍫嗗灈鏈哄瓨鍦ㄥ悐杞︿换鍔�");
                     CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "鍫嗗灈鏈哄瓨鍦ㄦ墽琛屼腑鍚婅溅浠诲姟");
                     continue;
@@ -960,7 +1026,7 @@
                 // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
                 CrnCommand crnCommand = new CrnCommand();
                 crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
-                crnCommand.setCrnNo(crnProtocol.getLaneNo()); // 鍫嗗灈鏈哄贩閬撶紪鍙�
+                crnCommand.setLaneNo(crnProtocol.getLaneNo()); // 鍫嗗灈鏈哄贩閬撶紪鍙�
                 crnCommand.setTaskNo(taskWrk.getWrkNo().shortValue()); // 宸ヤ綔鍙�
                 crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
                 crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
@@ -1066,11 +1132,11 @@
                     }
 
                     // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
-                    if (staProtocol.isAutoing() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) {
+//                    if (staProtocol.isAutoing() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) {
 
 //                    // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
-//                    if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
-//                            && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
+                    if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
+                            && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
                         // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
 
                         // 鍫嗗灈鏈烘帶鍒惰繃婊�
@@ -1087,6 +1153,39 @@
 
                         // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
                         if (taskWrkMapper.selectCrnWorking(crnProtocol.getLaneNo()) != null) {
+
+                            TaskWrk taskWrkNow3 = taskWrkMapper.selectCrnWorking(crnProtocol.getLaneNo());
+                            if (taskWrkNow3.getWrkSts() == 12){
+                                try{
+                                    CrnCommand command = new CrnCommand();
+                                    command.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+                                    command.setLaneNo(crnProtocol.getLaneNo()); // 鍫嗗灈鏈虹紪鍙�
+                                    command.setTaskNo(taskWrkNow3.getWrkNo().shortValue()); // 宸ヤ綔鍙�
+                                    command.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+                                    command.setTaskMode(CrnTaskModeType.PAKIN); // 浠诲姟妯″紡
+                                    command.setSourcePosX(Utils.getRowShort(taskWrkNow3.getStartPoint()));     // 婧愬簱浣嶆帓
+                                    int bayS = Utils.getBayShort(taskWrkNow3.getStartPoint()) + 1;
+                                    command.setSourcePosY((short)bayS);     // 婧愬簱浣嶅垪
+                                    command.setSourcePosZ(Utils.getLevShort(taskWrkNow3.getStartPoint()));     // 婧愬簱浣嶅眰
+                                    command.setDestinationPosX(crnStn.getRow().shortValue());     // 鐩爣搴撲綅鎺�
+                                    command.setDestinationPosY(crnStn.getBay().shortValue());     // 鐩爣搴撲綅鍒�
+                                    command.setDestinationPosZ(crnStn.getLev().shortValue());     // 鐩爣搴撲綅灞�
+//                        command.setCommand((short) 1);
+                                    try{
+                                        DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+                                        deviceErrorService.addDeviceError("CrnErr", slave.getId(), "宸烽亾鍙�"+command.getLaneNo()+";鍫嗗灈鏈哄懡浠ゅ湴鍧�琛ヤ竵閲嶆柊鍐欏叆:"+JSON.toJSONString(command.getNowTask()));
+                                    } catch (Exception e2){
+                                    }
+                                    if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, command))) {
+                                        log.error("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐ワ紝鍫嗗灈鏈哄彿={}锛屽贩閬�={}锛屼换鍔℃暟鎹�={}", slave.getId(), taskWrk.getCrnNo(), JSON.toJSON(command));
+                                        devpThread.setErrorDev(staProtocol.getSiteId(), crnProtocol.getLaneNo()+"宸烽亾鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
+                                        CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "杩愯鍛戒护涓嬪彂澶辫触");
+                                        throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
+                                    }
+                                } catch (Exception eNow3){
+
+                                }
+                            }
                             devpThread.setErrorDev(staProtocol.getSiteId(), crnProtocol.getLaneNo()+"宸烽亾鍫嗗灈鏈哄瓨鍦ㄥ悐杞︿换鍔�");
                             CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "鍫嗗灈鏈哄瓨鍦ㄦ墽琛屼腑鍚婅溅浠诲姟");
                             break;
@@ -1171,6 +1270,9 @@
                             }
                             if (staProtocol.isOutEnable()){
                                 CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "娌℃湁鍙嚭");
+                            }
+                            if (staProtocol.isLoading()){
+                                CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "鍑哄簱绔欐湁鐗�");
                             }
                         } else {
                             CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "鍑哄簱绔欑偣锛氶潪鑷姩");
@@ -1305,6 +1407,9 @@
                 }
 
                 CrnSlave crn = new CrnSlave(crnSlave);
+                if (Cools.isEmpty(crnProtocol.getLaneNo()) || crnProtocol.getLaneNo()==0){
+                    continue;
+                }
 
                 if (!crnSlave.getId().equals(crnProtocol.getLaneNo())) {
                     for (CrnSlave crnOther : slaveProperties.getCrn()) {
@@ -1324,11 +1429,14 @@
                     }
 //                Thread.sleep(300);
                     //纭瀹屾垚淇″彿
-                    CrnOperatorParam crnOperatorParam = new CrnOperatorParam();
-                    crnOperatorParam.setCrnNo(crn.getId());
+//                    CrnOperatorParam crnOperatorParam = new CrnOperatorParam();
+//                    crnOperatorParam.setCrnNo(crn.getId());
                     Date now = new Date();
 
-                    crnController.crnTaskComplete(crnOperatorParam);
+//                    crnController.crnTaskComplete(crnOperatorParam);
+//                    MessageQueue.offer(SlaveType.Crn, crn.getId(), new Task(2, command))
+                    crnThread.setResetFlag(true);
+
                     if (!Cools.isEmpty(taskWrk)) {
                         if (taskWrk.getIoType() == 1 && taskWrk.getWrkSts() == 3) {
                             taskWrk.setWrkSts(4);//鍏ュ簱瀹屾垚
@@ -1499,8 +1607,8 @@
                                         null,    // 缁撴潫鏃堕棿
                                         null,    // 宸ヤ綔鐘舵��
                                         null,    // 鍏ュ嚭搴撶被鍨�
-                                        crn.getId(),    // 鍫嗗灈鏈�
-                                        null,    // plc
+                                        crnProtocol.getLaneNo(),    // 鍫嗗灈鏈�
+                                        crn.getId(),    // plc
                                         null,    // 鐩爣搴撲綅
                                         null,    // 鐩爣绔�
                                         null,    // 婧愮珯
@@ -1847,6 +1955,11 @@
             return null;
         }
         // 鍒ゆ柇鏄惁婊¤冻鍙栬揣鏉′欢
+        if (!staProtocol.isPakMkTask()) {
+            devpThread.setErrorDev(staProtocol.getSiteId(), "浠诲姟宸蹭笅鍙戠瓑寰呭皬杞﹀彇");
+            return null;
+        }
+        // 鍒ゆ柇鏄惁婊¤冻鍙栬揣鏉′欢
         if (staProtocol.isAutoing()
 //                && staProtocol.isLoading()
 //                && staProtocol.isStaOk()
@@ -1855,8 +1968,20 @@
             if (taskWrk != null) {
                 Integer stano = staProtocol.getStaNo();
                 if (staProtocol.getSiteId() == 1004 || staProtocol.getSiteId()==1020){
-                    // 鍒ゆ柇鏄惁婊¤冻鍙栬揣鏉′欢
+                    if (!staProtocol.isPakMkRun()) {
+                        devpThread.setErrorDev(staProtocol.getSiteId(), "寮傚父鍥為��鏍囪锛岄渶瑕佸洖閫�");
+                        return null;
+                    }
                     if (!staProtocol.isLoading()) {
+                        devpThread.setErrorDev(staProtocol.getSiteId(), "鏃犵墿");
+                        return null;
+                    }
+                    if (!staProtocol.isInEnable()) {
+                        devpThread.setErrorDev(staProtocol.getSiteId(), "绛夊緟鍙叆淇″彿");
+                        return null;
+                    }
+                    if (!staProtocol.isStaOk()) {
+                        devpThread.setErrorDev(staProtocol.getSiteId(), "绛夊緟閾炬潯灏辩华");
                         return null;
                     }
                     // 灏哄妫�娴嬪紓甯�
@@ -1867,31 +1992,55 @@
                         back = true;
                     }
                     if (staProtocol.isFrontErr()) {
-                        errMsg = "鍓嶈秴闄�";
+                        if (!back){
+                            errMsg = "鍓嶈秴闄�";
+                        } else {
+                            errMsg = errMsg+"---"+"鍓嶈秴闄�";
+                        }
                         back = true;
                     }
-                    if (!back && staProtocol.isBackErr()) {
-                        errMsg = "鍚庤秴闄�";
+                    if (staProtocol.isBackErr()) {
+                        if (!back){
+                            errMsg = "鍚庤秴闄�";
+                        } else {
+                            errMsg = errMsg+"---"+"鍚庤秴闄�";
+                        }
                         back = true;
                     }
-                    if (!back && staProtocol.isHighErr()) {
-                        errMsg = "楂樿秴闄�";
+                    if (staProtocol.isHighErr()) {
+                        if (!back){
+                            errMsg = "楂樿秴闄�";
+                        } else {
+                            errMsg = errMsg+"---"+"楂樿秴闄�";
+                        }
                         back = true;
                     }
-                    if (!back && staProtocol.isLeftErr()) {
-                        errMsg = "宸﹁秴闄�";
+                    if (staProtocol.isLeftErr()) {
+                        if (!back){
+                            errMsg = "宸﹁秴闄�";
+                        } else {
+                            errMsg = errMsg+"---"+"宸﹁秴闄�";
+                        }
                         back = true;
                     }
-                    if (!back && staProtocol.isRightErr()) {
-                        errMsg = "鍙宠秴闄�";
+                    if (staProtocol.isRightErr()) {
+                        if (!back){
+                            errMsg = "鍙宠秴闄�";
+                        } else {
+                            errMsg = errMsg+"---"+"鍙宠秴闄�";
+                        }
                         back = true;
                     }
 //                    if (!back && staProtocol.isWeightErr()) {
 //                        errMsg = "瓒呴噸";
 //                        back = true;
 //                    }
-                    if (!back && staProtocol.isBarcodeErr()) {
-                        errMsg = "鎵爜澶辫触";
+                    if (staProtocol.isBarcodeErr()) {
+                        if (!back){
+                            errMsg = "鎵爜澶辫触";
+                        } else {
+                            errMsg = errMsg+"---"+"鎵爜澶辫触";
+                        }
                         back = true;
                     }
                     // 閫�鍥�
@@ -1907,6 +2056,8 @@
                         staProtocol.setWorkNo(9999);
                         staProtocol.setStaNo(staProtocol.getStaNo()+1);
                         devpThread.setPakMk(staProtocol.getSiteId(), false);
+                        devpThread.setPakMkRun(staProtocol.getSiteId(), false);
+                        devpThread.setPakMkTask(staProtocol.getSiteId(), false);
                         devpThread.setErrorDev(staProtocol.getSiteId(), errMsg);
                         MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
                         try{
@@ -2373,6 +2524,7 @@
         try {
             RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
             TaskProtocolCache taskProtocolCache = rgvThread.getTaskProtocolCache();
+            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId());
 
             TaskProtocol issuedTake = new TaskProtocol();
             TaskProtocol issuedPut = new TaskProtocol();
@@ -2395,6 +2547,12 @@
                         return false;
                     }
                 }
+                try{
+                    devpThread.setPakMkTask(rgvStn.getStaNo(), false);
+                } catch (Exception e2){
+                    RgvErrCache.updateRgvErr(rgvSlave.getId(),rgvStn.getStaNo()+"灏忚溅浠诲姟涓嬪彂鏍囪鏇存柊澶辫触");
+                }
+
 
                 BasDevpPosition basDevpPositionSou = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", rgvStn.getStaNo()));
                 BasDevpPosition basDevpPositionEnd = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", targetPointConvert));

--
Gitblit v1.9.1