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/entity/BasShuttle.java | 7 src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java | 5 src/main/java/com/zy/asrs/domain/param/ConfigUpdateBatchParam.java | 12 + src/main/java/com/zy/core/thread/impl/NyShuttleThread.java | 34 ++ src/main/java/com/zy/common/utils/ShuttleOperaUtils.java | 12 + src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 53 ++++ src/main/java/com/zy/core/enums/ShuttleRequireChargeType.java | 41 ++++ src/main/java/com/zy/core/thread/ShuttleThread.java | 3 src/main/resources/mapper/BasShuttleMapper.xml | 1 src/main/java/com/zy/system/controller/ConfigController.java | 26 ++ src/main/java/com/zy/asrs/utils/ShuttleTaskUtils.java | 11 src/main/java/com/zy/core/enums/WrkStsType.java | 5 src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java | 5 src/main/java/com/zy/core/action/ShuttleAction.java | 2 src/main/webapp/static/js/basShuttle/basShuttle.js | 7 src/main/webapp/views/admin/debugParam/debugParam.html | 285 ++++++++++++++++++++++++++++ src/main/java/com/zy/asrs/service/impl/ForkMainServiceImpl.java | 25 ++ src/main/webapp/views/admin/basShuttle/basShuttle.html | 36 ++- 18 files changed, 519 insertions(+), 51 deletions(-) diff --git a/src/main/java/com/zy/asrs/domain/param/ConfigUpdateBatchParam.java b/src/main/java/com/zy/asrs/domain/param/ConfigUpdateBatchParam.java new file mode 100644 index 0000000..c8df0ae --- /dev/null +++ b/src/main/java/com/zy/asrs/domain/param/ConfigUpdateBatchParam.java @@ -0,0 +1,12 @@ +package com.zy.asrs.domain.param; + +import lombok.Data; + +@Data +public class ConfigUpdateBatchParam { + + private String code; + + private String value; + +} diff --git a/src/main/java/com/zy/asrs/entity/BasShuttle.java b/src/main/java/com/zy/asrs/entity/BasShuttle.java index 1ee828b..12dafc7 100644 --- a/src/main/java/com/zy/asrs/entity/BasShuttle.java +++ b/src/main/java/com/zy/asrs/entity/BasShuttle.java @@ -70,6 +70,13 @@ private Integer chargeLine; /** + * 寤鸿鐢甸噺绾� + */ + @ApiModelProperty(value= "寤鸿鐢甸噺绾�") + @TableField("suggest_charge_line") + private Integer suggestChargeLine; + + /** * 娣诲姞浜哄憳 */ @ApiModelProperty(value= "娣诲姞浜哄憳") 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 c67d3f2..b8af362 100644 --- a/src/main/java/com/zy/asrs/service/impl/ForkMainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/ForkMainServiceImpl.java @@ -1097,7 +1097,7 @@ } //鍒ゆ柇褰撳墠灏忚溅鏄惁婊¤冻闇�瑕佸厖鐢佃姹� - if (!shuttleThread.isRequireCharge()) { + if (shuttleThread.isRequireCharge().equals(ShuttleRequireChargeType.NONE)) { continue; } @@ -1324,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; @@ -1341,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; @@ -1351,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; } @@ -1367,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; @@ -1374,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; 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; diff --git a/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java index 0422e92..bf2033e 100644 --- a/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java @@ -123,8 +123,9 @@ , WrkStsType.NEW_CHARGE.sts , WrkStsType.CHARGE_SHUTTLE_RUN.sts - , WrkStsType.CHARGE_SHUTTLE_WORKING.sts - , WrkStsType.CHARGE_SHUTTLE_COMPLETE.sts + , WrkStsType.CHARGE_SHUTTLE_RUN_COMPLETE.sts + , WrkStsType.CHARGE_SHUTTLE_CHARGING.sts + , WrkStsType.CHARGE_SHUTTLE_CHARGING_COMPLETE.sts ).eq("shuttle_no", shuttleNo)); if (Cools.isEmpty(wrkMasts)) { return false; diff --git a/src/main/java/com/zy/asrs/utils/ShuttleTaskUtils.java b/src/main/java/com/zy/asrs/utils/ShuttleTaskUtils.java index 61169c1..695d85a 100644 --- a/src/main/java/com/zy/asrs/utils/ShuttleTaskUtils.java +++ b/src/main/java/com/zy/asrs/utils/ShuttleTaskUtils.java @@ -90,9 +90,14 @@ wrkMast.setWrkSts(WrkStsType.COMPLETE_MOVE.sts); shuttleThread.setSyncTaskNo(0); 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); + } else if (wrkMast.getWrkSts() == WrkStsType.CHARGE_SHUTTLE_START_CHARGING.sts) { + //204.灏忚溅寮�鍚厖鐢典腑 ==> 205.灏忚溅鍏呯數涓� + wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_CHARGING.sts); + shuttleThread.setSyncTaskNo(0); + notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_POWER_COMPLETE);//瑙﹀彂閫氱煡 + } else if (wrkMast.getWrkSts() == WrkStsType.CHARGE_SHUTTLE_CHARGING.sts) { + //205.灏忚溅鍏呯數涓� ==> 206.灏忚溅鍏呯數瀹屾垚 + wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_CHARGING_COMPLETE.sts); shuttleThread.setSyncTaskNo(0); 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) { diff --git a/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java b/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java index 2f826fc..7cdbed3 100644 --- a/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java +++ b/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java @@ -371,7 +371,17 @@ int[] pointArr = NavigatePositionConvert.positionToXY(locNo); NavigateNode currentNode = new NavigateNode(pointArr[0], pointArr[1]); currentNode.setZ(lev); - innerNodes.add(currentNode); + + boolean addCurrentNode = true; + for (int[] shuttlePoint : whiteShuttlePointList) { + if(currentNode.getX() == shuttlePoint[0] && currentNode.getY() == shuttlePoint[1]) { + addCurrentNode = false; + break; + } + } + if (addCurrentNode) { + innerNodes.add(currentNode); + } List<List<MapNode>> lists = navigateMapData.getJsonData(lev, NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);//鑾峰彇瀹屾暣鍦板浘 int[][] map = navigateMapData.parseJsonDataArr(lists); diff --git a/src/main/java/com/zy/core/action/ShuttleAction.java b/src/main/java/com/zy/core/action/ShuttleAction.java index d3e961f..3df5b16 100644 --- a/src/main/java/com/zy/core/action/ShuttleAction.java +++ b/src/main/java/com/zy/core/action/ShuttleAction.java @@ -565,7 +565,7 @@ return; } - if (shuttleThread.isRequireCharge()) { + if (!shuttleThread.isRequireCharge().equals(ShuttleRequireChargeType.NONE)) { return; } diff --git a/src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java b/src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java index 18ec992..a3b29bf 100644 --- a/src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java +++ b/src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java @@ -401,6 +401,11 @@ //鍒ゆ柇鏄惁鏈夊厖鐢典换鍔℃鍦ㄤ娇鐢ㄧ┛姊溅 WrkMast wrkMast = wrkMastService.selectChargeWorking(shuttleNo); if (wrkMast != null) { + if (wrkMast.getMemo().equals("suggestCharge")) { + wrkMast.setMemo("suggestChargeTaskStop");//鏂紑鍏呯數 + wrkMast.setModiTime(new Date()); + wrkMastService.updateById(wrkMast); + } return true;//鏈夊厖鐢典换鍔� } return false;//鏃犲厖鐢典换鍔� diff --git a/src/main/java/com/zy/core/enums/ShuttleRequireChargeType.java b/src/main/java/com/zy/core/enums/ShuttleRequireChargeType.java new file mode 100644 index 0000000..f2b7530 --- /dev/null +++ b/src/main/java/com/zy/core/enums/ShuttleRequireChargeType.java @@ -0,0 +1,41 @@ +package com.zy.core.enums; + +public enum ShuttleRequireChargeType { + + NONE(0, "鏃犻渶鍏呯數"), + FORCE_CHARGE(1, "寮哄埗鍏呯數"), + SUGGEST_CHARGE(2, "寤鸿鍏呯數") + ; + + public Integer id; + public String desc; + + ShuttleRequireChargeType(Integer id, String desc) { + this.id = id; + this.desc = desc; + } + + public static ShuttleRequireChargeType get(Short id) { + if (null == id) { + return null; + } + for (ShuttleRequireChargeType type : ShuttleRequireChargeType.values()) { + if (type.id.equals(id.intValue())) { + return type; + } + } + return null; + } + + public static ShuttleRequireChargeType get(ShuttleRequireChargeType type) { + if (null == type) { + return null; + } + for (ShuttleRequireChargeType type1 : ShuttleRequireChargeType.values()) { + if (type1 == type) { + return type1; + } + } + return null; + } +} diff --git a/src/main/java/com/zy/core/enums/WrkStsType.java b/src/main/java/com/zy/core/enums/WrkStsType.java index 5b45eda..d72f4b4 100644 --- a/src/main/java/com/zy/core/enums/WrkStsType.java +++ b/src/main/java/com/zy/core/enums/WrkStsType.java @@ -24,8 +24,9 @@ NEW_CHARGE(201, "鐢熸垚鍏呯數浠诲姟"), CHARGE_SHUTTLE_RUN(202, "灏忚溅鍓嶅線鍏呯數妗�"), CHARGE_SHUTTLE_RUN_COMPLETE(203, "灏忚溅鍒拌揪鍏呯數妗�"), - CHARGE_SHUTTLE_WORKING(204, "灏忚溅鍏呯數涓�"), - CHARGE_SHUTTLE_COMPLETE(205, "灏忚溅鍏呯數瀹屾垚"), + CHARGE_SHUTTLE_START_CHARGING(204, "灏忚溅寮�鍚厖鐢典腑"), + CHARGE_SHUTTLE_CHARGING(205, "灏忚溅鍏呯數涓�"), + CHARGE_SHUTTLE_CHARGING_COMPLETE(206, "灏忚溅鍏呯數瀹屾垚"), COMPLETE_CHARGE(210, "鍏呯數浠诲姟瀹屾垚"), NEW_MOVE(301, "鐢熸垚杩佺Щ浠诲姟"), diff --git a/src/main/java/com/zy/core/thread/ShuttleThread.java b/src/main/java/com/zy/core/thread/ShuttleThread.java index 228afb4..02d6120 100644 --- a/src/main/java/com/zy/core/thread/ShuttleThread.java +++ b/src/main/java/com/zy/core/thread/ShuttleThread.java @@ -6,6 +6,7 @@ import com.zy.common.model.NavigateNode; import com.zy.core.ThreadHandler; import com.zy.core.enums.ShuttleProtocolStatusType; +import com.zy.core.enums.ShuttleRequireChargeType; import com.zy.core.enums.ShuttleTaskNoType; import com.zy.core.model.CommandResponse; import com.zy.core.model.command.ShuttleCommand; @@ -42,7 +43,7 @@ boolean isDeviceIdle(ExecuteSupport support);//璁惧鏄惁绌洪棽 - boolean isRequireCharge();//鏄惁婊¤冻鍏呯數鐘舵�� + ShuttleRequireChargeType isRequireCharge();//鏄惁婊¤冻鍏呯數鐘舵�� boolean isCharging();//鏄惁鍏呯數涓� diff --git a/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java b/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java index 53fbe7f..e124f84 100644 --- a/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java +++ b/src/main/java/com/zy/core/thread/impl/NyShuttleThread.java @@ -577,7 +577,7 @@ } @Override - public boolean isRequireCharge() { + public ShuttleRequireChargeType isRequireCharge() { if (this.shuttleProtocol.getDeviceStatus() == null || this.shuttleProtocol.getPakMk() == null || this.shuttleProtocol.getErrorCode() == null @@ -585,7 +585,7 @@ || this.shuttleProtocol.getMode() == null || this.shuttleProtocol.getExtend() == null ) { - return false; + return ShuttleRequireChargeType.NONE; } InnerSuhttleExtend extend = (InnerSuhttleExtend) this.shuttleProtocol.getExtend(); @@ -598,25 +598,43 @@ && extend.getSuspendState() == 0 ; if (!res) { - return res; + return ShuttleRequireChargeType.NONE; } else { // 鐢甸噺灏忎簬闃堝�奸渶瑕佽繘琛屽厖鐢� try { BasShuttleService shuttleService = SpringUtils.getBean(BasShuttleService.class); if (shuttleService == null) { - return false; + return ShuttleRequireChargeType.NONE; } + BasShuttle basShuttle = shuttleService.selectOne(new EntityWrapper<BasShuttle>().eq("shuttle_no", deviceConfig.getDeviceNo())); if (basShuttle == null) { - return false; + return ShuttleRequireChargeType.NONE; } + Integer chargeLine = basShuttle.getChargeLine(); if (chargeLine == null) { - return false; + return ShuttleRequireChargeType.NONE; } - return Integer.valueOf(this.shuttleProtocol.getBatteryPower()) < chargeLine; + + boolean chargeResult = Integer.valueOf(this.shuttleProtocol.getBatteryPower()) < chargeLine; + if (chargeResult) { + return ShuttleRequireChargeType.FORCE_CHARGE;//闇�瑕佸己鍒跺厖鐢� + } + + Integer suggestChargeLine = basShuttle.getSuggestChargeLine(); + if (suggestChargeLine == null) { + return ShuttleRequireChargeType.NONE; + } + + boolean suggestChargeResult = Integer.valueOf(this.shuttleProtocol.getBatteryPower()) < suggestChargeLine; + if (suggestChargeResult) { + return ShuttleRequireChargeType.SUGGEST_CHARGE;//寤鸿鍏呯數 + } + + return ShuttleRequireChargeType.NONE; } catch (Exception e) { - return false; + return ShuttleRequireChargeType.NONE; } } } diff --git a/src/main/java/com/zy/system/controller/ConfigController.java b/src/main/java/com/zy/system/controller/ConfigController.java index a005512..e5a5639 100644 --- a/src/main/java/com/zy/system/controller/ConfigController.java +++ b/src/main/java/com/zy/system/controller/ConfigController.java @@ -9,6 +9,7 @@ import com.core.common.DateUtils; import com.core.common.R; import com.core.controller.AbstractBaseController; +import com.zy.asrs.domain.param.ConfigUpdateBatchParam; import com.zy.common.entity.Parameter; import com.zy.system.entity.Config; import com.zy.system.service.ConfigService; @@ -43,6 +44,14 @@ return R.ok(configService.selectPage(new Page<>(curr, limit), wrapper)); } + @RequestMapping(value = "/config/listAll/auth") + @ManagerAuth + public R listAll(){ + EntityWrapper<Config> wrapper = new EntityWrapper<>(); + wrapper.orderBy("id", false); + return R.ok(configService.selectList(wrapper)); + } + private void convert(Map<String, Object> map, EntityWrapper wrapper){ for (Map.Entry<String, Object> entry : map.entrySet()){ if (entry.getKey().endsWith(">")) { @@ -55,6 +64,23 @@ } } + @RequestMapping(value = "/config/updateBatch") + @ManagerAuth + public R updateBatch(@RequestBody List<ConfigUpdateBatchParam> params){ + for (ConfigUpdateBatchParam param : params) { + String code = param.getCode(); + String value = param.getValue(); + Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", code)); + if (config == null) { + continue; + } + + config.setValue(value); + configService.updateById(config); + } + return R.ok(); + } + @RequestMapping(value = "/config/edit/auth") @ManagerAuth public R edit(Config config) { diff --git a/src/main/resources/mapper/BasShuttleMapper.xml b/src/main/resources/mapper/BasShuttleMapper.xml index 5e44550..4860a85 100644 --- a/src/main/resources/mapper/BasShuttleMapper.xml +++ b/src/main/resources/mapper/BasShuttleMapper.xml @@ -11,6 +11,7 @@ <result column="idle_loc" property="idleLoc" /> <result column="auto_charge" property="autoCharge" /> <result column="charge_line" property="chargeLine" /> + <result column="suggest_charge_line" property="suggestChargeLine" /> <result column="create_by" property="createBy" /> <result column="create_time" property="createTime" /> <result column="update_by" property="updateBy" /> diff --git a/src/main/webapp/static/js/basShuttle/basShuttle.js b/src/main/webapp/static/js/basShuttle/basShuttle.js index ca1c240..0c6dbae 100644 --- a/src/main/webapp/static/js/basShuttle/basShuttle.js +++ b/src/main/webapp/static/js/basShuttle/basShuttle.js @@ -24,17 +24,14 @@ {type: 'checkbox'} ,{field: 'shuttleNo', align: 'center',title: '鍥涘悜绌挎杞﹀彿', width: 120} ,{field: 'status$', align: 'center',title: '鐘舵��'} - // ,{field: 'shuttleStatus', align: 'center',title: '浣滀笟鎬�'} - ,{field: 'wrkNo', align: 'center',title: '浠诲姟鍙�'} - // ,{field: 'idleLoc', align: 'center',title: '鏆傚瓨搴撲綅'} + // ,{field: 'wrkNo', align: 'center',title: '浠诲姟鍙�'} ,{field: 'chargeLine', align: 'center',title: '鐢甸噺绾�'} - ,{field: 'currentCode', align: 'center',title: '浜岀淮鐮�'} + ,{field: 'suggestChargeLine', align: 'center',title: '寤鸿鐢甸噺绾�'} // ,{field: 'createBy$', align: 'center',title: '娣诲姞浜哄憳'} // ,{field: 'createTime$', align: 'center',title: '娣诲姞鏃堕棿'} // ,{field: 'updateBy$', align: 'center',title: '淇敼浜哄憳'} // ,{field: 'updateTime$', align: 'center',title: '淇敼鏃堕棿'} ,{field: 'memo', align: 'center',title: '澶囨敞'} - ,{field: 'pakMk$', align: 'center',title: '鏍囪'} ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:120} ]], diff --git a/src/main/webapp/views/admin/basShuttle/basShuttle.html b/src/main/webapp/views/admin/basShuttle/basShuttle.html index fa5c78c..2118290 100644 --- a/src/main/webapp/views/admin/basShuttle/basShuttle.html +++ b/src/main/webapp/views/admin/basShuttle/basShuttle.html @@ -87,12 +87,12 @@ </select> </div> </div> - <div class="layui-form-item"> - <label class="layui-form-label">浠诲姟鍙�: </label> - <div class="layui-input-block"> - <input class="layui-input" name="wrkNo" placeholder="璇疯緭鍏ヤ换鍔″彿"> - </div> - </div> +<!-- <div class="layui-form-item">--> +<!-- <label class="layui-form-label">浠诲姟鍙�: </label>--> +<!-- <div class="layui-input-block">--> +<!-- <input class="layui-input" name="wrkNo" placeholder="璇疯緭鍏ヤ换鍔″彿">--> +<!-- </div>--> +<!-- </div>--> <!-- <div class="layui-form-item">--> <!-- <label class="layui-form-label">鑷姩鍏呯數: </label>--> <!-- <div class="layui-input-block">--> @@ -106,20 +106,26 @@ </div> </div> <div class="layui-form-item"> + <label class="layui-form-label">寤鸿鐢甸噺绾�: </label> + <div class="layui-input-block"> + <input class="layui-input" name="suggestChargeLine" placeholder="璇疯緭鍏ュ缓璁數閲忕嚎"> + </div> + </div> + <div class="layui-form-item"> <label class="layui-form-label">澶囨敞: </label> <div class="layui-input-block"> <input class="layui-input" name="memo" placeholder="璇疯緭鍏ュ娉�"> </div> </div> - <div class="layui-form-item"> - <label class="layui-form-label">鏍囪: </label> - <div class="layui-input-block"> - <select name="pakMk"> - <option value="1">Y</option> - <option value="0">N</option> - </select> - </div> - </div> +<!-- <div class="layui-form-item">--> +<!-- <label class="layui-form-label">鏍囪: </label>--> +<!-- <div class="layui-input-block">--> +<!-- <select name="pakMk">--> +<!-- <option value="1">Y</option>--> +<!-- <option value="0">N</option>--> +<!-- </select>--> +<!-- </div>--> +<!-- </div>--> </div> </div> diff --git a/src/main/webapp/views/admin/debugParam/debugParam.html b/src/main/webapp/views/admin/debugParam/debugParam.html new file mode 100644 index 0000000..2b7dee2 --- /dev/null +++ b/src/main/webapp/views/admin/debugParam/debugParam.html @@ -0,0 +1,285 @@ +<!DOCTYPE html> +<html lang="en"> + + <head> + <meta charset="UTF-8"> + <title>璋冭瘯鍙傛暟</title> + <link rel="stylesheet" href="../../../static/vue/element/element.css"> + <script type="text/javascript" src="../../../static/js/jquery/jquery-3.3.1.min.js"></script> + <script type="text/javascript" src="../../../static/js/common.js"></script> + <script type="text/javascript" src="../../../static/vue/js/vue.min.js"></script> + <script type="text/javascript" src="../../../static/vue/element/element.js"></script> + <style> + .show-box { + width: 20%; + display: flex; + justify-content: flex-start; + align-items: center; + margin-bottom: 30px; + } + </style> + </head> + + <body> + <div id="app"> + <div> + <el-card class="box-card"> + <div slot="header" class="clearfix"> + <span>璋冨害鍙傛暟</span> + </div> + + <div style="display: flex;flex-wrap: wrap;"> + <div class="show-box"> + <div>璋冨害灏忚溅鍚屽眰鏈�澶ф暟閲�</div> + <el-input v-model="codeMap.dispatchShuttleMaxNum" style="width: 60%;"></el-input> + </div> + + <div class="show-box"> + <div>鍏ュ簱棰勭暀灏忚溅</div> + <el-input v-model="codeMap.shuttleWrkInObligateCount" style="width: 60%;"></el-input> + </div> + + <div class="show-box"> + <div>閬块殰鍐呭湀鍗婂緞</div> + <el-input v-model="codeMap.avoidInnerCircle" style="width: 60%;"></el-input> + </div> + + <div class="show-box"> + <div>閬块殰澶栧湀鍗婂緞</div> + <el-input v-model="codeMap.avoidOuterCircle" style="width: 60%;"></el-input> + </div> + + <div class="show-box"> + <div>鍦板浘姣嶈建鏂瑰悜(x,y)</div> + <el-input v-model="codeMap.direction_map" style="width: 60%;"></el-input> + </div> + + <div class="show-box"> + <div>灏忚溅鍑烘彁鍗囨満杩戠偣璺濈</div> + <el-input v-model="codeMap.shuttleOutLiftLocationDistance" style="width: 60%;"></el-input> + </div> + + <div class="show-box"> + <div>灏忚溅绉诲姩杩炵画涓嬪彂鎸囦护</div> + <el-radio border v-model="codeMap.shuttleMoveCommandsContinuously" label="Y">寮�</el-radio> + <el-radio border v-model="codeMap.shuttleMoveCommandsContinuously" label="N">鍏�</el-radio> + </div> + + <div class="show-box"> + <div>鍏佽浜ょ閲嶆柊瑙勫垝璺緞</div> + <el-radio border v-model="codeMap.trafficControlRestartCalcPath" label="Y">寮�</el-radio> + <el-radio border v-model="codeMap.trafficControlRestartCalcPath" label="N">鍏�</el-radio> + </div> + + <div class="show-box"> + <div>杈撳嚭RCS璋冭瘯鏃ュ織</div> + <el-radio border v-model="codeMap.rcsDebugShowLog" label="true">寮�</el-radio> + <el-radio border v-model="codeMap.rcsDebugShowLog" label="false">鍏�</el-radio> + </div> + </div> + + <div style="margin-top: 20px;"> + <el-button type="primary" @click="saveParam('shuttle')">淇濆瓨</el-button> + </div> + </el-card> + </div> + + <div style="margin-top: 20px;"> + <el-card class="box-card"> + <div slot="header" class="clearfix"> + <span>鍏呯數鍙傛暟</span> + </div> + + <div style="display: flex;flex-wrap: wrap;"> + <div class="show-box"> + <div>灏忚溅鍏呯數鏈�澶ч槇鍊�</div> + <el-input v-model="codeMap.chargeMaxValue" style="width: 60%;"></el-input> + </div> + + <div class="show-box"> + <div>灏忚溅鐢甸噺棰勮闃堝��</div> + <el-input v-model="codeMap.shuttlePowerEarlyValue" style="width: 60%;"></el-input> + </div> + + <div class="show-box"> + <div>灏忚溅婊$數鏍″噯</div> + <el-radio border v-model="codeMap.shuttleMaxPowerVerify" label="true">寮�</el-radio> + <el-radio border v-model="codeMap.shuttleMaxPowerVerify" label="false">鍏�</el-radio> + </div> + + <div class="show-box"> + <div>瀹氭椂鍏呯數寮�鍏�</div> + <el-radio border v-model="codeMap.timedCharge" label="Y">寮�</el-radio> + <el-radio border v-model="codeMap.timedCharge" label="N">鍏�</el-radio> + </div> + + <div class="show-box"> + <div>瀹氭椂鍏呯數鏃堕棿娈�</div> + <el-input v-model="codeMap.timedChargeRange" style="width: 60%;"></el-input> + </div> + + <div class="show-box"> + <div>灏忚溅榛樿鍏呯數绾�</div> + <el-input v-model="codeMap.shuttleDefaultChargePowerLine" style="width: 60%;"></el-input> + </div> + + <div class="show-box"> + <div>灏忚溅瀹氭椂鍏呯數绾�</div> + <el-input v-model="codeMap.timedChargePowerLine" style="width: 60%;"></el-input> + </div> + </div> + + <div style="margin-top: 20px;"> + <el-button type="primary" @click="saveParam('charge')">淇濆瓨</el-button> + </div> + </el-card> + </div> + + <div style="margin-top: 20px;"> + <el-card class="box-card"> + <div slot="header" class="clearfix"> + <span>婕旂ず妯″紡鍙傛暟</span> + </div> + <div style="display: flex;flex-wrap: wrap;"> + <div class="show-box"> + <div>绉诲姩婕旂ず妯″紡-妤煎眰</div> + <el-input v-model="codeMap.demoRunLev" style="width: 60%;"></el-input> + </div> + + <div class="show-box"> + <div>绉诲姩婕旂ず妯″紡-鏄惁鎹㈠眰</div> + <el-radio border v-model="codeMap.demoSwitchLev" label="Y">寮�</el-radio> + <el-radio border v-model="codeMap.demoSwitchLev" label="N">鍏�</el-radio> + </div> + + <div class="show-box"> + <div>婕旂ず妯″紡-璐х墿鎼繍</div> + <el-radio border v-model="codeMap.demoCargoMove" label="Y">寮�</el-radio> + <el-radio border v-model="codeMap.demoCargoMove" label="N">鍏�</el-radio> + </div> + + </div> + + <div style="margin-top: 20px;"> + <el-button type="primary" @click="saveParam('demo')">淇濆瓨</el-button> + </div> + </el-card> + </div> + </div> + <script> + var app = new Vue({ + el: '#app', + data: { + codeMap: {}, + }, + created() { + this.init() + }, + methods: { + init() { + this.getConfigData() + }, + getConfigData() { + let that = this; + $.ajax({ + url: baseUrl + "/config/listAll/auth", + headers: { + 'token': localStorage.getItem('token') + }, + data: {}, + dataType: 'json', + contentType: 'application/json;charset=UTF-8', + method: 'GET', + success: function(res) { + if (res.code == 200) { + let codeMap = {} + res.data.forEach((item) => { + codeMap[item.code] = item.value + }) + that.codeMap = codeMap; + } else if (res.code === 403) { + top.location.href = baseUrl + "/"; + } else { + that.$message({ + message: res.msg, + type: 'error' + }); + } + } + }); + }, + saveParam(type) { + let that = this; + let codeList = this.getParamData(type) + let updateCodeList = []; + + codeList.forEach((key) => { + let value = this.codeMap[key] + updateCodeList.push({ + code: key, + value: value + }) + }) + + console.log(updateCodeList) + + $.ajax({ + url: baseUrl + "/config/updateBatch", + headers: { + 'token': localStorage.getItem('token') + }, + data: JSON.stringify(updateCodeList), + dataType: 'json', + contentType: 'application/json;charset=UTF-8', + method: 'POST', + success: function(res) { + if (res.code == 200) { + that.$message({ + message: '淇濆瓨鎴愬姛', + type: 'success' + }); + } else if (res.code === 403) { + top.location.href = baseUrl + "/"; + } else { + that.$message({ + message: res.msg, + type: 'error' + }); + } + } + }); + }, + getParamData(type) { + let data = [] + if(type == "shuttle") { + data.push('dispatchShuttleMaxNum'); + data.push('shuttleWrkInObligateCount'); + data.push('avoidInnerCircle'); + data.push('avoidOuterCircle'); + data.push('direction_map'); + data.push('shuttleOutLiftLocationDistance'); + data.push('shuttleMoveCommandsContinuously'); + data.push('trafficControlRestartCalcPath'); + data.push('rcsDebugShowLog'); + }else if (type == "charge") { + data.push('chargeMaxValue'); + data.push('shuttlePowerEarlyValue'); + data.push('shuttleMaxPowerVerify'); + data.push('timedCharge'); + data.push('timedChargeRange'); + data.push('shuttleDefaultChargePowerLine'); + data.push('timedChargePowerLine'); + }else if (type == "demo") { + data.push('demoRunLev'); + data.push('demoSwitchLev'); + data.push('demoCargoMove'); + } + + return data; + }, + }, + }) + </script> + </body> + +</html> -- Gitblit v1.9.1