From e3b8bc50db4cf9d5fcac58b56d1cb7e25154c3a6 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期五, 09 八月 2024 10:34:26 +0800
Subject: [PATCH] #改造

---
 src/main/java/com/zy/asrs/utils/Utils.java                  |   55 +++++++++++
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |   54 ++++++++++
 src/main/java/com/zy/asrs/entity/WrkMast.java               |   23 ++++
 src/main/java/com/zy/core/thread/SiemensDevpThread.java     |   26 +++++
 src/main/resources/application.yml                          |   90 +++++++++++++++++-
 5 files changed, 240 insertions(+), 8 deletions(-)

diff --git a/src/main/java/com/zy/asrs/entity/WrkMast.java b/src/main/java/com/zy/asrs/entity/WrkMast.java
index 6f5652b..81b31be 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMast.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -380,6 +380,29 @@
         }
         return null;
     }
+    public Integer getStaNoConvert(Integer crnNo){
+        switch (this.staNo){
+            case 114:
+                switch (crnNo){
+                    case 1:
+                        return 114;
+                    case 2:
+                        return 107;
+                    case 3:
+                        return 211;
+                }
+            case 214:
+                switch (crnNo){
+                    case 1:
+                        return 111;
+                    case 2:
+                        return 207;
+                    case 3:
+                        return 214;
+                }
+        }
+        return this.staNo;
+    }
 
     public String getSourceStaNo$(){
         BasDevpService service = SpringUtils.getBean(BasDevpService.class);
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 2e3d34e..c2293c8 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -844,6 +844,29 @@
                     // 鏌ヨ宸ヤ綔妗�
                     WrkMast wrkMast = wrkMastMapper.selectPakOutStep16(staProtocol.getSiteId());
                     if (wrkMast == null) {
+                        // 鍒ゆ柇鍚婅溅鏄惁瀹為檯宸插畬鎴愶紝涓旂數鑴戠姸鎬佸湪move涓紝浠ュ鐢佃剳杩涜鏇存柊宸ヤ綔妗�
+                        CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnSlave.getId());
+                        CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+                        if (crnProtocol.statusType == CrnStatusType.FETCHING || crnProtocol.statusType == CrnStatusType.PUTTING) {
+                            // 绉诲姩涓�
+                            continue;
+                        }
+                        //  鍒ゆ柇鍫嗗灈鏈虹姸鎬佺瓑寰呯‘璁�
+                        if (crnProtocol.modeType == CrnModeType.AUTO
+                                && crnProtocol.statusType == CrnStatusType.WAITING
+                                && crnProtocol.forkPosType == CrnForkPosType.HOME
+                                && crnProtocol.getBay().equals(crnStn.getBay().shortValue()) && crnProtocol.getLevel().equals(crnStn.getLev().shortValue())) {
+                            News.info("鍫嗗灈鏈烘帴椹充换鍔″畬鎴愶紝宸ヤ綔鍙凤細"+crnProtocol.getTaskNo()+"锛涙墽琛屽爢鍨涙満鍙凤細"+crnSlave.getId()+"锛涙帴椹虫斁璐т綅锛�"+crnStn.getStaNo()+"锛涙帴椹宠璧扮洰鏍囩珯锛�"+Utils.getStaNoConvertCentreOther2(crnStn.getStaNo()));
+                            // 涓嬪彂绔欑偣淇℃伅
+                            staProtocol.setWorkNo(crnProtocol.getTaskNo());
+                            staProtocol.setStaNo(Utils.getStaNoConvertCentreOther2(crnStn.getStaNo()).shortValue());
+                            if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) {
+                                continue;
+                            }
+                            // 澶嶄綅鍫嗗灈鏈�
+                            crnThread.setResetFlag(true);
+                            continue;
+                        }
                         continue;
                     }
                     // 鍒ゆ柇宸ヤ綔妗f潯浠�
@@ -866,7 +889,7 @@
 
                         // 涓嬪彂绔欑偣淇℃伅
                         staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
-                        staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+                        staProtocol.setStaNo(wrkMast.getStaNoConvert(crnProtocol.getCrnNo()).shortValue());
                         if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) {
                             continue;
                         }
@@ -969,8 +992,35 @@
 
             // 鑾峰彇宸ヤ綔鐘舵�佷负 2,3,4,5,6 鐨勫叆搴撳伐浣滄。
             WrkMast wrkMast = wrkMastMapper.selectPakInStep23456(slave.getId(), staProtocol.getWorkNo().intValue(), crnStn.getStaNo());
-            if(null == wrkMast) {
+            if(null == wrkMast || (wrkMast.getCrnNo()==2 && wrkMast.getWrkSts()==2 && crnProtocol.getCrnNo()!=2)) {
 //                News.error("{}绔欑偣鏌ヨ鏃犲緟鍏ュ簱鏁版嵁 宸ヤ綔鍙�={}", crnStn.getStaNo(), staProtocol.getWorkNo());
+                // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
+                if (wrkMastMapper.selectWorking(slave.getId()) != null) {
+                    continue;
+                }
+                //  鍒ゆ柇鍫嗗灈鏈虹姸鎬佺瓑寰呯‘璁�
+                if (crnProtocol.modeType == CrnModeType.AUTO
+                        && crnProtocol.statusType == CrnStatusType.IDLE
+                        && crnProtocol.forkPosType == CrnForkPosType.HOME) {
+                    News.info("鍫嗗灈鏈烘帴椹充换鍔℃墽琛岋紝宸ヤ綔鍙凤細"+staProtocol.getWorkNo()+"锛涙墽琛屽爢鍨涙満鍙凤細"+slave.getId()+"锛涙帴椹冲彇璐т綅锛�"+crnStn.getStaNo()+"锛涙帴椹虫斁璐т綅锛�"+staProtocol.getSiteId());
+                    // 鍫嗗灈鏈烘帴椹充换鍔″懡浠や笅鍙戝尯 --------------------------------------------------------------------------
+                    CrnCommand crnCommand = new CrnCommand();
+                    crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+                    crnCommand.setTaskNo(staProtocol.getWorkNo()); // 宸ヤ綔鍙�
+                    crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+                    crnCommand.setCommand((short) 0);
+                    crnCommand.setTaskMode(CrnTaskModeType.XY_MOVE); // 浠诲姟妯″紡:  绔欎綅杞Щ
+                    crnCommand.setSourcePosX(crnStn.getRow().shortValue());     // 婧愬簱浣嶆帓
+                    crnCommand.setSourcePosY(crnStn.getBay().shortValue());     // 婧愬簱浣嶅垪
+                    crnCommand.setSourcePosZ(crnStn.getLev().shortValue());     // 婧愬簱浣嶅眰
+                    crnCommand.setDestinationPosX(Utils.getRow(staProtocol.getSiteId()));     // 鐩爣搴撲綅鎺�
+                    crnCommand.setDestinationPosY(Utils.getBay(staProtocol.getSiteId()));     // 鐩爣搴撲綅鍒�
+                    crnCommand.setDestinationPosZ(Utils.getLev(staProtocol.getSiteId()));     // 鐩爣搴撲綅灞�
+                    if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand))) {
+                        News.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", slave.getId(), JSON.toJSONString(crnCommand));
+                    }
+                    return true;
+                }
                 continue;
             }
 
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index 9a49a36..d16c27a 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -220,6 +220,61 @@
     }
 
     /**
+     * 閫氳繃搴撲綅鍙疯幏鍙� 鎺�
+     */
+    public static short getRow(Integer staNo) {
+        switch (staNo){
+            case 108:
+                return 4;
+            case 208:
+                return 18;
+            case 112:
+                return 3;
+            case 212:
+                return 19;
+        }
+        throw new RuntimeException("绔欑偣瑙f瀽寮傚父");
+    }
+
+    /**
+     * 閫氳繃搴撲綅鍙疯幏鍙� 鍒�
+     */
+    public static short getBay(Integer staNo) {
+        switch (staNo){
+            case 108:
+                return 5;
+            case 208:
+                return 5;
+            case 112:
+                return 2;
+            case 212:
+                return 6;
+        }
+        throw new RuntimeException("绔欑偣瑙f瀽寮傚父");
+    }
+
+    /**
+     * 閫氳繃搴撲綅鍙疯幏鍙� 灞�
+     */
+    public static short getLev(Integer staNo) {
+        return 1;
+    }
+    public static Integer getStaNoConvertCentreOther2(Integer staNo){//鏀捐揣涓鸿幏鍙栬璧扮洰鏍囦綅
+        switch (staNo){
+            case 108:
+                return 111;
+            case 208:
+                return 211;
+            case 112:
+                return 114;
+            case 212:
+                return 214;
+            default:
+                return staNo;
+        }
+    }
+
+    /**
      * 閫氳繃鎺掑垪灞傛嫾鎺ュ嚭搴撲綅鍙�
      */
     public static String append(int row, int bay, int lev) {
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 1a2bfc5..bda6582 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -8,6 +8,7 @@
 import com.core.common.Cools;
 import com.core.common.DateUtils;
 import com.core.common.SpringUtils;
+import com.core.exception.CoolException;
 import com.zy.asrs.entity.BasDevp;
 import com.zy.asrs.mapper.BasDevpMapper;
 import com.zy.asrs.service.BasDevpService;
@@ -44,12 +45,18 @@
     private Map<Integer, StaProtocol> station = new ConcurrentHashMap<>();
     private short heartBeatVal = 1;
     private int barcodeSize = 2;
-    public static final ArrayList<Integer> staNos = new ArrayList<Integer>() {{
+    public static final ArrayList<Integer> staNos1 = new ArrayList<Integer>() {{
         add(100);add(101);add(102);add(103);add(104);add(105);add(106);add(107);add(108);add(109);
         add(110);add(111);
         add(200);add(201);add(202);add(203);add(204);add(205);add(206);add(207);add(208);add(209);
         add(210);add(211);
         add(300);
+    }};
+    public static final ArrayList<Integer> staNos2 = new ArrayList<Integer>() {{
+        add(112);add(113);add(114);
+    }};
+    public static final ArrayList<Integer> staNos3 = new ArrayList<Integer>() {{
+        add(212);add(213);add(214);
     }};
 
     public boolean charge0;
@@ -70,6 +77,20 @@
      */
     public IoModeType ioModeOf1F = IoModeType.NONE;
     public IoModeType ioModeOf2F = IoModeType.NONE;
+
+    private ArrayList<Integer> getStaNo() {
+        switch (slave.getId()) {
+            case 1:
+                return staNos1;
+            case 2:
+                return staNos2;
+            case 3:
+                return staNos3;
+            default:
+                throw new CoolException("鏈嶅姟鍣ㄥ紓甯�");
+        }
+    }
+
 
     @Override
     @SuppressWarnings("InfiniteLoopStatement")
@@ -132,6 +153,7 @@
     private void read() throws InterruptedException {
         // 鏇存柊鍏ュ嚭搴撴ā寮�
         updateIoMode();
+        ArrayList<Integer> staNos = getStaNo();
         OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.0", (short) 50);
         if (result.IsSuccess) {
             for (int i = 0; i < 25; i++) {
@@ -244,6 +266,7 @@
         if (null == staProtocol) {
             return;
         }
+        ArrayList<Integer> staNos = getStaNo();
         int index = staNos.indexOf(staProtocol.getSiteId());
 
         OperateResult writeId,writeDest;
@@ -358,6 +381,7 @@
         if (null == staProtocol || times > 3) {
             return;
         }
+        ArrayList<Integer> staNos = getStaNo();
         int index = staNos.indexOf(staProtocol.getSiteId());
         OperateResult write = siemensS7Net.Write("DB100." + index*2, staProtocol.getWorkNo());    // 宸ヤ綔鍙�
         Thread.sleep(200);
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index aa11a99..f2fcaf2 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -70,6 +70,13 @@
       row: 4
       bay: 5
       lev: 1
+    # 鍫嗗灈鏈哄嚭搴撶珯鐐�
+    crnOutStn[1]:
+      devpPlcId: ${wcs-slave.devp[1].id}
+      staNo: 112
+      row: 3
+      bay: 2
+      lev: 1
   # 鍫嗗灈鏈�2
   crn[1]:
     id: 2
@@ -132,6 +139,13 @@
       row: 18
       bay: 5
       lev: 1
+    # 鍫嗗灈鏈哄嚭搴撶珯鐐�
+    crnOutStn[1]:
+      devpPlcId: ${wcs-slave.devp[2].id}
+      staNo: 212
+      row: 19
+      bay: 6
+      lev: 1
   # 绌挎杞�1
   ste[0]:
     id: 1
@@ -153,7 +167,7 @@
     port: 502
     rack: 0
     slot: 0
-  # 杈撻�佺嚎
+  # 杈撻�佺嚎1
   devp[0]:
     id: 1
     ip: 10.10.10.61
@@ -201,6 +215,46 @@
       barcode: ${wcs-slave.barcode[1].id}
       backSta: 200
       led: ${wcs-slave.led[2].id}
+  # 杈撻�佺嚎2
+  devp[1]:
+    id: 2
+    ip: 10.10.11.61
+    port: 102
+    rack: 0
+    slot: 0
+    # 鍏ュ簱鍙�1
+    inSta[0]:
+      staNo: 114
+      barcode: ${wcs-slave.barcode[2].id}
+      backSta: 100
+      led: ${wcs-slave.led[2].id}
+    # 绌烘澘鍏ュ簱鍙�1
+    emptyInSta[0]:
+      staNo: 114
+      barcode: ${wcs-slave.barcode[2].id}
+    # 鍑哄簱鍙�1
+    outSta[0]:
+      staNo: 114
+  # 杈撻�佺嚎3
+  devp[2]:
+    id: 3
+    ip: 10.10.12.61
+    port: 102
+    rack: 0
+    slot: 0
+    # 鍏ュ簱鍙�1
+    inSta[0]:
+      staNo: 214
+      barcode: ${wcs-slave.barcode[3].id}
+      backSta: 100
+      led: ${wcs-slave.led[3].id}
+    # 绌烘澘鍏ュ簱鍙�1
+    emptyInSta[0]:
+      staNo: 214
+      barcode: ${wcs-slave.barcode[3].id}
+    # 鍑哄簱鍙�1
+    outSta[0]:
+      staNo: 214
   # 鏉$爜鎵弿浠�
   barcode[0]:
     id: 1
@@ -212,23 +266,49 @@
     ip: 10.10.10.53
     port: 51236
    # LED1
+  # 鏉$爜鎵弿浠�
+  barcode[2]:
+    id: 3
+    ip: 10.10.11.53
+    port: 51236
+    # LED1
+  # 鏉$爜鎵弿浠�
+  barcode[3]:
+    id: 4
+    ip: 10.10.12.53
+    port: 51236
+    # LED1
   led[0]:
     id: 1
     ip: 10.10.10.205
     port: 5005
-    devpPlcId: ${wcs-slave.devp[0].id}
+    devpPlcId: ${wcs-slave.devp[1].id}
     staArr: 100
-  # LED1
+  # LED2
   led[1]:
     id: 2
     ip: 10.10.10.206
     port: 5005
-    devpPlcId: ${wcs-slave.devp[0].id}
+    devpPlcId: ${wcs-slave.devp[2].id}
     staArr: 300
-  # LED1
+  # LED3
   led[2]:
     id: 3
     ip: 10.10.10.207
     port: 5005
     devpPlcId: ${wcs-slave.devp[0].id}
     staArr: 200
+  # LED4
+  led[3]:
+    id: 4
+    ip: 10.10.11.207
+    port: 5005
+    devpPlcId: ${wcs-slave.devp[1].id}
+    staArr: 200
+  # LED5
+  led[4]:
+    id: 5
+    ip: 10.10.12.207
+    port: 5005
+    devpPlcId: ${wcs-slave.devp[2].id}
+    staArr: 200

--
Gitblit v1.9.1