From 44be6da8fc2740a7e81d5b878a894e318b6a5f8c Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期日, 27 四月 2025 15:51:37 +0800
Subject: [PATCH] *

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |   72 ++++++++++++++++++++++++++++--------
 1 files changed, 56 insertions(+), 16 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 be3b65a..8fda140 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -384,9 +384,28 @@
      */
     public void crnStnToOutStn() {
         for (CrnSlave crnSlave : slaveProperties.getCrn()) {
+
+            // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnSlave.getId());
+            CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+            if (crnProtocol == null) { continue; }
+            BasCrnp basCrnp = basCrnpService.selectById(crnSlave.getId());
+            if (basCrnp == null) {
+                log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crnSlave.getId());
+                continue;
+            }
+            if (!crnSlave.getId().equals(crnProtocol.getLaneNo())){
+                for (CrnSlave crnOther : slaveProperties.getCrn()) {
+                    if (crnOther.getId().equals(crnProtocol.getLaneNo())){
+                        crnSlave.updateCrnInStn(crnOther);
+                    }
+                }
+            }
             // 閬嶅巻鍫嗗灈鏈哄嚭搴撶珯
             for (CrnSlave.CrnStn crnStn : crnSlave.getCrnOutStn()) {
-                List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("crn_no", crnSlave.getId()).eq("crn_stn", crnStn.getStaNo()));
+
+                List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("CRN_NO", crnSlave.getId()).eq("LANE_NO", crnProtocol.getLaneNo()).eq("CRN_STN", crnStn.getStaNo()));
+//                List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("crn_no", crnSlave.getId()).eq("").eq("crn_stn", crnStn.getStaNo()));
                 for (StaDesc staDesc : staDescs){
                     try{
                         // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
@@ -399,7 +418,7 @@
                         }
                         if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == 0)) {
                             // 鏌ヨ宸ヤ綔妗�
-                            TaskWrk taskWrk = taskWrkMapper.selectCrnStaWorking(crnSlave.getId(), staDesc.getStnNo().toString());
+                            TaskWrk taskWrk = taskWrkMapper.selectCrnStaWorking(crnProtocol.getLaneNo(), staDesc.getStnNo().toString());
                             if (taskWrk == null) {
                                 continue;
                             }
@@ -452,6 +471,14 @@
                 continue;
             }
 
+            if (!crn.getId().equals(crnProtocol.getLaneNo())){
+                for (CrnSlave crnOther : slaveProperties.getCrn()) {
+                    if (crnOther.getId().equals(crnProtocol.getLaneNo())){
+                        crn.updateCrnInStn(crnOther);
+                    }
+                }
+            }
+
             // 搴撲綅绉昏浆
             this.locToLoc(crn, crnProtocol);
 
@@ -488,7 +515,7 @@
      */
     public void crnStnToLoc(CrnSlave slave, CrnProtocol crnProtocol) throws IOException {
         for (CrnSlave.CrnStn crnStn : slave.getCrnInStn()) {
-            List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("crn_no", slave.getId()).eq("crn_stn", crnStn.getStaNo()));
+            List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("CRN_NO", slave.getId()).eq("LANE_NO", crnProtocol.getLaneNo()).eq("CRN_STN", crnStn.getStaNo()));
             for (StaDesc staDesc : staDescs) {
                 boolean flag = false;
                 // 鑾峰彇鍫嗗灈鏈哄叆搴撶珯淇℃伅
@@ -514,7 +541,7 @@
                 }
 
                 // 鑾峰彇宸ヤ綔鐘舵�佷负2锛堣澶囦笂璧帮級鐨勫叆搴撳伐浣滄。
-                TaskWrk taskWrk = taskWrkMapper.selectPakIn(slave.getId(), staProtocol.getWorkNo().intValue(), staDesc.getStnNo().toString());
+                TaskWrk taskWrk = taskWrkMapper.selectPakIn(crnProtocol.getLaneNo(), staProtocol.getWorkNo().intValue(), staDesc.getStnNo().toString());
                 if(null == taskWrk) {
                     continue;
                 }
@@ -525,7 +552,7 @@
                 }
 
                 // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
-                if (taskWrkMapper.selectCrnWorking(slave.getId()) != null) {
+                if (taskWrkMapper.selectCrnWorking(crnProtocol.getLaneNo()) != null) {
                     continue;
                 }
 
@@ -573,7 +600,8 @@
 
                 // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
                 CrnCommand crnCommand = new CrnCommand();
-                crnCommand.setCrnNo(staDesc.getCrnNo()); // 鍫嗗灈鏈虹紪鍙�
+                crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+                crnCommand.setCrnNo(staDesc.getLaneNo()); // 鍫嗗灈鏈哄贩閬撶紪鍙�
                 crnCommand.setTaskNo(taskWrk.getWrkNo().shortValue()); // 宸ヤ綔鍙�
                 crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
                 crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
@@ -634,15 +662,17 @@
      * 2022-06-09 TQS淇敼锛屾煡璇㈠伐浣滄。LIST锛岄亶鍘嗕笅鍙戯紝闃叉绗竴涓换鍔″牭濉炲嚭搴�
      */
     public void locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol){
-        List<TaskWrk> taskWrksInitial = taskWrkMapper.selectPakOut(slave.getId(), null);
+        List<TaskWrk> taskWrksInitial = taskWrkMapper.selectPakOut(crnProtocol.getLaneNo(), null);
         if (taskWrksInitial.size()==0){
             return;
         }
         for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) {
-            List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("crn_no", slave.getId()).eq("crn_stn", crnStn.getStaNo()));
+            List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("CRN_NO", slave.getId()).eq("LANE_NO", crnProtocol.getLaneNo()).eq("CRN_STN", crnStn.getStaNo()));
+
+//            List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("crn_no", crnProtocol.getLaneNo()).eq("crn_stn", crnStn.getStaNo()));
             for (StaDesc staDesc : staDescs){
                 // 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗�
-                List<TaskWrk> taskWrks = taskWrkMapper.selectPakOut(slave.getId(),staDesc.getStnNo().toString());
+                List<TaskWrk> taskWrks = taskWrkMapper.selectPakOut(crnProtocol.getLaneNo(),staDesc.getStnNo().toString());
                 for (TaskWrk taskWrk : taskWrks){
                     if (taskWrk == null) {
                         continue;
@@ -679,12 +709,13 @@
                         }
 
                         // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
-                        if (taskWrkMapper.selectCrnWorking(slave.getId()) != null) {
+                        if (taskWrkMapper.selectCrnWorking(crnProtocol.getLaneNo()) != null) {
                             break;
                         }
 
                         CrnCommand command = new CrnCommand();
-                        command.setCrnNo(taskWrk.getCrnNo()); // 鍫嗗灈鏈虹紪鍙�
+                        command.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+                        command.setLaneNo(crnProtocol.getLaneNo()); // 鍫嗗灈鏈虹紪鍙�
                         command.setTaskNo(taskWrk.getWrkNo().shortValue()); // 宸ヤ綔鍙�
                         command.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
                         command.setTaskMode(CrnTaskModeType.PAKIN); // 浠诲姟妯″紡
@@ -696,7 +727,7 @@
                         command.setDestinationPosZ(crnStn.getLev().shortValue());     // 鐩爣搴撲綅灞�
                         command.setCommand((short)1);
                         if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, command),false)) {
-                            log.error("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(command));
+                            log.error("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐ワ紝鍫嗗灈鏈哄彿={}锛屽贩閬�={}锛屼换鍔℃暟鎹�={}",slave.getId(), taskWrk.getCrnNo(), JSON.toJSON(command));
                             throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�");
                         }else{
                             try{
@@ -755,7 +786,7 @@
             // 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑绉诲簱宸ヤ綔妗�
             List<TaskWrk> taskWrks = taskWrkMapper.selectList(
                     new EntityWrapper<TaskWrk>()
-                    .eq("CRN_NO",slave.getId())
+                    .eq("CRN_NO",crnProtocol.getLaneNo())
                     .eq("WRK_STS",11)
                     .eq("IO_TYPE",3)
                     .orderBy("IO_PRI",false));
@@ -775,7 +806,7 @@
                 }
 
                 // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
-                if (taskWrkMapper.selectCrnWorking(slave.getId()) != null) {
+                if (taskWrkMapper.selectCrnWorking(crnProtocol.getLaneNo()) != null) {
                     continue;
                 }
 
@@ -796,6 +827,7 @@
                 // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔�
                 CrnCommand crnCommand = new CrnCommand();
                 crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+                crnCommand.setLaneNo(crnProtocol.getLaneNo()); // 鍫嗗灈鏈虹紪鍙�
                 crnCommand.setTaskNo(taskWrk.getWrkNo().shortValue()); // 宸ヤ綔鍙�
                 crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
                 crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
@@ -863,12 +895,20 @@
             CrnProtocol crnProtocol = crnThread.getCrnProtocol();
             if (crnProtocol == null) { continue; }
 
+            if (!crn.getId().equals(crnProtocol.getLaneNo())){
+                for (CrnSlave crnOther : slaveProperties.getCrn()) {
+                    if (crnOther.getId().equals(crnProtocol.getLaneNo())){
+                        crn.updateCrnInStn(crnOther);
+                    }
+                }
+            }
+
             //  鐘舵�侊細绛夊緟纭 骞朵笖  浠诲姟瀹屾垚浣� = 1
             if (!Cools.isEmpty(crnProtocol.getTaskFinish()) && crnProtocol.getTaskFinish() == 0 && crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) {
                 //鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
-                TaskWrk taskWrk = taskWrkMapper.selectCrnNoInWorking(crn.getId(),crnProtocol.getTaskNo().intValue());
+                TaskWrk taskWrk = taskWrkMapper.selectCrnNoInWorking(crnProtocol.getLaneNo(),crnProtocol.getTaskNo().intValue());
                 if (Cools.isEmpty(taskWrk)&&crnProtocol.getTaskNo() !=999) {
-                    log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo());
+                    log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽贩閬撳彿={}锛屽伐浣滃彿={}", crn.getId(),crnProtocol.getLaneNo(), crnProtocol.getTaskNo());
                     continue;
                 }
                 Thread.sleep(300);

--
Gitblit v1.9.1