From acc22eabcb1296bf7a3072b36ebd66d136c9a466 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期二, 29 九月 2020 08:54:45 +0800
Subject: [PATCH] #堆垛机版本

---
 src/main/java/com/zy/core/thread/SiemensCrnThread.java      |    8 ++--
 src/main/java/com/zy/asrs/controller/ConsoleController.java |    6 +-
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |   70 ++++++++++++++++++++++++++---------
 src/main/java/com/zy/core/CrnThread.java                    |   11 +++++
 src/main/java/com/zy/asrs/controller/CrnController.java     |    2 
 src/main/resources/application.yml                          |    9 ++++
 src/main/java/com/zy/core/ServerBootstrap.java              |   13 +++++-
 7 files changed, 90 insertions(+), 29 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/ConsoleController.java b/src/main/java/com/zy/asrs/controller/ConsoleController.java
index e637dc3..d84ee24 100644
--- a/src/main/java/com/zy/asrs/controller/ConsoleController.java
+++ b/src/main/java/com/zy/asrs/controller/ConsoleController.java
@@ -24,7 +24,7 @@
 import com.zy.core.properties.SlaveProperties;
 import com.zy.core.properties.SystemProperties;
 import com.zy.core.thread.BarcodeThread;
-import com.zy.core.thread.CrnThread;
+import com.zy.core.thread.SiemensCrnThread;
 import com.zy.core.thread.DevpThread;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -111,7 +111,7 @@
         List<CrnLatestDataVo> vos = new ArrayList<>();
         for (CrnSlave crn : slaveProperties.getCrn()) {
             // 鑾峰彇鍫嗗灈鏈轰俊鎭�
-            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
+            SiemensCrnThread crnThread = (SiemensCrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
             if (crnThread == null) {
                 continue;
             }
@@ -224,7 +224,7 @@
         CrnDetailVo vo = new CrnDetailVo();
         for (CrnSlave crnSlave : slaveProperties.getCrn()) {
             if (crnSlave.getId().equals(crnNo)) {
-                CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnSlave.getId());
+                SiemensCrnThread crnThread = (SiemensCrnThread) SlaveConnection.get(SlaveType.Crn, crnSlave.getId());
                 CrnProtocol crnProtocol = crnThread.getCrnProtocol();
                 vo.setCrnNo(crnNo);
                 vo.setWorkNo(crnProtocol.getTaskNo());
diff --git a/src/main/java/com/zy/asrs/controller/CrnController.java b/src/main/java/com/zy/asrs/controller/CrnController.java
index 79fda80..6277cca 100644
--- a/src/main/java/com/zy/asrs/controller/CrnController.java
+++ b/src/main/java/com/zy/asrs/controller/CrnController.java
@@ -28,7 +28,7 @@
 import com.zy.core.model.command.CrnCommand;
 import com.zy.core.model.protocol.CrnProtocol;
 import com.zy.core.properties.SlaveProperties;
-import com.zy.core.thread.CrnThread;
+import com.zy.core.CrnThread;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
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 14e9a7c..8c131ef 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -26,7 +26,7 @@
 import com.zy.core.model.protocol.StaProtocol;
 import com.zy.core.properties.SlaveProperties;
 import com.zy.core.thread.BarcodeThread;
-import com.zy.core.thread.CrnThread;
+import com.zy.core.CrnThread;
 import com.zy.core.thread.DevpThread;
 import com.zy.core.thread.LedThread;
 import lombok.extern.slf4j.Slf4j;
@@ -112,9 +112,11 @@
                 }
                 // 鑾峰彇鍏ュ簱绔欎俊鎭�
                 DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo()).clone();
+                StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
                 if (staProtocol == null) {
                     continue;
+                } else {
+                    staProtocol = staProtocol.clone();
                 }
                 // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
                 if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()
@@ -218,8 +220,12 @@
             for (DevpSlave.Sta inSta : devp.getInSta()) {
                 // 鑾峰彇鍏ュ簱绔欎俊鎭�
                 DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo()).clone();
-                if (staProtocol == null) { continue; }
+                StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
+                if (staProtocol == null) {
+                    continue;
+                } else {
+                    staProtocol = staProtocol.clone();
+                }
                 // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
                 if (staProtocol.isAutoing() && staProtocol.isLoading()
                         && !staProtocol.isEmptyMk() && staProtocol.getWorkNo() == 0
@@ -264,8 +270,12 @@
             for (DevpSlave.Sta pickSta : devp.getPickSta()) {
                 // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭�
                 DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo()).clone();
-                if (staProtocol == null) { continue; }
+                StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo());
+                if (staProtocol == null) {
+                    continue;
+                } else {
+                    staProtocol = staProtocol.clone();
+                }
                 if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()
                     && staProtocol.getWorkNo() > 0 && staProtocol.isPakMk()){
                     WrkMast wrkMast = wrkMastMapper.selectPickStep(staProtocol.getWorkNo().intValue());
@@ -350,8 +360,12 @@
             for (CrnSlave.CrnStn crnStn : crnSlave.getCrnOutStn()) {
                 // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
                 DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
-                StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo()).clone();
-                if (staProtocol == null) { continue; }
+                StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
+                if (staProtocol == null) {
+                    continue;
+                } else {
+                    staProtocol = staProtocol.clone();
+                }
                 if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == null)) {
                     // 鏌ヨ宸ヤ綔妗�
                     WrkMast wrkMast = wrkMastMapper.selectPakOutStep2(staProtocol.getSiteId());
@@ -452,8 +466,12 @@
             boolean flag = false;
             // 鑾峰彇鍫嗗灈鏈哄叆搴撶珯淇℃伅
             DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
-            StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo()).clone();
-            if (staProtocol == null) { continue; }
+            StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
+            if (staProtocol == null) {
+                continue;
+            } else {
+                staProtocol = staProtocol.clone();
+            }
             // 鏌ヨ绔欑偣璇︾粏淇℃伅
             BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
             if (staDetl == null) {
@@ -540,8 +558,12 @@
             }
             // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
             DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
-            StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo()).clone();
-            if (staProtocol == null) { continue; }
+            StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
+            if (staProtocol == null) {
+                continue;
+            } else {
+                staProtocol = staProtocol.clone();
+            }
             // 鏌ヨ绔欑偣璇︾粏淇℃伅
             BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
             if (staDetl == null) {
@@ -712,8 +734,12 @@
             for (DevpSlave.Sta emptyInSta : devp.getEmptyInSta()) {
                 // 鑾峰彇绌烘澘鍏ュ簱绔欎俊鎭�
                 DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
-                StaProtocol staProtocol = devpThread.getStation().get(emptyInSta.getStaNo()).clone();
-                if (staProtocol == null) { continue; }
+                StaProtocol staProtocol = devpThread.getStation().get(emptyInSta.getStaNo());
+                if (staProtocol == null) {
+                    continue;
+                } else {
+                    staProtocol = staProtocol.clone();
+                }
                 // 绔欑偣鏉′欢鍒ゆ柇
                 if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()
                         && staProtocol.isEmptyMk() && staProtocol.getWorkNo() == 0 && staProtocol.isPakMk()) {
@@ -790,8 +816,12 @@
             List<WrkMast> wrkMasts = new ArrayList<>();
             for (Integer staNo : led.getStaArr()) {
                 // 鑾峰彇鍙夎溅绔欑偣
-                StaProtocol staProtocol = devpThread.getStation().get(staNo).clone();
-                if (null == staProtocol || null == staProtocol.getWorkNo() || 0 == staProtocol.getWorkNo() || !staProtocol.isLoading()) { continue; }
+                StaProtocol staProtocol = devpThread.getStation().get(staNo);
+                if (null == staProtocol || null == staProtocol.getWorkNo() || 0 == staProtocol.getWorkNo() || !staProtocol.isLoading()) {
+                    continue;
+                } else {
+                    staProtocol = staProtocol.clone();
+                }
                 // 鑾峰彇宸ヤ綔妗f暟鎹�
                 WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo());
                 if (null == wrkMast || wrkMast.getWrkSts() < 14 || wrkMast.getIoType() < 100) { continue; }
@@ -877,8 +907,12 @@
             boolean reset = true;
             for (Integer staNo : led.getStaArr()) {
                 // 鑾峰彇鍙夎溅绔欑偣
-                StaProtocol staProtocol = devpThread.getStation().get(staNo).clone();
-                if (staProtocol == null) {continue;}
+                StaProtocol staProtocol = devpThread.getStation().get(staNo);
+                if (staProtocol == null) {
+                    continue;
+                } else {
+                    staProtocol = staProtocol.clone();
+                }
                 if (staProtocol.getWorkNo() != 0) {
                     reset = false;
                     break;
diff --git a/src/main/java/com/zy/core/CrnThread.java b/src/main/java/com/zy/core/CrnThread.java
new file mode 100644
index 0000000..70c3d75
--- /dev/null
+++ b/src/main/java/com/zy/core/CrnThread.java
@@ -0,0 +1,11 @@
+package com.zy.core;
+
+import com.zy.core.model.protocol.CrnProtocol;
+
+public interface CrnThread extends ThreadHandler {
+
+    CrnProtocol getCrnProtocol();
+
+    void setResetFlag(boolean flag);
+
+}
diff --git a/src/main/java/com/zy/core/ServerBootstrap.java b/src/main/java/com/zy/core/ServerBootstrap.java
index ac5207a..85bb881 100644
--- a/src/main/java/com/zy/core/ServerBootstrap.java
+++ b/src/main/java/com/zy/core/ServerBootstrap.java
@@ -8,7 +8,7 @@
 import com.zy.core.properties.SlaveProperties;
 import com.zy.core.thread.BarcodeThread;
 import com.zy.core.thread.CarThread;
-import com.zy.core.thread.CrnThread;
+import com.zy.core.thread.SiemensCrnThread;
 import com.zy.core.thread.DevpThread;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -76,8 +76,15 @@
         // 鍒濆鍖栧爢鍨涙満绾跨▼
         log.info("鍒濆鍖栧爢鍨涙満绾跨▼...................................................");
         for (CrnSlave crn : slaveProperties.getCrn()) {
-            CrnThread crnThread = new CrnThread(crn);
-            new Thread(crnThread).start();
+            CrnThread crnThread = null;
+            switch (crn.getId()) {
+                case 1:
+                    crnThread = new SiemensCrnThread(crn);
+                    break;
+                default:
+                    break;
+            }
+            new Thread((Runnable) crnThread).start();
             SlaveConnection.put(SlaveType.Crn, crn.getId(), crnThread);
         }
 
diff --git a/src/main/java/com/zy/core/thread/CrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
similarity index 98%
rename from src/main/java/com/zy/core/thread/CrnThread.java
rename to src/main/java/com/zy/core/thread/SiemensCrnThread.java
index e548e0f..afabb67 100644
--- a/src/main/java/com/zy/core/thread/CrnThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -9,7 +9,7 @@
 import com.core.common.SpringUtils;
 import com.zy.asrs.entity.BasCrnp;
 import com.zy.asrs.service.BasCrnpService;
-import com.zy.core.ThreadHandler;
+import com.zy.core.CrnThread;
 import com.zy.core.cache.MessageQueue;
 import com.zy.core.cache.OutputQueue;
 import com.zy.core.enums.CrnStatusType;
@@ -31,14 +31,14 @@
  */
 @Data
 @Slf4j
-public class CrnThread implements Runnable, ThreadHandler {
+public class SiemensCrnThread implements Runnable, CrnThread {
 
     private SiemensS7Net siemensNet;
     private CrnSlave slave;
     private CrnProtocol crnProtocol;
     private boolean resetFlag = false;
 
-    public CrnThread(CrnSlave slave) {
+    public SiemensCrnThread(CrnSlave slave) {
         this.slave = slave;
     }
 
@@ -218,7 +218,7 @@
         slave.setIp("192.168.6.9");
         slave.setRack(0);
         slave.setSlot(0);
-        CrnThread crnThread = new CrnThread(slave);
+        SiemensCrnThread crnThread = new SiemensCrnThread(slave);
         crnThread.connect();
         crnThread.readStatus();
         System.out.println(JSON.toJSONString(crnThread.crnProtocol));
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 63b7175..1a806c2 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -62,6 +62,15 @@
       row: 1
       bay: 0
       lev: 1
+    # 鍫嗗灈鏈�2
+    crn[1]:
+      id: 1
+      ip: 192.168.6.10
+      port: 102
+      rack: 0
+      slot: 0
+      # 鍋忕Щ閲忥紝褰撳爢鍨涙満绔欑偣鍒楀彿=1鏃讹紝鍋忕Щ閲�=2
+      offset: 2
   # 杈撻�佺嚎
   devp[0]:
     id: 1

--
Gitblit v1.9.1