From 3c4373138377314b4a67528b24b107e18b11326e Mon Sep 17 00:00:00 2001
From: tqs <56479841@qq.com>
Date: 星期三, 01 二月 2023 10:06:20 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |   59 +++++++++++++++++++
 src/main/java/com/zy/asrs/mapper/WrkMastMapper.java         |    3 +
 src/main/resources/mapper/WrkMastMapper.xml                 |   15 +++++
 src/main/java/com/zy/core/MainProcess.java                  |    9 +++
 src/main/java/com/zy/core/enums/IoModeType.java             |   32 ++++++++++
 src/main/java/com/zy/core/thread/SiemensDevpThread.java     |   30 ++++++++++
 6 files changed, 148 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
index 30d03ff..7937184 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -116,4 +116,7 @@
 
     List<WrkMast> selectWrkStsAndIoType(@Param("sour")Integer sour);
     List<WrkMast> selectWrkStsAndIoType0(@Param("sour")Integer sour);
+
+    WrkMast selectWorkingPakin(@Param("sourceStaNo")Integer sourceStaNo);
+    WrkMast selectWorkingPakout(@Param("sourceStaNo")Integer sourceStaNo);
 }
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 6a2a8b3..47ac1b3 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -3863,4 +3863,63 @@
         }
     }
 
+    /**
+     * 鍏ュ嚭搴撴ā寮忓垏鎹㈠嚱鏁�
+     */
+    public synchronized void ioConvert() {
+        try {
+            // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+            for (DevpSlave devp : slaveProperties.getDevp()) {
+                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+
+                for (DevpSlave.Sta inSta : devp.getInSta()) {
+                    Integer sourceStaNo = inSta.getStaNo()==103 ? 104 : 204;
+                    WrkMast pakout = wrkMastMapper.selectWorkingPakout(sourceStaNo);
+                    switch (inSta.getStaNo()) {
+                        case 103://1F
+                            if (pakout != null) {
+                                if (devpThread.ioModeOf1F != IoModeType.PAKOUT_MODE) {
+                                    // 鍑哄簱鍒囨崲涓�
+//                                    devpThread.ioModeOf1F = IoModeType.PAKOUT_BOOTING;
+//                                    WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo());
+//                                    if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
+//                                            && !devpThread.getStation().get(inSta.getStaNo()+1).isLoading()
+//                                            && devpThread.getStation().get(inSta.getStaNo()+1).getWorkNo()==0) {
+//                                        // 鍑哄簱妯″紡
+                                        devpThread.ioModeOf1F = IoModeType.PAKOUT_MODE;
+//                                    }
+                                }
+                            } else {
+                                // 鍏ュ簱妯″紡
+                                devpThread.ioModeOf1F = IoModeType.PAKIN_MODE;
+                            }
+                            break;
+                        case 203://2F
+                            if (pakout != null) {
+                                if (devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {
+                                    // 鍑哄簱鍒囨崲涓�
+//                                    devpThread.ioModeOf2F = IoModeType.PAKOUT_BOOTING;
+//                                    WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo());
+//                                    if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
+//                                            && !devpThread.getStation().get(inSta.getStaNo()-1).isLoading()
+//                                            && devpThread.getStation().get(inSta.getStaNo()-1).getWorkNo()==0) {
+//                                        // 鍑哄簱妯″紡
+                                        devpThread.ioModeOf2F = IoModeType.PAKOUT_MODE;
+//                                    }
+                                }
+                            } else {
+                                // 鍏ュ簱妯″紡
+                                devpThread.ioModeOf2F = IoModeType.PAKIN_MODE;
+                            }
+                            break;
+                    }
+                }
+
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
 }
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index ad7fb74..09dc1b0 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -22,6 +22,8 @@
     private MainServiceImpl mainService;
     // 鎵�灞炵嚎绋�
     private Thread thread;
+    // 棰戠巼
+    private int i = 0;
 
     /**
      * =====>>  寮�濮嬪伐浣�
@@ -75,6 +77,13 @@
                     // 绌挎杞� ===>> 灏忚溅鐢甸噺妫�娴嬪厖鐢�
                     mainService.loopSteCharge();
 
+                    // 鍏朵粬  ===>> 鍏ュ嚭搴撴ā寮忓垏鎹�
+                    i++;
+                    if (i > 1) {
+                        mainService.ioConvert();
+                        i = 0;
+                    }
+
                 } catch (Exception e) {
                     e.printStackTrace();
                 }
diff --git a/src/main/java/com/zy/core/enums/IoModeType.java b/src/main/java/com/zy/core/enums/IoModeType.java
new file mode 100644
index 0000000..6fe2be5
--- /dev/null
+++ b/src/main/java/com/zy/core/enums/IoModeType.java
@@ -0,0 +1,32 @@
+package com.zy.core.enums;
+
+/**
+ * 鍏ュ嚭搴撴ā寮忔灇涓�
+ */
+public enum IoModeType {
+
+    NONE((short) 0, "鏈煡"),
+    PAKIN_BOOTING((short) 1, "鍏ュ簱鍚姩涓�"),
+    PAKIN_MODE((short) 2, "鍏ュ簱妯″紡"),
+    PAKOUT_BOOTING((short) 3, "鍑哄簱鍚姩涓�"),
+    PAKOUT_MODE((short) 4, "鍑哄簱妯″紡"),
+    ;
+
+    public Short id;
+    public String desc;
+
+    IoModeType(Short id, String desc) {
+        this.id = id;
+        this.desc = desc;
+    }
+
+    public static IoModeType get(Short id) {
+        for (IoModeType type : IoModeType.values()) {
+            if (id.equals(type.id)) {
+                return type;
+            }
+        }
+        return IoModeType.NONE;
+    }
+
+}
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 497ca67..2636d7a 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -15,6 +15,7 @@
 import com.zy.core.cache.MessageQueue;
 import com.zy.core.cache.OutputQueue;
 import com.zy.core.cache.SlaveConnection;
+import com.zy.core.enums.IoModeType;
 import com.zy.core.enums.SlaveType;
 import com.zy.core.model.DevpSlave;
 import com.zy.core.model.Task;
@@ -57,6 +58,17 @@
     public SiemensDevpThread(DevpSlave slave) {
         this.slave = slave;
     }
+
+    /**
+     * 鍏ュ嚭搴撴ā寮�
+     * 0锛氭湭鐭�
+     * 1锛氬叆搴撳惎鍔ㄤ腑
+     * 2.鍏ュ簱妯″紡
+     * 3.鍑哄簱鍚姩涓� 锛堜笉鑳界敓鎴愬叆搴撳伐浣滄。锛�
+     * 4.鍑哄簱妯″紡
+     */
+    public IoModeType ioModeOf1F = IoModeType.NONE;
+    public IoModeType ioModeOf2F = IoModeType.NONE;
 
     @Override
     @SuppressWarnings("InfiniteLoopStatement")
@@ -114,6 +126,8 @@
      * 璇诲彇鐘舵�� ====> 鏁村潡plc
      */
     private void read() throws InterruptedException {
+        // 鏇存柊鍏ュ嚭搴撴ā寮�
+        updateIoMode();
         OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.0", (short) 50);
         if (result.IsSuccess) {
             for (int i = 0; i < 25; i++) {
@@ -238,6 +252,22 @@
         }
     }
 
+    // 鏇存柊鍏ュ嚭搴撴ā寮�
+    private void updateIoMode() throws InterruptedException {
+        if (this.ioModeOf1F != IoModeType.NONE) {
+            if (!siemensS7Net.Write("DB100.180", this.ioModeOf1F.id).IsSuccess) {
+                OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎103鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={1}", slave.getId()));
+                News.error("鍐欏叆杈撻�佺嚎103鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={}", slave.getId());
+            }
+        }
+        if (this.ioModeOf2F != IoModeType.NONE) {
+            if (!siemensS7Net.Write("DB100.182", this.ioModeOf2F.id).IsSuccess) {
+                OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎203鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={1}", slave.getId()));
+                News.error("鍐欏叆杈撻�佺嚎203鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎plc缂栧彿={}", slave.getId());
+            }
+        }
+    }
+
     /**
      * 蹇冭烦
      */
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index e68efe0..0217c86 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -209,4 +209,19 @@
         </if>
 
     </select>
+
+    <!--                                       鍏ュ嚭搴撴ā寮忕浉鍏�                                      -->
+    <select id="selectWorkingPakin" resultMap="BaseResultMap">
+        select top 1 * from dbo.asr_wrk_mast where wrk_sts in (2,3,4) and io_type != 11 and source_sta_no = #{sourceStaNo} order by io_time,wrk_no
+    </select>
+
+    <select id="selectWorkingPakout" resultMap="BaseResultMap">
+        select top 1 *
+        from dbo.asr_wrk_mast
+        where wrk_sts > 10
+        and io_type > 100 and io_type != 11
+        and source_sta_no = #{sourceStaNo}
+        order by io_time,wrk_no
+    </select>
+
 </mapper>

--
Gitblit v1.9.1