From 59c8b08ce2025c0f4a947ec313d8229eaf464c3d Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期五, 21 八月 2020 11:06:44 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/controller/SiteController.java |   65 ++++++++++++
 src/main/webapp/views/index.html                         |    2 
 src/main/webapp/static/css/pipeline.css                  |   56 +++++++++++
 src/main/webapp/views/pipeline.html                      |  102 ++++++++++++-------
 src/main/java/com/zy/core/thread/CrnThread.java          |    2 
 src/main/java/com/zy/core/thread/DevpThread.java         |   60 ++++++++++--
 6 files changed, 234 insertions(+), 53 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/SiteController.java b/src/main/java/com/zy/asrs/controller/SiteController.java
index 9c6ae40..857c326 100644
--- a/src/main/java/com/zy/asrs/controller/SiteController.java
+++ b/src/main/java/com/zy/asrs/controller/SiteController.java
@@ -4,17 +4,17 @@
 import com.core.common.R;
 import com.zy.asrs.domain.vo.PlcErrorTableVo;
 import com.zy.asrs.domain.vo.SiteTableVo;
+import com.zy.core.cache.MessageQueue;
 import com.zy.core.cache.OutputQueue;
 import com.zy.core.cache.SlaveConnection;
 import com.zy.core.enums.SlaveType;
 import com.zy.core.model.DevpSlave;
+import com.zy.core.model.Task;
 import com.zy.core.model.protocol.StaProtocol;
 import com.zy.core.properties.SlaveProperties;
 import com.zy.core.thread.DevpThread;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -97,4 +97,63 @@
         return R.ok().add(str.toString());
     }
 
+    /****************************************************************/
+    /************************** 璇︽儏鎿嶄綔 ******************************/
+    /****************************************************************/
+
+    @GetMapping("/detl/{siteId}")
+    public R siteDetl(@PathVariable("siteId") Integer siteId){
+        SiteTableVo vo = new SiteTableVo();
+        for (DevpSlave devp : slaveProperties.getDevp()) {
+            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+            Map<Integer, StaProtocol> station = devpThread.getStation();
+            for (Map.Entry<Integer, StaProtocol> entry : station.entrySet()) {
+                if (siteId.equals(entry.getKey())) {
+                    StaProtocol staProtocol = entry.getValue();
+                    vo.setDevNo(entry.getKey());    // 绔欑偣缂栧彿
+                    vo.setWorkNo(staProtocol.getWorkNo());   //  宸ヤ綔鍙�
+                    vo.setAutoing(staProtocol.isAutoing()?"Y":"N");     //  鑷姩
+                    vo.setLoading(staProtocol.isLoading()?"Y":"N");     // 鏈夌墿
+                    vo.setInEnable(staProtocol.isInEnable()?"Y":"N");   // 鍙叆
+                    vo.setOutEnable(staProtocol.isOutEnable()?"Y":"N"); // 鍙嚭
+                    vo.setInreq1(staProtocol.isInreq1()?"Y":"N");       // 闇�姹�1
+                    vo.setEmptyMk(staProtocol.isEmptyMk()?"Y":"N");     // 绌烘澘淇″彿
+                    vo.setStaNo(staProtocol.getStaNo());                // 鐩爣绔�
+                    return R.ok().add(vo);
+                }
+            }
+        }
+        return R.error("plc宸叉帀绾�");
+    }
+
+    @PostMapping("/detl/update")
+    @ManagerAuth(memo = "淇敼绔欑偣鏁版嵁")
+    public R siteDetlUpdate(@RequestParam Integer siteId,
+                            @RequestParam Short workNo,
+                            @RequestParam Short staNo){
+        for (DevpSlave devp : slaveProperties.getDevp()) {
+            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+            Map<Integer, StaProtocol> station = devpThread.getStation();
+            for (Map.Entry<Integer, StaProtocol> entry : station.entrySet()) {
+                if (siteId.equals(entry.getKey())) {
+                    StaProtocol staProtocol = entry.getValue();
+                    if (workNo != null) {
+                        staProtocol.setWorkNo(workNo);
+                    }
+                    if (staNo != null) {
+                        staProtocol.setStaNo(staNo);
+                    }
+                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                    if (result) {
+                        return R.ok();
+                    } else {
+                        return R.error("涓嬪彂鍛戒护澶辫触");
+                    }
+                }
+            }
+        }
+        return R.error("plc宸叉帀绾�");
+    }
+
+
 }
diff --git a/src/main/java/com/zy/core/thread/CrnThread.java b/src/main/java/com/zy/core/thread/CrnThread.java
index 148a3e5..ad3e99b 100644
--- a/src/main/java/com/zy/core/thread/CrnThread.java
+++ b/src/main/java/com/zy/core/thread/CrnThread.java
@@ -179,7 +179,7 @@
         OperateResult result = siemensNet.Write("DB8.0", array);
         if (result.IsSuccess) {
             System.out.println(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command)));
-            OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command)));
+            OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command)));
 //            readStatus();
         } else {
             System.out.println(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()));
diff --git a/src/main/java/com/zy/core/thread/DevpThread.java b/src/main/java/com/zy/core/thread/DevpThread.java
index d0493ed..b75d3f5 100644
--- a/src/main/java/com/zy/core/thread/DevpThread.java
+++ b/src/main/java/com/zy/core/thread/DevpThread.java
@@ -54,9 +54,17 @@
                     case 1:
                         read();
                         break;
-                    // 鍐欐暟鎹�
+                    // 鍐欐暟鎹� ID+鐩爣绔�
                     case 2:
                         write((StaProtocol)task.getData());
+                        break;
+                    // 鍐欐暟鎹� ID
+                    case 3:
+                        writeId((StaProtocol)task.getData());
+                        break;
+                    // 鍐欐暟鎹� 鐩爣绔�
+                    case 4:
+                        writeStaNo((StaProtocol)task.getData());
                         break;
                     default:
                         break;
@@ -129,7 +137,7 @@
     }
 
     /**
-     * 鍐欏叆 =====> 鍗曠珯鐐瑰啓鍏�
+     * 鍐欏叆 ID+鐩爣绔� =====> 鍗曠珯鐐瑰啓鍏�
      */
     private void write(StaProtocol staProtocol){
         if (null == staProtocol) {
@@ -137,14 +145,46 @@
         }
         OperateResult write = siemensS7Net.Write("DB100." + (staProtocol.getSiteId() - 1) * 2, staProtocol.getWorkNo());    // 宸ヤ綔鍙�
         OperateResult write1 = siemensS7Net.Write("DB100." + ((staProtocol.getSiteId() - 1) * 2 + 20), staProtocol.getStaNo());    // 鐩爣绔�
-        boolean[] status = new boolean[8];
-        status[0] = staProtocol.isAutoing();
-        status[1] = staProtocol.isLoading();
-        status[2] = staProtocol.isInEnable();
-        status[3] = staProtocol.isOutEnable();
-        status[4] = staProtocol.isEmptyMk();
-        OperateResult write2 = siemensS7Net.Write("DB100." + ((staProtocol.getSiteId() - 1) + 40), status);     //  鐘舵��
-        if (!write.IsSuccess || !write1.IsSuccess || !write2.IsSuccess) {
+//        boolean[] status = new boolean[8];
+//        status[0] = staProtocol.isAutoing();
+//        status[1] = staProtocol.isLoading();
+//        status[2] = staProtocol.isInEnable();
+//        status[3] = staProtocol.isOutEnable();
+//        status[4] = staProtocol.isEmptyMk();
+//        OperateResult write2 = siemensS7Net.Write("DB100." + ((staProtocol.getSiteId() - 1) + 40), status);     //  鐘舵��
+        if (!write.IsSuccess || !write1.IsSuccess) {
+            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)));
+        }
+    }
+
+    /**
+     * 鍐欏叆 ID =====> 鍗曠珯鐐瑰啓鍏�
+     */
+    private void writeId(StaProtocol staProtocol){
+        if (null == staProtocol) {
+            return;
+        }
+        OperateResult write = siemensS7Net.Write("DB100." + (staProtocol.getSiteId() - 1) * 2, staProtocol.getWorkNo());    // 宸ヤ綔鍙�
+        if (!write.IsSuccess ) {
+            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)));
+        }
+    }
+
+    /**
+     * 鍐欏叆 鐩爣绔� =====> 鍗曠珯鐐瑰啓鍏�
+     */
+    private void writeStaNo(StaProtocol staProtocol){
+        if (null == staProtocol) {
+            return;
+        }
+        OperateResult write = siemensS7Net.Write("DB100." + ((staProtocol.getSiteId() - 1) * 2 + 20), staProtocol.getStaNo());    // 鐩爣绔�
+        if (!write.IsSuccess ) {
             OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), JSON.toJSON(staProtocol)));
             log.error("鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(staProtocol));
         } else {
diff --git a/src/main/webapp/static/css/pipeline.css b/src/main/webapp/static/css/pipeline.css
index d03b223..0968a9b 100644
--- a/src/main/webapp/static/css/pipeline.css
+++ b/src/main/webapp/static/css/pipeline.css
@@ -96,4 +96,60 @@
     height: 100%;
     overflow: auto;
     resize:none;
+}
+
+
+/* 璇︽儏寮瑰嚭灞� */
+#site-detl {
+    padding: 30px 10px 0 25px;
+    overflow: hidden;
+}
+#site-detl form {
+    overflow: hidden;
+}
+.form-item {
+    margin-bottom: 10px;
+}
+.form-label {
+    display: inline-block;
+    width: 70px;
+    text-align: right;
+}
+.form-input {
+    display: inline-block;
+    padding-left: 15px;
+}
+.form-input input {
+    outline-style: none ;
+    border: 1px solid #ccc;
+    border-radius: 3px;
+    padding: 5px 8px;
+    width: 150px;
+    font-size: 14px;
+    font-weight: bolder;
+}
+.form-input input:focus{
+    border-color: #66afe9;
+    outline: 0;
+    -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);
+    box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)
+}
+.form-button-container {
+    text-align: center;
+}
+.form-button {
+    margin: 10px 10px;
+    width: 50px;
+    height: 30px;
+    color:white;
+    background-color:cornflowerblue;
+    border-radius: 3px;
+    border-width: 0;
+    outline: none;
+    font-size: 15px;
+    text-align: center;
+    cursor: pointer;
+}
+.form-button:hover {
+    opacity: 0.7;
 }
\ No newline at end of file
diff --git a/src/main/webapp/views/index.html b/src/main/webapp/views/index.html
index 2a5b0b5..fd7cf1f 100644
--- a/src/main/webapp/views/index.html
+++ b/src/main/webapp/views/index.html
@@ -26,7 +26,7 @@
   </ul>
 
   <!-- 涓讳綋鍐呭 -->
-  <iframe id="content" src="console.html"></iframe>
+  <iframe id="content" src="pipeline.html"></iframe>
 
   <footer class="footer">
     Copyright 漏 2015 All Rights Reserved. <a href="http://www.zoneyung.com" target="_blank">娴欐睙涓壃鐗╂祦瑁呭鏈夐檺鍏徃</a>  淇濈暀鎵�鏈夋潈鍒�
diff --git a/src/main/webapp/views/pipeline.html b/src/main/webapp/views/pipeline.html
index 6768bdf..9c35d6e 100644
--- a/src/main/webapp/views/pipeline.html
+++ b/src/main/webapp/views/pipeline.html
@@ -77,30 +77,30 @@
 </footer>
 
 <div id="site-detl" style="display: none">
-    <div class="layui-form">
-        <div class="layui-form-item">
-            <label class="layui-form-label layui-form-required">绔欑偣:</label>
-            <div class="layui-input-block">
-                <input id="siteId" name="siteId" placeholder="璇疯緭鍏ョ珯鐐圭紪鍙�" class="layui-input" lay-verify="required|number" autocomplete="off">
+    <form>
+        <div class="form-item">
+            <label class="form-label">绔欏彿:</label>
+            <div class="form-input">
+                <input id="siteId" name="siteId" class="layui-input" lay-verify="required|number" autocomplete="off" disabled="disabled">
             </div>
         </div>
-        <div class="layui-form-item">
-            <label class="layui-form-label layui-form-required">宸ヤ綔鍙�:</label>
-            <div class="layui-input-block">
-                <input id="workNo" name="workNo" type="number" placeholder="璇疯緭鍏ュ伐浣滃彿" class="layui-input" lay-verify="number" autocomplete="off">
+        <div class="form-item">
+            <label class="form-label">宸ヤ綔鍙�:</label>
+            <div class="form-input">
+                <input id="workNo" name="workNo" type="number" class="layui-input" lay-verify="number" autocomplete="off">
             </div>
         </div>
-        <div class="layui-form-item">
-            <label class="layui-form-label layui-form-required">鐩爣绔�:</label>
-            <div class="layui-input-block">
-                <input id="staNo" name="staNo" type="number" placeholder="璇疯緭鍏ョ洰鏍囩珯" class="layui-input" lay-verify="number" autocomplete="off">
+        <div class="form-item">
+            <label class="form-label">鐩爣绔�:</label>
+            <div class="form-input">
+                <input id="staNo" name="staNo" type="number" class="layui-input" lay-verify="number" autocomplete="off">
             </div>
         </div>
-        <div class="layui-form-item cool-button-contain">
-            <button class="layui-btn layui-btn-normal" id="print" lay-filter="print" lay-submit="">鎵撳嵃</button>
-            <button class="layui-btn layui-btn-primary" id="cancel">鍙栨秷</button>
+        <div class="form-item form-button-container">
+            <button class="form-button" id="save">淇濆瓨</button>
+            <button class="form-button" id="cancel" style="background-color: #D0D0D0">鍙栨秷</button>
         </div>
-    </div>
+    </form>
 </div>
 </body>
 <script>
@@ -126,27 +126,6 @@
     setInterval(function () {
         getSiteOutput();
     },500);
-
-    $(document).on('click','#site-table tr', function () {
-        var siteId = $(this).children("td").eq(0).html();
-        if (siteId !== null && siteId !== "") {
-            layer.open({
-                type: 1,
-                title: false,
-                shadeClose: true,
-                offset: 'rt',
-                anim: 5,
-                shade: [0],
-                area: ['340px', '215px'],
-                closeBtn: 0,
-                content: $("#site-detl"),
-                success: function(layero, index){
-
-                }
-            })
-        }
-    });
-
 
     // plc寮傚父淇℃伅琛ㄨ幏鍙�
     function getPlcError() {
@@ -289,5 +268,52 @@
         $('#site-table tbody').after(html);
     }
 
+    // 璇︽儏鎿嶄綔 -------------------------------------------------------------------------
+    var layerDetl;
+    $(document).on('dblclick ','#site-table tr', function () {
+        var siteId = $(this).children("td").eq(0).html();
+        if (siteId !== null && siteId !== "") {
+            layerDetl = layer.open({
+                type: 1,
+                title: false,
+                shadeClose: true,
+                offset: 'rt',
+                anim: 5,
+                shade: [0],
+                area: ['340px', '215px'],
+                closeBtn: 0,
+                content: $("#site-detl"),
+                success: function(layero, index){
+                    http.get(baseUrl+ "/site/detl/"+siteId, null, function (res) {
+                        $('#siteId').val(siteId);
+                        $('#workNo').val(res.data.workNo);
+                        $('#staNo').val(res.data.staNo);
+                    })
+                },
+                end: function () {
+                    $('#siteId').val("");
+                    $('#workNo').val("");
+                    $('#staNo').val("");
+                }
+            })
+        }
+    });
+
+    $(document).on('click ','#save', function () {
+        http.post(baseUrl+ "/site//detl/update", {
+            siteId: $('#siteId').val(),
+            workNo: $('#workNo').val(),
+            staNo:  $('#staNo').val()
+        }, function (res) {
+            layer.msg("淇敼鎴愬姛",{icon: 1,});
+        })
+    })
+    $(document).on('click ','#cancel', function () {
+        $('#siteId').val("");
+        $('#workNo').val("");
+        $('#staNo').val("");
+        layer.close(layerDetl);
+    })
+
 </script>
 </html>
\ No newline at end of file

--
Gitblit v1.9.1