From 3c45d4f9f3aba5bc85a9577e43c0dffc71b93a22 Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期四, 10 七月 2025 15:54:27 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 219 +++++++++++++++++++++++++++++------------------------- 1 files changed, 117 insertions(+), 102 deletions(-) diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java index 87e09c3..67ccf13 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -17,10 +17,8 @@ import com.zy.core.cache.SlaveConnection; import com.zy.core.dispatcher.ShuttleDispatchUtils; import com.zy.core.enums.*; -import com.zy.core.model.*; import com.zy.core.model.command.*; import com.zy.core.model.protocol.*; -import com.zy.core.properties.SlaveProperties; import com.zy.core.thread.*; import com.zy.system.entity.Config; import com.zy.system.service.ConfigService; @@ -38,8 +36,6 @@ @Service("mainService") public class MainServiceImpl { - @Autowired - private SlaveProperties slaveProperties; @Autowired private WrkMastService wrkMastService; @Autowired @@ -76,6 +72,8 @@ private NotifyUtils notifyUtils; @Autowired private BasShuttleChargeService basShuttleChargeService; + @Autowired + private DeviceConfigService deviceConfigService; /** * 鍒濆鍖栧疄鏃跺湴鍥� @@ -438,9 +436,11 @@ */ public synchronized void shuttleFinished() { try { - for (ShuttleSlave shuttle : slaveProperties.getShuttle()) { + List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() + .eq("device_type", String.valueOf(SlaveType.Shuttle))); + for (DeviceConfig device : shuttleList) { //鑾峰彇鍥涘悜绌挎杞︿俊鎭� - ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId()); + ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo()); ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); if (shuttleProtocol == null) { continue; @@ -762,9 +762,9 @@ } //鑾峰彇鎻愬崌鏈哄懡浠� - List<ForkLiftCommand> liftCommands = forkLiftThread.getPickAndPutCommand(wrkMast.getWrkNo(), wrkMast.getSourceStaNo(), liftSta.getLev()); + ForkLiftCommand liftCommand = forkLiftThread.getPickAndPutCommand(wrkMast.getWrkNo(), wrkMast.getSourceStaNo(), liftSta.getLev()); ArrayList<ForkLiftCommand> commands = new ArrayList<>(); - commands.addAll(liftCommands); + commands.add(liftCommand); //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔 LiftAssignCommand assignCommand = new LiftAssignCommand(); @@ -890,9 +890,9 @@ } //鑾峰彇鎻愬崌鏈哄懡浠� - List<ForkLiftCommand> liftCommands = forkLiftThread.getPickAndPutCommand(wrkMast.getWrkNo(), liftSta.getLev(), wrkMast.getStaNo()); + ForkLiftCommand liftCommand = forkLiftThread.getPickAndPutCommand(wrkMast.getWrkNo(), liftSta.getLev(), wrkMast.getStaNo()); ArrayList<ForkLiftCommand> commands = new ArrayList<>(); - commands.addAll(liftCommands); + commands.add(liftCommand); //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔 LiftAssignCommand assignCommand = new LiftAssignCommand(); @@ -919,9 +919,14 @@ */ public synchronized void forkLiftFinished() { try { - for (ForkLiftSlave forkLiftSlave : slaveProperties.getForkLift()) { + List<DeviceConfig> forkliftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() + .eq("device_type", String.valueOf(SlaveType.ForkLift))); + for (DeviceConfig device : forkliftList) { //鑾峰彇鎻愬崌鏈轰俊鎭� - ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, forkLiftSlave.getId()); + ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, device.getDeviceNo()); + if(forkLiftThread == null) { + continue; + } ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus(); if (forkLiftProtocol == null) { continue; @@ -991,9 +996,11 @@ */ private void recShuttleErr() { Date now = new Date(); - for (ShuttleSlave shuttleSlave : slaveProperties.getShuttle()) { + List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() + .eq("device_type", String.valueOf(SlaveType.Shuttle))); + for (DeviceConfig device : shuttleList) { // 鑾峰彇鍥涘悜绌挎杞︿俊鎭� - ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleSlave.getId()); + ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo()); if (shuttleThread == null) { continue; } @@ -1004,7 +1011,7 @@ if (shuttleProtocol.getTaskNo() != 0) { //鏈変换鍔� - BasShuttleErrLog latest = basShuttleErrLogService.findLatestByTaskNo(shuttleSlave.getId(), shuttleProtocol.getTaskNo()); + BasShuttleErrLog latest = basShuttleErrLogService.findLatestByTaskNo(device.getDeviceNo(), shuttleProtocol.getTaskNo()); // 鏈夊紓甯� if (latest == null) { if (shuttleProtocol.getErrorCode() != null && Integer.parseInt(shuttleProtocol.getErrorCode()) != 0) { @@ -1022,7 +1029,7 @@ null, // 缁撴潫鏃堕棿 wrkMast.getWrkSts(), // 宸ヤ綔鐘舵�� wrkMast.getIoType(), // 鍏ュ嚭搴撶被鍨� - shuttleSlave.getId(), // 鍥涘悜绌挎杞� + device.getDeviceNo(), // 鍥涘悜绌挎杞� null, // plc wrkMast.getLocNo(), // 鐩爣搴撲綅 wrkMast.getStaNo(), // 鐩爣绔� @@ -1040,7 +1047,7 @@ JSON.toJSONString(shuttleProtocol) // 绯荤粺鐘舵�佹暟鎹� ); if (!basShuttleErrLogService.insert(basShuttleErrLog)) { - News.error("鍥涘悜绌挎杞lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", shuttleSlave.getId(), errName); + News.error("鍥涘悜绌挎杞lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", device.getDeviceNo(), errName); } } } else { @@ -1050,7 +1057,7 @@ latest.setUpdateTime(now); latest.setStatus(2); if (!basShuttleErrLogService.updateById(latest)) { - News.error("鍥涘悜绌挎杞lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", shuttleSlave.getId(), latest.getId()); + News.error("鍥涘悜绌挎杞lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", device.getDeviceNo(), latest.getId()); } } } @@ -1063,9 +1070,11 @@ */ private void recLiftErr() { Date now = new Date(); - for (ForkLiftSlave forkLiftSlave : slaveProperties.getForkLift()) { + List<DeviceConfig> forkliftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() + .eq("device_type", String.valueOf(SlaveType.ForkLift))); + for (DeviceConfig device : forkliftList) { // 鑾峰彇鎻愬崌鏈轰俊鎭� - ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, forkLiftSlave.getId()); + ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, device.getDeviceNo()); if (forkLiftThread == null) { continue; } @@ -1076,7 +1085,7 @@ if (forkLiftProtocol.getTaskNo() != 0) { //鏈変换鍔� - BasLiftErrLog latest = basLiftErrLogService.findLatestByTaskNo(forkLiftSlave.getId(), forkLiftProtocol.getTaskNo()); + BasLiftErrLog latest = basLiftErrLogService.findLatestByTaskNo(device.getDeviceNo(), forkLiftProtocol.getTaskNo()); // 鏈夊紓甯� if (latest == null) { if (forkLiftProtocol.getErrorCode() != null && forkLiftProtocol.getErrorCode() != 0) { @@ -1095,7 +1104,7 @@ null, // 缁撴潫鏃堕棿 wrkMast.getWrkSts(), // 宸ヤ綔鐘舵�� wrkMast.getIoType(), // 鍏ュ嚭搴撶被鍨� - forkLiftSlave.getId(), // 鎻愬崌鏈� + device.getDeviceNo(), // 鎻愬崌鏈� null, // plc wrkMast.getLocNo(), // 鐩爣搴撲綅 wrkMast.getStaNo(), // 鐩爣绔� @@ -1113,7 +1122,7 @@ JSON.toJSONString(forkLiftProtocol) // 绯荤粺鐘舵�佹暟鎹� ); if (!basLiftErrLogService.insert(basLiftErrLog)) { - News.error("鎻愬崌鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", forkLiftSlave.getId(), errName); + News.error("鎻愬崌鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", device.getDeviceNo(), errName); } } } else { @@ -1123,7 +1132,7 @@ latest.setUpdateTime(now); latest.setStatus(2); if (!basLiftErrLogService.updateById(latest)) { - News.error("鎻愬崌鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", forkLiftSlave.getId(), latest.getId()); + News.error("鎻愬崌鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", device.getDeviceNo(), latest.getId()); } } } @@ -1142,9 +1151,11 @@ return;//鏃犲厖鐢垫々 } - for (ShuttleSlave shuttle : slaveProperties.getShuttle()) { + List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() + .eq("device_type", String.valueOf(SlaveType.Shuttle))); + for (DeviceConfig device : shuttleList) { //鑾峰彇鍥涘悜绌挎杞︾嚎绋� - ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId()); + ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo()); ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); if (shuttleProtocol == null) { continue; @@ -1217,15 +1228,15 @@ wrkMast.setIoType(WrkIoType.SHUTTLE_CHARGE.id);//300.鍏呯數 wrkMast.setIoPri((double) 999); wrkMast.setLocNo(chargeLocNo); - wrkMast.setShuttleNo(shuttle.getId()); + wrkMast.setShuttleNo(device.getDeviceNo()); wrkMast.setMemo("charge"); wrkMast.setAppeTime(new Date()); if (!wrkMastService.insert(wrkMast)) { - News.error("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟澶辫触!!!", shuttle.getId()); + News.error("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟澶辫触!!!", device.getDeviceNo()); continue; } - News.info("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟鎴愬姛!!!", shuttle.getId()); + News.info("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟鎴愬姛!!!", device.getDeviceNo()); } } catch (Exception e) { e.printStackTrace(); @@ -1238,8 +1249,10 @@ public synchronized void executeShuttleCharge() { try { //鏌ヨ灏忚溅鍏呯數浠诲姟 - for (ShuttleSlave shuttle : slaveProperties.getShuttle()) { - WrkMast wrkMast = wrkMastService.selectChargeWorking(shuttle.getId()); + List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() + .eq("device_type", String.valueOf(SlaveType.Shuttle))); + for (DeviceConfig device : shuttleList) { + WrkMast wrkMast = wrkMastService.selectChargeWorking(device.getDeviceNo()); if(wrkMast == null) { continue; } @@ -1360,7 +1373,7 @@ ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿 assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙� - assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE.id);//鍑哄簱妯″紡 + assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE_ON.id);//鍏呯數寮� assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆) List<ShuttleCommand> commands = shuttleOperaUtils.getShuttleChargeCommand(assignCommand, shuttleThread, true); @@ -1401,7 +1414,7 @@ ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿 assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙� - assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE.id);//鍑哄簱妯″紡 + assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE_OFF.id);//鍏呯數鍏� assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆) List<ShuttleCommand> commands = shuttleOperaUtils.getShuttleChargeCommand(assignCommand, shuttleThread, false); @@ -1765,9 +1778,9 @@ } //鑾峰彇鎻愬崌鏈哄懡浠� - List<ForkLiftCommand> liftCommands = forkLiftThread.getShuttleSwitchCommand(wrkMast.getWrkNo(), sourceLiftSta.getLev(), liftSta.getLev()); + ForkLiftCommand liftCommand = forkLiftThread.getShuttleSwitchCommand(wrkMast.getWrkNo(), sourceLiftSta.getLev(), liftSta.getLev()); ArrayList<ForkLiftCommand> commands = new ArrayList<>(); - commands.addAll(liftCommands); + commands.add(liftCommand); //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔 LiftAssignCommand assignCommand = new LiftAssignCommand(); @@ -1909,71 +1922,73 @@ //鑷姩鍒囨崲鍑哄叆搴撴ā寮� public void autoSwitchForkLiftIOMode() { - for (ForkLiftSlave forkLiftSlave : slaveProperties.getForkLift()) { - Integer liftNo = forkLiftSlave.getId(); - ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo); - if (forkLiftThread == null) { - continue; - } - ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus(); - if (forkLiftProtocol == null) { - continue; - } - - List<Integer> liftAllStaNo = ForkLiftUtils.getLiftAllStaNo(liftNo); - if (liftAllStaNo.isEmpty()) { - continue; - } - - List<Integer> conveyorBindLiftAllStaNo = ForkLiftUtils.getConveyorBindLiftAllStaNo(liftNo); - if (conveyorBindLiftAllStaNo.isEmpty()) { - continue; - } - - //鑾峰彇鍏ュ簱浠诲姟 - List<WrkMast> inWrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() - .in("sta_no", liftAllStaNo) - .in("wrk_sts" - , WrkStsType.NEW_INBOUND.sts - , WrkStsType.INBOUND_DEVICE_RUN.sts - , WrkStsType.INBOUND_LIFT_RUN.sts - , WrkStsType.INBOUND_LIFT_RUN_COMPLETE.sts - , WrkStsType.INBOUND_SHUTTLE_RUN.sts - , WrkStsType.INBOUND_SHUTTLE_RUN_COMPLETE.sts - )); - - //鑾峰彇鍑哄簱浠诲姟 - List<WrkMast> outWrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() - .in("sta_no", conveyorBindLiftAllStaNo) - .in("wrk_sts" - , WrkStsType.NEW_OUTBOUND.sts - , WrkStsType.OUTBOUND_SHUTTLE_RUN.sts - , WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts - , WrkStsType.OUTBOUND_LIFT_RUN.sts - , WrkStsType.OUTBOUND_LIFT_RUN_COMPLETE.sts - )); - - if (forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.NONE)) { - //鏈煡妯″紡 - if (!inWrkMasts.isEmpty()) { - forkLiftThread.switchIOMode(ForkLiftIoModeType.IN); - } else if (!outWrkMasts.isEmpty()) { - forkLiftThread.switchIOMode(ForkLiftIoModeType.OUT); - }else { - forkLiftThread.switchIOMode(ForkLiftIoModeType.IN); - } - } else if (forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.IN)) { - //鍏ュ簱妯″紡 - if (inWrkMasts.isEmpty() && !outWrkMasts.isEmpty()) { - forkLiftThread.switchIOMode(ForkLiftIoModeType.OUT); - } - } else if (forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.OUT)) { - //鍑哄簱妯″紡 - if (outWrkMasts.isEmpty() && !inWrkMasts.isEmpty()) { - forkLiftThread.switchIOMode(ForkLiftIoModeType.IN); - } - } - } +// List<DeviceConfig> forkliftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() +// .eq("device_type", String.valueOf(SlaveType.ForkLift))); +// for (DeviceConfig device : forkliftList) { +// Integer liftNo = device.getDeviceNo(); +// ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo); +// if (forkLiftThread == null) { +// continue; +// } +// ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus(); +// if (forkLiftProtocol == null) { +// continue; +// } +// +// List<Integer> liftAllStaNo = ForkLiftUtils.getLiftAllStaNo(liftNo); +// if (liftAllStaNo.isEmpty()) { +// continue; +// } +// +// List<Integer> conveyorBindLiftAllStaNo = ForkLiftUtils.getConveyorBindLiftAllStaNo(liftNo); +// if (conveyorBindLiftAllStaNo.isEmpty()) { +// continue; +// } +// +// //鑾峰彇鍏ュ簱浠诲姟 +// List<WrkMast> inWrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() +// .in("sta_no", liftAllStaNo) +// .in("wrk_sts" +// , WrkStsType.NEW_INBOUND.sts +// , WrkStsType.INBOUND_DEVICE_RUN.sts +// , WrkStsType.INBOUND_LIFT_RUN.sts +// , WrkStsType.INBOUND_LIFT_RUN_COMPLETE.sts +// , WrkStsType.INBOUND_SHUTTLE_RUN.sts +// , WrkStsType.INBOUND_SHUTTLE_RUN_COMPLETE.sts +// )); +// +// //鑾峰彇鍑哄簱浠诲姟 +// List<WrkMast> outWrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() +// .in("sta_no", conveyorBindLiftAllStaNo) +// .in("wrk_sts" +// , WrkStsType.NEW_OUTBOUND.sts +// , WrkStsType.OUTBOUND_SHUTTLE_RUN.sts +// , WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts +// , WrkStsType.OUTBOUND_LIFT_RUN.sts +// , WrkStsType.OUTBOUND_LIFT_RUN_COMPLETE.sts +// )); +// +// if (forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.NONE)) { +// //鏈煡妯″紡 +// if (!inWrkMasts.isEmpty()) { +// forkLiftThread.switchIOMode(ForkLiftIoModeType.IN); +// } else if (!outWrkMasts.isEmpty()) { +// forkLiftThread.switchIOMode(ForkLiftIoModeType.OUT); +// }else { +// forkLiftThread.switchIOMode(ForkLiftIoModeType.IN); +// } +// } else if (forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.IN)) { +// //鍏ュ簱妯″紡 +// if (inWrkMasts.isEmpty() && !outWrkMasts.isEmpty()) { +// forkLiftThread.switchIOMode(ForkLiftIoModeType.OUT); +// } +// } else if (forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.OUT)) { +// //鍑哄簱妯″紡 +// if (outWrkMasts.isEmpty() && !inWrkMasts.isEmpty()) { +// forkLiftThread.switchIOMode(ForkLiftIoModeType.IN); +// } +// } +// } } //鍑哄簱浠诲姟棰勮皟搴︽彁鍗囨満 @@ -2044,9 +2059,9 @@ int workNo = commonService.getWorkNo(WrkIoType.FORKLIFT_MOVE.id);//鑾峰彇浠诲姟鍙� //鑾峰彇鎻愬崌鏈哄懡浠� - List<ForkLiftCommand> liftCommand = forkLiftThread.getMoveCommand(workNo, forkLiftProtocol.getLev(), Utils.getLev(wrkMast.getSourceLocNo())); + ForkLiftCommand liftCommand = forkLiftThread.getMoveCommand(workNo, forkLiftProtocol.getLev(), Utils.getLev(wrkMast.getSourceLocNo())); ArrayList<ForkLiftCommand> commands = new ArrayList<>(); - commands.addAll(liftCommand); + commands.add(liftCommand); //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔 LiftAssignCommand assignCommand = new LiftAssignCommand(); -- Gitblit v1.9.1