From c12d108ee5d786d460718fd258a87bda64a6aa39 Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期二, 25 三月 2025 14:36:09 +0800
Subject: [PATCH] #输送线循环优化

---
 src/main/java/com/zy/core/thread/SiemensCrnThread.java      |    7 ---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  111 +++++++++++++++++++++++--------------------------------
 2 files changed, 48 insertions(+), 70 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 5680365..3303ad3 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -113,91 +113,74 @@
     private CrnController crnController;
     @Autowired
     private SiteController siteController;
-    //鍑哄簱绔欑偣鑷�112寰幆绔欑偣
     @Synchronized
-    public void shiftTargetToCyclePoint() throws IOException, InterruptedException{
-        try{
+    public void shiftTargetToCyclePoint() throws IOException, InterruptedException {
+        try {
             for (DevpSlave devp : slaveProperties.getDevp()) {
                 for (DevpSlave.Sta outSta : devp.getOutSta()) {
                     DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                    StaProtocol staProtocol = devpThread.getStation().get(outSta.getStaNo());
-                    StaProtocol staProtocol1 = devpThread.getStation().get(1001);
-                    StaProtocol staProtocol2 = devpThread.getStation().get(1002);
-                    StaProtocol staProtocol3 = devpThread.getStation().get(1003);
-                    StaProtocol staProtocol4 = devpThread.getStation().get(1004);
-                    StaProtocol staProtocol6 = devpThread.getStation().get(111);
+                    if (devpThread == null) {
+                        continue;
+                    }
+
+                    StaProtocol staProtocol = getClonedStation(devpThread, outSta.getStaNo());
                     if (staProtocol == null) {
                         continue;
-                    } else {
-                        staProtocol = staProtocol.clone();
                     }
-                    if (staProtocol1 == null) {
-                        continue;
-                    } else {
-                        staProtocol1 = staProtocol1.clone();
-                    }
-                    if (staProtocol2 == null) {
-                        continue;
-                    } else {
-                        staProtocol2 = staProtocol2.clone();
-                    }
-                    if (staProtocol3 == null) {
-                        continue;
-                    } else {
-                        staProtocol3 = staProtocol3.clone();
-                    }
-                    if (staProtocol4 == null) {
-                        continue;
-                    } else {
-                        staProtocol4 = staProtocol4.clone();
-                    }
-                    if (staProtocol6 == null) {
-                        continue;
-                    } else {
-                        staProtocol6 = staProtocol6.clone();
-                    }
-                    boolean result = false;
-                    switch(outSta.getStaNo()){
-                        case 105: if (staProtocol1.isLoading() && staProtocol.isLoading() && staProtocol.getStaNo() == 105){
-                            result = true;
-                        }
-                        case 107: if (staProtocol2.isLoading()){
-                            result = true;
-                        }
-                        case 109: if (staProtocol3.isLoading()){
-                            result = true;
-                        }
-                        case 110: if ((staProtocol4.isLoading() && staProtocol.isLoading() && staProtocol.getStaNo() == 110) || ((staProtocol6.isLoading() && staProtocol.isLoading() && staProtocol.getStaNo() == 111))){
-                            result = true;
-                        }
-                        default: break;
 
+                    // 鑾峰彇鍏朵粬鐩稿叧绔欑偣
+                    StaProtocol staProtocol1 = getClonedStation(devpThread, 1001);
+                    StaProtocol staProtocol2 = getClonedStation(devpThread, 1002);
+                    StaProtocol staProtocol3 = getClonedStation(devpThread, 1003);
+                    StaProtocol staProtocol4 = getClonedStation(devpThread, 1004);
+                    StaProtocol staProtocol6 = getClonedStation(devpThread, 111);
+
+                    boolean result = false;
+                    switch (outSta.getStaNo()) {
+                        case 105:
+                            result = (staProtocol1 != null && staProtocol1.isLoading() && staProtocol.isLoading() && staProtocol.getStaNo() == 105);
+                            break;
+                        case 107:
+                            result = (staProtocol2 != null && staProtocol2.isLoading());
+                            break;
+                        case 109:
+                            result = (staProtocol3 != null && staProtocol3.isLoading());
+                            break;
+                        case 110:
+                            result = ((staProtocol4 != null && staProtocol4.isLoading() && staProtocol.isLoading() && staProtocol.getStaNo() == 110) ||
+                                    (staProtocol6 != null && staProtocol6.isLoading() && staProtocol.isLoading() && staProtocol.getStaNo() == 111));
+                            break;
+                        default:
+                            break;
                     }
-                    if(result){
-                        if(staProtocol.getSiteId() == 107 || staProtocol.getSiteId() == 109){
-                            StaProtocol staProtocol5 = devpThread.getStation().get(staProtocol.getSiteId() - 1);
-                            if (staProtocol5== null) {
-                                continue;
-                            } else {
-                                staProtocol5 = staProtocol5.clone();
-                            }
-                            if((staProtocol5.isLoading() && staProtocol5.getStaNo() == 107) || ((staProtocol5.isLoading() && staProtocol5.getStaNo() == 109))){
+
+                    if (result) {
+                        if (staProtocol.getSiteId() == 107 || staProtocol.getSiteId() == 109) {
+                            StaProtocol staProtocol5 = getClonedStation(devpThread, staProtocol.getSiteId() - 1);
+                            if (staProtocol5 != null && (staProtocol5.isLoading() && (staProtocol5.getStaNo() == 107 || staProtocol5.getStaNo() == 109))) {
                                 staProtocol5.setStaNo((short) 112);
                                 MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol5));
                             }
-                        }else{
+                        } else {
                             staProtocol.setStaNo((short) 112);
                             MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                         }
                     }
                 }
             }
-        }catch (Exception e) {
-            log.error("generateStoreWrkFile e", e);
-            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+        } catch (Exception e) {
+            log.error("shiftTargetToCyclePoint error", e);
         }
     }
 
+    /**
+     * 鑾峰彇绔欑偣骞跺厠闅�
+     */
+    private StaProtocol getClonedStation(DevpThread devpThread, int staNo) {
+        StaProtocol staProtocol = devpThread.getStation().get(staNo);
+        return (staProtocol != null) ? staProtocol.clone() : null;
+    }
+
     //112寰幆绔欑偣鑷冲嚭搴撶珯
     public synchronized void shiftCyclePointToTarget() throws IOException, InterruptedException{
         try{
diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
index cb14968..b66082c 100644
--- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -396,11 +396,6 @@
         OperateResult result = siemensNet.Write("DB100.0", array);
 
         int i=0;
-//        if(result.IsSuccess){
-//            log.info("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鎴愬姛[id:{}]>>>>鍐欏叆[{}]", slave.getId(),JSON.toJSON(command));
-//        }else{
-//            log.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆澶辫触锛侊紒锛乕id:{}]>>>>鍐欏叆[{}]", slave.getId(),JSON.toJSON(command));
-//        }
         do{
             //鍫嗗灈鏈轰换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔�
             Thread.sleep(300);
@@ -424,7 +419,7 @@
                     log.error("鍫嗗灈鏈哄懡浠ゅ湴鍧�鍐欏叆鍚庡洖璇诲け璐id:{}]>>>>閲嶅啓[{}] >>>>> 鍐欏叆[{}],===>>鍥炶[{}]", slave.getId(), i,JSON.toJSON(command),JSON.toJSON(one));
                     result = siemensNet.Write("DB100.0", array);
                 }else{
-                    result = siemensNet.Write("DB100.18", (short) 1);
+                    result = siemensNet.Write("DB100.18", (short) 0);
                     i=5;
                 }
             }

--
Gitblit v1.9.1