From efbd157c0d810c39d04cd86752e769a3f3a1a1fc Mon Sep 17 00:00:00 2001 From: Junjie <540245094@qq.com> Date: 星期四, 11 九月 2025 16:57:03 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 53 +++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 45 insertions(+), 8 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 6524140..001543c 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -2,6 +2,7 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.core.common.SpringUtils; import com.zy.asrs.domain.enums.NotifyMsgType; import com.zy.asrs.entity.*; import com.zy.asrs.service.*; @@ -75,6 +76,8 @@ private DeviceConfigService deviceConfigService; @Autowired private LiftDispatchUtils liftDispatchUtils; + @Autowired + private BasShuttleService basShuttleService; /** * 鍒濆鍖栧疄鏃跺湴鍥� @@ -1094,8 +1097,26 @@ } //鍒ゆ柇褰撳墠灏忚溅鏄惁婊¤冻闇�瑕佸厖鐢佃姹� - if (!shuttleThread.isRequireCharge()) { - continue; + if (shuttleThread.isRequireCharge().equals(ShuttleRequireChargeType.NONE)) { + continue;//鏃犻渶鍏呯數 + } + + boolean forceCharge = true; + if (shuttleThread.isRequireCharge().equals(ShuttleRequireChargeType.SUGGEST_CHARGE)) { + BasShuttle basShuttle = basShuttleService.selectOne(new EntityWrapper<BasShuttle>().eq("shuttle_no", device.getDeviceNo())); + if (basShuttle != null) { + Integer suggestChargeLine = basShuttle.getSuggestChargeLine(); + boolean chargeSuggestResult = Integer.parseInt(shuttleProtocol.getBatteryPower()) < suggestChargeLine; + if (chargeSuggestResult) { + //妫�娴嬬郴缁熸槸鍚︽湁浠诲姟 + List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().in("io_type", 1, 101, 201)); + if (wrkMasts.isEmpty()) { + forceCharge = false; + }else { + continue; + } + } + } } WrkMast wrkMast1 = wrkMastService.selectShuttleWorking(shuttleProtocol.getShuttleNo()); @@ -1171,7 +1192,7 @@ wrkMast.setIoPri((double) 999); wrkMast.setLocNo(chargeLocNo); wrkMast.setShuttleNo(device.getDeviceNo()); - wrkMast.setMemo("charge"); + wrkMast.setMemo(forceCharge ? "forceCharge" : "suggestCharge"); wrkMast.setAppeTime(new Date()); if (!wrkMastService.insert(wrkMast)) { News.error("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟澶辫触!!!", device.getDeviceNo()); @@ -1321,7 +1342,7 @@ List<ShuttleCommand> commands = shuttleOperaUtils.getShuttleChargeCommand(assignCommand, shuttleThread, true); assignCommand.setCommands(commands);//杩愯鍛戒护 - wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_WORKING.sts); + wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_START_CHARGING.sts); wrkMast.setModiTime(new Date()); if (!wrkMastService.updateById(wrkMast)) { return false; @@ -1338,7 +1359,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; @@ -1348,7 +1369,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; } @@ -1371,7 +1401,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; @@ -1795,7 +1825,14 @@ return false; } - String targetLocNo = navigateUtils.calcFirstLocation(shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo(), NavigationMapType.getMapTypes(NavigationMapType.NORMAL), null, null, 2); + //灏忚溅鍑烘彁鍗囨満杩戠偣璺濈 + int shuttleOutLiftLocationDistance = 2; + Config shuttleOutLiftLocationDistanceConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "shuttleOutLiftLocationDistance")); + if (shuttleOutLiftLocationDistanceConfig != null) { + shuttleOutLiftLocationDistance = Integer.parseInt(shuttleOutLiftLocationDistanceConfig.getValue()); + } + + String targetLocNo = navigateUtils.calcFirstLocation(shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo(), NavigationMapType.getMapTypes(NavigationMapType.NORMAL), null, null, shuttleOutLiftLocationDistance); if (targetLocNo == null) {//鍑烘彁鍗囨満杩戠偣璁$畻澶辫触 News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽嚭鎻愬崌鏈鸿繎鐐硅绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); return false; -- Gitblit v1.9.1