src/main/java/com/zy/asrs/controller/MonitorController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/MainProcess.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/thread/LedThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/thread/SiemensDevpThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/application-prod.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/static/wcs/js/console.map.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/MonitorController.java
@@ -12,7 +12,9 @@ import com.zy.core.CrnThread; import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.SlaveType; import com.zy.core.model.LedSlave; import com.zy.core.model.protocol.CrnProtocol; import com.zy.core.properties.SlaveProperties; import com.zy.core.thread.LedThread; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -34,6 +36,8 @@ @Autowired private ReportQueryMapper reportQueryMapper; @Autowired private SlaveProperties slaveProperties; /** * 获取当前时间 @@ -232,50 +236,6 @@ .add("usedPr", usedPr) ); } /** * 自动补零 */ @@ -347,8 +307,20 @@ } } /** * 异常通知 */ @GetMapping("/led/error") public R monitorLedError(@RequestParam("ledId") Integer ledId) { String errorMsg = ""; for (LedSlave slave : slaveProperties.getLed()) { if (slave.getStaArr().contains(ledId)) { LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, slave.getId()); if (null != ledThread) { errorMsg = ledThread.getErrorMsg().toString(); } } } return R.ok().add(errorMsg); } } src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -29,6 +29,7 @@ import com.zy.core.enums.*; import com.zy.core.model.CrnSlave; import com.zy.core.model.DevpSlave; import com.zy.core.model.LedSlave; import com.zy.core.model.Task; import com.zy.core.model.command.CommandPackage; import com.zy.core.model.command.CrnCommand; @@ -36,6 +37,7 @@ import com.zy.core.model.protocol.StaProtocol; import com.zy.core.properties.SlaveProperties; import com.zy.core.thread.BarcodeThread; import com.zy.core.thread.LedThread; import com.zy.core.thread.SiemensDevpThread; import com.zy.system.entity.Config; import com.zy.system.service.ConfigService; @@ -343,10 +345,9 @@ && staProtocol.isPakMk()) { // 获取条码扫描仪信息 BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode()); if (barcodeThread == null) { continue; } String BoxNo = barcodeThread.getBarcode(); String BoxNo = ""; if (barcodeThread != null) { BoxNo = barcodeThread.getBarcode(); TaskWrk taskWrk1 = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("barcode", BoxNo)); if (!Cools.isEmpty(taskWrk1)) { log.info("托盘码:" + BoxNo + "任务档存在"); @@ -364,6 +365,9 @@ storageEscalationParam.setWCSStatus(1); storageEscalationParam.setWCSErrorMessage(storageEscalationParam.getWCSErrorMessage() + errMsg); } } storageEscalationParam.setBoxNo(BoxNo); //是否满板 1满板 0空板 storageEscalationParam.setStaType(staProtocol.isEmptyMk() ? 0 : 1); @@ -504,13 +508,19 @@ && staProtocol.isPakMk()) { // 获取条码扫描仪信息 String BoxNo = ""; //站点拣料回库任务是会有一条 TaskWrk taskWrkk =taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("start_point",staProtocol.getSiteId())); if (!Cools.isEmpty(taskWrkk)) { continue; } if(!staProtocol.isEmptyMk()&&staProtocol.getWorkNo()<9990){ TaskWrk taskWrk1 = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("task_no", workNo)); TaskWrk taskWrk1 = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("wrk_no", workNo)); if (!Cools.isEmpty(taskWrk1)) { BoxNo = taskWrk1.getBarcode(); } else { TaskWrkLog taskWrkLog = taskWrkLogService.selectOne(new EntityWrapper<TaskWrkLog>().eq("task_no", workNo).orderBy("modi_time", false)); TaskWrkLog taskWrkLog = taskWrkLogService.selectOne(new EntityWrapper<TaskWrkLog>().eq("wrk_no", workNo).orderBy("modi_time", false)); if (taskWrkLog != null) { BoxNo = taskWrkLog.getBarcode(); } @@ -536,6 +546,7 @@ if (!Cools.isEmpty(response) && !Cools.isEmpty(jsonObject.get("ReturnStatus")) && jsonObject.get("ReturnStatus").equals(0) && !Cools.isEmpty(jsonObject.get("Result").toString())) { Result result = JSON.parseObject(jsonObject.get("Result").toString(), Result.class); // 创新一个入库工作档 TaskWrk taskWrk = taskWrkService.selectByTaskNo(result.getTaskNo()); if (Cools.isEmpty(taskWrk)) { @@ -932,7 +943,7 @@ staProtocol.setStaNo(staDesc.getStnNo().shortValue()); boolean offer = false; try { offer = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol)); offer = MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol)); } catch (Exception e) { log.error("下发输送线任务失败:异常:" + e); log.error("下发输送线任务失败:异常:offer:" + offer); @@ -1836,4 +1847,43 @@ return taskWrk; } //----------------------------------------------------------电视机显示处理---------------------------------------- /** * 其他 ===>> LED显示器复位,显示默认信息 */ public synchronized void ledReset(Integer mark) { // log.info(""+mark+" - 0"+" - 开始执行:其他 ===>> LED显示器复位,显示默认信息"); for (LedSlave led : slaveProperties.getLed()) { // 获取输送线plc线程 DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId()); // 命令集合 boolean reset = true; for (Integer staNo : led.getStaArr()) { // 获取叉车站点 StaProtocol staProtocol = devpThread.getStation().get(staNo); if (staProtocol == null) { continue; } if (staProtocol.getWorkNo() != 0 && staProtocol.isLoading()) { reset = false; break; } } // 获取led线程 LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId()); // led显示默认内容 if (reset && !ledThread.isLedMk()) { ledThread.setLedMk(true); if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(4, new ArrayList<>()))) { log.error(""+mark+" - 1"+" - {}号LED命令下发失败!!![ip:{}] [port:{}]", led.getId(), led.getIp(), led.getPort()); } else { } } } // log.info(""+mark+" - 0"+" - 执行完成:其他 ===>> LED显示器复位,显示默认信息"); } } src/main/java/com/zy/core/MainProcess.java
@@ -50,6 +50,8 @@ mainService.crnDemoOfLocMove1(); // 入库 ===>> 入库站到堆垛机站,根据条码扫描生成入库工作档 mainService.generateStoreWrkFile1(); // 组托 // 入库 ===>> 拣料盘点回库,输送线工作号保留的情况下入库 mainService.PickingAndReturningToTheWarehouse(); // 出库 ===>> 堆垛机出库站到出库站 mainService.crnStnToOutStn(); // 入出库 ===>> 堆垛机入出库作业下发 @@ -59,8 +61,10 @@ // 堆垛机异常信息记录 mainService.recCrnErr(); // 入库 ===>> 空栈板初始化入库,叉车入库站放货 // mainService.storeEmptyPlt(); // 其他 ===>> LED显示器复位,显示默认信息 mainService.ledReset(10); // mainService.outOfDevp(); src/main/java/com/zy/core/thread/LedThread.java
@@ -48,6 +48,7 @@ private Set<Integer> workNos = new HashSet<>(); private boolean ledMk = false; private boolean resetStatus = false; // 复位状态 private StringBuffer errorMsg = new StringBuffer(); public LedThread(Slave slave) { this.slave = slave; @@ -77,6 +78,9 @@ // 复位 case 2: reset(); break; case 5: error((String) task.getData()); break; default: break; @@ -459,8 +463,10 @@ // // 继开与控制器之间的链接 screen.disconnect(); } private void error(String msg) { errorMsg.delete(0, errorMsg.length()); errorMsg.append(msg); } } src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -324,23 +324,23 @@ } OperateResultExOne<byte[]> resultErr = siemensS7Net.Read("DB101.922.0", (short) (staNoSize * 4)); if (resultErr.IsSuccess) { for (int i = 0; i < staNoSize; i++) { Integer siteId = staNos.get(i); // 站点编号 boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr.Content, i * 4, 1); StaProtocol staProtocol = station.get(siteId); staProtocol.setBreakerErr(status[0]); staProtocol.setInfraredErr(status[1]); staProtocol.setOutTimeErr(status[2]); staProtocol.setSeizeSeatErr(status[3]); staProtocol.setWrkYgoodsN(status[4]); staProtocol.setInverterErr(status[5]); staProtocol.setContactErr(status[6]); staProtocol.setUpcontactErr(status[7]); } } // OperateResultExOne<byte[]> resultErr = siemensS7Net.Read("DB101.922.0", (short) (staNoSize * 4)); // if (resultErr.IsSuccess) { // for (int i = 0; i < staNoSize; i++) { // Integer siteId = staNos.get(i); // 站点编号 // boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr.Content, i * 4, 1); // StaProtocol staProtocol = station.get(siteId); // staProtocol.setBreakerErr(status[0]); // staProtocol.setInfraredErr(status[1]); // staProtocol.setOutTimeErr(status[2]); // staProtocol.setSeizeSeatErr(status[3]); // staProtocol.setWrkYgoodsN(status[4]); // staProtocol.setInverterErr(status[5]); // staProtocol.setContactErr(status[6]); // staProtocol.setUpcontactErr(status[7]); // // } // } // //RGV台车位置 src/main/resources/application-prod.yml
@@ -1,10 +1,10 @@ wcs-slave: doubleDeep: true #双深 doubleLocs: 1,4 #双深库位排号 1,4 doubleLocs: 5,8 #双深库位排号 1,4 groupCount: 4 #一个堆垛机负责的货架排数 crn[0]: #堆垛机1 id: 1 ip: 10.10.10.110 ip: 192.168.110.100 slot: 0 demo: false rack: 0 @@ -38,7 +38,7 @@ devpPlcId: ${wcs-slave.devp[1].id} crn[1]: #堆垛机2 id: 2 ip: 10.10.10.120 ip: 192.168.110.90 slot: 0 demo: false rack: 0 @@ -196,12 +196,12 @@ rack: 0 port: 102 slot: 0 emptyInSta[0]: #空板入库口0 staNo: 1058 inSta[0]: #入库口1 staNo: 1052 backSta: 1051 barcode: ${wcs-slave.barcode[2].id} inSta[1]: #空板入库口0 staNo: 1058 outSta[0]: #出库口1 staNo: 1053 devp[3]: #输送线--成品2F src/main/webapp/static/wcs/js/console.map.js
@@ -14,7 +14,7 @@ "width": 795, "height": 23, "minBayNo": 1, "maxBayNo": 22, "maxBayNo": 50, "hiddenArr": [1,22] }, { "type": "rack",