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