自动化立体仓库 - WCS系统
#
vincent
2020-06-02 4eca179a8c7ebbe310f6560fc8f88555a2e6994e
#
1个文件已添加
5个文件已修改
437 ■■■■ 已修改文件
src/main/java/com/zy/client/controller/CrnController.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/client/domain/CrnStateTableVo.java 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/client/domain/enums/CrnStatusType.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/css/crn.css 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/console.html 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/crn.html 196 ●●●● 补丁 | 查看 | 原始文档 | 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>