From 7635dc25bd2a4d565df496b2d96354639966768d Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期四, 25 九月 2025 11:09:44 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/ForkMainServiceImpl.java | 83 +++++++++++++++++++++++++----------------
1 files changed, 51 insertions(+), 32 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/ForkMainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/ForkMainServiceImpl.java
index c69b0b5..40f5529 100644
--- a/src/main/java/com/zy/asrs/service/impl/ForkMainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/ForkMainServiceImpl.java
@@ -15,11 +15,13 @@
import com.zy.core.action.ForkLiftAction;
import com.zy.core.action.ShuttleAction;
import com.zy.core.cache.SlaveConnection;
+import com.zy.core.dispatcher.ForkLiftDispatchUtils;
import com.zy.core.dispatcher.ShuttleDispatchUtils;
import com.zy.core.enums.*;
import com.zy.core.model.command.*;
import com.zy.core.model.protocol.ForkLiftProtocol;
import com.zy.core.model.protocol.ForkLiftStaProtocol;
+import com.zy.core.model.protocol.LiftStaProtocol;
import com.zy.core.model.protocol.ShuttleProtocol;
import com.zy.core.thread.ForkLiftThread;
import com.zy.core.thread.ShuttleThread;
@@ -35,7 +37,6 @@
/**
* 绔嬩綋浠撳簱WCS绯荤粺涓绘祦绋嬩笟鍔�
- * Created by vincent on 2020/8/6
*/
@Slf4j
@Service("forkMainService")
@@ -62,8 +63,6 @@
@Autowired
private ConfigService configService;
@Autowired
- private NavigateMapUtils navigateMapUtils;
- @Autowired
private NavigateMapData navigateMapData;
@Autowired
private NavigateUtils navigateUtils;
@@ -79,6 +78,8 @@
private BasShuttleChargeService basShuttleChargeService;
@Autowired
private DeviceConfigService deviceConfigService;
+ @Autowired
+ private ForkLiftDispatchUtils forkLiftDispatchUtils;
/**
* 鍒濆鍖栧疄鏃跺湴鍥�
@@ -186,10 +187,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;
}
@@ -303,12 +304,12 @@
}
if (liftSta.getHasCar()) {
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}绔欑偣瀛樺湪灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftSta.getStaNo());
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}绔欑偣瀛樺湪灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftSta.getSiteId());
return false;
}
if (liftSta.getHasTray()) {
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}绔欑偣鏈夋墭鐩橈紝绂佹娲惧彂", wrkMast.getWrkNo(), liftSta.getStaNo());
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}绔欑偣鏈夋墭鐩橈紝绂佹娲惧彂", wrkMast.getWrkNo(), liftSta.getSiteId());
return false;
}
@@ -377,10 +378,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;
}
@@ -428,7 +429,7 @@
assignCommand.setCommands(commands);
wrkMast.setWrkSts(WrkStsType.OUTBOUND_SHUTTLE_RUN.sts);//灏忚溅鎼繍涓� 101.鐢熸垚鍑哄簱浠诲姟 ==> 102.灏忚溅鎼繍涓�
- wrkMast.setSourceStaNo(liftSta.getStaNo());
+ wrkMast.setSourceStaNo(liftSta.getSiteId());
wrkMast.setModiTime(new Date());
wrkMast.setSystemMsg("");//娓呯┖娑堟伅
if (wrkMastService.updateById(wrkMast)) {
@@ -519,10 +520,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;
}
@@ -770,12 +771,12 @@
}
if (liftSta.getHasCar()) {
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}绔欑偣瀛樺湪灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftSta.getStaNo());
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}绔欑偣瀛樺湪灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftSta.getSiteId());
return false;
}
if (!liftSta.getHasTray()) {
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}绔欑偣鏃犳墭鐩橈紝绂佹娲惧彂", wrkMast.getWrkNo(), liftSta.getStaNo());
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}绔欑偣鏃犳墭鐩橈紝绂佹娲惧彂", wrkMast.getWrkNo(), liftSta.getSiteId());
return false;
}
@@ -897,7 +898,7 @@
News.error("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傛彁鍗囨満鍙�={}锛屽伐浣滃彿={}", forkLiftProtocol.getLiftNo(), forkLiftProtocol.getWrkNo());
}
}else {
- boolean checkPreviewDispatchForkLift = commonService.checkWorkNoContainMk(forkLiftProtocol.getWrkNo(), WrkIoType.FORKLIFT_MOVE.id);
+ boolean checkPreviewDispatchForkLift = commonService.checkWorkNoContainMk(forkLiftProtocol.getWrkNo(), WrkIoType.PREVIEW_LIFT_MOVE.id);
if (checkPreviewDispatchForkLift) {
//灞炰簬鎻愬崌鏈洪璋冨害绉诲姩浠诲姟
//鏃犲伐浣滄。鏀拺锛岀洿鎺ョ‘璁ゅ畬鎴�
@@ -1096,7 +1097,7 @@
}
//鍒ゆ柇褰撳墠灏忚溅鏄惁婊¤冻闇�瑕佸厖鐢佃姹�
- if (!shuttleThread.isRequireCharge()) {
+ if (shuttleThread.isRequireCharge().equals(ShuttleRequireChargeType.NONE)) {
continue;
}
@@ -1323,7 +1324,7 @@
List<ShuttleCommand> commands = shuttleOperaUtils.getShuttleChargeCommand(assignCommand, shuttleThread, true);
assignCommand.setCommands(commands);//杩愯鍛戒护
- wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_WORKING.sts);
+ wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_CHARGING.sts);
wrkMast.setModiTime(new Date());
if (!wrkMastService.updateById(wrkMast)) {
return false;
@@ -1340,7 +1341,7 @@
//灏忚溅鍋滄鍏呯數
private synchronized boolean executeShuttleChargeStepStopCharge(WrkMast wrkMast) {
- if (wrkMast.getWrkSts() == WrkStsType.CHARGE_SHUTTLE_WORKING.sts) {
+ if (wrkMast.getWrkSts() == WrkStsType.CHARGE_SHUTTLE_CHARGING.sts) {
ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
if (shuttleThread == null) {
return false;
@@ -1350,7 +1351,16 @@
return false;
}
- if (!shuttleThread.isChargingCompleted()) {
+ boolean stopCharge = false;
+ if (wrkMast.getMemo().equals("suggestChargeTaskStop")) {
+ stopCharge = true;
+ }else {
+ if (shuttleThread.isChargingCompleted()) {
+ stopCharge = true;
+ }
+ }
+
+ if (!stopCharge) {
return false;
}
@@ -1366,6 +1376,12 @@
//涓嬪彂浠诲姟
shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
+
+ wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_CHARGING_COMPLETE.sts);
+ wrkMast.setModiTime(new Date());
+ if (wrkMastService.updateById(wrkMast)) {
+ return false;
+ }
return false;
}
return true;
@@ -1373,7 +1389,7 @@
//灏忚溅绂诲紑鍏呯數妗�
private synchronized boolean executeShuttleChargeStepLeaveCharge(WrkMast wrkMast) {
- if (wrkMast.getWrkSts() == WrkStsType.CHARGE_SHUTTLE_COMPLETE.sts) {
+ if (wrkMast.getWrkSts() == WrkStsType.CHARGE_SHUTTLE_CHARGING_COMPLETE.sts) {
ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo());
if (shuttleThread == null) {
return false;
@@ -1389,10 +1405,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;
}
@@ -1490,24 +1506,25 @@
return false;
}
- //鑾峰彇婧愯緭閫佺珯
- ForkLiftStaProtocol liftSta = ForkLiftUtils.getLiftStaByStaNo(wrkMast.getSourceStaNo());
- if (liftSta == null) {
- return false;//鎵句笉鍒扮珯鐐�
+ //鎼滅储鏈�杩戜笖鏃犳晠闅滄彁鍗囨満
+ ForkLiftStaProtocol recentLiftStation = forkLiftDispatchUtils.getRecentLiftStation(shuttleProtocol.getShuttleNo(), Utils.getLev(wrkMast.getLocNo()));
+ if(recentLiftStation == null) {
+ News.info("{}鍙峰皬杞︼紝{}鐩爣搴撲綅锛屾病鏈夊彲鐢ㄧ┖闂茶緭閫佺珯鐐�", shuttleProtocol.getShuttleNo(), wrkMast.getLocNo());
+ return false;
}
- if (liftSta.getHasTray()) {
+ if (recentLiftStation.getHasTray()) {
News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾簮绔欏瓨鍦ㄦ墭鐩�", wrkMast.getWrkNo());
return false;
}
- if (liftSta.getHasCar()) {
+ if (recentLiftStation.getHasCar()) {
News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾簮绔欏瓨鍦ㄥ皬杞�", wrkMast.getWrkNo());
return false;
}
//鑾峰彇鐩爣杈撻�佺珯
- ForkLiftStaProtocol liftStaTarget = ForkLiftUtils.getLiftStaByStaNo(wrkMast.getStaNo());
+ ForkLiftStaProtocol liftStaTarget = ForkLiftUtils.getLiftStaByLev(recentLiftStation.getLiftNo(), Utils.getLev(wrkMast.getLocNo()));
if (liftStaTarget == null) {
return false;//鎵句笉鍒扮珯鐐�
}
@@ -1529,7 +1546,7 @@
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;
@@ -1554,6 +1571,8 @@
assignCommand.setCommands(commands);
wrkMast.setWrkSts(WrkStsType.MOVE_NEARBY.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 302.灏忚溅绉诲姩鑷宠繎鐐逛腑
+ wrkMast.setSourceStaNo(recentLiftStation.getSiteId());
+ wrkMast.setStaNo(liftStaTarget.getSiteId());
wrkMast.setModiTime(now);
wrkMast.setSystemMsg("");//娓呯┖娑堟伅
if (wrkMastService.updateById(wrkMast)) {
@@ -1660,7 +1679,7 @@
assignCommand.setAuto(true);//鑷姩妯″紡
//鑾峰彇灏忚溅鍒版彁鍗囨満琛岃蛋鍛戒护
- List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftSta.getLocNo(), NavigationMapType.getNormalWithDevice(), assignCommand, shuttleThread);
+ List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftSta.getLocNo(), NavigationMapType.getMapTypes(NavigationMapType.NORMAL), assignCommand, shuttleThread);
if (commands == null) {
News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo());
return false;//璺緞瑙i攣澶辫触
@@ -2000,7 +2019,7 @@
}
//绉诲姩
- int workNo = commonService.getWorkNo(WrkIoType.FORKLIFT_MOVE.id);//鑾峰彇浠诲姟鍙�
+ int workNo = commonService.getWorkNo(WrkIoType.PREVIEW_LIFT_MOVE.id);//鑾峰彇浠诲姟鍙�
//鑾峰彇鎻愬崌鏈哄懡浠�
ForkLiftCommand liftCommand = forkLiftThread.getMoveCommand(workNo, forkLiftProtocol.getLev(), Utils.getLev(wrkMast.getSourceLocNo()));
--
Gitblit v1.9.1