From 5432b5251106ba5e8e5512c6868d31ebaec0b8ce Mon Sep 17 00:00:00 2001 From: Junjie <xjj@123> Date: 星期一, 31 三月 2025 09:59:07 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 120 ++++++++++++++++++++++++++++++++++++------------------------ 1 files changed, 72 insertions(+), 48 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 3a3d145..2713265 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -26,7 +26,6 @@ import com.zy.system.service.ConfigService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.util.*; @@ -39,8 +38,6 @@ @Service("mainService") public class MainServiceImpl { - @Value("${wms.url}") - private String wmsUrl; @Autowired private SlaveProperties slaveProperties; @Autowired @@ -77,36 +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) { - //鏁版嵁搴撲腑涔熶笉瀛樺湪鍦板浘鏁版嵁锛屼粠鍦板浘鏂囦欢涓幏鍙� - //杞藉叆鍦板浘 - List<List<MapNode>> lists = navigateMapData.getJsonData(i, -1, null, null);//鑾峰彇瀹屾暣鍦板浘(鍖呮嫭鍏ュ簱鍑哄簱) - //瀛樺叆鏁版嵁搴� - basMap = new BasMap(); - basMap.setData(JSON.toJSONString(lists)); - basMap.setCreateTime(new Date()); - basMap.setUpdateTime(new Date()); - basMap.setLev(i); + 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(lev, -1, null, null);//鑾峰彇瀹屾暣鍦板浘(鍖呮嫭鍏ュ簱鍑哄簱) - if (!basMapService.insert(basMap)) { - log.info("鍦板浘鏁版嵁瀛樺偍澶辫触"); - } + //瀛樺叆鏁版嵁搴� + basMap.setData(JSON.toJSONString(lists)); + basMap.setCreateTime(new Date()); + basMap.setUpdateTime(new Date()); + 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(); @@ -267,7 +263,7 @@ WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(liftNo); if (liftWrkMast != null) { if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚� - News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo()); + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftNo); return false; } } @@ -436,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) { @@ -717,7 +716,7 @@ } } - //妫�娴嬫ゼ灞傛槸鍚︽湁绌挎杞� + //妫�娴嬫ゼ灞傛槸鍚︽湁鍙敤绌挎杞� boolean checkLevHasShuttle = Utils.checkLevHasShuttle(liftSta.getLev()); if (!checkLevHasShuttle) { if (wrkMast.getShuttleNo() != null) { @@ -1088,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()); @@ -1108,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; } } @@ -1126,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; } } @@ -1146,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.鍏呯數 @@ -1363,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; } @@ -1462,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; } //*************灏濊瘯閿佸畾鐩爣绔欒矾寰�*************** @@ -1507,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); @@ -1693,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