src/main/java/com/zy/client/controller/CrnController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/client/domain/CrnStateTableVo.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/client/domain/enums/CrnStatusType.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/static/css/crn.css | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/views/console.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/views/crn.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/client/controller/CrnController.java
@@ -1,7 +1,17 @@ package com.zy.client.controller; import com.core.annotations.ManagerAuth; import com.core.common.R; import com.zy.client.domain.CrnStateTableVo; import com.zy.client.domain.enums.CrnStatusType; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; /** * 堆垛机接口 @@ -12,4 +22,29 @@ public class CrnController { private AtomicInteger integer = new AtomicInteger(); @PostMapping("/table/crn/state") @ManagerAuth(memo = "堆垛机信息表") public R crnTable(){ List<CrnStateTableVo> list = new ArrayList<>(); for (int i=0;i<4;i++){ CrnStateTableVo vo = new CrnStateTableVo("1", CrnStatusType.AUTO, "正常", "有物", "99", "3", "中位", "18233", "422", "0", "1204", "关闭", "0"); if (integer.get()%5 == 0) { vo.setWorkNo("0000"); } else { vo.setWorkNo("9998"); } list.add(vo); } integer.getAndIncrement(); return R.ok().add(list); } @PostMapping("/output/site") @ManagerAuth(memo = "堆垛机报文日志输出") public R crnOutput(){ String str = "\n" +new Date().toLocaleString() + "【2020-5-29 13:14:22】扫描plcA 目标站--273283723728327636432343234323422732837237283276364323432343234227328372372832763643234323432342"; return R.ok().add(str); } } src/main/java/com/zy/client/domain/CrnStateTableVo.java
New file @@ -0,0 +1,171 @@ package com.zy.client.domain; import com.zy.client.domain.enums.CrnStatusType; /** * Created by vincent on 2020-06-02 */ public class CrnStateTableVo { // 堆垛机号 private String crnNo; // 模式 private CrnStatusType type; // 报警 private String warn; // 有物 private String loading; // 列 private String bay; // 层 private String lev; // 货叉位置 private String forkOffset; // 列坐标 private String bayCoor; // 层坐标 private String levCoor; // 完成 private String complete; // 任务号 private String workNo; // 模式 private String status; // 报警码 private String warnCode; public CrnStateTableVo() { } public CrnStateTableVo(String crnNo, CrnStatusType type, String warn, String loading, String bay, String lev, String forkOffset, String bayCoor, String levCoor, String complete, String workNo, String status, String warnCode) { this.crnNo = crnNo; this.type = type; this.warn = warn; this.loading = loading; this.bay = bay; this.lev = lev; this.forkOffset = forkOffset; this.bayCoor = bayCoor; this.levCoor = levCoor; this.complete = complete; this.workNo = workNo; this.status = status; this.warnCode = warnCode; } public String getCrnNo() { return crnNo; } public void setCrnNo(String crnNo) { this.crnNo = crnNo; } public String getType() { return type.getDesc(); } public void setType(CrnStatusType type) { this.type = type; } public String getWarn() { return warn; } public void setWarn(String warn) { this.warn = warn; } public String getLoading() { return loading; } public void setLoading(String loading) { this.loading = loading; } public String getBay() { return bay; } public void setBay(String bay) { this.bay = bay; } public String getLev() { return lev; } public void setLev(String lev) { this.lev = lev; } public String getForkOffset() { return forkOffset; } public void setForkOffset(String forkOffset) { this.forkOffset = forkOffset; } public String getBayCoor() { return bayCoor; } public void setBayCoor(String bayCoor) { this.bayCoor = bayCoor; } public String getLevCoor() { return levCoor; } public void setLevCoor(String levCoor) { this.levCoor = levCoor; } public String getComplete() { return complete; } public void setComplete(String complete) { this.complete = complete; } public String getWorkNo() { return workNo; } public void setWorkNo(String workNo) { this.workNo = workNo; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public String getWarnCode() { return warnCode; } public void setWarnCode(String warnCode) { this.warnCode = warnCode; } } src/main/java/com/zy/client/domain/enums/CrnStatusType.java
@@ -6,21 +6,32 @@ public enum CrnStatusType { // 入库 PUT, PUT("入库"), // 出库 TAKE, TAKE("出库"), // 库到库 STOCK_MOVE, STOCK_MOVE("库到库"), // 站到站 SITE_MOVE, SITE_MOVE("站到站"), // p to p P_MOVE, P_MOVE("PToP"), // 异常 ERROR, ERROR("异常"), // 自动 AUTO, AUTO("自动"), // 非自动/手动 UN_AUTO, UN_AUTO("非自动"), ; } private String desc; CrnStatusType(String desc){ this.desc = desc; } public String getDesc() { return desc; } public void setDesc(String desc) { this.desc = desc; }} src/main/webapp/static/css/crn.css
@@ -48,7 +48,7 @@ float: left; height: 100%; width: 80%; overflow: hidden; overflow: auto; } /* 堆垛机状态表 */ #crn-state-table { src/main/webapp/views/console.html
@@ -414,9 +414,11 @@ getCrnInfo(); // 实时访问 setInterval(function () { getSitesInfo(); getCrnInfo(); }, 500); setInterval(function () { getSitesInfo(); }, 3000); // 输送设备实时数据获取 function getSitesInfo(){ src/main/webapp/views/crn.html
@@ -10,6 +10,7 @@ <link rel="stylesheet" type="text/css" href="../static/css/common.css"> <link rel="stylesheet" type="text/css" href="../static/css/crn.css"> <script type="text/javascript" src="../static/js/jquery/jquery-3.3.1.min.js"></script> <script type="text/javascript" src="../static/js/common.js"></script> <style> </style> @@ -162,66 +163,159 @@ </div> </body> <script> // 空白行数 var crnStateTableBlankRows = 0; var crnMsgTableBlankRows = 0; // 实际行数 var crnStateTableFullRows = 0; var crnMsgTableFullRows = 0; // 初始化 var crnOutputDom = document.getElementById("crn-output"); // 空白表格渲染 $(document).ready(function() { // 表一 var one1 = $('#crn-state-table thead').height(); var total1 = $('.crn-state').height(); var count1 = total1 / one1; count1 = parseInt(count1); var html1 = ""; for (var i = 0; i < count1; i ++){ html1 += " <tr>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " </tr>\n"; } $('#crn-state-table tbody').after(html1); // 表二 var one2 = $('#crn-msg-table thead').height(); var total2 = $('.crn-msg').height(); var count2 = total2 / one2; count2 = parseInt(count2); var html2 = ""; for (var i = 0; i < count2; i ++){ html2 += " <tr>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " </tr>\n"; } $('#crn-msg-table tbody').after(html2); initCrnStateTable(); getCrnStateInfo(); initCrnMsgTable(); }); // 数据更新 setInterval(function () { getCrnStateInfo(); },500); setInterval(function () { getSiteOutput(); },500); // 堆垛机信息表获取 ---- 表一 function getCrnStateInfo() { var tableEl = $('#crn-state-table'); $.ajax({ url: baseUrl+ "/crn/table/crn/state", headers: {'token': localStorage.getItem('token')}, method: 'POST', success: function (res) { if (res.code === 200){ var table = res.data; if (table.length > crnStateTableBlankRows && table.length !== crnStateTableFullRows) { initCrnStateTable(table.length-crnStateTableBlankRows); crnStateTableFullRows = table.length; } for (var i=1;i<=table.length;i++){ var tr = tableEl.find("tr").eq(i); setVal(tr.children("td").eq(0), table[i-1].crnNo); setVal(tr.children("td").eq(1), table[i-1].type); setVal(tr.children("td").eq(2), table[i-1].warn); setVal(tr.children("td").eq(3), table[i-1].loading); setVal(tr.children("td").eq(4), table[i-1].bay); setVal(tr.children("td").eq(5), table[i-1].lev); setVal(tr.children("td").eq(6), table[i-1].forkOffset); setVal(tr.children("td").eq(7), table[i-1].bayCoor); setVal(tr.children("td").eq(8), table[i-1].levCoor); setVal(tr.children("td").eq(9), table[i-1].complete); setVal(tr.children("td").eq(10), table[i-1].workNo); setVal(tr.children("td").eq(11), table[i-1].status); setVal(tr.children("td").eq(12), table[i-1].warnCode); } } else if (res.code === 403){ top.location.href = baseUrl+"/login"; } else { alert(res.msg); } } }); } // 输送设备日志输出 function getSiteOutput() { $.ajax({ url: baseUrl + "/crn/output/site", headers: {'token': localStorage.getItem('token')}, method: 'POST', success: function (res) { if (res.code === 200) { crnOutput(res.data); } else if (res.code === 403) { top.location.href = baseUrl + "/login"; } else { alert(res.msg); } } }) } // ------------------------------------------------------------------------------------------------ // 堆垛机信息表获取 ----- 表一 function initCrnStateTable(row) { var line; if (row === undefined){ var one = $('#crn-state-table thead').height(); var total = $('.crn-state').height(); var count = total / one; count = parseInt(count) - 1; crnStateTableBlankRows = count; line = count; } else { line = row; } var html = ""; for (var i = 0; i < line; i ++){ html += " <tr>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " </tr>\n"; } $('#crn-state-table tbody').after(html); } // 堆垛机数据表获取 ----- 表二 function initCrnMsgTable(row) { var line; if (row === undefined){ var one = $('#crn-msg-table thead').height(); var total = $('.crn-msg').height(); var count = total / one; count = parseInt(count) - 1; crnMsgTableBlankRows = count; line = count; } else { line = row; } var html = ""; for (var i = 0; i < line; i ++){ html += " <tr>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " <td></td>\n" + " </tr>\n"; } $('#crn-msg-table tbody').after(html); } // 日志输出框 function crnOutput(content){ crnOutputDom.value += content; crnOutputDom.scrollTop = crnOutputDom.scrollHeight; } setInterval(function () { crnOutput("\n" +new Date().toLocaleString() + "【2020-5-29 13:14:22】扫描plcA 目标站--273283723728327636432343234323422732837237283276364323432343234227328372372832763643234323432342"); },500); </script>