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"> <!-- 头部 -->