From d867d8d14b00e20ecfb00e349611ea62c4853c78 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 24 三月 2023 10:16:53 +0800
Subject: [PATCH] 四向穿梭车通讯协议代码部分

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  105 ++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 101 insertions(+), 4 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 6d6cd4b..4651f27 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -30,13 +30,11 @@
 import com.zy.core.model.command.LedCommand;
 import com.zy.core.model.command.SteCommand;
 import com.zy.core.model.protocol.CrnProtocol;
+import com.zy.core.model.protocol.ShuttleProtocol;
 import com.zy.core.model.protocol.StaProtocol;
 import com.zy.core.model.protocol.SteProtocol;
 import com.zy.core.properties.SlaveProperties;
-import com.zy.core.thread.BarcodeThread;
-import com.zy.core.thread.LedThread;
-import com.zy.core.thread.SiemensDevpThread;
-import com.zy.core.thread.SteThread;
+import com.zy.core.thread.*;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -612,6 +610,27 @@
     }
 
     /**
+     * 鍏ュ嚭搴�  ===>>  鍥涘悜绌挎杞﹀叆鍑哄簱浣滀笟涓嬪彂
+     */
+    public synchronized void shuttleIoExecute() {
+        for (ShuttleSlave shuttle : slaveProperties.getShuttle()) {
+            //鑾峰彇鍥涘悜绌挎杞︿俊鎭�
+            ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId());
+            ShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
+            if (shuttleProtocol == null) {
+                continue;
+            }
+
+            // 鍙湁褰撳洓鍚戠┛姊溅绌洪棽 骞朵笖鏃犱换鍔℃椂鎵嶇户缁墽琛�
+            if (shuttleProtocol.getBusyStatusType() == ShuttleStatusType.IDLE && shuttleProtocol.getTaskNo() == 0) {
+                //鍏ュ嚭搴撻�昏緫
+                //.....
+            }
+        }
+
+    }
+
+    /**
      * 鍏ュ嚭搴�  ===>>  鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂
      */
     public synchronized void crnIoExecute(){
@@ -715,6 +734,51 @@
             }
             if (!locMast.getLocSts().equals("S") && !locMast.getLocSts().equals("Q")) {
                 News.error("鍏ュ簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), locMast.getLocSts());
+                continue;
+            }
+
+            List<LocMast> locMasts = null;
+            boolean sign=false;
+            if (locMast.getRow1()>=5){
+                locMasts=locMastService.selectList(new EntityWrapper<LocMast>().ge("row1", 5)
+                        .eq("bay1",locMast.getBay1()).eq("lev1",locMast.getLev1()));
+                for (LocMast locMast1:locMasts){
+                    if (locMast1.getRow1()>locMast.getRow1()){
+                        if (!locMast1.getLocSts().equals("F") && !locMast1.getLocSts().equals("D")){
+                            if (!locMast1.getLocSts().equals("X")){
+                                sign=true;
+                                break;
+                            }
+                        }
+                    }else if (locMast1.getRow1()<locMast.getRow1()){
+                        if (locMast1.getLocSts().equals("F") || locMast1.getLocSts().equals("D")){
+                            News.error("褰撳墠宸ヤ綔妗g洰鏍囧簱浣嶆墍鍦ㄦ帓鍓嶈竟瀛樺湪璐х墿锛�", wrkMast.getWrkNo());
+                            sign=true;
+                            break;
+                        }
+                    }
+                }
+            }else {
+                locMasts=locMastService.selectList(new EntityWrapper<LocMast>().le("row1", 4)
+                        .eq("bay1",locMast.getBay1()).eq("lev1",locMast.getLev1()));
+                for (LocMast locMast1:locMasts){
+                    if (locMast1.getRow1()>locMast.getRow1()){
+                        if (locMast1.getLocSts().equals("F") || locMast1.getLocSts().equals("D")){
+                            News.error("褰撳墠宸ヤ綔妗g洰鏍囧簱浣嶆墍鍦ㄦ帓鍓嶈竟瀛樺湪璐х墿锛�", wrkMast.getWrkNo());
+                            sign=true;
+                            break;
+                        }
+                    }else if (locMast1.getRow1()<locMast.getRow1()){
+                        if (!locMast1.getLocSts().equals("F") && !locMast1.getLocSts().equals("D")){
+                            if (!locMast1.getLocSts().equals("X")){
+                                sign=true;
+                                break;
+                            }
+                        }
+                    }
+                }
+            }
+            if (sign){
                 continue;
             }
 
@@ -891,6 +955,36 @@
             LocMast sourceSta = locMastService.selectById(wrkMast.getSourceLocNo());
             if (!sourceSta.getLocSts().equals("R") &&!sourceSta.getLocSts().equals("P")) {
                 News.error("鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), sourceSta.getLocSts());
+                continue;
+            }
+            List<LocMast> locMasts = null;
+            boolean sign=false;
+            if (sourceSta.getRow1()>=5){
+                locMasts=locMastService.selectList(new EntityWrapper<LocMast>().ge("row1", 5)
+                        .eq("bay1",sourceSta.getBay1()).eq("lev1",sourceSta.getLev1()));
+                for (LocMast locMast1:locMasts){
+                    if (locMast1.getRow1()<sourceSta.getRow1()){
+                        if (!locMast1.getLocSts().equals("O")){
+                            News.error("褰撳墠宸ヤ綔妗f簮搴撲綅鎵�鍦ㄦ帓鍓嶈竟瀛樺湪璐х墿锛�", wrkMast.getWrkNo());
+                            sign=true;
+                            break;
+                        }
+                    }
+                }
+            }else {
+                locMasts=locMastService.selectList(new EntityWrapper<LocMast>().le("row1", 4)
+                        .eq("bay1",sourceSta.getBay1()).eq("lev1",sourceSta.getLev1()));
+                for (LocMast locMast1:locMasts){
+                    if (locMast1.getRow1()>sourceSta.getRow1()){
+                        if (!locMast1.getLocSts().equals("O")){
+                            News.error("褰撳墠宸ヤ綔妗g洰鏍囧簱浣嶆墍鍦ㄦ帓鍓嶈竟瀛樺湪璐х墿锛�", wrkMast.getWrkNo());
+                            sign=true;
+                            break;
+                        }
+                    }
+                }
+            }
+            if (sign){
                 continue;
             }
 
@@ -2510,6 +2604,9 @@
      */
     @SuppressWarnings("serial")
     public synchronized void loopSteCharge() {
+        if (!Cools.isEmpty(wrkMastMapper.selectAllC())){
+            return;
+        }
         if (null != wrkChargeService.selectWorking(null, WrkChargeType.reset)) {
             return;
         }

--
Gitblit v1.9.1