From bab376712985ae408f4886dc004be53e6eb46ff3 Mon Sep 17 00:00:00 2001 From: Junjie <xjj@123> Date: 星期五, 14 三月 2025 14:56:48 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 88 ++++++++++++++++++++++--------------------- 1 files changed, 45 insertions(+), 43 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 88d0687..bd953f2 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(); @@ -218,7 +214,7 @@ //涓嬪彂浠诲姟 shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand); //瑙﹀彂閫氱煡 - notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), NotifyMsgType.SHUTTLE_TRANSPORT); + notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_TRANSPORT); return false; } return false; @@ -394,7 +390,7 @@ //涓嬪彂浠诲姟 shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand); //瑙﹀彂閫氱煡 - notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), NotifyMsgType.SHUTTLE_TRANSPORT); + notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_TRANSPORT); return false; } return false; @@ -442,17 +438,17 @@ //310.灏忚溅绉诲姩涓� ==> 311.灏忚溅绉诲姩瀹屾垚 wrkMast.setWrkSts(WrkStsType.COMPLETE_MOVE.sts); shuttleThread.setSyncTaskNo(0); - notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), NotifyMsgType.SHUTTLE_MOVE_COMPLETE);//瑙﹀彂閫氱煡 + notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVE_COMPLETE);//瑙﹀彂閫氱煡 } else if (wrkMast.getWrkSts() == WrkStsType.CHARGE_SHUTTLE_WORKING.sts) { //204.灏忚溅鍏呯數涓� ==> 205.灏忚溅鍏呯數瀹屾垚 wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_COMPLETE.sts); shuttleThread.setSyncTaskNo(0); - notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), NotifyMsgType.SHUTTLE_POWER_COMPLETE);//瑙﹀彂閫氱煡 + notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_POWER_COMPLETE);//瑙﹀彂閫氱煡 } else if (wrkMast.getWrkSts() == WrkStsType.LOC_MOVE_SHUTTLE_RUN.sts) { //502.灏忚溅鎼繍涓� ==> 509.绉诲簱瀹屾垚 wrkMast.setWrkSts(WrkStsType.COMPLETE_LOC_MOVE.sts); shuttleThread.setSyncTaskNo(0); - notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), NotifyMsgType.SHUTTLE_DELIVERY);//瑙﹀彂閫氱煡 + notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_DELIVERY);//瑙﹀彂閫氱煡 } else { continue; } @@ -573,7 +569,7 @@ //涓嬪彂浠诲姟 shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand); //瑙﹀彂閫氱煡 - notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), NotifyMsgType.SHUTTLE_MOVING); + notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING); return false; } return false; @@ -1088,6 +1084,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 +1110,17 @@ //灏忚溅鎵�鍦ㄦゼ灞� 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 (wrkMastService.selectChargeWorkingByChargeSta(chargeType.id) == null) { - shuttleCharge = chargeType; + if (wrkMastService.selectChargeWorkingByChargeSta(charge.getChargeId()) == null) { + shuttleCharge = charge; break; } } @@ -1126,17 +1128,17 @@ if (shuttleCharge == null) { //鍚屾ゼ灞傛病鏈夋壘鍒板厖鐢垫々锛屾壘鍙敤鍏呯數妗� //灏忚溅鍚屾ゼ灞傛病鏈夊厖鐢垫々锛屽彧瑕佸厖鐢垫々鍙敤灏辩敓鎴愬厖鐢典换鍔� - for (ShuttleChargeType chargeType : ShuttleChargeType.values()) { - if (wrkMastService.selectChargeWorkingByChargeSta(chargeType.id) == null) { + for (BasShuttleCharge charge : charges) { + if (wrkMastService.selectChargeWorkingByChargeSta(charge.getChargeId()) == null) { //鍒ゆ柇褰撳墠鍏呯數妗╂ゼ灞傛槸鍚︽湁灏忚溅锛屽鏈夊皬杞︼紝涓嶅垎閰嶈鍏呯數妗� - int chargeLev = Utils.getLev(chargeType.locNo);//鍏呯數妗╂ゼ灞� + int chargeLev = Utils.getLev(charge.getLocNo());//鍏呯數妗╂ゼ灞� boolean checkLevHasShuttle = Utils.checkLevHasShuttle(chargeLev);//妫�娴嬫ゼ灞傛槸鍚︽湁绌挎杞� if (checkLevHasShuttle) { //褰撳墠鍏呯數妗╂ゼ灞傛湁绌挎杞︼紝涓嶅垎閰嶈鍏呯數妗� continue; } - shuttleCharge = chargeType; + shuttleCharge = charge; break; } } @@ -1146,9 +1148,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.鍏呯數 @@ -1312,7 +1314,7 @@ //涓嬪彂浠诲姟 shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand); - notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), NotifyMsgType.SHUTTLE_POWER_START);//瑙﹀彂閫氱煡 + notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_POWER_START);//瑙﹀彂閫氱煡 return false; } return true; @@ -1363,13 +1365,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; } @@ -1513,8 +1515,8 @@ if (wrkMastService.updateById(wrkMast)) { //涓嬪彂浠诲姟 shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand); + notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING); //瑙﹀彂閫氱煡 - notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), NotifyMsgType.SHUTTLE_MOVING); return false; } return false; -- Gitblit v1.9.1