From 6f0d61e507a87cb3dbbf957081b22c8d027492ca Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期三, 13 十一月 2024 16:52:06 +0800 Subject: [PATCH] # --- zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/FuncStaService.java | 2 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/FuncStaServiceImpl.java | 72 ++++++++++++++++++++++- zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/MaintainScheduler.java | 59 ------------------- zy-acs-flow/src/map/tool.js | 2 4 files changed, 72 insertions(+), 63 deletions(-) diff --git a/zy-acs-flow/src/map/tool.js b/zy-acs-flow/src/map/tool.js index 161a168..0e8d84b 100644 --- a/zy-acs-flow/src/map/tool.js +++ b/zy-acs-flow/src/map/tool.js @@ -740,7 +740,7 @@ } agvPath = new PIXI.Graphics(); agvPath.name = agvPathName; - agvPath.lineStyle(Math.max(20, 4 * (1 / mapContainer.scale.x)), 0x2f68ac, 0.8); + agvPath.lineStyle(Math.max(20, 4 * (1 / mapContainer?.scale.x || 1)), 0x2f68ac, 0.8); agvPath.zIndex = DEVICE_Z_INDEX.DYNAMIC_ROUTE; // agvPath.blendMode = PIXI.BLEND_MODES.NORMAL; diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/MaintainScheduler.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/MaintainScheduler.java index 08add0d..a76a507 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/MaintainScheduler.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/MaintainScheduler.java @@ -17,7 +17,6 @@ import java.util.Date; import java.util.List; -import java.util.Objects; import java.util.Optional; /** @@ -153,63 +152,7 @@ private synchronized void releaseFuncSta(){ List<FuncSta> funcStaList = funcStaService.list(new LambdaQueryWrapper<FuncSta>().eq(FuncSta::getState, FuncStaStateType.OCCUPIED.toString())); for (FuncSta funcSta : funcStaList) { - boolean beIdle = true; - Agv agv = agvService.findByPosition(funcSta.getCode()); - - switch (Objects.requireNonNull(FuncStaType.query(funcSta.getType()))) { - case CHARGE: - AgvModel agvModel = agvModelService.getById(agv.getAgvModel()); - AgvDetail agvDetail = agvDetailService.selectByAgvId(agv.getId()); - if (agvDetail.getAgvStatus().equals(AgvStatusType.CHARGE)) { - beIdle = false; - } else { - Task latestTask = taskService.findLatestTask(agv.getId(), null); - if (null != latestTask - && latestTask.getTaskType().equals(TaskTypeType.TO_CHARGE.val()) - && latestTask.getDestCode().equals(funcSta.getCode()) - ) { - // avoid the agv already be full battery but there was no task assign to it, so that not in charge status and battery had down - if (agvDetailService.isPowerLoss(agv, agvDetail, agvModel)) { - beIdle = false; - } - } - } - if (0 < taskService.count(new LambdaQueryWrapper<Task>() - .eq(Task::getTaskType, TaskTypeType.TO_CHARGE.val()) - .eq(Task::getDestCode, funcSta.getCode()) - .and(i -> { - i.eq(Task::getTaskSts, TaskStsType.WAITING.val()).or() - .eq(Task::getTaskSts, TaskStsType.ASSIGN.val()).or() - .eq(Task::getTaskSts, TaskStsType.PROGRESS.val()); - }) - )) { - beIdle = false; - } - break; - case STANDBY: - Task latestTask = taskService.findLatestTask(agv.getId(), null); - if (null != latestTask - && latestTask.getTaskType().equals(TaskTypeType.TO_STANDBY.val()) - && latestTask.getDestCode().equals(funcSta.getCode()) - ) { - beIdle = false; - } - if (0 < taskService.count(new LambdaQueryWrapper<Task>() - .eq(Task::getTaskType, TaskTypeType.TO_STANDBY.val()) - .eq(Task::getDestCode, funcSta.getCode()) - .and(i -> { - i.eq(Task::getTaskSts, TaskStsType.WAITING.val()).or() - .eq(Task::getTaskSts, TaskStsType.ASSIGN.val()).or() - .eq(Task::getTaskSts, TaskStsType.PROGRESS.val()); - }) - )) { - beIdle = false; - } - break; - default: - break; - } - + boolean beIdle = funcStaService.isCanBeIdle(funcSta); if (beIdle) { funcSta.setState(FuncStaStateType.IDLE.toString()); funcSta.setUpdateTime(new Date()); diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/FuncStaService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/FuncStaService.java index fba0cc0..e3b4c57 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/FuncStaService.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/FuncStaService.java @@ -16,4 +16,6 @@ FuncSta checkoutClosestFunSta(Long codeId, List<FuncSta> funcStaList); + Boolean isCanBeIdle(FuncSta funcSta); + } diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/FuncStaServiceImpl.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/FuncStaServiceImpl.java index 70cd627..60e3590 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/FuncStaServiceImpl.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/FuncStaServiceImpl.java @@ -15,10 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; @Service("funcStaService") @@ -166,4 +163,71 @@ return funcStaList.stream().findFirst().orElse(null); } + @Override + public Boolean isCanBeIdle(FuncSta funcSta) { + Agv agv; + switch (Objects.requireNonNull(FuncStaType.query(funcSta.getType()))) { + case CHARGE: + if (0 < taskService.count(new LambdaQueryWrapper<Task>() + .eq(Task::getTaskType, TaskTypeType.TO_CHARGE.val()) + .eq(Task::getDestCode, funcSta.getCode()) + .and(i -> { + i.eq(Task::getTaskSts, TaskStsType.WAITING.val()).or() + .eq(Task::getTaskSts, TaskStsType.ASSIGN.val()).or() + .eq(Task::getTaskSts, TaskStsType.PROGRESS.val()); + }) + )) { + return false; + } + + agv = agvService.findByPosition(funcSta.getCode()); + if (null != agv) { + AgvModel agvModel = agvModelService.getById(agv.getAgvModel()); + AgvDetail agvDetail = agvDetailService.selectByAgvId(agv.getId()); + if (agvDetail.getAgvStatus().equals(AgvStatusType.CHARGE)) { + return false; + } else { + Task latestTask = taskService.findLatestTask(agv.getId(), null); + if (null != latestTask + && latestTask.getTaskType().equals(TaskTypeType.TO_CHARGE.val()) + && latestTask.getDestCode().equals(funcSta.getCode()) + ) { + // avoid the agv already be full battery but there was no task assign to it, so that not in charge status and battery had down + if (agvDetailService.isPowerLoss(agv, agvDetail, agvModel)) { + return false; + } + } + } + } + break; + case STANDBY: + if (0 < taskService.count(new LambdaQueryWrapper<Task>() + .eq(Task::getTaskType, TaskTypeType.TO_STANDBY.val()) + .eq(Task::getDestCode, funcSta.getCode()) + .and(i -> { + i.eq(Task::getTaskSts, TaskStsType.WAITING.val()).or() + .eq(Task::getTaskSts, TaskStsType.ASSIGN.val()).or() + .eq(Task::getTaskSts, TaskStsType.PROGRESS.val()); + }) + )) { + return false; + } + + agv = agvService.findByPosition(funcSta.getCode()); + if (null != agv) { + Task latestTask = taskService.findLatestTask(agv.getId(), null); + if (null != latestTask + && latestTask.getTaskType().equals(TaskTypeType.TO_STANDBY.val()) + && latestTask.getDestCode().equals(funcSta.getCode()) + ) { + return false; + } + } + break; + default: + break; + } + return true; + } + } -- Gitblit v1.9.1