From 73ce8bebcc5d14f3fb62a19ee677abfcdfc776b4 Mon Sep 17 00:00:00 2001 From: Junjie <540245094@qq.com> Date: 星期六, 19 七月 2025 16:17:51 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 173 ++++++++++++++++++++++++++++----------------------------- 1 files changed, 86 insertions(+), 87 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 80f3170..c5287f2 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 @@ -200,7 +196,7 @@ assignCommand.setAuto(true);//鑷姩妯″紡 //鑾峰彇灏忚溅鍒拌緭閫佺珯鐐硅璧板懡浠� - List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(liftSta.getLocNo(), wrkMast.getLocNo(), NavigationMapType.DFX.id, assignCommand, shuttleThread); + List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(liftSta.getLocNo(), wrkMast.getLocNo(), NavigationMapType.getDfxWithDevice(), assignCommand, shuttleThread); if (commands == null) { News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); return false; @@ -338,7 +334,7 @@ //寮哄埗棰勭暀涓�鍙板皬杞︾粰鍏ュ簱浠诲姟 int lev = Utils.getLev(wrkMast.getSourceLocNo()); //鑾峰彇褰撳墠妤煎眰鏈夊嚑鍙板彲鐢ㄥ皬杞� - int shuttleCount = shuttleDispatchUtils.getShuttleCountByLev(lev); + int shuttleCount = shuttleDispatchUtils.getShuttleEnableUseCountByLev(lev); if (shuttleCount >= 2) {//鍙湁鍙敤灏忚溅鏁伴噺澶т簬2锛屾墠杩涜鍏ュ簱浠诲姟棰勭暀灏忚溅 int shuttleWrkInObligateCount = 1;//棰勭暀灏忚溅鏁伴噺 Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "shuttleWrkInObligateCount").eq("status", 1)); @@ -397,7 +393,7 @@ assignCommand.setAuto(true);//鑷姩妯″紡 //鑾峰彇灏忚溅鍒拌緭閫佺珯鐐硅璧板懡浠� - List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(wrkMast.getSourceLocNo(), liftSta.getLocNo(), NavigationMapType.DFX.id, assignCommand, shuttleThread); + List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(wrkMast.getSourceLocNo(), liftSta.getLocNo(), NavigationMapType.getDfxWithDevice(), assignCommand, shuttleThread); if (commands == null) { News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); return false; @@ -605,7 +601,7 @@ assignCommand.setAuto(true);//鑷姩妯″紡 //鑾峰彇灏忚溅鍒拌緭閫佺珯鐐硅璧板懡浠� - List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(wrkMast.getSourceLocNo(), wrkMast.getLocNo(), NavigationMapType.DFX.id, assignCommand, shuttleThread); + List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(wrkMast.getSourceLocNo(), wrkMast.getLocNo(), NavigationMapType.getDfxWithDevice(), assignCommand, shuttleThread); if (commands == null) { News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); return false; @@ -766,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(); @@ -894,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(); @@ -928,6 +924,9 @@ for (DeviceConfig device : forkliftList) { //鑾峰彇鎻愬崌鏈轰俊鎭� ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, device.getDeviceNo()); + if(forkLiftThread == null) { + continue; + } ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus(); if (forkLiftProtocol == null) { continue; @@ -1586,7 +1585,7 @@ assignCommand.setAuto(true);//鑷姩妯″紡 //璁$畻杩戠偣浣嶇疆 - String endLocation = navigateUtils.calcEndLocation(shuttleProtocol.getCurrentLocNo(), liftSta.getLocNo(), NavigationMapType.NORMAL.id, null, null, 1); + String endLocation = navigateUtils.calcEndLocation(shuttleProtocol.getCurrentLocNo(), liftSta.getLocNo(), NavigationMapType.getMapTypes(NavigationMapType.NORMAL), null, null, 1); if (endLocation == null) { News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屽皬杞﹁繎鐐逛綅缃绠楀け璐�", wrkMast.getWrkNo()); return false; @@ -1602,7 +1601,7 @@ } //鑾峰彇灏忚溅鍒拌繎鐐硅璧板懡浠� - List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), endLocation, NavigationMapType.NORMAL.id, assignCommand, shuttleThread); + List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), endLocation, NavigationMapType.getMapTypes(NavigationMapType.NORMAL, NavigationMapType.SHUTTLE), assignCommand, shuttleThread); if (commands == null) { News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); return false;//璺緞瑙i攣澶辫触 @@ -1717,7 +1716,7 @@ assignCommand.setAuto(true);//鑷姩妯″紡 //鑾峰彇灏忚溅鍒版彁鍗囨満琛岃蛋鍛戒护 - List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftSta.getLocNo(), NavigationMapType.NORMAL.id, assignCommand, shuttleThread); + List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftSta.getLocNo(), NavigationMapType.getNormalWithDevice(), assignCommand, shuttleThread); if (commands == null) { News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); return false;//璺緞瑙i攣澶辫触 @@ -1779,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(); @@ -1901,7 +1900,7 @@ assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅 //鑾峰彇灏忚溅鍒扮洰鏍囧簱浣嶅懡浠� - List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo(), NavigationMapType.NORMAL.id, assignCommand, shuttleThread); + List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo(), NavigationMapType.getNormalWithDevice(), assignCommand, shuttleThread); if (commands == null) { News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); return false;//璺緞璁$畻澶辫触 @@ -1923,73 +1922,73 @@ //鑷姩鍒囨崲鍑哄叆搴撴ā寮� public void autoSwitchForkLiftIOMode() { - 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); - } - } - } +// 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); +// } +// } +// } } //鍑哄簱浠诲姟棰勮皟搴︽彁鍗囨満 @@ -2060,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