From 6e02d92c3b9c240fa78a343b67ddf0db12d840e6 Mon Sep 17 00:00:00 2001 From: Junjie <540245094@qq.com> Date: 星期五, 22 八月 2025 17:00:56 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 252 +++++++++++++++++++++---------------------------- 1 files changed, 109 insertions(+), 143 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 09cefc6..9f5533e 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -15,6 +15,7 @@ import com.zy.core.action.LiftAction; import com.zy.core.action.ShuttleAction; import com.zy.core.cache.SlaveConnection; +import com.zy.core.dispatcher.LiftDispatchUtils; import com.zy.core.dispatcher.ShuttleDispatchUtils; import com.zy.core.enums.*; import com.zy.core.model.command.*; @@ -57,8 +58,6 @@ @Autowired private ConfigService configService; @Autowired - private NavigateMapUtils navigateMapUtils; - @Autowired private NavigateMapData navigateMapData; @Autowired private NavigateUtils navigateUtils; @@ -74,6 +73,8 @@ private BasShuttleChargeService basShuttleChargeService; @Autowired private DeviceConfigService deviceConfigService; + @Autowired + private LiftDispatchUtils liftDispatchUtils; /** * 鍒濆鍖栧疄鏃跺湴鍥� @@ -181,10 +182,10 @@ } //妫�娴嬮殰纰嶇墿杞� - boolean checkObstacle = shuttleOperaUtils.checkObstacle(wrkMast.getLocNo(), new ArrayList<Integer>() {{ + int checkObstacle = shuttleOperaUtils.checkObstacle(wrkMast.getLocNo(), new ArrayList<Integer>() {{ add(shuttleProtocol.getShuttleNo()); }}, new ArrayList<>()); - if (checkObstacle) { + if (checkObstacle > 0) { News.info("{}浠诲姟锛岄伩闅滆寖鍥存湁灏忚溅锛岀瓑寰呴殰纰嶅皬杞﹁皟绂讳腑", wrkMast.getWrkNo()); return false; } @@ -372,10 +373,10 @@ //鍒ゆ柇灏忚溅鏄惁鍒拌揪璐х墿搴撲綅 if (!shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) { //妫�娴嬮殰纰嶇墿杞� - boolean checkObstacle = shuttleOperaUtils.checkObstacle(wrkMast.getSourceLocNo(), new ArrayList<Integer>() {{ + int checkObstacle = shuttleOperaUtils.checkObstacle(wrkMast.getSourceLocNo(), new ArrayList<Integer>() {{ add(shuttleProtocol.getShuttleNo()); }}, new ArrayList<>()); - if (checkObstacle) { + if (checkObstacle > 0) { News.info("{}浠诲姟锛岄伩闅滆寖鍥存湁灏忚溅锛岀瓑寰呴殰纰嶅皬杞﹁皟绂讳腑", wrkMast.getWrkNo()); return false; } @@ -514,10 +515,10 @@ } //妫�娴嬮殰纰嶇墿杞� - boolean checkObstacle = shuttleOperaUtils.checkObstacle(wrkMast.getLocNo(), new ArrayList<Integer>() {{ + int checkObstacle = shuttleOperaUtils.checkObstacle(wrkMast.getLocNo(), new ArrayList<Integer>() {{ add(shuttleProtocol.getShuttleNo()); }}, new ArrayList<>()); - if (checkObstacle) { + if (checkObstacle > 0) { News.info("{}浠诲姟锛岄伩闅滆寖鍥存湁灏忚溅锛岀瓑寰呴殰纰嶅皬杞﹁皟绂讳腑", wrkMast.getWrkNo()); return false; } @@ -568,9 +569,9 @@ } /** - * 璐у弶鎻愬崌鏈轰换鍔� + * 鎻愬崌鏈轰换鍔� */ - public synchronized void forkLiftIoExecute() { + public synchronized void liftIoExecute() { try { //鎼滅储鏄惁鏈夊緟澶勭悊鐨勪换鍔� List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() @@ -844,61 +845,63 @@ } /** - * 璐у弶鎻愬崌鏈轰换鍔″畬鎴� + * 鎻愬崌鏈轰换鍔″畬鎴� */ - public synchronized void forkLiftFinished() { + public synchronized void liftFinished() { try { - List<DeviceConfig> forkliftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() - .eq("device_type", String.valueOf(SlaveType.ForkLift))); - for (DeviceConfig device : forkliftList) { + List<DeviceConfig> liftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() + .eq("device_type", String.valueOf(SlaveType.Lift))); + for (DeviceConfig device : liftList) { //鑾峰彇鎻愬崌鏈轰俊鎭� - ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, device.getDeviceNo()); - if(forkLiftThread == null) { + LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, device.getDeviceNo()); + if(liftThread == null) { continue; } - ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus(); - if (forkLiftProtocol == null) { + LiftProtocol liftProtocol = liftThread.getStatus(); + if (liftProtocol == null) { continue; } //鎻愬崌鏈轰负绛夊緟纭涓旂┖闂� - if (forkLiftProtocol.getProtocolStatus() == ForkLiftProtocolStatusType.WAITING.id - && forkLiftProtocol.getWrkNo() != 0 + if (liftProtocol.getProtocolStatus() == LiftProtocolStatusType.WAITING.id + && liftProtocol.getTaskNo() != 0 ) { //灏嗕换鍔℃。鏍囪涓哄畬鎴� - WrkMast wrkMast = wrkMastService.selectByWorkNo(forkLiftProtocol.getWrkNo()); + WrkMast wrkMast = wrkMastService.selectByWorkNo(liftProtocol.getTaskNo()); if (wrkMast != null) { if (wrkMast.getWrkSts() == WrkStsType.INBOUND_LIFT_RUN.sts) { //3.鎻愬崌鏈烘惉杩愪腑 ==> 4.鎻愬崌鏈烘惉杩愬畬鎴� wrkMast.setWrkSts(WrkStsType.INBOUND_LIFT_RUN_COMPLETE.sts); wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈� - forkLiftThread.setSyncTaskNo(0); + }else if (wrkMast.getWrkSts() == WrkStsType.MOVE_NEARBY_COMPLETE.sts) { + //303.灏忚溅绉诲姩鑷宠繎鐐瑰畬鎴� -- 璋冨害鎻愬崌鏈哄埌灏忚溅灞� } else if (wrkMast.getWrkSts() == WrkStsType.OUTBOUND_LIFT_RUN.sts) { - //104.鎻愬崌鏈烘惉杩愪腑 ==> 109.鍑哄簱瀹屾垚 + //304.鎻愬崌鏈烘惉杩愪腑 ==> 109.鍑哄簱瀹屾垚 wrkMast.setWrkSts(WrkStsType.COMPLETE_OUTBOUND.sts); wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈� - forkLiftThread.setSyncTaskNo(0); - redisUtil.set(RedisKeyType.FORK_LIFT_PUT_COMPLETE.key + forkLiftProtocol.getLiftNo(), wrkMast.getWmsWrkNo(), 60 * 3); } else if (wrkMast.getWrkSts() == WrkStsType.MOVE_LIFT_RUN.sts) { //306.鎻愬崌鏈烘惉杩愪腑 ==> 307.鎻愬崌鏈烘惉杩愬畬鎴� wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_RUN_COMPLETE.sts); - forkLiftThread.setSyncTaskNo(0); + } else { + News.error("鎻愬崌鏈虹‘璁ゅけ璐ワ紝鎻愬崌鏈哄彿={}锛屽伐浣滃彿={}", liftProtocol.getLiftNo(), liftProtocol.getTaskNo()); + return; } + wrkMast.setModiTime(new Date()); if (wrkMastService.updateById(wrkMast)) { - forkLiftThread.reset(); - News.info("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬併�傛彁鍗囨満鍙�={}", forkLiftProtocol.getLiftNo()); + liftThread.reset(); + News.info("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬併�傛彁鍗囨満鍙�={}", liftProtocol.getLiftNo()); } else { - News.error("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傛彁鍗囨満鍙�={}锛屽伐浣滃彿={}", forkLiftProtocol.getLiftNo(), forkLiftProtocol.getWrkNo()); + News.error("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傛彁鍗囨満鍙�={}锛屽伐浣滃彿={}", liftProtocol.getLiftNo(), liftProtocol.getTaskNo()); } }else { - boolean checkPreviewDispatchForkLift = commonService.checkWorkNoContainMk(forkLiftProtocol.getWrkNo(), WrkIoType.FORKLIFT_MOVE.id); + boolean checkPreviewDispatchForkLift = commonService.checkWorkNoContainMk(liftProtocol.getTaskNo(), WrkIoType.PREVIEW_LIFT_MOVE.id); if (checkPreviewDispatchForkLift) { //灞炰簬鎻愬崌鏈洪璋冨害绉诲姩浠诲姟 //鏃犲伐浣滄。鏀拺锛岀洿鎺ョ‘璁ゅ畬鎴� - forkLiftThread.setSyncTaskNo(0); - forkLiftThread.reset(); - News.info("宸茬‘璁ゆ彁鍗囨満棰勮皟搴︾Щ鍔ㄤ换鍔°�傛彁鍗囨満鍙�={}", forkLiftProtocol.getLiftNo()); + liftThread.setSyncTaskNo(0); + liftThread.reset(); + News.info("宸茬‘璁ゆ彁鍗囨満棰勮皟搴︾Щ鍔ㄤ换鍔°�傛彁鍗囨満鍙�={}", liftProtocol.getLiftNo()); } } } @@ -1384,10 +1387,10 @@ } //妫�娴嬮殰纰嶇墿杞� - boolean checkObstacle = shuttleOperaUtils.checkObstacle(basShuttleCharge.getWaitLocNo(), new ArrayList<Integer>() {{ + int checkObstacle = shuttleOperaUtils.checkObstacle(basShuttleCharge.getWaitLocNo(), new ArrayList<Integer>() {{ add(shuttleProtocol.getShuttleNo()); }}, new ArrayList<>()); - if (checkObstacle) { + if (checkObstacle > 0) { News.info("{}浠诲姟锛岄伩闅滆寖鍥存湁灏忚溅锛岀瓑寰呴殰纰嶅皬杞﹁皟绂讳腑", wrkMast.getWrkNo()); return false; } @@ -1485,36 +1488,20 @@ return false; } - //鑾峰彇婧愯緭閫佺珯 - LiftStaProtocol liftSta = LiftUtils.getLiftStaByStaNo(wrkMast.getSourceStaNo()); - if (liftSta == null) { - return false;//鎵句笉鍒扮珯鐐� - } - - if (liftSta.getHasCar()) { - News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾簮绔欏瓨鍦ㄥ皬杞�", wrkMast.getWrkNo()); + //鎼滅储鏈�杩戜笖鏃犳晠闅滄彁鍗囨満 + LiftStaProtocol recentLiftStation = liftDispatchUtils.getRecentLiftStation(shuttleProtocol.getShuttleNo(), Utils.getLev(shuttleProtocol.getCurrentLocNo())); + if(recentLiftStation == null) { + News.info("{}鍙峰皬杞︼紝{}鐩爣搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂茶緭閫佺珯鐐�", shuttleProtocol.getShuttleNo(), wrkMast.getLocNo()); return false; } - //鑾峰彇鐩爣杈撻�佺珯 - LiftStaProtocol liftStaTarget = LiftUtils.getLiftStaByStaNo(wrkMast.getStaNo()); - if (liftStaTarget == null) { - return false;//鎵句笉鍒扮珯鐐� - } - - if (liftStaTarget.getHasCar()) { - News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀洰鏍囩珯瀛樺湪灏忚溅", wrkMast.getWrkNo()); + LiftStaProtocol targetLiftSta = LiftUtils.getLiftStaByLev(recentLiftStation.getLiftNo(), Utils.getLev(wrkMast.getLocNo())); + if(targetLiftSta == null) { return false; } - - ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); - assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙� - assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟 - assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙� - assignCommand.setAuto(true);//鑷姩妯″紡 //璁$畻杩戠偣浣嶇疆 - String endLocation = navigateUtils.calcEndLocation(shuttleProtocol.getCurrentLocNo(), liftSta.getLocNo(), NavigationMapType.getMapTypes(NavigationMapType.NORMAL), null, null, 1); + String endLocation = navigateUtils.calcEndLocation(shuttleProtocol.getCurrentLocNo(), recentLiftStation.getLocNo(), NavigationMapType.getMapTypes(NavigationMapType.NORMAL), null, null, 1); if (endLocation == null) { News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屽皬杞﹁繎鐐逛綅缃绠楀け璐�", wrkMast.getWrkNo()); return false; @@ -1523,11 +1510,21 @@ //灏忚溅宸插湪杩戠偣浣嶇疆鏃犻渶鍓嶅線 if (shuttleProtocol.getCurrentLocNo().equals(endLocation)) { wrkMast.setWrkSts(WrkStsType.MOVE_NEARBY_COMPLETE.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 303.灏忚溅绉诲姩鑷宠繎鐐瑰畬鎴� + wrkMast.setSourceStaNo(recentLiftStation.getStaNo()); + wrkMast.setStaNo(targetLiftSta.getStaNo()); wrkMast.setModiTime(now); wrkMast.setSystemMsg("");//娓呯┖娑堟伅 wrkMastService.updateById(wrkMast); return true; } + + ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); + assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙� + assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟 + assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙� + assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣� + assignCommand.setLocNo(endLocation); + assignCommand.setAuto(true);//鑷姩妯″紡 //鑾峰彇灏忚溅鍒拌繎鐐硅璧板懡浠� List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), endLocation, NavigationMapType.getMapTypes(NavigationMapType.NORMAL, NavigationMapType.SHUTTLE), assignCommand, shuttleThread); @@ -1539,6 +1536,8 @@ assignCommand.setCommands(commands); wrkMast.setWrkSts(WrkStsType.MOVE_NEARBY.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 302.灏忚溅绉诲姩鑷宠繎鐐逛腑 + wrkMast.setSourceStaNo(recentLiftStation.getStaNo()); + wrkMast.setStaNo(targetLiftSta.getStaNo()); wrkMast.setModiTime(now); wrkMast.setSystemMsg("");//娓呯┖娑堟伅 if (wrkMastService.updateById(wrkMast)) { @@ -1627,8 +1626,9 @@ return false; } - int targetLev = Utils.getLev(wrkMast.getLocNo()); - if (liftProtocol.getLev() != targetLev) { + Object object = redisUtil.get(RedisKeyType.LIFT_MOVE_TO_SHUTTLE_LIMIT.key + wrkMast.getWrkNo()); + int targetLev = Utils.getLev(shuttleProtocol.getCurrentLocNo()); + if (object == null || liftProtocol.getLev() != targetLev) { //鑾峰彇鎻愬崌鏈哄懡浠� LiftCommand liftCommand = liftThread.getMoveCommand(wrkMast.getWrkNo(), liftProtocol.getLev(), targetLev); ArrayList<LiftCommand> commands = new ArrayList<>(); @@ -1639,21 +1639,26 @@ assignCommand.setCommands(commands); assignCommand.setLiftNo(wrkMast.getLiftNo()); assignCommand.setTaskNo(wrkMast.getWrkNo()); - assignCommand.setTaskMode(ForkLiftTaskModeType.MOVE.id); + assignCommand.setTaskMode(LiftTaskModeType.MOVE.id); //涓嬪彂浠诲姟 liftAction.assignWork(wrkMast.getLiftNo(), assignCommand); News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満鍦▄}灞傦紝鎻愬崌鏈轰笉鍦ㄥ皬杞﹀眰锛岃皟搴︾Щ鍔ㄤ腑", wrkMast.getWrkNo(), liftProtocol.getLev(), wrkMast.getLiftNo()); + redisUtil.set(RedisKeyType.LIFT_MOVE_TO_SHUTTLE_LIMIT.key + wrkMast.getWrkNo(), "lift_moving", 60 * 3); return false; } + + String liftLocNo = liftThread.getCurrentLocNo(); ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙� assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟 assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙� + assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣� + assignCommand.setLocNo(liftLocNo); assignCommand.setAuto(true);//鑷姩妯″紡 //鑾峰彇灏忚溅鍒版彁鍗囨満琛岃蛋鍛戒护 - List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftThread.getCurrentLocNo(), NavigationMapType.getNormalWithDevice(), assignCommand, shuttleThread); + List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftLocNo, NavigationMapType.getNormalWithDevice(), assignCommand, shuttleThread, "inLift"); if (commands == null) { News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); return false;//璺緞瑙i攣澶辫触 @@ -1724,7 +1729,7 @@ assignCommand.setCommands(commands); assignCommand.setLiftNo(wrkMast.getLiftNo()); assignCommand.setTaskNo(wrkMast.getWrkNo()); - assignCommand.setTaskMode(ForkLiftTaskModeType.SHUTTLE_SWITCH.id); + assignCommand.setTaskMode(LiftTaskModeType.SHUTTLE_SWITCH.id); wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_RUN.sts);//鎻愬崌鏈烘惉杩愪腑 305.灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 306.鎻愬崌鏈烘惉杩愪腑 wrkMast.setSystemMsg("");//娓呯┖娑堟伅 @@ -1764,25 +1769,57 @@ return false; } + if (Utils.getLev(shuttleProtocol.getCurrentLocNo()) != Utils.getLev(wrkMast.getLocNo())) { + Object object = redisUtil.get(RedisKeyType.SHUTTLE_UPDATE_LOCATION.key + shuttleProtocol.getShuttleNo()); + if(object != null) { + return false; + } + + ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); + assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙� + assignCommand.setTaskMode(ShuttleTaskModeType.UPDATE_LOCATION.id);//鏇存柊鍧愭爣 + assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙� + assignCommand.setAuto(true);//鑷姩妯″紡 + assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣� + assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅 + + //鏇存柊灏忚溅鍧愭爣 + ShuttleCommand command = shuttleThread.getUpdateLocationCommand(wrkMast.getWrkNo(), wrkMast.getLocNo()); + ArrayList<ShuttleCommand> commands = new ArrayList<>(); + commands.add(command); + + assignCommand.setCommands(commands); + //涓嬪彂浠诲姟 + shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand); + redisUtil.set(RedisKeyType.SHUTTLE_UPDATE_LOCATION.key + shuttleProtocol.getShuttleNo(), "update", 10); + return false; + } + + String targetLocNo = navigateUtils.calcFirstLocation(shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo(), NavigationMapType.getMapTypes(NavigationMapType.NORMAL), null, null, 5); + if (targetLocNo == null) {//鍑烘彁鍗囨満杩戠偣璁$畻澶辫触 + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽嚭鎻愬崌鏈鸿繎鐐硅绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); + return false; + } + ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙� - assignCommand.setTaskMode(ShuttleTaskModeType.UPDATE_LOCATION.id);//鏇存柊鍧愭爣 + assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟 assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙� assignCommand.setAuto(true);//鑷姩妯″紡 assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣� - assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅 + assignCommand.setLocNo(targetLocNo);//鐩爣搴撲綅 - //鏇存柊灏忚溅鍧愭爣 - ShuttleCommand command = shuttleThread.getUpdateLocationCommand(wrkMast.getWrkNo(), wrkMast.getLocNo()); - ArrayList<ShuttleCommand> commands = new ArrayList<>(); - commands.add(command); - + //鑾峰彇灏忚溅鍒拌繎鐐瑰懡浠� + List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), targetLocNo, NavigationMapType.getMapTypes(NavigationMapType.NORMAL), assignCommand, shuttleThread); + if (commands == null) { + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); + return false;//璺緞璁$畻澶辫触 + } assignCommand.setCommands(commands); wrkMast.setWrkSts(WrkStsType.MOVE_OUT_LIFT.sts);//灏忚溅杩佸嚭鎻愬崌鏈轰腑 wrkMast.setSystemMsg("");//娓呯┖娑堟伅 wrkMast.setModiTime(now); - if (wrkMastService.updateById(wrkMast)) { //涓嬪彂浠诲姟 shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand); @@ -1855,77 +1892,6 @@ } } return true; - } - - //鑷姩鍒囨崲鍑哄叆搴撴ā寮� - 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); -// } -// } -// } } } -- Gitblit v1.9.1