From 6828e790d254dd44162ff245025f7903def395be Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期三, 13 十一月 2024 13:52:02 +0800 Subject: [PATCH] # --- zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java | 2 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 | 3 zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/MaintainScheduler.java | 105 ++++++++++++++++++---------------- zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvDetailServiceImpl.java | 6 + zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/PatrolService.java | 2 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvServiceImpl.java | 3 + zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java | 2 8 files changed, 68 insertions(+), 57 deletions(-) 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 277b7de..1095e24 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 @@ -155,60 +155,65 @@ for (FuncSta funcSta : funcStaList) { boolean beIdle = true; Agv agv = agvService.findByPosition(funcSta.getCode()); - AgvModel agvModel = agvModelService.getById(agv.getAgvModel()); - AgvDetail agvDetail = agvDetailService.selectByAgvId(agv.getId()); + if (null == agv) { + beIdle = false; + } else { + AgvModel agvModel = agvModelService.getById(agv.getAgvModel()); + AgvDetail agvDetail = agvDetailService.selectByAgvId(agv.getId()); - switch (Objects.requireNonNull(FuncStaType.query(funcSta.getType()))) { - case CHARGE: - 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; + switch (Objects.requireNonNull(FuncStaType.query(funcSta.getType()))) { + case CHARGE: + 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; + 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; + } } + if (beIdle) { funcSta.setState(FuncStaStateType.IDLE.toString()); funcSta.setUpdateTime(new Date()); diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java index 783bb5d..c5b0a72 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java @@ -921,7 +921,7 @@ break; case TO_CHARGE: // 妫�楠屾柟鍚� - FuncSta chargeFuncSta = funcStaService.query(agvId, lastCode.getId(), FuncStaType.CHARGE.toString()); + FuncSta chargeFuncSta = funcStaService.query(lastCode.getId(), FuncStaType.CHARGE.toString()); Double chargeDirection = Double.parseDouble(chargeFuncSta.getAngle()); if (!lastDirection.equals(chargeDirection)) { actionList.add(new Action( diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java index ddea4b8..52eac9f 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java @@ -123,7 +123,7 @@ double deltaX = x1 - x0; double deltaY = y1 - y0; - double angle = Math.atan2(deltaX, deltaY); + double angle = -Math.atan2(deltaX, deltaY); int angleOffsetVal = configService.getVal("mapAngleOffsetVal", Integer.class); angle = Math.toDegrees(angle) + angleOffsetVal; angle = (angle + 360) % 360; // 灏嗚搴﹁浆鎹负姝e�� diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/PatrolService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/PatrolService.java index f7fe7d8..f663212 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/PatrolService.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/PatrolService.java @@ -87,7 +87,7 @@ public Code getRandomCode(AgvDetail agvDetail) { Code startCode = codeService.getById(agvDetail.getRecentCode()); List<String> notInCodeList = new ArrayList<>(); - notInCodeList.add("00000061"); + notInCodeList.add("00000151"); List<Code> list = codeService.list(new LambdaQueryWrapper<Code>().notIn(Code::getData, notInCodeList)); Collections.shuffle(list); for (Code endCode : list) { 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 4c98b4b..fba0cc0 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 @@ -10,7 +10,7 @@ FuncSta getByCodeAndType(Long codeId, String type); - FuncSta query(Long agvId, Long codeId, String type); + FuncSta query(Long codeId, String type); List<FuncSta> findInIdleStatus(FuncStaType type, Long agvId); diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvDetailServiceImpl.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvDetailServiceImpl.java index fad3e00..96fdae3 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvDetailServiceImpl.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvDetailServiceImpl.java @@ -54,7 +54,11 @@ if (null == agvModel) { agvModel = agvModelService.getById(agv.getAgvModel()); } - return agvDetail.getVol() < Math.min(agv.getChargeLine(), agvModel.getLowBattery()); + if (null == agv.getChargeLine()) { + return agvDetail.getVol() < agvModel.getLowBattery(); + } else { + return agvDetail.getVol() < Math.max(agv.getChargeLine(), agvModel.getLowBattery()); + } } } diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvServiceImpl.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvServiceImpl.java index 844be39..c8025bd 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvServiceImpl.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvServiceImpl.java @@ -169,6 +169,9 @@ if (null == agvDetail) { continue; } + if (null == agvDetail.getRecentCode()) { + continue; + } if (agvDetail.getRecentCode().equals(codeId)) { return agv; } 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 d9358ea..70cd627 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 @@ -45,9 +45,8 @@ } @Override - public FuncSta query(Long agvId, Long codeId, String type) { + public FuncSta query(Long codeId, String type) { List<FuncSta> list = this.list(new LambdaQueryWrapper<FuncSta>() - .eq(FuncSta::getAgvId, agvId) .eq(FuncSta::getCode, codeId) .eq(FuncSta::getType, type) ); -- Gitblit v1.9.1