From 0c9b8fe24e495da1f5e3362fa6b36acc41617cb7 Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期四, 29 六月 2023 11:35:19 +0800 Subject: [PATCH] 优化寻车,出库问题 --- src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java | 2 src/main/java/com/zy/asrs/domain/vo/LiftMsgTableVo.java | 5 ++ src/main/java/com/zy/asrs/service/WrkMastService.java | 4 ++ src/main/java/com/zy/asrs/utils/Utils.java | 2 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 42 ++++++++++++++++++--- src/main/java/com/zy/core/thread/ShuttleThread.java | 13 +++++- src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java | 5 ++ src/main/java/com/zy/core/enums/ShuttleTaskModeType.java | 1 src/main/java/com/zy/asrs/mapper/WrkMastMapper.java | 4 ++ src/main/resources/mapper/WrkMastMapper.xml | 7 +++ src/main/java/com/zy/asrs/controller/LiftController.java | 1 src/main/webapp/views/lift.html | 2 + 12 files changed, 78 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/LiftController.java b/src/main/java/com/zy/asrs/controller/LiftController.java index 487738c..716ce31 100644 --- a/src/main/java/com/zy/asrs/controller/LiftController.java +++ b/src/main/java/com/zy/asrs/controller/LiftController.java @@ -121,6 +121,7 @@ vo.setLineEndHasStock(liftProtocol.getLineEndHasStock()); vo.setInConveyLineCardTrayAlarm(liftProtocol.getInConveyLineCardTrayAlarm()); vo.setOutConveyLineCardTrayAlarm(liftProtocol.getOutConveyLineCardTrayAlarm()); + vo.setShuttleNo(liftProtocol.getShuttleNo().intValue()); } return R.ok().add(list); } diff --git a/src/main/java/com/zy/asrs/domain/vo/LiftMsgTableVo.java b/src/main/java/com/zy/asrs/domain/vo/LiftMsgTableVo.java index 17b006a..b24c1c4 100644 --- a/src/main/java/com/zy/asrs/domain/vo/LiftMsgTableVo.java +++ b/src/main/java/com/zy/asrs/domain/vo/LiftMsgTableVo.java @@ -56,6 +56,11 @@ */ private Boolean outConveyLineCardTrayAlarm; + /** + * 绌挎杞﹀彿 + */ + private Integer shuttleNo; + public String getLineFrontHasStock$() { if (this.lineFrontHasStock == null) { return "N"; diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java index b474982..0bf2156 100644 --- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java +++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java @@ -1,6 +1,7 @@ package com.zy.asrs.mapper; import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.zy.asrs.entity.LocMast; import com.zy.asrs.entity.WrkMast; import org.apache.ibatis.annotations.*; import org.springframework.stereotype.Repository; @@ -105,4 +106,7 @@ WrkMast selectByWorkNo372428(Integer workNo); List<WrkMast> selectBy2125(); + + //鏌ヨ鎸囧畾妤煎眰寰呭垎閰嶈溅杈嗙殑浠诲姟 + List<LocMast> selectNoShuttleWrkByLev(String lev); } diff --git a/src/main/java/com/zy/asrs/service/WrkMastService.java b/src/main/java/com/zy/asrs/service/WrkMastService.java index f5c3e5c..3814bd2 100644 --- a/src/main/java/com/zy/asrs/service/WrkMastService.java +++ b/src/main/java/com/zy/asrs/service/WrkMastService.java @@ -1,6 +1,7 @@ package com.zy.asrs.service; import com.baomidou.mybatisplus.service.IService; +import com.zy.asrs.entity.LocMast; import com.zy.asrs.entity.WrkMast; import java.util.List; @@ -13,4 +14,7 @@ List<WrkMast> selectToBeHistoryData(); + //鏌ヨ鎸囧畾妤煎眰寰呭垎閰嶈溅杈嗙殑浠诲姟 + List<LocMast> selectNoShuttleWrkByLev(Integer lev); + } 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 3d831aa..d0c1937 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -53,6 +53,8 @@ @Autowired private WrkMastMapper wrkMastMapper; @Autowired + private WrkMastService wrkMastService; + @Autowired private WrkDetlService wrkDetlService; @Autowired private LocMastService locMastService; @@ -1100,7 +1102,7 @@ if (wrkMastMapper.updateById(wrkMast) > 0) { //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); +// MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); } }else { //涓嶅悓灞傦紝灏嗙洰鏍囧簱浣嶅垎閰嶆垚鎻愬崌鏈哄簱浣嶅彿(灏嗗皬杞︾Щ鍔ㄥ埌鎻愬崌鏈轰綅缃�) @@ -1278,16 +1280,23 @@ //鍚屼竴妤煎眰锛屾病鏈夌┖闂茬┛姊溅锛屽彧鑳戒粠鍏朵粬妤煎眰璋冨害 //瀵绘壘绂讳换鍔℃渶杩戠殑绌挎杞� for (ShuttleThread shuttleThread : diffLev) { - if (recentShuttle == null) {//鏈�杩戠┛姊溅涓虹┖锛屽垯榛樿璧嬩簣涓烘渶杩戠┛姊溅 - recentShuttle = shuttleThread; - } //褰撳墠绌挎杞﹀簱浣嶅彿 String currentLocNo = shuttleThread.getShuttleProtocol().getCurrentLocNo(); int currentLev = Utils.getLev(currentLocNo); + List<LocMast> locMasts = wrkMastService.selectNoShuttleWrkByLev(currentLev);//鍒ゆ柇褰撳墠绌挎杞︽ゼ灞傛槸鍚︽湁寰呭垎閰嶈溅杈嗙殑浠诲姟锛屽鏋滄湁鍒欎笉鍒嗛厤杩欒締杞� + if (locMasts.size() > 0) { + //瀛樺湪鍏朵粬浠诲姟锛岃烦杩囪繖杈嗚溅 + continue; + } + + if (recentShuttle == null) {//鏈�杩戠┛姊溅涓虹┖锛屽垯榛樿璧嬩簣涓烘渶杩戠┛姊溅 + recentShuttle = shuttleThread; + } //鐩墠鏈�杩戠┛姊溅搴撲綅鍙� String recentLocNo = recentShuttle.getShuttleProtocol().getCurrentLocNo(); int recentLev = Utils.getLev(recentLocNo); + //褰撳墠鏈�杩戝洓鍚戠┛姊溅鍒板綋鍓嶈溅瀛愭墍鍦ㄦゼ灞傜殑鎻愬崌鏈哄彛璺濈 List<NavigateNode> recentShuttlePath = NavigateUtils.calc(recentLocNo, Utils.levToOutInStaLocNo(recentLev), NavigationMapType.NORMAL.id, Utils.getShuttlePoints(shuttleThread.getSlave().getId(), recentLev));//鎼滅储绌洪棽绌挎杞︼紝浣跨敤姝e父閫氶亾鍦板浘 @@ -1330,6 +1339,8 @@ ) { //鏍囪澶嶄綅 shuttleProtocol.setPakMk(true); + + ShuttleAssignCommand assignCommand = shuttleProtocol.getAssignCommand(); //灏嗕换鍔℃。鏍囪涓哄畬鎴� WrkMast wrkMast = wrkMastMapper.selectByWorkNo(shuttleProtocol.getTaskNo().intValue()); @@ -1383,6 +1394,23 @@ } else { News.error("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傚洓鍚戠┛姊溅鍙�={}锛屽伐浣滃彿={}", shuttleProtocol.getShuttleNo(), shuttleProtocol.getTaskNo()); + } + } + + if (assignCommand != null) { + if (assignCommand.getTaskMode().intValue() == ShuttleTaskModeType.AVOID.id) { + //閬胯浠诲姟 + //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵�� + shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); + //浠诲姟鍙锋竻闆� + shuttleProtocol.setTaskNo((short) 0); + //婧愬簱浣嶆竻闆� + shuttleProtocol.setSourceLocNo(null); + //鐩爣搴撲綅娓呴浂 + shuttleProtocol.setLocNo(null); + //浠诲姟鎸囦护娓呴浂 + shuttleProtocol.setAssignCommand(null); + News.info("鍥涘悜绌挎杞﹂伩璁╀换鍔″凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo()); } } @@ -1744,6 +1772,8 @@ throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); } wrkMast.setWrkSts(4L); + //浠诲姟鍙锋竻闆� + liftProtocol.setTaskNo((short) 0); break; case 7://7.鎻愬崌鏈鸿縼绉诲皬杞︿腑 ==> 8.鎻愬崌鏈鸿縼绉诲皬杞﹀畬鎴� if (liftProtocol.getLev().intValue() != lev) { @@ -1763,6 +1793,8 @@ } wrkMast.setWrkSts(29L); wrkMast.setWrkSts(34L);//34.鍑哄簱瀹屾垚锛屾殏鏃跺厛鐩存帴瀹屾垚鍑哄簱宸ヤ綔妗o紝鍚庣画闇�瑕佹牴鎹緭閫佺嚎缁欏嚭鐨勭姸鎬佹潵纭畾34.鍑哄簱瀹屾垚鐘舵�� + //浠诲姟鍙锋竻闆� + liftProtocol.setTaskNo((short) 0); break; default: } @@ -1772,8 +1804,6 @@ liftProtocol.setProtocolStatus(LiftProtocolStatusType.IDLE); //浠诲姟鎸囦护娓呴浂 liftProtocol.setAssignCommand(null); - //浠诲姟鍙锋竻闆� - liftProtocol.setTaskNo((short) 0); News.info("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬併�傛彁鍗囨満鍙�={}", liftProtocol.getLiftNo()); } else { News.error("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傛彁鍗囨満鍙�={}锛屽伐浣滃彿={}", liftProtocol.getLiftNo(), liftProtocol.getTaskNo()); diff --git a/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java index 63e7cd2..806bf19 100644 --- a/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.zy.asrs.entity.LocMast; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.mapper.WrkMastMapper; import com.zy.asrs.service.WrkMastService; @@ -27,4 +28,8 @@ return this.baseMapper.selectToBeHistoryData(); } + @Override + public List<LocMast> selectNoShuttleWrkByLev(Integer lev) { + return this.baseMapper.selectNoShuttleWrkByLev("%" + lev); + } } diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java index d862cba..bd681ed 100644 --- a/src/main/java/com/zy/asrs/utils/Utils.java +++ b/src/main/java/com/zy/asrs/utils/Utils.java @@ -582,7 +582,7 @@ ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿 assignCommand.setTaskNo((short) commonService.getWorkNo(7));//浠诲姟鍙� - assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id.shortValue());//绉诲姩鍒扮洰鏍囧簱浣� + assignCommand.setTaskMode(ShuttleTaskModeType.AVOID.id.shortValue());//閬胯浠诲姟 assignCommand.setSourceLocNo(startLocNo);//婧愬簱浣� //鍒嗛厤鐩爣搴撲綅 diff --git a/src/main/java/com/zy/core/enums/ShuttleTaskModeType.java b/src/main/java/com/zy/core/enums/ShuttleTaskModeType.java index 0ffce57..340dad8 100644 --- a/src/main/java/com/zy/core/enums/ShuttleTaskModeType.java +++ b/src/main/java/com/zy/core/enums/ShuttleTaskModeType.java @@ -19,6 +19,7 @@ MOVE_LOC_NO(14, "绉诲姩鍒扮洰鏍囧簱浣�"), CHARGE(15, "鍏呯數"), MOVE_LIFT(16, "绉诲姩鍒版彁鍗囨満"), + AVOID(17, "閬胯浠诲姟"), ; public Integer id; diff --git a/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java b/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java index 3cfe21e..065926c 100644 --- a/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java +++ b/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java @@ -251,7 +251,7 @@ if (chargeLine == null) { return false; } - return this.getBatteryPower$() > chargeLine; + return this.getBatteryPower$() >= chargeLine; } catch (Exception e) { News.error("fail", e); return false; diff --git a/src/main/java/com/zy/core/thread/ShuttleThread.java b/src/main/java/com/zy/core/thread/ShuttleThread.java index 88b5ab8..029180e 100644 --- a/src/main/java/com/zy/core/thread/ShuttleThread.java +++ b/src/main/java/com/zy/core/thread/ShuttleThread.java @@ -804,6 +804,10 @@ } } + if (commands.size() == 0) { + return false; + } + //鍙栧嚭鍛戒护 ShuttleCommand command = commands.get(commandStep); @@ -1069,8 +1073,13 @@ } private boolean executeLift(LiftThread liftThread, LiftProtocol liftProtocol, ShuttleRedisCommand redisCommand, Integer shuttleLocNoLev) {//璋冨害鎻愬崌鏈� - if (liftProtocol.getRunning()) { - //鎻愬崌鏈鸿繍琛屼腑锛岀姝笅鍙� + if (!liftProtocol.isIdle()) { + //鎻愬崌鏈轰笉绌洪棽绂佹涓嬪彂 + return false; + } + + if (liftProtocol.getPlatShuttleCheck()) { + //鎻愬崌鏈哄唴鏈夎溅绂佹涓嬪彂 return false; } diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml index 10794cc..0917047 100644 --- a/src/main/resources/mapper/WrkMastMapper.xml +++ b/src/main/resources/mapper/WrkMastMapper.xml @@ -272,4 +272,11 @@ where wrk_sts in (21,25) order by io_pri desc,wrk_sts desc </select> + + <select id="selectNoShuttleWrkByLev" resultMap="BaseResultMap"> + select * from dbo.asr_wrk_mast + where shuttle_no is null + and (wrk_sts = 2 and loc_no like #{lev}) or (wrk_sts = 21 and source_loc_no like #{lev}) + order by io_pri desc,wrk_sts desc + </select> </mapper> diff --git a/src/main/webapp/views/lift.html b/src/main/webapp/views/lift.html index c704819..b8f5ea6 100644 --- a/src/main/webapp/views/lift.html +++ b/src/main/webapp/views/lift.html @@ -65,6 +65,7 @@ <th>杩涜緭閫佺嚎鍗℃墭鐩樻姤璀�</th> <th>鍑鸿緭閫佺嚎鍗℃墭鐩樻姤璀�</th> <th>浣滀笟鏍囪</th> + <th>绌挎杞﹀彿</th> </tr> </thead> <tbody> @@ -369,6 +370,7 @@ setVal(tr.children("td").eq(7), table[i-1].inConveyLineCardTrayAlarm$); setVal(tr.children("td").eq(8), table[i-1].outConveyLineCardTrayAlarm$); setVal(tr.children("td").eq(9), table[i-1].pakMk); + setVal(tr.children("td").eq(10), table[i-1].shuttleNo); } } else if (res.code === 403){ window.location.href = baseUrl+"/login"; -- Gitblit v1.9.1