From 14ae79f19df5920e53a43f90f01686dda426ebbc Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期五, 18 七月 2025 13:34:28 +0800
Subject: [PATCH] #预调度移动

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  129 ++++++++++++++++++++++++++++++------------
 1 files changed, 91 insertions(+), 38 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 89295ec..8054823 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -10,6 +10,7 @@
 import com.zy.asrs.entity.*;
 import com.zy.asrs.mapper.*;
 import com.zy.asrs.service.*;
+import com.zy.system.service.*;
 import com.zy.asrs.utils.RouteUtils;
 import com.zy.asrs.utils.Utils;
 import com.zy.asrs.utils.VersionUtils;
@@ -38,6 +39,9 @@
 import com.zy.core.thread.LedThread;
 import com.zy.core.thread.RgvThread;
 import com.zy.core.thread.SiemensDevpThread;
+import com.zy.system.entity.Config;
+import com.zy.system.mapper.ConfigMapper;
+import com.zy.system.service.ConfigService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -94,6 +98,8 @@
     private WrkMastService wrkMastService;
     @Autowired
     private BasRgvMapService basRgvMapService;
+    @Autowired
+    private ConfigService configService;
 
     @Value("${wms.url}")
     private String wmsUrl;
@@ -101,6 +107,8 @@
     private boolean isToOrigin;
 
     public Integer wrkNo = 10000;
+    @Autowired
+    private ConfigMapper configMapper;
 
     /**
      * 缁勬墭
@@ -944,7 +952,7 @@
             // 搴撲綅绉昏浆
             //mark - 3 - ....
             this.locToLoc(crn, crnProtocol, mark);
-            this.crnRebackHp(crnProtocol, crnThread);
+            this.crnRebackHp(crnProtocol, crnThread,null);
 
         }
 //        News.infoNoLog(""+mark+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂鎵ц瀹屾垚");
@@ -953,39 +961,27 @@
     /**
      * 鍥炲師鐐癸紝鍫嗗灈鏈烘病鏈夋墽琛屼腑浠诲姟锛岃澶囧瓨鍦ㄥ叆搴撲换鍔℃椂鍙洖鍘熺偣
      */
-    public synchronized void crnRebackHp(CrnProtocol crnProtocol, CrnThread crnThread) {
-//        for (CrnSlave crn : slaveProperties.getCrn()) {
-//            // 鑾峰彇鍫嗗灈鏈轰俊鎭�
-//            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
-//            CrnProtocol crnProtocol = crnThread.getCrnProtocol();
-//            if (crnProtocol == null) {
-//                continue;
-//            }
-//            BasCrnp basCrnp = basCrnpService.selectById(crn.getId());
-//            if (basCrnp == null) {
-//                log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crn.getId());
-//                continue;
-//            }
-        if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
-            if (crnProtocol.getBay() == 121) {
-                return;
-            }
+    public synchronized void crnRebackHp(CrnProtocol crnProtocol, CrnThread crnThread,String staNo) {
+        if(staNo == null){
+            if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
+                if (crnProtocol.getBay() == 121) {
+                    return;
+                }
 
-            // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�3,12
-            if (wrkMastMapper.selectWorking(crnProtocol.getCrnNo()) != null) {
-                return;
-            }
+                // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�3,12
+                if (wrkMastMapper.selectWorking(crnProtocol.getCrnNo()) != null) {
+                    return;
+                }
 
-            //鍫嗗灈鏈烘湁鎵ц涓换鍔★紝杩囨护3,4,11,12
-            if (wrkMastMapper.selectCrnWorking(crnProtocol.getCrnNo()) != null) {
-                return;
-            }
+                //鍫嗗灈鏈烘湁鎵ц涓换鍔★紝杩囨护3,4,11,12
+                if (wrkMastMapper.selectCrnWorking(crnProtocol.getCrnNo()) != null) {
+                    return;
+                }
 
-            //杈撻�佺嚎娌℃湁鍏ュ簱浠诲姟锛岃繃婊�2
-            if (wrkMastMapper.selectDevWorking(crnProtocol.getCrnNo()) == null) {
-                return;
-            }
-            if(crnProtocol.getCrnNo() == 1){
+                //杈撻�佺嚎娌℃湁鍏ュ簱浠诲姟锛岃繃婊�2
+                if (wrkMastMapper.selectDevWorking(crnProtocol.getCrnNo()) == null) {
+                    return;
+                }
                 News.info("鍫嗗灈鏈哄彫鍥炲師鐐�==>>" + crnProtocol.getCrnNo() + "鍙峰爢鍨涙満鏈夊叆搴撲换鍔�,鍙洖鍘熺偣");
                 // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
                 CrnCommand crnCommand = new CrnCommand();
@@ -1004,7 +1000,54 @@
                 }
                 crnThread.setBackHpFlag(true);
             }
+        } else {
+            int y = 1; // 榛樿鍒�
+            int staNoInt = Integer.parseInt(staNo);
 
+            int z = staNoInt / 100; // 灞�
+
+            if ((staNoInt >= 121 && staNoInt <= 126) || (staNoInt >= 221 && staNoInt <= 230) || (staNoInt >= 411 && staNoInt <= 414)) {
+                y = 121;
+            }
+
+            if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) {
+                if (crnProtocol.getBay() == y) {
+                    return;
+                }
+
+                // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
+                if (wrkMastMapper.selectWorking(crnProtocol.getCrnNo()) != null) {
+                    return;
+                }
+
+                // 鍫嗗灈鏈烘湁鎵ц涓换鍔�
+                if (wrkMastMapper.selectCrnWorking(crnProtocol.getCrnNo()) != null) {
+                    return;
+                }
+
+                // 杈撻�佺嚎娌℃湁鍏ュ簱浠诲姟
+                if (wrkMastMapper.selectDevWorking(crnProtocol.getCrnNo()) == null) {
+                    return;
+                }
+
+                News.info("鍫嗗灈鏈哄彫鍥炲師鐐�==>>" + crnProtocol.getCrnNo() + "鍙峰爢鍨涙満鏈夊叆搴撲换鍔�,鍙洖鍘熺偣");
+                // 鍛戒护涓嬪彂
+                CrnCommand crnCommand = new CrnCommand();
+                crnCommand.setCrnNo(crnProtocol.getCrnNo());
+                crnCommand.setTaskNo((short) 9999);
+                crnCommand.setAckFinish((short) 0);
+                crnCommand.setTaskMode(CrnTaskModeType.X_MOVE);
+                crnCommand.setSourcePosX((short) 1); // 榛樿鎺掑缁堜负1
+                crnCommand.setSourcePosY((short) y); // 鍔ㄦ�佸垪
+                crnCommand.setSourcePosZ((short) z); // 鍔ㄦ�佸眰
+                crnCommand.setDestinationPosX((short) 0);
+                crnCommand.setDestinationPosY((short) 0);
+                crnCommand.setDestinationPosZ((short) 0);
+                if (!MessageQueue.offer(SlaveType.Crn, crnProtocol.getCrnNo(), new Task(2, crnCommand))) {
+                    News.error("鍫嗗灈鏈哄洖鍘熺偣鍛戒护涓嬪彂澶辫触锛屽爢鍨涙満鍙�={}锛屼换鍔℃暟鎹�={}", crnProtocol.getCrnNo(), JSON.toJSON(crnCommand));
+                }
+                crnThread.setBackHpFlag(true);
+            }
         }
 //        }
     }
@@ -1212,11 +1255,21 @@
                     break;
 //                    continue;
                 }
-//                 && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
-//                        && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()
+                boolean canOut;
+                Config config = configService.selectConfigByCode("C-OUT-OP");
+
+                if (Cools.isEmpty(config) || config.getValue().equals("false") ){
+                    canOut = staProtocol.isAutoing()
+                            && !staProtocol.isLoading()
+                            && "Y".equals(staDetl.getCanouting())
+                            && staProtocol.getWorkNo() == 0
+                            && staProtocol.isOutEnable();
+                } else {
+                    canOut = staProtocol.isAutoing();
+                }
+
                 // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵��
-                if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")
-                        && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) {
+                if (canOut) {
                     // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
 
                     // 鍫嗗灈鏈烘帶鍒惰繃婊�
@@ -1531,9 +1584,9 @@
 
 
 
-                // 鍫嗗灈鏈哄浣�
-                News.warnNoLog("" + mark + " - 2" + " - 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満 : 鍫嗗灈鏈哄彿={}", crnThread.getCrnProtocol().getCrnNo());
-                crnThread.setResetFlag(true);
+                    // 鍫嗗灈鏈哄浣�
+                    News.warnNoLog("" + mark + " - 2" + " - 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満 : 鍫嗗灈鏈哄彿={}", crnThread.getCrnProtocol().getCrnNo());
+                    crnThread.setResetFlag(true);
                 }
             }else{
                 //  鐘舵�侊細绛夊緟纭 骞朵笖  浠诲姟瀹屾垚浣� = 1

--
Gitblit v1.9.1