From 40d95599c1ac6ef89d465e031132d9c627a7f0bc Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期三, 19 十一月 2025 13:38:54 +0800
Subject: [PATCH] #增加出入库模式

---
 src/main/java/com/zy/asrs/controller/SiteController.java    |    1 
 src/main/java/com/zy/asrs/controller/ConsoleController.java |   49 +++++++++++-
 src/main/webapp/views/console.html                          |  100 ++++++++++++++----------
 src/main/webapp/views/pipeline.html                         |   57 --------------
 src/main/java/com/zy/core/model/protocol/LiftProtocol.java  |    3 
 src/main/java/com/zy/core/thread/SiemensDevpThread.java     |   26 ++++++
 6 files changed, 132 insertions(+), 104 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/ConsoleController.java b/src/main/java/com/zy/asrs/controller/ConsoleController.java
index f159b5f..00aa8a4 100644
--- a/src/main/java/com/zy/asrs/controller/ConsoleController.java
+++ b/src/main/java/com/zy/asrs/controller/ConsoleController.java
@@ -24,15 +24,14 @@
 import com.zy.core.CrnThread;
 import com.zy.core.DevpThread;
 import com.zy.core.Slave;
+import com.zy.core.cache.MessageQueue;
 import com.zy.core.cache.OutputQueue;
 import com.zy.core.cache.SlaveConnection;
 import com.zy.core.enums.CrnModeType;
 import com.zy.core.enums.SlaveType;
-import com.zy.core.model.CrnSlave;
-import com.zy.core.model.DevpSlave;
-import com.zy.core.model.LedSlave;
-import com.zy.core.model.RgvSlave;
+import com.zy.core.model.*;
 import com.zy.core.model.protocol.CrnProtocol;
+import com.zy.core.model.protocol.LiftProtocol;
 import com.zy.core.model.protocol.RgvProtocol;
 import com.zy.core.model.protocol.StaProtocol;
 import com.zy.core.properties.SlaveProperties;
@@ -410,4 +409,46 @@
         return R.ok();
     }
 
+    @GetMapping("/getIoMode")
+    public R getIoMode() {
+        DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+        if (devpThread == null) {
+            return R.error("绾跨▼涓嶅瓨鍦�");
+        }
+
+        LiftProtocol liftProtocol = devpThread.getLiftStatus();
+        if (liftProtocol == null) {
+            return R.error("绾跨▼涓嶅瓨鍦�");
+        }
+
+        return R.ok().add(liftProtocol.getIoMode());
+    }
+
+    @PostMapping("/switchIoMode")
+    public R switchIoMode() {
+        DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+        if (devpThread == null) {
+            return R.error("绾跨▼涓嶅瓨鍦�");
+        }
+
+        LiftProtocol liftProtocol = devpThread.getLiftStatus();
+        if (liftProtocol == null) {
+            return R.error("绾跨▼涓嶅瓨鍦�");
+        }
+
+        //妫�娴嬫槸鍚﹁繕鏈変换鍔℃病鍋氬畬
+        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>());
+        if (!wrkMasts.isEmpty()) {
+            return R.error("绯荤粺浠诲姟鏈畬鎴愶紝璇峰畬鎴愬悗鍐嶅垏鎹㈡ā寮�");
+        }
+
+        int switchIoMode = 1;
+        if (liftProtocol.getIoMode() == 1) {
+            switchIoMode = 2;
+        }
+
+        boolean result = MessageQueue.offer(SlaveType.Devp, 1, new Task(3, switchIoMode));
+        return R.ok();
+    }
+
 }
diff --git a/src/main/java/com/zy/asrs/controller/SiteController.java b/src/main/java/com/zy/asrs/controller/SiteController.java
index fd671c3..9d1aeea 100644
--- a/src/main/java/com/zy/asrs/controller/SiteController.java
+++ b/src/main/java/com/zy/asrs/controller/SiteController.java
@@ -156,7 +156,6 @@
                     vo.setPakMk(staProtocol.isPakMk()?"Y":"N");       // 闇�姹�1
                     vo.setEmptyMk(staProtocol.isEmptyMk()?"Y":"N");     // 绌烘澘淇″彿
                     vo.setStaNo(staProtocol.getStaNo());                // 鐩爣绔�
-                    vo.setLocType1(staProtocol.isHigh() != staProtocol.isLow() && staProtocol.isLow() ? "浣�" : "楂�");     //楂樹綆搴撲綅
                     return R.ok().add(vo);
                 }
             }
diff --git a/src/main/java/com/zy/core/model/protocol/LiftProtocol.java b/src/main/java/com/zy/core/model/protocol/LiftProtocol.java
index 63a11dd..f2e8054 100644
--- a/src/main/java/com/zy/core/model/protocol/LiftProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/LiftProtocol.java
@@ -16,4 +16,7 @@
     //0鏈畬鎴� 1宸插畬鎴�
     private Short taskStatus = 0;
 
+    //鍑哄叆搴撴ā寮� 1锛氬叆搴� 2锛氬嚭搴�
+    private Short ioMode = 0;
+
 }
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 5baf7d8..ee70d68 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -130,6 +130,8 @@
                     case 2:
                         write((LiftCommand) task.getData());
                         break;
+                    case 3:
+                        writeIoMode((Integer) task.getData());
                     default:
                         break;
                 }
@@ -231,6 +233,7 @@
             liftProtocol.setDeviceStatus(siemensS7Net.getByteTransform().TransInt16(result3.Content, 2));     // 璁惧鐘舵��
             liftProtocol.setTaskStatus(siemensS7Net.getByteTransform().TransInt16(result3.Content, 4));     // 瀹屾垚淇″彿
             liftProtocol.setWorkNo((short) siemensS7Net.getByteTransform().TransInt32(result3.Content, 6));     // 宸ヤ綔鍙�
+            liftProtocol.setIoMode(siemensS7Net.getByteTransform().TransInt16(result3.Content, 10));     // 鍑哄叆搴撴ā寮�
         }
 
         //娓╂箍搴︿俊鎭弽棣�
@@ -293,7 +296,7 @@
     /**
      * 鍐欏叆鍛戒护
      */
-    private void write(LiftCommand liftCommand) throws InterruptedException {
+    private void write(LiftCommand liftCommand) {
         if (null == liftCommand) {
             return;
         }
@@ -314,6 +317,27 @@
     }
 
     /**
+     * 鍐欏叆鍛戒护
+     */
+    private void writeIoMode(Integer ioMode) {
+        if (null == ioMode) {
+            return;
+        }
+        short[] array = new short[1];
+        array[0] = ioMode.shortValue();
+
+        OperateResult write = siemensS7Net.Write("DB100.12", array);
+
+        if (!write.IsSuccess) {
+            OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ュ嚭鍏ュ簱妯″紡鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", DateUtils.convert(new Date()), slave.getId(), ioMode));
+            News.error("SiemensDevp"+" - 4"+" - 鍐欏叆鍑哄叆搴撴ā寮忔暟鎹け璐ャ�傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), ioMode);
+        } else {
+            OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆� 鍑哄叆搴撴ā寮忓懡浠や笅鍙� [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), ioMode));
+            News.info("SiemensDevp"+" - 5"+" - 鍑哄叆搴撴ā寮忓懡浠や笅鍙� [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}",  slave.getId(), ioMode);
+        }
+    }
+
+    /**
      * 璁剧疆鍏ュ簱鏍囪
      */
     @Override
diff --git a/src/main/webapp/views/console.html b/src/main/webapp/views/console.html
index 513907f..6bae96a 100644
--- a/src/main/webapp/views/console.html
+++ b/src/main/webapp/views/console.html
@@ -40,47 +40,14 @@
                     </div>
                 </div>
             </div>
-            <!-- 鍫嗗灈鏈虹姸鎬� -->
-            <div class="machine-status">
-                <div class="body-head">鍫嗗灈鏈虹姸鎬�</div>
-                <div class="state">
-                    <span>鍫嗗灈鏈� 1</span>
-                    <span class="state-ss machine-put-flag	">鍏ュ簱</span>
-                </div>
-                <div class="state">
-                    <span>鍫嗗灈鏈� 2</span>
-                    <span class="state-ss machine-auto-flag	">鑷姩</span>
-
-                </div>
-                <div class="button"><span>鎵�鏈夌姸鎬�</span></div>
-                <div class="button item-group">
-                    <span class="machine-put-flag">鍏ュ簱</span>
-                    <span class="machine-take-flag">鍑哄簱</span>
-                    <span class="machine-stock-move-flag">搴撳埌搴�</span>
-                    <span class="machine-site-move-flag">绔欏埌绔�</span>
-                    <span class="machine-p-move-flag">PToP</span>
-                    <span class="machine-error-flag">寮傚父</span>
-                    <span class="machine-auto-flag">鑷姩</span>
-                    <span class="machine-unauto-flag">闈炶嚜鍔�/鎵嬪姩</span>
-                </div>
-            </div>
             <div class="line-status">
-                <div class="body-head">杈撻�佺嚎鐘舵��</div>
-                <div class="state">
-                    <span>杩愯緭绾挎�绘暟</span>
-                    <span id="line-total" class="line-ss"></span>
-                </div>
-                <div class="state">
-                    <span>杈撻�佺嚎浠诲姟 <span id="devpTaskStackOver"></span></span>
-                    <span id="devpWorkingCount" class="line-ss"></span>
-                </div>
-                <div class="button"><span>鎵�鏈夌姸鎬�</span></div>
-                <div class="button item-group">
-                    <span class="site-auto-run-id">鑷姩+鏈夌墿+ID</span>
-                    <span class="site-auto-run">鑷姩+鏈夌墿</span>
-                    <span class="site-auto-id">鑷姩+ID</span>
-                    <span class="site-auto">鑷姩</span>
-                    <span class="site-unauto">闈炶嚜鍔�/鎵嬪姩</span>
+                <div class="body-head">鍑哄叆搴撴ā寮�</div>
+                <div class="button" onclick="switchIoMode()"><span class="site-auto-id">鐐瑰嚮鍒囨崲妯″紡</span></div>
+                <div class="button" style="margin-top: 10px;">
+                    <span>褰撳墠妯″紡锛�</span>
+                    <span id="ioMode-in" class="site-auto">鍏ュ簱妯″紡</span>
+                    <span id="ioMode-out" class="site-auto-run">鍑哄簱妯″紡</span>
+                    <span id="ioMode-none" class="site-unauto">鏈煡妯″紡</span>
                 </div>
             </div>
             <div class="bar-code">
@@ -341,6 +308,7 @@
     setInterval(function () {
         getCodeData();
         renderBarCode();
+        getIoModeInfo()
     }, 1000)
     var tData = [],tData1 = [],tData2 = [],tData3 = [];
     function getCodeData() {
@@ -348,7 +316,6 @@
             url: baseUrl + '/console/barcode/output/site',
             method: 'GET',
             success: function (res) {
-                console.log(res)
                 if (res.code === 200) {
                     tData = eval(res.data);
                     if (tData.length <= 5) {
@@ -372,6 +339,7 @@
             }
         })
     }
+
     function renderBarCode() {
         for (var i = 0; i < tData1.length; i++) {
             var str1 = '<li><span>' + tData1[i].barcode + '</span><span class="right">' + tData1[i].time + '</span></li>'
@@ -386,6 +354,56 @@
             $('#barcode3').append(str3)
         }
     }
+
+    function getIoModeInfo() {
+        $.ajax({
+            url: baseUrl + "/console/getIoMode",
+            headers: {'token': localStorage.getItem('token')},
+            method: 'GET',
+            success: function (res) {
+                if (res.code === 200){
+                    let ioModeData = res.data;
+                    if (ioModeData == 1) {
+                        $("#ioMode-none").hide()
+                        $("#ioMode-in").show()
+                        $("#ioMode-out").hide()
+                    }else if(ioModeData == 2) {
+                        $("#ioMode-none").hide()
+                        $("#ioMode-in").hide()
+                        $("#ioMode-out").show()
+                    }else {
+                        $("#ioMode-none").show()
+                        $("#ioMode-in").hide()
+                        $("#ioMode-out").hide()
+                    }
+                } else if (res.code === 403){
+                    window.location.href = baseUrl+"/login";
+                }  else {
+                    console.log(res.msg);
+                }
+            }
+        });
+    }
+
+    function switchIoMode() {
+        $.ajax({
+            url: baseUrl + "/console/switchIoMode",
+            headers: {
+                'token': localStorage.getItem('token')
+            },
+            data: {},
+            method: 'post',
+            success: function (res) {
+                if (res.code === 200){
+                    layer.msg(res.msg)
+                } else if (res.code === 403){
+                    window.location.href = baseUrl+"/login";
+                }  else {
+                    layer.msg(res.msg)
+                }
+            }
+        });
+    }
 </script>
 <script type="text/javascript">
     // 寮圭獥绔欑偣淇℃伅
diff --git a/src/main/webapp/views/pipeline.html b/src/main/webapp/views/pipeline.html
index c182d24..5c60e6b 100644
--- a/src/main/webapp/views/pipeline.html
+++ b/src/main/webapp/views/pipeline.html
@@ -180,7 +180,6 @@
     var siteTableFullRows = 0;
     var outputDom = document.getElementById("output");
     $(document).ready(function() {
-        getIoModeInfo();
         initPlcErrorTable();
         getPlcError();
         initSiteTable();
@@ -190,7 +189,6 @@
     setInterval(function () {
         getPlcError();
         starGetSite();
-        getIoModeInfo();
     }, 1000);
     setInterval(function () {
         getSiteOutput();
@@ -201,61 +199,6 @@
         } else {
             getSite();
         }
-    }
-
-    var ioModeData;
-    function getIoModeInfo() {
-        $.ajax({
-            url: baseUrl+ "/site/io/mode/info/site",
-            headers: {'token': localStorage.getItem('token')},
-            method: 'GET',
-            success: function (res) {
-                if (res.code === 200){
-                    ioModeData = res.data;
-                    ioModeData.forEach(function (e) {
-                        $("#io-mode-"+e.floor).html(e.modeDesc);
-                    })
-                } else if (res.code === 403){
-                    window.location.href = baseUrl+"/login";
-                }  else {
-                    console.log(res.msg);
-                }
-            }
-        });
-    }
-
-    /**
-     * 寮哄埗鍒囨崲鍏ュ嚭搴撴ā寮�
-     */
-    function ioModeSwitch(el) {
-        var floor = el.split("-")[2];
-        if (ioModeData != null && ioModeData.length > 1) {
-            ioModeData.forEach(function(e) {
-                if (e.floor === Number(floor)) {
-                    if (e.modeVal === 3 || e.modeVal === 4) {
-                        layer.confirm('纭畾鍒囨崲涓哄叆搴撴ā寮忓悧锛�',function () {
-                            $.ajax({
-                                url: baseUrl+ "/site/io/mode/action/site",
-                                headers: {'token': localStorage.getItem('token')},
-                                data: {floor: e.floor},
-                                method: 'POST',
-                                success: function (res) {
-                                    if (res.code === 200){
-                                        layer.msg("鏆傛椂涓嶈兘鍒囨崲锛�", {icon: 1})
-                                    } else if (res.code === 403){
-                                        window.location.href = baseUrl+"/login";
-                                    }  else {
-                                        console.log(res.msg);
-                                    }
-                                }
-                            });
-                            layer.closeAll();
-                        })
-                    }
-                }
-            });
-        }
-
     }
 
     // plc寮傚父淇℃伅琛ㄨ幏鍙�

--
Gitblit v1.9.1