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