From 720857266a5d45135c729962fede3b366e95e0b3 Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期三, 26 三月 2025 10:22:04 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 105 +++++++++++++++++++++++++++++++---------------------
1 files changed, 63 insertions(+), 42 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 cfdff9c..527e2ea 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -74,42 +74,35 @@
private ForkLiftAction forkLiftAction;
@Autowired
private NotifyUtils notifyUtils;
+ @Autowired
+ private BasShuttleChargeService basShuttleChargeService;
/**
* 鍒濆鍖栧疄鏃跺湴鍥�
*/
public synchronized void initRealtimeBasMap() {
try {
- for (int i = 1; i <= 4; i++) {//鎬诲叡鍥涘眰妤�
- Object data = redisUtil.get(RedisKeyType.MAP.key + i);
- if (data == null) {//redis鍦板浘鏁版嵁涓虹┖
- BasMap basMap = basMapService.selectLatestMap(i);
- if (basMap == null) {
- basMap = new BasMap();
- basMap.setCreateTime(new Date());
- basMap.setUpdateTime(new Date());
- basMap.setLev(i);
- if (!basMapService.insert(basMap)) {
- log.info("鍦板浘鏁版嵁瀛樺偍澶辫触");
- }
- }
+ List<BasMap> basMaps = basMapService.selectList(new EntityWrapper<BasMap>().orderBy("lev", true));
+ for (BasMap basMap : basMaps) {
+ Integer lev = basMap.getLev();
+ Object data = redisUtil.get(RedisKeyType.MAP.key + lev);
+ if (data == null) {//redis鍦板浘鏁版嵁涓虹┖
//杞藉叆鍦板浘
- List<List<MapNode>> lists = navigateMapData.getJsonData(i, -1, null, null);//鑾峰彇瀹屾暣鍦板浘(鍖呮嫭鍏ュ簱鍑哄簱)
+ List<List<MapNode>> lists = navigateMapData.getJsonData(lev, -1, null, null);//鑾峰彇瀹屾暣鍦板浘(鍖呮嫭鍏ュ簱鍑哄簱)
//瀛樺叆鏁版嵁搴�
basMap.setData(JSON.toJSONString(lists));
basMap.setCreateTime(new Date());
basMap.setUpdateTime(new Date());
- basMap.setLev(i);
-
if (!basMapService.updateById(basMap)) {
log.info("鍦板浘鏁版嵁瀛樺偍澶辫触");
}
//灏嗘暟鎹簱鍦板浘鏁版嵁瀛樺叆redis
- redisUtil.set(RedisKeyType.MAP.key + i, JSON.toJSONString(basMap));
+ redisUtil.set(RedisKeyType.MAP.key + lev, JSON.toJSONString(basMap));
}
+
}
} catch (Exception e) {
e.printStackTrace();
@@ -439,6 +432,9 @@
shuttleThread.setSyncTaskNo(0);
} else if (wrkMast.getWrkSts() == WrkStsType.MOVE_OUT_LIFT.sts) {
//308.灏忚溅杩佸嚭鎻愬崌鏈轰腑 ==> 309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴�
+ if (Utils.getLev(shuttleProtocol.getCurrentLocNo()) != Utils.getLev(wrkMast.getLocNo())) {
+ continue;//灏忚溅鏈埌杈剧洰鏍囧眰
+ }
wrkMast.setWrkSts(WrkStsType.MOVE_OUT_LIFT_COMPLETE.sts);
shuttleThread.setSyncTaskNo(0);
} else if (wrkMast.getWrkSts() == WrkStsType.MOVE_SHUTTLE.sts) {
@@ -1091,6 +1087,12 @@
*/
public synchronized void loopShuttleCharge() {
try {
+
+ List<BasShuttleCharge> charges = basShuttleChargeService.selectList(new EntityWrapper<BasShuttleCharge>().orderBy("charge_id", true));
+ if (charges.isEmpty()) {
+ return;//鏃犲厖鐢垫々
+ }
+
for (ShuttleSlave shuttle : slaveProperties.getShuttle()) {
//鑾峰彇鍥涘悜绌挎杞︾嚎绋�
ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId());
@@ -1111,17 +1113,21 @@
//灏忚溅鎵�鍦ㄦゼ灞�
int lev = Utils.getLev(shuttleProtocol.getCurrentLocNo());
- ShuttleChargeType shuttleCharge = null;
+ BasShuttleCharge shuttleCharge = null;
//鎼滅储灏忚溅鎵�鍦ㄦゼ灞傛湁娌℃湁鍏呯數妗�
- for (ShuttleChargeType chargeType : ShuttleChargeType.values()) {
- if (lev != Utils.getLev(chargeType.locNo)) {
+ for (BasShuttleCharge charge : charges) {
+ if (lev != Utils.getLev(charge.getLocNo())) {
continue;//灏忚溅鍜屽厖鐢垫々涓嶅湪鍚屼竴灞�
}
+ if (charge.getStatus() == 0) {
+ continue;//鍏呯數妗╄绂佺敤
+ }
+
//灏忚溅鍜屽厖鐢垫々鍦ㄥ悓涓�灞�
- if (wrkMastService.selectChargeWorkingByChargeSta(chargeType.id) == null) {
- shuttleCharge = chargeType;
+ if (wrkMastService.selectChargeWorkingByChargeSta(charge.getChargeId()) == null) {
+ shuttleCharge = charge;
break;
}
}
@@ -1129,17 +1135,22 @@
if (shuttleCharge == null) {
//鍚屾ゼ灞傛病鏈夋壘鍒板厖鐢垫々锛屾壘鍙敤鍏呯數妗�
//灏忚溅鍚屾ゼ灞傛病鏈夊厖鐢垫々锛屽彧瑕佸厖鐢垫々鍙敤灏辩敓鎴愬厖鐢典换鍔�
- for (ShuttleChargeType chargeType : ShuttleChargeType.values()) {
- if (wrkMastService.selectChargeWorkingByChargeSta(chargeType.id) == null) {
- //鍒ゆ柇褰撳墠鍏呯數妗╂ゼ灞傛槸鍚︽湁灏忚溅锛屽鏈夊皬杞︼紝涓嶅垎閰嶈鍏呯數妗�
- int chargeLev = Utils.getLev(chargeType.locNo);//鍏呯數妗╂ゼ灞�
- boolean checkLevHasShuttle = Utils.checkLevHasShuttle(chargeLev);//妫�娴嬫ゼ灞傛槸鍚︽湁绌挎杞�
- if (checkLevHasShuttle) {
- //褰撳墠鍏呯數妗╂ゼ灞傛湁绌挎杞︼紝涓嶅垎閰嶈鍏呯數妗�
+ for (BasShuttleCharge charge : charges) {
+ if (wrkMastService.selectChargeWorkingByChargeSta(charge.getChargeId()) == null) {
+ //鍒ゆ柇褰撳墠鍏呯數妗╂槸鍚︽湁灏忚溅锛屽鏈夊皬杞︼紝涓嶅垎閰嶈鍏呯數妗�
+ ArrayList<String> locs = new ArrayList<>();
+ locs.add(charge.getLocNo());
+ Integer checkHasShuttle = Utils.checkGroupLocHasShuttle(locs);
+ if(checkHasShuttle != null) {
+ //褰撳墠鍏呯數妗╂湁绌挎杞︼紝涓嶅垎閰嶈鍏呯數妗�
continue;
}
- shuttleCharge = chargeType;
+ if (charge.getStatus() == 0) {
+ continue;//鍏呯數妗╄绂佺敤
+ }
+
+ shuttleCharge = charge;
break;
}
}
@@ -1149,9 +1160,9 @@
continue;
}
- String chargeLocNo = shuttleCharge.locNo;
+ String chargeLocNo = shuttleCharge.getLocNo();
wrkMast = new WrkMast();
- wrkMast.setMk(String.valueOf(shuttleCharge.id));
+ wrkMast.setMk(String.valueOf(shuttleCharge.getChargeId()));
wrkMast.setWrkNo(commonService.getWorkNo(WrkIoType.SHUTTLE_CHARGE.id));
wrkMast.setWrkSts(WrkStsType.NEW_CHARGE.sts);
wrkMast.setIoType(WrkIoType.SHUTTLE_CHARGE.id);//300.鍏呯數
@@ -1366,13 +1377,13 @@
return false;
}
- ShuttleChargeType chargeType = ShuttleChargeType.get(Integer.parseInt(wrkMast.getMk()));
- if(chargeType == null) {
+ BasShuttleCharge basShuttleCharge = basShuttleChargeService.selectOne(new EntityWrapper<BasShuttleCharge>().eq("charge_id", wrkMast.getMk()));
+ if(basShuttleCharge == null) {
return false;
}
//璋冨害灏忚溅鍘诲緟鏈轰綅
- boolean dispatched = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), chargeType.waitLocNo, wrkMast.getShuttleNo());
+ boolean dispatched = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), basShuttleCharge.getWaitLocNo(), wrkMast.getShuttleNo());
if (!dispatched) {
return false;
}
@@ -1465,11 +1476,19 @@
return false;//鎵句笉鍒扮珯鐐�
}
- //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟(璇ヤ换鍔¢渶瑕佹崲灞傚繀椤绘彁鍓嶇嫭鍗犳彁鍗囨満)
- WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(liftSta.getLiftNo());
- if (liftWrkMast != null) {
- News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftSta.getLiftNo());
- return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
+ if (wrkMast.getLiftNo() == null) {
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟(璇ヤ换鍔¢渶瑕佹崲灞傚繀椤绘彁鍓嶇嫭鍗犳彁鍗囨満)
+ WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(liftSta.getLiftNo());
+ if (liftWrkMast != null) {
+ News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftSta.getLiftNo());
+ return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇�
+ }
+
+ wrkMast.setModiTime(now);
+ wrkMast.setLiftNo(liftSta.getLiftNo());//鎻愬墠閿佸畾鎻愬崌鏈�
+ wrkMast.setSystemMsg("");//娓呯┖娑堟伅
+ wrkMastService.updateById(wrkMast);
+ return false;
}
//*************灏濊瘯閿佸畾鐩爣绔欒矾寰�***************
@@ -1510,9 +1529,7 @@
wrkMast.setWrkSts(WrkStsType.MOVE_SITE.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 302.灏忚溅绉诲姩鑷崇珯鐐�
wrkMast.setModiTime(now);
- wrkMast.setLiftNo(liftSta.getLiftNo());//鎻愬墠閿佸畾鎻愬崌鏈�
wrkMast.setSystemMsg("");//娓呯┖娑堟伅
-// shuttleProtocol.setToken(wrkMast.getWrkNo());//鐙崰璇ュ皬杞︿护鐗�
if (wrkMastService.updateById(wrkMast)) {
//涓嬪彂浠诲姟
shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand);
@@ -1696,6 +1713,10 @@
List<ShuttleCommand> commands = null;
//璺ㄦゼ灞傜Щ鍔ㄤ换鍔�
if (Utils.getLev(wrkMast.getSourceLocNo()) != Utils.getLev(wrkMast.getLocNo())) {
+ if (Utils.getLev(shuttleProtocol.getCurrentLocNo()) != Utils.getLev(wrkMast.getLocNo())) {
+ return false;//灏忚溅鏈埌杈剧洰鏍囧眰
+ }
+
//闇�瑕佸皢鍓嶄袱涓妭鐐逛綔涓虹櫧鍚嶅崟鑺傜偣浼犲叆
List<NavigateNode> targetNodes = ForkLiftUtils.getLiftStaNodes(wrkMast.getStaNo());
if (targetNodes == null) {
--
Gitblit v1.9.1