123
ZY
2025-05-10 a56259ffabbdd3dba89d60e4da2c06a1b88e6220
123
9个文件已修改
1个文件已添加
512 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/DevopsController.java 155 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/domain/devops/DevopsMessage.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/domain/devops/ErrorType.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/domain/vo/SiteTableVo.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/model/protocol/StaProtocol.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/properties/SlaveProperties.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/css/devops.css 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/devops.html 163 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/index.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/DevopsController.java
@@ -6,7 +6,6 @@
import com.core.common.R;
import com.zy.asrs.domain.devops.DevopsMessage;
import com.zy.asrs.domain.devops.ErrorType;
import com.zy.asrs.domain.vo.SiteTableVo;
import com.zy.asrs.entity.BasDevp;
import com.zy.asrs.entity.WrkMast;
import com.zy.asrs.mapper.WrkMastMapper;
@@ -20,7 +19,6 @@
import com.zy.core.enums.CrnStatusType;
import com.zy.core.enums.SlaveType;
import com.zy.core.model.CrnSlave;
import com.zy.core.model.DevpSlave;
import com.zy.core.model.protocol.CrnProtocol;
import com.zy.core.model.protocol.StaProtocol;
import com.zy.core.properties.SlaveProperties;
@@ -30,9 +28,7 @@
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/devops")
@@ -59,15 +55,26 @@
            //先查询堆垛机是否在工作
            WrkMast working = wrkMastMapper.selectWorking(crnSlave.getId());
            for (WrkMast wrkMast : wrkMasts) {
                CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, wrkMast.getCrnNo());
                CrnProtocol crnProtocol = crnThread.getCrnProtocol();
                if (crnProtocol == null) {
                    crnProtocol = new CrnProtocol();
                }
                devopsMessage = new DevopsMessage();
                devopsMessage.setWrkNo(wrkMast.getWrkNo());
                if (working != null) {
                    //在工作,则判断是否未当前这条
                    if (working.getWrkNo().equals(wrkMast.getWrkNo())) {
                        devopsMessage.setError("该工作档正在出库,请稍后");
                        if (crnProtocol.getTaskNo().intValue() == working.getWrkNo()) {
                            devopsMessage.setError("该工作档正在执行,请稍后");
                        } else {
                            devopsMessage.setError("该工作档状态不对,与堆垛机的工作号不匹配");
                            devopsMessage.setMethod("结合任务情况进行操作;如果实际已完成,就将工作档完成;如果未完成,则调整工作档状态");
                        }
                    } else {
                        devopsMessage.setError(working.getWrkNo() + "号工作档正在出库,请稍后");
                        devopsMessage.setError(working.getWrkNo() + "号工作档正在执行,请稍后");
                    }
                    devopsMessages.add(devopsMessage);
                    continue;
                }
                DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
@@ -75,23 +82,21 @@
                List<ErrorType> staError = isStaError(staProtocol, wrkMast);
                for (ErrorType type : staError) {
                    if (!Cools.isEmpty(devopsMessage.getError())) {
                        devopsMessage.setError(devopsMessage.getError() + "\n" + type.getDesc());
                        devopsMessage.setMethod(devopsMessage.getMethod() + "\n" + type.getMethod());
                        devopsMessage.setError(devopsMessage.getError() + ";" + type.getDesc());
                        devopsMessage.setMethod(devopsMessage.getMethod() + ";" + type.getMethod());
                    } else {
                        devopsMessage.setError(type.getDesc()+ ";");
                        devopsMessage.setMethod(type.getMethod()+ ";" );
                        devopsMessage.setError(type.getDesc());
                        devopsMessage.setMethod(type.getMethod());
                    }
                }
                CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, wrkMast.getCrnNo());
                CrnProtocol crnProtocol = crnThread.getCrnProtocol();
                List<ErrorType> crnError = isCrnError(crnProtocol, wrkMast);
                for (ErrorType type : crnError) {
                    if (!Cools.isEmpty(devopsMessage.getError())) {
                        devopsMessage.setError(devopsMessage.getError() + "\n" + type.getDesc());
                        devopsMessage.setMethod(devopsMessage.getMethod() + "\n" + type.getMethod());
                        devopsMessage.setError(devopsMessage.getError() + ";" + type.getDesc());
                        devopsMessage.setMethod(devopsMessage.getMethod() + ";" + type.getMethod());
                    } else {
                        devopsMessage.setError(type.getDesc()+ ";");
                        devopsMessage.setMethod(type.getMethod()+ ";");
                        devopsMessage.setError(type.getDesc());
                        devopsMessage.setMethod(type.getMethod());
                    }
                }
                devopsMessages.add(devopsMessage);
@@ -174,32 +179,104 @@
    @PostMapping("/site/list")
    @ManagerAuth(memo = "站点信息表")
    public R siteTable() {
        List<SiteTableVo> list = new ArrayList<>();
        // 内存数据
        Map<Integer, StaProtocol> station = new HashMap<>();
        for (DevpSlave devp : slaveProperties.getDevp()) {
            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
            station.putAll(devpThread.getStation());
        }
        List<DevopsMessage> devopsMessages = new ArrayList<>();
        DevopsMessage devopsMessage;
        List<Integer> outSta = slaveProperties.getOutSta();
        List<Integer> inSta = slaveProperties.getInSta();
        // 持久数据
        List<BasDevp> basDevps = basDevpService.selectList(new EntityWrapper<BasDevp>().orderBy("dev_no"));
        for (BasDevp devp : basDevps) {
            StaProtocol staProtocol = station.get(devp.getDevNo());
            if (null == staProtocol) {
                continue;
        for (Integer out : outSta) {
            for (BasDevp devp : basDevps) {
                if (devp.getDevNo().equals(out)) {
                    devopsMessage = new DevopsMessage();
                    devopsMessage.setStaNo(out);
                    devopsMessage.setType("出库站点");
                    if (devp.getLoading().equalsIgnoreCase("Y")) {
                        devopsMessage.setError(ErrorType.YOUWU.getDesc());
                        devopsMessage.setMethod("请将物料挪走,才能出库");
                    } else {
                        List<ErrorType> crnError = isOutStaError(devp);
                        for (ErrorType type : crnError) {
                            if (!Cools.isEmpty(devopsMessage.getError())) {
                                devopsMessage.setError(devopsMessage.getError() + ";" + type.getDesc());
                                devopsMessage.setMethod(devopsMessage.getMethod() + ";" + type.getMethod());
                            } else {
                                devopsMessage.setError(type.getDesc());
                                devopsMessage.setMethod(type.getMethod());
                            }
                        }
                    }
                    devopsMessages.add(devopsMessage);
                }
            }
            SiteTableVo vo = new SiteTableVo();
            vo.setDevNo(devp.getDevNo());    // 站点编号
            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.setPakMk(staProtocol.isPakMk()?"Y":"N");       // 入库标记
            vo.setStaNo(staProtocol.getStaNo());                // 目标站
            vo.setEmptyMk(staProtocol.isEmptyMk()?"Y":"N");     // 空板信号
            list.add(vo);
        }
        return R.ok().add(list);
        for (Integer in : inSta) {
            for (BasDevp devp : basDevps) {
                if (devp.getDevNo().equals(in)) {
                    devopsMessage = new DevopsMessage();
                    devopsMessage.setStaNo(in);
                    devopsMessage.setType("入库站点");
                    if (devp.getLoading().equalsIgnoreCase("Y")) {
                        List<ErrorType> crnError = isInStaError(devp);
                        for (ErrorType type : crnError) {
                            if (!Cools.isEmpty(devopsMessage.getError())) {
                                devopsMessage.setError(devopsMessage.getError() + ";" + type.getDesc());
                                devopsMessage.setMethod(devopsMessage.getMethod() + ";" + type.getMethod());
                            } else {
                                devopsMessage.setError(type.getDesc());
                                devopsMessage.setMethod(type.getMethod());
                            }
                        }
                    } else {
                        devopsMessage.setError(ErrorType.WUWU.getDesc());
                        devopsMessage.setMethod(ErrorType.WUWU.getMethod());
                    }
                    devopsMessages.add(devopsMessage);
                }
            }
        }
        return R.ok().add(devopsMessages);
    }
    private List<ErrorType> isOutStaError(BasDevp devp) {
        List<ErrorType> types = new ArrayList<>();
        // 自动
        if (devp.getAutoing().equalsIgnoreCase("Y")) {
            types.add(ErrorType.FEIZIDONG);
        }
        // 有物
        if (devp.getLoading().equalsIgnoreCase("Y")) {
            types.add(ErrorType.YOUWU);
        } // 工作号是否为0
        if (devp.getWrkNo() != null) {
            types.add(ErrorType.GONGZUOHAO);
        }
        // 目标站点
        //TODO
//        if (devp.getStaNo() == null) {
//            types.add(ErrorType.STANO);
//        }
        return types;
    }
    private List<ErrorType> isInStaError(BasDevp devp) {
        List<ErrorType> types = new ArrayList<>();
        // 自动
        if (devp.getAutoing().equalsIgnoreCase("Y")) {
            types.add(ErrorType.FEIZIDONG);
        }
        // 工作号是否为0
        if (devp.getWrkNo() != null) {
            types.add(ErrorType.GONGZUOHAO);
        }
        // 目标站点
//        if (staProtocol.getStaNo() == null) {
//            types.add(ErrorType.STANO);
//        }
        return types;
    }
}
src/main/java/com/zy/asrs/domain/devops/DevopsMessage.java
@@ -7,6 +7,10 @@
@Data
public class DevopsMessage implements Serializable {
    private String type;
    private Integer staNo;
    private Integer wrkNo;
    private String error;
src/main/java/com/zy/asrs/domain/devops/ErrorType.java
@@ -4,7 +4,7 @@
 * 堆垛机状态枚举
 */
public enum ErrorType {
    ERROR(10000, "站点对象为空","联系技术人员"),
    ERROR(10000, "站点对象为空","未连接到plc"),
    WUWU(10001, "站点无物", "请检查托盘是否走到位"),
    YOUWU(10002, "站点有物", "请检查光电是否落灰"),
    STANO(10003, "目标站点存在站点号", "缺少目标站点"),
@@ -12,7 +12,7 @@
    GONGZUOHAO(10005, "目标站点存在工作号", "目标站点存在工作号,请检查"),
    WORKING(11001, "堆垛机工作中", "堆垛机工作中"),
    WORKING(11001, "堆垛机工作中", "堆垛机上存在工作号"),
    HOME(11002, "货叉不在原位", "请将货叉回中"),
    CRNGONGZUOHAO(11003, "堆垛机存在工作号", "堆垛机存在工作号,请检查该任务是否已经完成"),
    LOAD(11004, "堆垛机的载物台有物", "堆垛机的载物台有物,请检查光电"),
src/main/java/com/zy/asrs/domain/vo/SiteTableVo.java
@@ -19,6 +19,11 @@
    // 有物
    private String loading = "-";
    // 能入
    private String inCan = "-";
    // 能出
    private String outCan = "-";
    // 可入
    private String inEnable = "-";
@@ -26,6 +31,9 @@
    // 可出
    private String outEnable = "-";
    private String barcode ;
    // 需求1
    private String pakMk = "-";
src/main/java/com/zy/core/model/protocol/StaProtocol.java
@@ -54,6 +54,7 @@
    // 隔壁站点(台车位置)
    private String nearbySta;
    private String barcode;
    //lfd入库印记  当stamp>=2时才入库
    private Integer stamp = 0;
src/main/java/com/zy/core/properties/SlaveProperties.java
@@ -26,6 +26,10 @@
    private boolean doubleDeep;
    private List<Integer> inSta = new ArrayList<>();
    private List<Integer> outSta = new ArrayList<>();
    private List<Integer> doubleLocs = new ArrayList<>();
    private int groupCount;
src/main/resources/application.yml
@@ -8,7 +8,7 @@
    name: @pom.build.finalName@
  datasource:
    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
    url: jdbc:sqlserver://127.0.0.1:1433;databasename=devopsasrs
    url: jdbc:sqlserver://127.0.0.1:1433;databasename=ytflasrs
    username: sa
    password: sa@123
  mvc:
@@ -38,6 +38,8 @@
# 下位机配置
wcs-slave:
  inSta: 102,104
  outSta: 101,103
  # 双深
  doubleDeep: true
  # 双深库位排号
src/main/webapp/static/css/devops.css
New file
@@ -0,0 +1,167 @@
body {
    /*padding: 10px;*/
    background-color: #6CA7A8;
}
main {
    background-color: #fff;
    height: 96%;
    border-radius: 5px;
    box-shadow: 0 0 3px rgba(0,0,0,.3);
    margin-bottom: 8px;
}
.button-window {
    float: left;
    width: 100%;
    height: 100%;
    padding: 10px;
    border-radius: 5px;
    box-shadow: 0 0 3px rgba(0 0 0 .3);
}
.main-board {
    padding-left: 1%;
    float: left;
    width: 50%;
    height: 100%;
    overflow: auto;
}
.main-board:first-child {
    border-right: 1px solid #cad9ea;
}
/* 表格 */
.plc-log-header {
    height: 15%;
}
.plc-log-body {
    height: 100%;
    overflow: auto;
}
/* 入出库模式 */
.io-mode-oper {
    height: 100%;
    /*overflow: hidden;*/
    padding: 10px 20px;
}
.io-mode-oper fieldset {
    padding: 15px 0 10px 0;
    border-width: 1px;
    border-style: solid;
    height: 100%;
}
.io-mode-oper legend {
    text-align: center;
    padding: 0 10px;
    font-size: 16px;
    font-weight: 300;
}
/* 站点表格 */
#site-table {
    font-size: 12px;
    border-collapse: collapse;
    margin: 0 auto;
    text-align: center;
}
#site-table td, #site-table th {
    border: 1px solid #cad9ea;
    color: #666;
    height: 25px;
}
#site-table thead th {
    background-color: #CCE8EB;
}
#site-table tr:nth-child(odd) {
    background: #fff;
}
#site-table tr:nth-child(even) {
    background: #F5FAFA;
}
/* plc异常表格 */
#plc-error-table {
    font-size: 12px;
    border-collapse: collapse;
    margin: 0 auto;
}
#plc-error-table td, #plc-error-table th {
    border: 1px solid #cad9ea;
    color: #666;
    height: 25px;
    text-align: left;
    padding-left: 5px;
}
#plc-error-table thead th {
    background-color: #CCE8EB;
    width: 100px;
}
#plc-error-table td {
    color: red;
}
#plc-error-table tr:nth-child(odd) {
    background: #fff;
}
#plc-error-table tr:nth-child(even) {
    background: #F5FAFA;
}
/* 详情弹出层 */
#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;
}
src/main/webapp/views/devops.html
@@ -9,7 +9,7 @@
          content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <link rel="stylesheet" type="text/css" href="../static/css/normalize.css">
    <link rel="stylesheet" type="text/css" href="../static/css/common.css">
    <link rel="stylesheet" type="text/css" href="../static/css/pipeline.css">
    <link rel="stylesheet" type="text/css" href="../static/css/devops.css?v=3">
    <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>
    <script type="text/javascript" src="../static/js/layer/layer.js"></script>
@@ -57,7 +57,7 @@
            <div id="plc-error" class="main-board" style="padding-left: 10px">
                <div class="plc-log-body">
                    <div>
                        <span style="color: #1E9FFF">出库工作档:</span>
                        <span style="color: #1E9FFF">工作档:</span>
                    </div>
                    <table id="plc-error-table">
                        <thead>
@@ -77,24 +77,18 @@
            <!-- 站点状态数据监控版 -->
            <div id="site-monitor" class="main-board">
                <div>
                    <span style="color: #1E9FFF">无法入库原因判断:</span>
                    <span style="color: #1E9FFF">无法出入库原因判断:</span>
                </div>
                <!-- 表格 -->
                <!--固定表头 table 加table-layout: fixed;  th 加 position:sticky;top: 0;-->
                <table id="site-table" style="table-layout: fixed;">
                <table id="site-table" >
                    <!-- 表头 -->
                    <thead style="position:sticky;top: 0;">
                    <tr>
                        <th>站号</th>
                        <th>工作号</th>
                        <th>自动</th>
                        <th>有物</th>
                        <th>可入</th>
                        <th>可出</th>
                        <th>入库标记</th>
                        <th>目标站</th>
                        <th>信息</th>
                        <th>高低库位</th>
                        <th style="width: 180px">类型</th>
                        <th style="width: 150px">站号</th>
                        <th style="width: 400px">不符合的条件</th>
                        <th style="width: 300px">解决</th>
                    </tr>
                    </thead>
                    <!-- 表格内容 -->
@@ -102,45 +96,9 @@
                </table>
            </div>
        </main>
        <footer>
            <textarea id="output"></textarea>
        </footer>
        <div id="site-detl" style="display: none">
            <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="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="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="form-item">
                    <label class="form-label">入库标记:</label>
                    <div class="form-input">
                        <input id="pakMk" name="pakMk" type="text" class="layui-input" autocomplete="off">
                    </div>
                </div>
                <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>
            </form>
        </div>
    </div>
</div>
@@ -154,7 +112,7 @@
    // 实际行数
    var plcErrorTableFullRows = 0;
    var siteTableFullRows = 0;
    var outputDom = document.getElementById("output");
    //var outputDom = document.getElementById("output");
    $(document).ready(function () {
        initPlcErrorTable();
        getPlcError();
@@ -167,7 +125,7 @@
        starGetSite();
    }, 1000);
    setInterval(function () {
        getSiteOutput();
        //getSiteOutput();
    }, 500);
    function starGetSite() {
@@ -221,16 +179,11 @@
                    }
                    for (var i = 1; i <= table.length; i++) {
                        var tr = tableEl.find("tr").eq(i);
                        setVal(tr.children("td").eq(0), table[i - 1].devNo);
                        setVal(tr.children("td").eq(1), table[i - 1].workNo);
                        setVal(tr.children("td").eq(2), table[i - 1].autoing);
                        setVal(tr.children("td").eq(3), table[i - 1].loading);
                        setVal(tr.children("td").eq(4), table[i - 1].inEnable);
                        setVal(tr.children("td").eq(5), table[i - 1].outEnable);
                        setVal(tr.children("td").eq(6), table[i - 1].pakMk);
                        setVal(tr.children("td").eq(7), table[i - 1].staNo);
                        setVal(tr.children("td").eq(8), table[i - 1].emptyMk);
                        setVal(tr.children("td").eq(9), table[i - 1].locType1);
                        tr.children("td").eq(0).html(table[i - 1].type);
                        tr.children("td").eq(1).html(table[i - 1].staNo);
                        tr.children("td").eq(2).html(table[i - 1].error);
                        tr.children("td").eq(3).html(table[i - 1].method);
                    }
                } else if (res.code === 403) {
                    window.location.href = baseUrl + "/login";
@@ -239,30 +192,6 @@
                }
            }
        });
    }
    // 输送设备日志输出
    function getSiteOutput() {
        $.ajax({
            url: baseUrl + "/site/output/site",
            headers: {'token': localStorage.getItem('token')},
            method: 'POST',
            success: function (res) {
                if (res.code === 200) {
                    output(res.data);
                } else if (res.code === 403) {
                    window.location.href = baseUrl + "/login";
                } else {
                    alert(res.msg);
                }
            }
        })
    }
    // 日志输出框
    function output(content) {
        outputDom.value += content;
        outputDom.scrollTop = outputDom.scrollHeight;
    }
    // ------------------------------------------------------------------------------------------------
@@ -311,70 +240,12 @@
                "       <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";
        }
        $('#site-table tbody').after(html);
    }
    // 详情操作 -------------------------------------------------------------------------
    var layerDetl;
    $(document).on('dblclick ', '#site-table tr', function () {
        stop = true
        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', '255px'],
                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);
                        $('#pakMk').val(res.data.pakMk);
                    })
                },
                end: function () {
                    $('#siteId').val("");
                    $('#workNo').val("");
                    $('#staNo').val("");
                    $('#pakMk').val("");
                    stop = false
                }
            })
        }
    });
    $(document).on('click ', '#save', function () {
        http.post(baseUrl + "/site/detl/update", {
            siteId: $('#siteId').val(),
            workNo: $('#workNo').val(),
            staNo: $('#staNo').val(),
            pakMk: $('#pakMk').val()
        }, function (res) {
            layer.msg("修改成功", {icon: 1,});
        })
    })
    $(document).on('click ', '#cancel', function () {
        $('#siteId').val("");
        $('#workNo').val("");
        $('#staNo').val("");
        $('#pakMk').val("");
        layer.close(layerDetl);
    })
</script>
</html>
src/main/webapp/views/index.html
@@ -24,7 +24,7 @@
            <li><a id="console" onclick="nav(this.id)" class="nav-select" href="#">主控图</a></li>
            <li><a id="pipeline" onclick="nav(this.id)" class="nav-unselect" href="#">输送设备</a></li>
            <li><a id="crn" onclick="nav(this.id)" class="nav-unselect" href="#">堆垛机</a></li>
            <li><a id="devops" onclick="nav(this.id)" class="nav-unselect" href="#">监控</a></li>
            <li><a id="devops" onclick="nav(this.id)" class="nav-unselect" href="#">执行检测</a></li>
        </ul>
    </div>
</div>