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; 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()); 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); } 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; } }