From 9aefce26355af7cd43bc958c045b196b355693b8 Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期五, 10 五月 2024 19:49:46 +0800
Subject: [PATCH] #一楼rgv

---
 src/main/java/com/zy/core/enums/RgvStatusType.java          |    5 
 src/main/java/com/zy/core/enums/RgvModeType.java            |    2 
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  161 ++++++++++++++++++++++++--
 src/main/resources/mapper/WrkMastStaMapper.xml              |    2 
 src/main/java/com/zy/core/model/protocol/StaProtocol.java   |    7 +
 src/main/java/com/zy/asrs/entity/WrkMastSta.java            |    7 +
 src/main/java/com/zy/asrs/utils/Utils.java                  |    3 
 src/main/java/com/zy/core/model/RgvSlave.java               |    2 
 src/main/java/com/zy/core/MainProcess.java                  |    5 
 src/main/java/com/zy/core/model/protocol/RgvProtocol.java   |    2 
 src/main/java/com/zy/core/model/command/RgvCommand.java     |    4 
 src/main/java/com/zy/core/thread/SiemensDevpThread.java     |  133 +++++++++++++++++++++
 src/main/resources/application.yml                          |    4 
 13 files changed, 311 insertions(+), 26 deletions(-)

diff --git a/src/main/java/com/zy/asrs/entity/WrkMastSta.java b/src/main/java/com/zy/asrs/entity/WrkMastSta.java
index b18cf68..666144e 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMastSta.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMastSta.java
@@ -123,6 +123,13 @@
     @TableField("wrk_crn")
     private Integer wrkCrn;
 
+    @ApiModelProperty(value= "")
+    @TableField("matnr1")
+    private Integer matnr1;
+
+    @ApiModelProperty(value= "")
+    @TableField("matnr2")
+    private Integer matnr2;
     public WrkMastSta() {}
 
     public WrkMastSta(Long wrkNo,Integer wrkStart,Integer wrkEnd,Integer staStart,Integer staEnd,Date createTime,Date updateTime,Integer type,Integer wrkSts,Integer lineNumber,Integer wrkType,Date bignTime,Integer wrkCrn) {
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 d2181a2..d33e81d 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -2507,6 +2507,8 @@
                 short sta1 = 0;
                 short souSta2 = 0;
                 short sta2 = 0;
+                short matnr = 0;
+                short matnr2 = 0;
 
                 //宸ヤ綅涓�浠诲姟
                 for (RgvSlave.Sta inStn :  rgvSlave.getInStn()){
@@ -2534,9 +2536,19 @@
                         }
                         workNo1 = workNo++;
                         souSta1 = Utils.getRgvStaNo(rgvSlave.getId(),inStn.getSourceStaNo());
-                        sta1 = Utils.getRgvStaNo(rgvSlave.getId(),inStn.getStaNo());
+                        if (inStn.getSourceStaNo() == 4007 && staProtocol.getTongType() == 1){
+                            sta1 = Utils.getRgvStaNo(rgvSlave.getId(),2103);
+                        } else if (inStn.getSourceStaNo() == 4007 && staProtocol.getTongType() == 2) {
+                            sta1 = Utils.getRgvStaNo(rgvSlave.getId(),2002);
+                        }else {
+                            sta1 = Utils.getRgvStaNo(rgvSlave.getId(),inStn.getStaNo());
+                        }
                         work1 = true;
+                        if (inStn.getSourcePlcId() == 4){
+                            matnr = staProtocol.getMatnr();
+                        }
                         devpThread.setPakMk(inStn.getSourceStaNo(),false);
+
                         break;
                     }
                 }
@@ -2573,6 +2585,9 @@
                         souSta2 = inStn.getSourceStaNo().shortValue();
                         sta2 = inStn.getStaNo().shortValue();
                         work2 = true;
+                        if (inStn.getSourcePlcId() == 4){
+                            matnr2 = staProtocol.getMatnr();
+                        }
                         devpThread.setPakMk(inStn.getSourceStaNo(),false);
                         break;
                     }
@@ -2594,12 +2609,15 @@
                     command.setDestinationStaNo2(sta2);  // 鐩爣绔�
                     command.setAckFinish2(false);  // 浠诲姟瀹屾垚纭浣�
 
+                    command.setMatnr(matnr);
+                    command.setMatnr2(matnr2);
+
                     if (workNo1 == 0 && workNo2 !=0){
-                        command.setTaskMode(RgvTaskModeType.FETCH_PUT2); // 浠诲姟妯″紡: 鍙栨斁璐�
+                        command.setTaskMode(RgvTaskModeType.FETCH_PUT2); // 浠诲姟妯″紡: 2鍙栨斁璐�
                     } else if (workNo1 != 0 && workNo2 ==0) {
-                        command.setTaskMode(RgvTaskModeType.FETCH_PUT1); // 浠诲姟妯″紡: 鍙栨斁璐�
+                        command.setTaskMode(RgvTaskModeType.FETCH_PUT1); // 浠诲姟妯″紡: 1鍙栨斁璐�
                     }else {
-                        command.setTaskMode(RgvTaskModeType.FETCH_PUT_ALL); // 浠诲姟妯″紡: 鍙栨斁璐�
+                        command.setTaskMode(RgvTaskModeType.FETCH_PUT_ALL); // 浠诲姟妯″紡: all鍙栨斁璐�
                     }
                     command.setCommand(false);
                     rgvTaskSave(command);
@@ -2627,23 +2645,24 @@
             }
 
             //宸ヤ綅涓�浠诲姟瀹屾垚
-            if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING && rgvProtocol.getLoaded1() == 1) {
+            if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING && rgvProtocol.getLoaded1() == 0) {
                 WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo1());
                 if (Cools.isEmpty(wrkMastSta)){
                     log.error("鏈煡璇㈠埌rgv宸ヤ綔浠诲姟锛宺gv缂栧彿{},宸ヤ綔鍙穥}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1());
                     continue;
                 }
                 for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){
-                    SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getSourcePlcId());
-                    StaProtocol staProtocol = devpThread.getStation().get(outStn.getSourceStaNo());
+                    SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getStaPlcId());
+                    StaProtocol staProtocol = devpThread.getStation().get(outStn.getStaNo());
                     if (staProtocol == null) {
                         continue;
                     } else {
                         staProtocol = staProtocol.clone();
                     }
+
                     if (staProtocol.isAutoing() && staProtocol.isLoading()  && staProtocol.isPakMk()){
-//                        staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
-//                        staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+                        staProtocol.setWorkNo(wrkMastSta.getWrkNo().shortValue());
+                        staProtocol.setStaNo(wrkMastSta.getWrkEnd().shortValue());
                         if (!MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol))) {
                             continue;
                         }
@@ -2656,15 +2675,15 @@
             }
 
             //宸ヤ綅浜屼换鍔″畬鎴�
-            if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING2 && rgvProtocol.getLoaded1() == 1) {
-                WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo2());
+            if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING2 && rgvProtocol.getLoaded1() == 0) {
+                WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo2(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo2());
                 if (Cools.isEmpty(wrkMastSta)){
                     log.error("鏈煡璇㈠埌rgv宸ヤ綔浠诲姟锛宺gv缂栧彿{},宸ヤ綔鍙穥}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo2());
                     continue;
                 }
                 for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){
-                    SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getSourcePlcId());
-                    StaProtocol staProtocol = devpThread.getStation().get(outStn.getSourceStaNo());
+                    SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getStaPlcId());
+                    StaProtocol staProtocol = devpThread.getStation().get(outStn.getStaNo());
                     if (staProtocol == null) {
                         continue;
                     } else {
@@ -2672,16 +2691,122 @@
                     }
                     if (staProtocol.isAutoing() && staProtocol.isLoading()  && staProtocol.isPakMk()){
 //                        staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
-//                        staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
-                        if (!MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol))) {
-                            continue;
-                        }
+////                        staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+//                        if (!MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol))) {
+//                            continue;
+//                        }
                     }
 
                 }
 
                 MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(4,new RgvCommand()));
                 log.info("{}鍙穜gv宸ヤ綅浜屽伐浣滃畬鎴愬浣�,宸ヤ綔鍙�:{}",rgvSlave.getId(),wrkMastSta.getWrkNo2());
+            }
+        }
+    }
+
+    //浜屽彿rgv杈撻�佺嚎鍛戒护涓嬪彂
+    public synchronized void RGV2Taskput() {
+        for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
+            if (rgvSlave.getId() !=2){
+                continue;
+            }
+            ZyRgvThread rgvThread = (ZyRgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
+            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+            if (Cools.isEmpty(rgvProtocol)){
+                continue;
+            }else {
+                rgvProtocol = rgvProtocol.clone();
+            }
+
+            //宸ヤ綅涓�浠诲姟瀹屾垚
+            if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.OUTSTN1 && rgvProtocol.getLoaded1() == 1) {
+                WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo1());
+                if (Cools.isEmpty(wrkMastSta)){
+                    log.error("鏈煡璇㈠埌rgv宸ヤ綔浠诲姟锛宺gv缂栧彿{},宸ヤ綔鍙穥}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1());
+                    continue;
+                }
+                for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){
+                    SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getStaPlcId());
+                    StaProtocol staProtocol = devpThread.getStation().get(outStn.getStaNo());
+                    if (staProtocol == null) {
+                        continue;
+                    } else {
+                        staProtocol = staProtocol.clone();
+                    }
+
+                    if (outStn.getStaPlcId() == 2){
+                        if (staProtocol.isAutoing() && !staProtocol.isLoading()  && staProtocol.isPakMk()){
+                            staProtocol.setWorkNo(wrkMastSta.getWrkNo().shortValue());
+                            staProtocol.setStaNo((short) 2106);
+                            staProtocol.setMatnr(wrkMastSta.getMatnr1().shortValue());
+
+                            if (!MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol))) {
+                                continue;
+                            }
+                        }
+                    }
+
+                }
+            }
+
+            //宸ヤ綅浜屼换鍔″畬鎴�
+            if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.OUTSTN8 && rgvProtocol.getLoaded1() == 1) {
+                WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo2());
+                if (Cools.isEmpty(wrkMastSta)){
+                    log.error("鏈煡璇㈠埌rgv宸ヤ綔浠诲姟锛宺gv缂栧彿{},宸ヤ綔鍙穥}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo2());
+                    continue;
+                }
+                for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){
+                    SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getStaPlcId());
+                    StaProtocol staProtocol = devpThread.getStation().get(outStn.getStaNo());
+                    if (staProtocol == null) {
+                        continue;
+                    } else {
+                        staProtocol = staProtocol.clone();
+                    }
+                    if (outStn.getStaPlcId() == 2){
+                        if (staProtocol.isAutoing() && !staProtocol.isLoading()  && staProtocol.isPakMk()){
+                            staProtocol.setWorkNo(wrkMastSta.getWrkNo2().shortValue());
+                            staProtocol.setStaNo((short) 2106);
+                            staProtocol.setMatnr(wrkMastSta.getMatnr2().shortValue());
+
+                            if (!MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol))) {
+                                continue;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    public synchronized void RGV2TaskOver() {
+        for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
+            if (rgvSlave.getId() !=2){
+                continue;
+            }
+            ZyRgvThread rgvThread = (ZyRgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
+            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+            if (Cools.isEmpty(rgvProtocol)){
+                continue;
+            }else {
+                rgvProtocol = rgvProtocol.clone();
+            }
+
+            //宸ヤ綅涓�浠诲姟瀹屾垚
+            if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING && rgvProtocol.getLoaded1() == 0) {
+
+                MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(3,new RgvCommand()));
+                log.info("{}鍙穜gv宸ヤ綅涓�宸ヤ綔瀹屾垚澶嶄綅,宸ヤ綔鍙�:{}",rgvSlave.getId(),rgvProtocol.getTaskNo1());
+            }
+
+            //宸ヤ綅浜屼换鍔″畬鎴�
+            if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING2 && rgvProtocol.getLoaded1() == 0) {
+
+
+                MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(4,new RgvCommand()));
+                log.info("{}鍙穜gv宸ヤ綅浜屽伐浣滃畬鎴愬浣�,宸ヤ綔鍙�:{}",rgvSlave.getId(),rgvProtocol.getTaskNo2());
             }
         }
     }
@@ -2705,6 +2830,8 @@
         wrkMastSta.setUpdateTime(now);
         wrkMastSta.setWrkCrn(command.getRgvNo());
         wrkMastSta.setWrkType(command.getTaskMode().intValue());
+        wrkMastSta.setMatnr1(command.getMatnr().intValue());
+        wrkMastSta.setMatnr2(command.getMatnr2().intValue());
         return wrkMastStaService.insert(wrkMastSta);
     }
 
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index 2281702..a41eae0 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -40,7 +40,8 @@
     public static short getRgvEndStaNo(Integer rgvNo,Integer staNo){
         Map<Integer, Integer> rgv1Map = new HashMap<>();
         Map<Integer, Integer> rgv2Map = new HashMap<>();
-        rgv2Map.put(4007,2103);
+        rgv2Map.put(4002,4001); rgv2Map.put(4011,4010);
+        rgv2Map.put(2101,2102);
         Map<Integer, Integer> rgv3Map = new HashMap<>();
         switch (rgvNo){
             case 1:
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index 5343a4f..d75b130 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -75,8 +75,11 @@
 //                    mainService.crn5StnToOutStn();
                     //rgv浠诲姟
                     mainService.RGVTaskPut();
-                    //rgv浠诲姟瀹屾垚
+                    //rgv1,3浠诲姟瀹屾垚
                     mainService.RGVTaskOver();
+                    //rgv2浠诲姟瀹屾垚
+                    mainService.RGV2Taskput();
+                    mainService.RGV2TaskOver();
 
 
                 } catch (Exception e) {
diff --git a/src/main/java/com/zy/core/enums/RgvModeType.java b/src/main/java/com/zy/core/enums/RgvModeType.java
index 81d1747..70d4104 100644
--- a/src/main/java/com/zy/core/enums/RgvModeType.java
+++ b/src/main/java/com/zy/core/enums/RgvModeType.java
@@ -10,6 +10,8 @@
     HAND(1, "鎵嬪姩"),
     HALF_AUTO(2, "鍗婅嚜鍔�"),
     AUTO(3, "鑷姩"),
+    OUTSTN1(7,"宸ヤ綔浣�1璇锋眰鍑虹珯"),
+    OUTSTN8(8,"宸ヤ綔浣�1璇锋眰鍑虹珯"),
     AUTO2(100, "鍏跺畠"),
     ;
 
diff --git a/src/main/java/com/zy/core/enums/RgvStatusType.java b/src/main/java/com/zy/core/enums/RgvStatusType.java
index 5927760..6159b49 100644
--- a/src/main/java/com/zy/core/enums/RgvStatusType.java
+++ b/src/main/java/com/zy/core/enums/RgvStatusType.java
@@ -11,8 +11,9 @@
     PICK_WAIT((short) 2, "鍙栬揣绛夊緟"),
     PICK_WORKING((short) 3, "鍙栬揣涓�"),
     RELEASE_WALK((short) 4, "鏀捐揣璧拌"),
-    RELEASE_WAIT((short) 5, "鏀捐揣绛夊緟"),
-    RELEASE_WORKING((short) 6, "鏀捐揣涓�"),
+
+    OUTSTN1((short)5,"宸ヤ綔浣�1璇锋眰鍑虹珯"),
+    OUTSTN8((short)6,"宸ヤ綔浣�2璇锋眰鍑虹珯"),
     WALKING((short) 9, "璧拌涓�"),
     WAITING((short) 90, "宸ヤ綅涓�浠诲姟瀹屾垚绛夊緟WCS纭"),
     WAITING2((short) 91, "宸ヤ綅浜屼换鍔″畬鎴愮瓑寰匴CS纭"),
diff --git a/src/main/java/com/zy/core/model/RgvSlave.java b/src/main/java/com/zy/core/model/RgvSlave.java
index a89d9d0..5611a67 100644
--- a/src/main/java/com/zy/core/model/RgvSlave.java
+++ b/src/main/java/com/zy/core/model/RgvSlave.java
@@ -24,6 +24,8 @@
         private Integer sourceStaNo;//婧愮珯
         private Integer sourcePlcId;
 
+
+
         private Integer staNo;//鐩爣绔�
         private Integer staPlcId;
 
diff --git a/src/main/java/com/zy/core/model/command/RgvCommand.java b/src/main/java/com/zy/core/model/command/RgvCommand.java
index 1472669..ec5ea94 100644
--- a/src/main/java/com/zy/core/model/command/RgvCommand.java
+++ b/src/main/java/com/zy/core/model/command/RgvCommand.java
@@ -53,6 +53,10 @@
     @JSONField(serialize = false)
     private RgvTaskModeType taskModeType;
 
+    private Short matnr;
+
+    private Short matnr2;
+
 
     //**************宸ヤ綅2**************
 
diff --git a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
index d6df231..32f1deb 100644
--- a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
@@ -11,7 +11,7 @@
 import java.util.Map;
 
 @Data
-public class RgvProtocol {
+public class RgvProtocol implements Cloneable{
 
     private Integer RgvNo;
 
diff --git a/src/main/java/com/zy/core/model/protocol/StaProtocol.java b/src/main/java/com/zy/core/model/protocol/StaProtocol.java
index fb81cc3..dc03705 100644
--- a/src/main/java/com/zy/core/model/protocol/StaProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/StaProtocol.java
@@ -22,6 +22,10 @@
     private Short staNo;
 
     // ----------------------------------------------------------------
+    // 鐗╂枡浠g爜
+    private Short matnr;
+
+    // ----------------------------------------------------------------
     // 鑷姩
     private boolean autoing;
 
@@ -87,6 +91,7 @@
 
     private boolean force = false;
     private short amount = 0;
+    private Short tongType = 0;
 
     public Boolean isErr(){
         if (frontErr || backErr || highErr || leftErr || rightErr || weightErr || barcodeErr){
@@ -107,7 +112,7 @@
         basDevp.setLocType1((short) 0);  // 楂樹綆绫诲瀷{0:鏈煡,1:浣庡簱浣�,2:楂樺簱浣峿
         basDevp.setLocType2((short) 0);  // 瀹界獎绫诲瀷{0:鏈煡,1:绐勫簱浣�,2:瀹藉簱浣峿
         basDevp.setLocType3((short) 0);  // 杞婚噸绫诲瀷{0:鏈煡,1:杞诲簱浣�,2:閲嶅簱浣峿
-        basDevp.setLocType1(high != low && high ? (short) 2 : (short) 1);
+        basDevp.setLocType1(high != low && low ? (short) 1 : (short) 2);
 //        basDevp.
         return basDevp;
     }
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 81e9870..85db633 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -205,8 +205,9 @@
                     case 1:
                         switch (slave.getId()){
                             case 1:
-                            case 2:
                                 read();break;
+                            case 2:
+                                read10();break;
                             case 3:
                                 read30();break;
                             case 4:
@@ -216,7 +217,16 @@
                         break;
                     // 鍐欐暟鎹� ID+鐩爣绔�
                     case 2:
-                        write((StaProtocol)task.getData());
+                        switch (slave.getId()){
+                            case 1:
+                            case 3:
+                                write((StaProtocol)task.getData());
+                            case 2:
+                                write10((StaProtocol)task.getData());break;
+
+
+                        }
+
                         break;
                     default:
                         break;
@@ -359,6 +369,95 @@
         }
     }
 
+    private void read10() throws InterruptedException {
+        ArrayList<Integer> staNos = getStaNo();
+        int staNoSize = staNos.size();
+        OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (getStaNo().size() * 10));
+        if (result.IsSuccess) {
+            for (int i = 0; i < staNoSize; i++) {
+                Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+                StaProtocol staProtocol = station.get(siteId);
+                if (null == staProtocol) {
+                    staProtocol = new StaProtocol();
+                    staProtocol.setSiteId(siteId);
+                    station.put(siteId, staProtocol);
+                }
+                staProtocol.setWorkNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, i * 10));     // 宸ヤ綔鍙�
+                staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*10 + 4 ));   // 鐩爣绔�
+                staProtocol.setMatnr(siemensS7Net.getByteTransform().TransInt16(result.Content, i*10 + 6 ));   // 鐩爣绔�
+            }
+        }
+        Thread.sleep(200);
+        OperateResultExOne<byte[]> result1 = null;
+        result1 = siemensS7Net.Read("DB101.0", (short) (getStaNo().size() * 10));
+        if (result1.IsSuccess) {
+            for (int i = 0; i < staNoSize; i++) {
+                Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+                boolean[] status = siemensS7Net.getByteTransform().TransBool(result1.Content, i*10+8, 2);
+                StaProtocol staProtocol = station.get(siteId);
+                staProtocol.setAutoing(status[0]);  // 鑷姩
+                staProtocol.setLoading(status[1]);  // 鏈夌墿
+                staProtocol.setInEnable(status[2]); // 鍙叆
+                staProtocol.setOutEnable(status[3]);// 鍙嚭
+                staProtocol.setEmptyMk(status[4]);  // 绌烘澘淇″彿
+                staProtocol.setFullPlt(status[5]);  // 婊℃墭鐩�
+                staProtocol.setHigh(status[6]);     // 楂樺簱浣�
+                staProtocol.setLow(status[7]);      // 浣庡簱浣�
+                staProtocol.setEmptyOutPalletRequire(status[8]);      // 绌烘墭鐩樺彲鍑洪渶姹備俊鍙�
+                staProtocol.setEmptyInPalletRequire(status[9]);      // 绌烘墭鐩樺彲鍏ラ渶姹備俊鍙�
+
+                if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
+                    staProtocol.setPakMk(true);
+                }
+            }
+        }
+
+        // 鏉$爜鎵弿鍣�
+        if(slave.getId() == 1) {
+            Thread.sleep(200);
+            OperateResultExOne<byte[]> result2 = null;
+            result2 = siemensS7Net.Read("DB101.208.0", (short) (barcodeSize * 8));
+            if (result2.IsSuccess) {
+                for (int i = 0; i < barcodeSize; i++) {
+                    String barcode = siemensS7Net.getByteTransform().TransString(result2.Content, i * 8, 8, "UTF-8");
+                    BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, i + 1);
+                    if (!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
+                        barcodeThread.setBarcode(barcode);
+                    }
+                }
+            }
+        }
+
+
+
+        if (result.IsSuccess && !Cools.isEmpty(result1) && result1.IsSuccess) {
+
+            OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
+
+            // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
+            try {
+                List<BasDevp> basDevps = new ArrayList<>();
+                for (Integer siteId : staNos) {
+                    StaProtocol staProtocol = station.get(siteId);
+                    basDevps.add(staProtocol.toSqlModel());
+                }
+
+                BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class);
+                if (null != basDevpService && !basDevpService.updateBatchById(basDevps)) {
+                    throw new Exception("鏇存柊鏁版嵁搴撴暟鎹け璐�");
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+                OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戞洿鏂版暟鎹簱鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
+                log.error("鏇存柊鏁版嵁搴撴暟鎹け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+            }
+
+        } else {
+            OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戣鍙栬緭閫佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
+//            log.error("璇诲彇杈撻�佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+        }
+    }
+
     private void read30() throws InterruptedException {
         ArrayList<Integer> staNos = getStaNo();
         int staNoSize = staNos.size();
@@ -440,7 +539,9 @@
                 staProtocol.setAutoing(status[0]);  // 鑷姩
                 staProtocol.setLoading(status[1]);  // 鏈夌墿
                 staProtocol.setInEnable(status[2]); // 鍙叆
-                staProtocol.setAmount(matnr);
+                staProtocol.setMatnr(matnr);
+                staProtocol.setTongType(tongType);
+                staProtocol.setLow(true);
 
 
 
@@ -505,6 +606,32 @@
     }
 
     /**
+     * 鍐欏叆 ID+鐩爣绔� =====> 鍗曠珯鐐瑰啓鍏�
+     */
+    private void write10(StaProtocol staProtocol) throws InterruptedException {
+        if (null == staProtocol) {
+            return;
+        }
+        ArrayList<Integer> staNos = getWriteStaNo();
+        int index = staNos.indexOf(staProtocol.getSiteId());
+        OperateResult write = siemensS7Net.Write("DB100." + index*8, staProtocol.getWorkNo().intValue());    // 宸ヤ綔鍙�
+        OperateResult write1 = siemensS7Net.Write("DB100." + (index*8+4), staProtocol.getStaNo());    // 鐩爣绔�
+        OperateResult write2 = siemensS7Net.Write("DB100." + (index*8+6), staProtocol.getMatnr());    // 鐩爣绔�
+
+        if (!write.IsSuccess || !write1.IsSuccess || !write2.IsSuccess) {
+            staProtocol = station.get(staProtocol.getSiteId());
+            if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0) {
+                staProtocol.setPakMk(true);
+            }
+            OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), JSON.toJSON(staProtocol)));
+            log.error("鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(staProtocol));
+        } else {
+            OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆� 杈撻�佺嚎鍛戒护涓嬪彂 [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(staProtocol)));
+            log.info("杈撻�佺嚎鍛戒护涓嬪彂 [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}",  slave.getId(), JSON.toJSON(staProtocol));
+        }
+    }
+
+    /**
      * 蹇冭烦
      */
     private void heartbeat(){
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index ea37b45..fd78601 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -258,6 +258,10 @@
       sourcePlcId: 4
       staNo: 2103
       staPlcId: 2
+    inStn[1]:
+      sourceStaNo: 2003
+      sourcePlcId: 4
+
     outStn[0]:
       staNo: 2103
       staPlcId: 2
diff --git a/src/main/resources/mapper/WrkMastStaMapper.xml b/src/main/resources/mapper/WrkMastStaMapper.xml
index cb23804..1a5a379 100644
--- a/src/main/resources/mapper/WrkMastStaMapper.xml
+++ b/src/main/resources/mapper/WrkMastStaMapper.xml
@@ -19,6 +19,8 @@
         <result column="bign_time" property="bignTime" />
         <result column="wrk_crn" property="wrkCrn" />
         <result column="wrk_no2" property="wrkNo2"/>
+        <result column="matnr1" property="matnr1"/>
+        <result column="matnr2" property="matnr2"/>
 
     </resultMap>
     <select id="selectByRgvNoandWrkNo" resultMap="BaseResultMap">

--
Gitblit v1.9.1