From 9eecd47fa15543f72df06a3b8fb47c3db9e773c3 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期四, 29 五月 2025 16:21:04 +0800
Subject: [PATCH] *

---
 src/main/java/com/zy/core/MainProcess.java              |  175 ++++++++++++++++++-----------------
 src/main/java/com/zy/core/thread/SiemensDevpThread.java |  107 ++++++++++++++++++++
 2 files changed, 194 insertions(+), 88 deletions(-)

diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index f3697d8..1e1f9f0 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -1,5 +1,6 @@
 package com.zy.core;
 
+import com.core.common.SpringUtils;
 import com.zy.asrs.service.impl.MainServiceImpl;
 import com.zy.core.properties.SystemProperties;
 import lombok.Data;
@@ -24,6 +25,7 @@
     private MainServiceImpl mainService;
     // 鎵�灞炵嚎绋�
     private Thread thread;
+    private Thread thread2;
     // 棰戠巼
     private int i = 0;
     private int j = 0;
@@ -34,110 +36,113 @@
      * =====>>  寮�濮嬪伐浣�
      */
     public void start(){
-        thread = new Thread(() -> {
-            while (!Thread.currentThread().isInterrupted()) {
-                try {
-                    i++; if (i>5) i=0;
-                    j++; if (j>5) j=0;
-                    k++;
-                    if (k>5) {
-                        k=0;
-                        l++;
-                        if (l>=3) l=0;
-                    }
+        thread = new Thread(this::cenAndDevRun);
+        thread.start();
+
+        thread2 = new Thread(this::jarRun);
+        thread2.start();
+    }
 
 
-                    // 闂撮殧
-                    Thread.sleep(1000);
 
-                    // 绯荤粺杩愯鐘舵�佸垽鏂�
-                    if (!SystemProperties.WCS_RUNNING_STATUS.get()) {
-                        continue;
-                    }
+    private void cenAndDevRun() {
+        while (!Thread.currentThread().isInterrupted()) {
+            try {
+                i++; if (i>5) i=0;
 
-                    //鍒濆鍖朢GV鍦板浘
-//                    mainService.initRgvMap();
-                    //鍒锋柊RGV鍦板浘
-//                    mainService.refreshRgvMap();
-                    // 婕旂ず
-//                    mainService.crnDemoOfLocMove1();
-                    // 鍏ュ嚭搴撴ā寮忓垏鎹㈠嚱鏁�
-//                    mainService.ioConvert();
-                    // 鍏ュ簱  ===>> 鍏ュ簱绔欏埌鍫嗗灈鏈虹珯锛屾牴鎹潯鐮佹壂鎻忕敓鎴愬叆搴撳伐浣滄。
+                // 闂撮殧
+                Thread.sleep(1000);
 
-                    mainService.generateStoreWrkFile(); // 缁勬墭
-                    mainService.generateStoreWrkFile464(); // 缁勬墭464
-                    mainService.generateStoreWrkFileSingle(); // 缁勬墭  鍙屽伐浣嶅崟浼�   灏忔枡绠�
-                    mainService.generateStoreWrkFileLarge(); // 缁勬墭  鍙屽伐浣嶅崟浼�   澶ф枡绠�
+                // 绯荤粺杩愯鐘舵�佸垽鏂�
+                if (!SystemProperties.WCS_RUNNING_STATUS.get()) {
+                    continue;
+                }
+                // 鍏ュ簱  ===>> 鍏ュ簱绔欏埌鍫嗗灈鏈虹珯锛屾牴鎹潯鐮佹壂鎻忕敓鎴愬叆搴撳伐浣滄。
+
+                mainService.generateStoreWrkFile(); // 缁勬墭
+                mainService.generateStoreWrkFile464(); // 缁勬墭464
+                mainService.generateStoreWrkFileSingle(); // 缁勬墭  鍙屽伐浣嶅崟浼�   灏忔枡绠�
+                mainService.generateStoreWrkFileLarge(); // 缁勬墭  鍙屽伐浣嶅崟浼�   澶ф枡绠�
 //                    mainService.generateStoreWrkFile0(); // WMS鍏ュ簱
 
-                    // 鍑哄簱  ===>>  鍫嗗灈鏈哄嚭搴撶珯鍒板嚭搴撶珯
-                    mainService.crnStnToOutStn();
-                    // 鍑哄簱  ===>>  鍫嗗灈鏈哄嚭搴撶珯鍒板嚭搴撶珯  宸ヤ綅2
-                    mainService.crnStnToOutStnTwo();
-                    // 鍏ュ嚭搴�  ===>>  鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂
-                    mainService.crnIoExecute();
-                    // 鍏ュ嚭搴�  ===>>  鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂  鍙屽伐浣嶅爢鍨涙満
-                    mainService.crnIoExecuteTwo();
-                    // 鍏ュ嚭搴�  ===>>  鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂  鍙屽伐浣嶅爢鍨涙満  鎷嗗垎鎵ц浠诲姟涓嬪彂
-                    mainService.crnIoExecuteTwoExecute(i);//Execute
-                    if (i%2==0){
-                        // 鍏ュ簱  ===>> 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
-                        mainService.storeFinished();
-                    }else {
-                        // 鍏ュ簱  ===>> 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�  宸ヤ綅2
-                        mainService.storeFinishedTwo();
-                    }
-
+                // 鍑哄簱  ===>>  鍫嗗灈鏈哄嚭搴撶珯鍒板嚭搴撶珯
+                mainService.crnStnToOutStn();
+                // 鍑哄簱  ===>>  鍫嗗灈鏈哄嚭搴撶珯鍒板嚭搴撶珯  宸ヤ綅2
+                mainService.crnStnToOutStnTwo();
+                // 鍏ュ嚭搴�  ===>>  鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂
+                mainService.crnIoExecute();
+                // 鍏ュ嚭搴�  ===>>  鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂  鍙屽伐浣嶅爢鍨涙満
+                mainService.crnIoExecuteTwo();
+                // 鍏ュ嚭搴�  ===>>  鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂  鍙屽伐浣嶅爢鍨涙満  鎷嗗垎鎵ц浠诲姟涓嬪彂
+                mainService.crnIoExecuteTwoExecute(i);//Execute
+                if (i%2==0){
+                    // 鍏ュ簱  ===>> 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
+                    mainService.storeFinished();
+                }else {
+                    // 鍏ュ簱  ===>> 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�  宸ヤ綅2
+                    mainService.storeFinishedTwo();
+                }
 
 //                    // 寮傚父淇℃伅璁板綍
 //                    mainService.recErr();
-                    // 鍏ュ簱  ===>> 绌烘爤鏉垮垵濮嬪寲鍏ュ簱
-                    mainService.storeEmptyPlt();
-                    // 鍏ュ簱  ===>> 绌烘爤鏉垮垵濮嬪寲鍏ュ簱  鍙屽伐浣嶅崟浼�   灏忔枡绠�
-                    mainService.storeEmptyPltSingle();
-                    // 鍏ュ簱  ===>> 绌烘爤鏉垮垵濮嬪寲鍏ュ簱  鍙屽伐浣嶅崟浼�   澶ф枡绠�
-                    mainService.storeEmptyPltLarge();
-                    // 鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�
-                    mainService.ledExecute();
-                    // 鍏朵粬   ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅
-                    mainService.ledReset();
+                // 鍏ュ簱  ===>> 绌烘爤鏉垮垵濮嬪寲鍏ュ簱
+                mainService.storeEmptyPlt();
+                // 鍏ュ簱  ===>> 绌烘爤鏉垮垵濮嬪寲鍏ュ簱  鍙屽伐浣嶅崟浼�   灏忔枡绠�
+                mainService.storeEmptyPltSingle();
+                // 鍏ュ簱  ===>> 绌烘爤鏉垮垵濮嬪寲鍏ュ簱  鍙屽伐浣嶅崟浼�   澶ф枡绠�
+                mainService.storeEmptyPltLarge();
+                // 鍑哄簱  ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�
+                mainService.ledExecute();
+                // 鍏朵粬   ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅
+                mainService.ledReset();
 
-                    /************************************JAR璋冨害************************************/
-                    mainService.stackingCompletionDriveTray();//鍒嗛厤纭寲缃�
-                    mainService.stackingCompletionDriveTray2();//鍒嗛厤纭寲缃�
-
-                    //Jar鍏呯數浠诲姟瀹屾垚
-                    mainService.jarChargeComplete();
-                    //JarWrkMastExecute浠诲姟瀹屾垚
-                    mainService.jarWrkMastExecuteGenerateComplete(k);
-                    //JarWrkMastExecute浠诲姟鍒涘缓   //纭寲缃�
-                    mainService.jarWrkMastExecuteGenerate(k);
-                    //JarWrkMastExecute浠诲姟鎵ц
-                    mainService.jarWrkMastExecuteAction(k,l);
-                    //Jar浠诲姟鍒涘缓
-                    mainService.jarMastGenerate();
-                    //Jar浠诲姟瀹屾垚
-                    mainService.jarMastGenerateComplete();
-                    //Jar鍏呯數浠诲姟鍒涘缓
-                    mainService.jarChargeGenerate();
-
-                    /************************************JAR璋冨害************************************/
-
-                    mainService.signTrunBig();
+                mainService.signTrunBig();
 
 
-                } catch (Exception e) {
-                    e.printStackTrace();
-                }
+            } catch (Exception e) {
+                e.printStackTrace();
             }
-        });
-        thread.start();
+        }
+    }
+    private void jarRun() {
+        while (!Thread.currentThread().isInterrupted()) {
+            try {
+                k++;
+                if (k>5) {
+                    k=0;
+                    l++;
+                    if (l>=3) l=0;
+                }
+                /************************************JAR璋冨害************************************/
+                mainService.stackingCompletionDriveTray();//鍒嗛厤纭寲缃�
+                mainService.stackingCompletionDriveTray2();//鍒嗛厤纭寲缃�
+
+                //Jar鍏呯數浠诲姟瀹屾垚
+                mainService.jarChargeComplete();
+                //JarWrkMastExecute浠诲姟瀹屾垚
+                mainService.jarWrkMastExecuteGenerateComplete(k);
+                //JarWrkMastExecute浠诲姟鍒涘缓   //纭寲缃�
+                mainService.jarWrkMastExecuteGenerate(k);
+                //JarWrkMastExecute浠诲姟鎵ц
+                mainService.jarWrkMastExecuteAction(k,l);
+                //Jar浠诲姟鍒涘缓
+                mainService.jarMastGenerate();
+                //Jar浠诲姟瀹屾垚
+                mainService.jarMastGenerateComplete();
+                //Jar鍏呯數浠诲姟鍒涘缓
+                mainService.jarChargeGenerate();
+
+                /************************************JAR璋冨害************************************/
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
     }
 
     @PreDestroy
     public void shutDown(){
         if (thread != null) thread.interrupt();
+        if (thread2 != null) thread2.interrupt();
     }
 
 }
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index db5ca80..efdafb7 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -134,6 +134,9 @@
         add(696);add(697);add(698);add(699);
     }};
 
+    private boolean connectDev = false;
+
+
     /**
      * 鏉$爜鏁伴噺
      */
@@ -167,10 +170,85 @@
         }
     }
 
+
+    /**
+     * 鍒濆鍖栫珯鐐圭姸鎬�
+     */
+    private void initSite() {
+        try{
+            ArrayList<Integer> staNos = getStaNo();
+            // 绔欑偣缂栧彿
+            for (Integer siteId : staNos) {
+                StaProtocol staProtocol = station.get(siteId);
+                if (null == staProtocol) {
+                    staProtocol = new StaProtocol();
+                    staProtocol.setSiteId(siteId);
+                    station.put(siteId, staProtocol);
+                }
+                staProtocol.setSiteId(siteId);
+                staProtocol.setWorkNo(0);    // ID
+                staProtocol.setAutoing(false);      // 鑷姩
+                staProtocol.setLoading(false);      // 鏈夌墿
+                staProtocol.setInEnable(false);     // 鍙叆
+                staProtocol.setOutEnable(false);    // 鍙嚭
+                staProtocol.setEmptyMk(false);      // 绌烘澘淇″彿
+                staProtocol.setStaNo(0);     // 鐩爣绔�
+
+                if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
+                    staProtocol.setPakMk(true);
+                }
+            }
+        } catch (Exception e){
+            try{
+                log.error(e.getMessage());
+            } catch (Exception e1){
+
+            }
+            log.error("鍒濆鍖栫珯鐐圭姸鎬佸紓甯�");
+        }
+    }
+
     @Override
     @SuppressWarnings("InfiniteLoopStatement")
     public void run() {
-        connect();
+        connectDev = connect();
+        while(!connectDev){
+            try {
+                connectDev = this.connect();
+                Thread.sleep(100);
+            } catch (Exception e){
+
+            }
+        }
+
+        // 鍚姩绾跨▼鑷姩閲嶈繛
+        new Thread(this::devConnect).start();
+        new Thread(this::readStatusDev).start();
+        new Thread(this::writeStatusDev).start();
+    }
+
+    private void devConnect() {
+        while (true) {
+            try {
+                Thread.sleep(1000);
+
+                if(!connectDev){
+                    try {
+                        connectDev = this.connect();
+                        Thread.sleep(100);
+                    } catch (Exception e){
+
+                    }
+                }
+            } catch (Exception e) {
+                log.info("dev杩炴帴澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+                initSite();
+//                e.printStackTrace();
+            }
+        }
+    }
+
+    private void writeStatusDev() {
         while (true) {
             try {
                 int step = 1;
@@ -181,7 +259,7 @@
                 switch (step) {
                     // 璇绘暟鎹�
                     case 1:
-                        read();
+//                        read();
                         break;
                     // 鍐欐暟鎹� ID+鐩爣绔�
                     case 2:
@@ -220,10 +298,33 @@
 //                heartbeat();
                 Thread.sleep(400);
             } catch (Exception e) {
-                e.printStackTrace();
+//                e.printStackTrace();
+                try{
+                    log.error(e.getMessage());
+                } catch (Exception e1){
+
+                }
+                log.error("DEV鏁版嵁鍐欏叆绾跨▼寮傚父锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+
             }
 
         }
+
+    }
+
+    private void readStatusDev() {
+        while (true) {
+            try {
+                Thread.sleep(50);
+                read();
+
+            } catch (Exception e) {
+                log.error("Dev鏁版嵁璇诲彇绾跨▼寮傚父锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+                initSite();
+            }
+
+        }
+
     }
 
     @Override

--
Gitblit v1.9.1