#
luxiaotao1123
2022-02-21 35ae54320befb54df4dd7e8b2cf81680c951720b
#
18个文件已修改
399 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/CrnController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/LocDetl.java 63 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/WrkDetl.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/utils/VersionUtils.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/MelsecCrnThread.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/SiemensDevpThread.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/LocDetlMapper.xml 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/WrkDetlMapper.xml 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/css/console.css 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/css/crn.css 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/css/index.css 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/css/pipeline.css 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/crn.html 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/index.html 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/pipeline.html 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/CrnController.java
@@ -420,6 +420,7 @@
                crnCommand.setCrnNo(crn.getId()); // 堆垛机编号
                crnCommand.setTaskMode(CrnTaskModeType.CLEAR);
                crnCommand.setAckFinish((short) 0);  // 任务完成确认位
                crnCommand.setCommand((short) 0);  // 任务完成确认位
                // 延时发送
                Thread.sleep(1000L);
                if (MessageQueue.offer(SlaveType.Crn, crn.getId(), new Task(2, crnCommand))) {
src/main/java/com/zy/asrs/entity/LocDetl.java
@@ -22,46 +22,53 @@
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value= "库位号")
    @TableId(value = "loc_no", type = IdType.INPUT)
    @TableField("loc_no")
    private String locNo;
    @ApiModelProperty(value= "商品编号")
    @TableId(value = "matnr", type = IdType.INPUT)
    private String matnr;
    @ApiModelProperty(value= "产品编码")
    @TableId(value = "mat_no", type = IdType.INPUT)
    @TableField("mat_no")
    private String matNo;
    @ApiModelProperty(value= "商品名称")
    private String maktx;
    @ApiModelProperty(value= "产品名称")
    @TableId(value = "mat_name")
    @TableField("mat_name")
    private String matName;
    @ApiModelProperty(value= "规格")
    private String lgnum;
    private String specs;
    @ApiModelProperty(value= "型号")
    private String type;
    @ApiModelProperty(value= "尺寸")
    private String size;
    @ApiModelProperty(value= "条码")
    @ApiModelProperty(value= "颜色")
    private String color;
    @ApiModelProperty(value= "批号")
    @ApiModelProperty(value= "单重")
    private Double weight;
    @ApiModelProperty(value= "供应商")
    private String supplier;
    @ApiModelProperty(value= "单据编号")
    @ApiModelProperty(value= "仓库")
    private String warehouse;
    @ApiModelProperty(value= "品项数")
    @ApiModelProperty(value= "品牌")
    private String brand;
    @ApiModelProperty(value= "数量")
    private Double anfme;
    private Double qty;
    @ApiModelProperty(value= "单位")
    private String altme;
    private String unit;
    @ApiModelProperty(value= "托盘条码")
    private String zpallet;
    @ApiModelProperty(value= "客户名称")
    @ApiModelProperty(value= "用户ID")
    private String bname;
    @ApiModelProperty(value= "备注")
@@ -82,6 +89,31 @@
    @ApiModelProperty(value= "添加时间")
    @TableField("appe_time")
    private Date appeTime;
    @TableField("bill_no")
    private String billNo;
    @TableField("seq_no")
    private int seqNo;
    @TableField("bill_type")
    private int billType;
    @TableField("object_id")
    private String objectId;
    @TableField("object_name")
    private String objectName;
    @TableField("det_id")
    private int detId;
    @TableId(value = "Item_batch", type = IdType.INPUT)
    @TableField("Item_batch")
    private String itemBatch;
    @TableField("order_no")
    private String orderNo;
    public String getLocNo$(){
        LocMastService service = SpringUtils.getBean(LocMastService.class);
@@ -124,5 +156,4 @@
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
    }
}
src/main/java/com/zy/asrs/entity/WrkDetl.java
@@ -1,19 +1,24 @@
package com.zy.asrs.entity;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.core.common.Cools;
import com.core.common.SpringUtils;
import com.zy.system.entity.User;
import com.zy.system.service.UserService;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("asr_wrk_detl")
public class WrkDetl implements Serializable {
@@ -33,65 +38,59 @@
    @TableField("io_time")
    private Date ioTime;
    /**
     * 物料
     */
    @ApiModelProperty(value= "商品编号")
    private String matnr;
    @ApiModelProperty(value= "产品编码")
    @TableId(value = "mat_no")
    @TableField("mat_no")
    private String matNo;
    /**
     * 物料描述
     */
    @ApiModelProperty(value= "商品名称")
    private String maktx;
    @ApiModelProperty(value= "产品名称")
    @TableId(value = "mat_name")
    @TableField("mat_name")
    private String matName;
    /**
     * 仓库号
     */
    @ApiModelProperty(value= "规格")
    private String lgnum;
    private String specs;
    /**
     * 仓库号
     */
    @ApiModelProperty(value= "型号")
    private String type;
    @ApiModelProperty(value= "尺寸")
    private String size;
    /**
     * 条码
     */
    @ApiModelProperty(value= "条码")
    @ApiModelProperty(value= "颜色")
    private String color;
    /**
     * 批号
     */
    @ApiModelProperty(value= "批号")
    private String supplier;
    @ApiModelProperty(value= "单重")
    private Double weight;
    /**
     * 单据编号
     */
    @ApiModelProperty(value= "单据编号")
    private String warehouse;
    @TableField("bill_no")
    private String billNo;
    /**
     * 品项数
     * 序号
     */
    @ApiModelProperty(value= "品项数")
    @ApiModelProperty(value= "序号")
    @TableField("seq_no")
    private Integer seqNo;
    /**
     * 仓库号
     */
    @ApiModelProperty(value= "品牌")
    private String brand;
    /**
     * 数量
     */
    @ApiModelProperty(value= "数量")
    private Double anfme;
    private Double qty;
    /**
     * 单位
     */
    @ApiModelProperty(value= "单位")
    private String altme;
    private String unit;
    /**
     * 托盘条码
@@ -100,9 +99,9 @@
    private String zpallet;
    /**
     * 客户名称
     * 用户ID
     */
    @ApiModelProperty(value= "客户名称")
    @ApiModelProperty(value= "用户ID")
    private String bname;
    /**
@@ -139,6 +138,16 @@
    @TableField("appe_time")
    private Date appeTime;
    @ApiModelProperty(value= "库位号")
    @TableField(exist = false)
    private String locNo;
    @TableField("Item_batch")
    private String itemBatch;
    @TableField("order_no")
    private String orderNo;
    public String getIoTime$(){
        if (Cools.isEmpty(this.ioTime)){
            return "";
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -111,6 +111,8 @@
                    if("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
                        continue;
                    }
                } else {
                    continue;
                }
                // 获取入库站信息
@@ -662,7 +664,7 @@
                            wrkMast.setUpdMk("Y");
                            wrkMastMapper.updateById(wrkMast);
                            // 生成工作档、改变浅库位的源库/目标库 库位状态、下发堆垛机命令(立马执行)
//                            moveLocForDeepLoc(slave, shallowLoc);
                            moveLocForDeepLoc(slave, shallowLoc);
                        }
                        log.error("{}任务出库失败,浅库位堵塞!", wrkMast.getWrkNo());
                        continue;
@@ -1098,7 +1100,7 @@
                ledCommand.setStaNo(wrkMast.getStaNo());
                if (wrkMast.getIoType() != 110) {
                    List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
                    wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme())));
                    wrkDetls.forEach(wrkDetl -> ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatNo(), wrkDetl.getMatName(), wrkDetl.getQty())));
                }
                commands.add(ledCommand);
            }
@@ -1228,7 +1230,7 @@
                WrkDetl wrkDetl = new WrkDetl();
                wrkDetl.setWrkNo(workNo);
                wrkDetl.setIoTime(new Date());
                wrkDetl.setAnfme(locDetl.getAnfme());
                wrkDetl.setQty(locDetl.getQty());
                VersionUtils.setWrkDetl(wrkDetl, locDetl); // 版本控制
                wrkDetl.setAppeTime(new Date());
                wrkDetl.setModiTime(new Date());
src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java
@@ -38,7 +38,6 @@
            WrkDetl wrkDetl = new WrkDetl();
            wrkDetl.setWrkNo(workNo);
            wrkDetl.setIoTime(new Date());
            wrkDetl.setAnfme(waitPakin.getAnfme()); // 数量
            VersionUtils.setWrkDetl(wrkDetl, matCode); // 版本控制
            wrkDetl.setZpallet(barcode); // 托盘条码
            wrkDetl.setAppeTime(new Date());
src/main/java/com/zy/asrs/utils/VersionUtils.java
@@ -15,56 +15,50 @@
    // 业务 ----------------------------------------------------------------------
    public static void setWrkDetl(WrkDetl wrkDetl, MatCode matCode) {
        wrkDetl.setMatnr(matCode.getMatNo()); // 物料编号
        wrkDetl.setMaktx(matCode.getMatName()); // 物料描述
        wrkDetl.setLgnum(matCode.getStr2()); // 规格
        wrkDetl.setType(matCode.getStr5()); // 型号
        wrkDetl.setColor(matCode.getBarcode()); // 条码
        wrkDetl.setSupplier(matCode.getStr6()); // 批号
        wrkDetl.setWarehouse(matCode.getStr7()); // 单据编号
        wrkDetl.setBrand(matCode.getStr3()); // 品项数
        wrkDetl.setAltme(matCode.getStr1()); // 单位
        wrkDetl.setBname(matCode.getStr4()); // 客户名称
//        wrkDetl.setMatNo(matCode.getMatNo()); // 物料编号
//        wrkDetl.setMatName(matCode.getMatName()); // 物料描述
//        wrkDetl.setLgnum(matCode.getStr2()); // 规格
//        wrkDetl.setType(matCode.getStr5()); // 型号
//        wrkDetl.setColor(matCode.getBarcode()); // 条码
//        wrkDetl.setSupplier(matCode.getStr6()); // 批号
//        wrkDetl.setWarehouse(matCode.getStr7()); // 单据编号
//        wrkDetl.setBrand(matCode.getStr3()); // 品项数
//        wrkDetl.setAltme(matCode.getStr1()); // 单位
//        wrkDetl.setBname(matCode.getStr4()); // 客户名称
    }
    public static void setWrkDetl(WrkDetl wrkDetl, LocDetl locDetl) {
        wrkDetl.setMatnr(locDetl.getMatnr()); // 物料编号
        wrkDetl.setMaktx(locDetl.getMaktx()); // 物料描述
        wrkDetl.setLgnum(locDetl.getLgnum()); // 规格
        wrkDetl.setType(locDetl.getType()); // 型号
        wrkDetl.setColor(locDetl.getColor()); // 条码
        wrkDetl.setSupplier(locDetl.getSupplier()); // 批号
        wrkDetl.setWarehouse(locDetl.getWarehouse()); // 单据编号
        wrkDetl.setBrand(locDetl.getBrand()); // 品项数
        wrkDetl.setAltme(locDetl.getAltme()); // 单位
        wrkDetl.setBname(locDetl.getBname()); // 客户名称
        wrkDetl.setMatNo(locDetl.getMatNo()); // 产品编号
        wrkDetl.setMatName(locDetl.getMatName()); // 产品描述
        wrkDetl.setSpecs(locDetl.getSpecs()); // 规格
        wrkDetl.setUnit(locDetl.getUnit()); // 单位
        wrkDetl.setSize(locDetl.getSize()); // 尺寸
        wrkDetl.setColor(locDetl.getColor()); // 颜色
        wrkDetl.setWeight(locDetl.getWeight()); // 单重
        wrkDetl.setZpallet(locDetl.getZpallet()); // 托盘条码
    }
    public static void setLocDetl(LocDetl locDetl, MatCode matCode) {
        locDetl.setMatnr(matCode.getMatNo()); // 物料编号
        locDetl.setMaktx(matCode.getMatName()); // 物料描述
        locDetl.setLgnum(matCode.getStr2()); // 规格
        locDetl.setType(matCode.getStr5()); // 型号
        locDetl.setColor(matCode.getBarcode()); // 条码
        locDetl.setSupplier(matCode.getStr6()); // 批号
        locDetl.setWarehouse(matCode.getStr7()); // 单据编号
        locDetl.setBrand(matCode.getStr3()); // 品项数
        locDetl.setAltme(matCode.getStr1()); // 单位
        locDetl.setBname(matCode.getStr4()); // 客户名称
//        locDetl.setMatNo(matCode.getMatNo()); // 物料编号
//        locDetl.setMatName(matCode.getMatName()); // 物料描述
//        locDetl.setLgnum(matCode.getStr2()); // 规格
//        locDetl.setType(matCode.getStr5()); // 型号
//        locDetl.setColor(matCode.getBarcode()); // 条码
//        locDetl.setSupplier(matCode.getStr6()); // 批号
//        locDetl.setWarehouse(matCode.getStr7()); // 单据编号
//        locDetl.setBrand(matCode.getStr3()); // 品项数
//        locDetl.setAltme(matCode.getStr1()); // 单位
//        locDetl.setBname(matCode.getStr4()); // 客户名称
    }
    public static void setLocDetl(LocDetl locDetl, WrkDetl wrkDetl) {
        locDetl.setMatnr(wrkDetl.getMatnr()); // 物料编号
        locDetl.setMaktx(wrkDetl.getMaktx()); // 物料描述
        locDetl.setLgnum(wrkDetl.getLgnum()); // 规格
        locDetl.setType(wrkDetl.getType()); // 型号
        locDetl.setColor(wrkDetl.getColor()); // 条码
        locDetl.setSupplier(wrkDetl.getSupplier()); // 批号
        locDetl.setWarehouse(wrkDetl.getWarehouse()); // 单据编号
        locDetl.setBrand(wrkDetl.getBrand()); // 品项数
        locDetl.setAltme(wrkDetl.getAltme()); // 单位
        locDetl.setBname(wrkDetl.getBname()); // 客户名称
        locDetl.setMatNo(wrkDetl.getMatNo()); // 产品编号
        locDetl.setMatName(wrkDetl.getMatName()); // 产品描述
        locDetl.setSpecs(wrkDetl.getSpecs()); // 规格
        locDetl.setUnit(wrkDetl.getUnit()); // 单位
        locDetl.setSize(wrkDetl.getSize()); // 尺寸
        locDetl.setColor(wrkDetl.getColor()); // 颜色
        locDetl.setQty(wrkDetl.getQty()); // 数量
        locDetl.setZpallet(wrkDetl.getZpallet()); // 托盘条码
    }
@@ -73,19 +67,16 @@
     **/
    public static void locMoveCheckLocType(LocMast sourceLoc, LocMast loc){
        // 如果源库位是高库位,目标库位是低库位
        if (sourceLoc.getLocType1() == 2 && loc.getLocType1() == 1) {
            throw new CoolException("高库位不能移转至低库位");
        }
//        if (sourceLoc.getLocType1() == 2 && loc.getLocType1() == 1) {
//            throw new CoolException("高库位不能移转至低库位");
//        }
    }
    /**
     *  库位移转时类型检测
     **/
    public static boolean locMoveCheckLocType(LocMast loc, LocTypeDto dto){
        // 如果源库位是高库位,目标库位是低库位
        if (dto.getLocType1() == 2 && loc.getLocType1() == 1) {
            return false;
        }
        return true;
    }
src/main/java/com/zy/core/thread/MelsecCrnThread.java
@@ -24,6 +24,7 @@
import com.zy.core.model.protocol.CrnProtocol;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import java.text.MessageFormat;
import java.util.Date;
@@ -50,6 +51,11 @@
    @SuppressWarnings("InfiniteLoopStatement")
    public void run() {
        this.connect();
//        try {
//            Thread.sleep(2000);
//        } catch (InterruptedException e) {
//            e.printStackTrace();
//        }
        while (true) {
            try {
                int step = 1;
@@ -137,7 +143,7 @@
            log.error("堆垛机plc连接失败!!! ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
            initCrn();
        }
        melsecMcNet.ConnectClose();
//        melsecMcNet.ConnectClose();
        return result;
    }
@@ -146,9 +152,11 @@
     */
    private void readStatus(){
        try {
            if (this.slave.getId() == 1) {
                System.out.println("===");
            }
//            if (this.slave.getId() == 1 && flag1.equals(0)) {
//                Thread.sleep(3000);
//                flag1=1;
//                System.out.println("===");
//            }
            OperateResultExOne<byte[]> result = melsecMcNet.Read("D20", (short) 70);
            if (result.IsSuccess) {
                if (null == crnProtocol) {
@@ -190,6 +198,7 @@
                    }
                }
                // 根据实时信息更新数据库
                BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class);
                BasCrnp basCrnp = new BasCrnp();
src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -123,7 +123,7 @@
                staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*2));     // 工作号
            }
        }
        Thread.sleep(50);
        Thread.sleep(200);
        OperateResultExOne<byte[]> result0 = siemensS7Net.Read("DB101.0", (short) 166);
        if (result0.IsSuccess) {
            for (int i = 0; i < 83; i++) {
@@ -137,7 +137,7 @@
                staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result0.Content, i*2));   // 目标站
            }
        }
        Thread.sleep(50);
        Thread.sleep(200);
        OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB102.0", (short) 166);
        if (result1.IsSuccess) {
            for (int i = 0; i < 83; i++) {
@@ -181,7 +181,7 @@
        } else {
            OutputQueue.DEVP.offer(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()));
            log.error("读取输送线plc状态信息失败 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
//            log.error("读取输送线plc状态信息失败 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
        }
    }
src/main/resources/application.yml
@@ -11,7 +11,7 @@
#    url: jdbc:sqlserver://47.97.1.152:51433;databasename=xgmasrs
#    username: sa
#    password: Zoneyung@zy56$
    url: jdbc:sqlserver://localhost:1433;databasename=xgmasrs
    url: jdbc:sqlserver://10.10.10.238:1433;databasename=xgmasrs
    username: sa
    password: sa@123
  mvc:
@@ -37,7 +37,8 @@
  enable: false
wms:
  url: localhost:8080/xgmwms
  # url: 10.10.10.238:8080/xgmwms
  url: localhost:8082/xgmwms
# 下位机配置
wcs-slave:
@@ -188,31 +189,14 @@
  # LED1
  led[0]:
    id: 1
    ip: 192.168.10.211
    ip: 10.10.10.60
    port: 5005
    devpPlcId: ${wcs-slave.devp[0].id}
    staArr: 170
    staArr: 173
  # LED2
  led[1]:
    id: 2
    ip: 192.168.10.221
    ip: 10.10.10.61
    port: 5005
    devpPlcId: ${wcs-slave.devp[0].id}
    staArr: 180
    staArr: 182
src/main/resources/mapper/LocDetlMapper.xml
@@ -5,16 +5,17 @@
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.LocDetl">
        <result column="loc_no" property="locNo" />
        <result column="matnr" property="matnr" />
        <result column="maktx" property="maktx" />
        <result column="lgnum" property="lgnum" />
        <result column="type" property="type" />
        <result column="mat_no" property="matNo" />
        <result column="mat_name" property="matName" />
        <result column="specs" property="specs" />
        <result column="size" property="size" />
        <result column="color" property="color" />
        <result column="weight" property="weight" />
        <result column="supplier" property="supplier" />
        <result column="warehouse" property="warehouse" />
        <result column="brand" property="brand" />
        <result column="anfme" property="anfme" />
        <result column="altme" property="altme" />
        <result column="qty" property="qty" />
        <result column="unit" property="unit" />
        <result column="zpallet" property="zpallet" />
        <result column="bname" property="bname" />
        <result column="memo" property="memo" />
@@ -28,11 +29,11 @@
        <if test="loc_no!=null and loc_no!='' ">
            and a.loc_no like '%' + #{loc_no} + '%'
        </if>
        <if test="matnr!=null and matnr!='' ">
            and a.matnr like '%' + #{matnr} + '%'
        <if test="matNo!=null and matNo!='' ">
            and a.mat_no like '%' + #{matNo} + '%'
        </if>
        <if test="maktx!=null and maktx!='' ">
            and a.maktx like '%' + #{maktx} + '%'
        <if test="matName!=null and matName!='' ">
            and a.mat_name like '%' + #{matName} + '%'
        </if>
        <if test="anfme!=null and anfme!='' ">
            and a.anfme like '%' + #{anfme} + '%'
src/main/resources/mapper/WrkDetlMapper.xml
@@ -6,16 +6,17 @@
    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.WrkDetl">
        <result column="wrk_no" property="wrkNo" />
        <result column="io_time" property="ioTime" />
        <result column="matnr" property="matnr" />
        <result column="maktx" property="maktx" />
        <result column="lgnum" property="lgnum" />
        <result column="type" property="type" />
        <result column="mat_no" property="matNo" />
        <result column="mat_name" property="matName" />
        <result column="specs" property="specs" />
        <result column="size" property="size" />
        <result column="color" property="color" />
        <result column="supplier" property="supplier" />
        <result column="warehouse" property="warehouse" />
        <result column="weight" property="weight" />
        <result column="bill_no" property="billNo" />
        <result column="seq_no" property="seqNo" />
        <result column="brand" property="brand" />
        <result column="anfme" property="anfme" />
        <result column="altme" property="altme" />
        <result column="qty" property="qty" />
        <result column="unit" property="unit" />
        <result column="zpallet" property="zpallet" />
        <result column="bname" property="bname" />
        <result column="memo" property="memo" />
src/main/webapp/static/css/console.css
@@ -220,26 +220,22 @@
        }
        /* 自动+有物+ID */
        .site-auto-run-id {
            padding: 0 25px;
            background-color: rgb(252,48,48);
        }
        /* 自动+有物 */
        .site-auto-run {
            padding: 0 25px;
            background-color: rgb(250,81,246);
        }
        /* 自动+ID */
        .site-auto-id {
            padding: 0 10px;
            background-color: rgb(196,196,0);
        }
/* 自动 */
        .site-auto {
            padding: 0 10px;
            background-color: rgb(120,255,129);
        }
        /* 非自动/手动 */
        .site-unauto {
            padding: 0 10px;
            background-color: rgb(184,184,184);
        }
        #code {
@@ -258,6 +254,10 @@
            background-color: rgb(120,255,129);
            font-size: 13px;
        }
.site-k {
    border: 1px solid rgb(108,167,168);
    background-color: rgb(108, 167, 168);
}
        /*空站点*/
        /* ------------------ 输送线总成 ------------------ */
        .site-row {
@@ -267,45 +267,46 @@
        /* 输送线第一列 */
        .site-row-1 {
            top: 205px;
            left: 172px;
    left: 128px;
        }
        .site-row-1 .site {
            width: 70px;
    width: 90px;
        }
        
        /* 输送线第二列 */
        .site-row-2 {
            top: 205px;
            left: 243px;
    left: 230px;
        }
        .site-row-2 .site {
            width: 70px;
    width: 90px;
        }    
        .site-row-3 {
            top: 246px;
            left: 314px;
    top: 205px;
    left: 302px;
    width: 144px;
        }
        .site-row-3 .site {
            width: 70px;
    width: 90px;
        }
        .site-row-4 {
            top: 205px;
            left: 314px;
    top: 246px;
    left: 374px;
        }
        
        .site-row-5 {
            top: 71px;
            left: 456px;
    left: 446px;
        }
        .site-row-5 .site {
            width: 70px;
    width: 90px;
        }
        .site-row-6 {
            top: 71px;
            left: 528px;
    left: 518px;
        }
        .site-row-6 .site {
            width: 70px;
    width: 90px;
        }
        
        
@@ -313,7 +314,7 @@
        .main-part {
            position: absolute;
            top: 20px;
            left: 600px;
    left: 590px;
        }
        .main-part .lane {
            margin-top: 30px;
src/main/webapp/static/css/crn.css
@@ -2,7 +2,11 @@
    padding: 10px;
    background-color: #f1f1f1;
}
.button-window {
    float: left;
    width: 5%;
    height: 100%;
}
/* -------------------- 第一模块 -------------------- */
.log-board {
    background-color: #fff;
@@ -15,7 +19,7 @@
.command-log {
    float: left;
    height: 100%;
    width: 20%;
    width: 19%;
    text-align: center;
}
.command-log h2 {
@@ -47,7 +51,7 @@
.crn-state {
    float: left;
    height: 100%;
    width: 80%;
    width: 76%;
    overflow: auto;
}
/* 堆垛机状态表 */
@@ -75,7 +79,7 @@
/* -------------------- 第二模块 -------------------- */
.crn-msg {
    overflow: auto;
    /*overflow: auto;*/
    margin-top: 10px;
    height: 23%;
    background-color: #fff;
src/main/webapp/static/css/index.css
@@ -37,15 +37,17 @@
    top: 50%;
    transform: translateY(-50%);
    
}
.sidebar ul {
    font-size: 20px;
    font-weight: 500;
    font-weight: 700;
    padding-left: 15%;
}
.sidebar a {
    text-decoration: none;
    /* color: #fff; */
    /*color: #cbcbcb;*/
}
.sidebar a:hover {
@@ -55,7 +57,7 @@
.nav-unselect {
    color: #fff;
    color: #5D7677;
}
.nav-select {    
    color: rgb(87,214,201);
src/main/webapp/static/css/pipeline.css
@@ -9,9 +9,15 @@
    box-shadow: 0 0 3px rgba(0,0,0,.3);
    margin-bottom: 8px;
}
.main-board {
.button-window {
    float: left;
    width: 50%;
    width: 5%;
    height: 100%;
}
.main-board {
    padding-left: 1%;
    float: left;
    width: 47.5%;
    height: 100%;
    overflow: auto;
}
src/main/webapp/views/crn.html
@@ -41,6 +41,7 @@
    </style>
</head>
<body>
<div class="button-window"></div>
<!-- 日志监控板 -->
<div class="log-board">
    <!-- 执行命令 -->
src/main/webapp/views/index.html
src/main/webapp/views/pipeline.html
@@ -18,6 +18,7 @@
</head>
<body>
<main>
    <div class="button-window"></div>
    <!-- plc异常日志监控版 -->
    <div id="plc-error" class="main-board" style="padding-left: 10px">
        <!-- 头部 -->