From 8d1904686cabb414eff5a2fb22098785a7d0bff0 Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期五, 27 二月 2026 16:33:04 +0800
Subject: [PATCH] #
---
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/GuaranteeRuntimeService.java | 80 ++++++++++++++++++++++------------------
1 files changed, 44 insertions(+), 36 deletions(-)
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/GuaranteeRuntimeService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/GuaranteeRuntimeService.java
index 4d3ca15..c0cd0b7 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/GuaranteeRuntimeService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/GuaranteeRuntimeService.java
@@ -2,18 +2,15 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zy.acs.common.enums.AgvStatusType;
-import com.zy.acs.manager.manager.entity.Agv;
-import com.zy.acs.manager.manager.entity.AgvDetail;
-import com.zy.acs.manager.manager.entity.Guarantee;
-import com.zy.acs.manager.manager.entity.Task;
-import com.zy.acs.manager.manager.enums.GuaranteeScopeType;
-import com.zy.acs.manager.manager.enums.StatusType;
-import com.zy.acs.manager.manager.enums.TaskStsType;
-import com.zy.acs.manager.manager.enums.TaskTypeType;
+import com.zy.acs.manager.manager.entity.*;
+import com.zy.acs.manager.manager.enums.*;
import com.zy.acs.manager.manager.service.AgvDetailService;
import com.zy.acs.manager.manager.service.AgvService;
+import com.zy.acs.manager.manager.service.SegmentService;
import com.zy.acs.manager.manager.service.TaskService;
+import lombok.Data;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
@@ -26,20 +23,16 @@
@Service
public class GuaranteeRuntimeService {
- private final AgvService agvService;
- private final AgvDetailService agvDetailService;
- private final TaskService taskService;
- private final MainLockWrapService mainLockWrapService;
-
- public GuaranteeRuntimeService(AgvService agvService,
- AgvDetailService agvDetailService,
- TaskService taskService,
- MainLockWrapService mainLockWrapService) {
- this.agvService = agvService;
- this.agvDetailService = agvDetailService;
- this.taskService = taskService;
- this.mainLockWrapService = mainLockWrapService;
- }
+ @Autowired
+ private SegmentService segmentService;
+ @Autowired
+ private AgvService agvService;
+ @Autowired
+ private AgvDetailService agvDetailService;
+ @Autowired
+ private TaskService taskService;
+ @Autowired
+ private MainLockWrapService mainLockWrapService;
public void prepare(Guarantee plan, LocalDateTime targetTime) {
int requiredCount = plan.getRequiredCount() == null ? 0 : plan.getRequiredCount();
@@ -53,7 +46,10 @@
List<ChargeCandidate> candidates = new ArrayList<>();
for (Agv agv : scopedAgvList) {
AgvDetail detail = agvDetailService.selectMajorByAgvId(agv.getId());
- if (detail == null || detail.getSoc() == null) {
+ if (null == detail || null == detail.getSoc() || null == detail.getAgvStatus()) {
+ continue;
+ }
+ if (detail.getAgvStatus().equals(AgvStatusType.CHARGE)) {
continue;
}
if (!isIdle(agv, detail)) {
@@ -67,12 +63,12 @@
}
}
if (available >= requiredCount) {
- log.debug("Guarantee[{}] already has {} vehicles >= {}% SOC for {}", plan.getName(), available, minSoc, targetTime);
+// log.debug("Guarantee[{}] already has {} vehicles >= {}% SOC for {}", plan.getName(), available, minSoc, targetTime);
return;
}
- int shortage = requiredCount - available;
+ int shortage = requiredCount - available; // 杩樺樊澶氬皯杈�
candidates.sort(Comparator.comparingInt(ChargeCandidate::getSoc));
- int scheduled = 0;
+ int scheduled = 0; // 宸茬粡瀹夋帓鍏呯數鐨凙GV鏁伴噺
for (ChargeCandidate candidate : candidates) {
if (scheduled >= shortage) {
break;
@@ -95,13 +91,31 @@
if (detail.getAgvStatus() != null && detail.getAgvStatus().equals(AgvStatusType.CHARGE)) {
return false;
}
- long busyCount = taskService.count(new LambdaQueryWrapper<Task>()
+
+ if (0 < taskService.count(new LambdaQueryWrapper<Task>()
.eq(Task::getAgvId, agv.getId())
+// .and(i -> {
+// i.eq(Task::getTaskSts, TaskStsType.WAITING.val())
+// .or().eq(Task::getTaskSts, TaskStsType.ASSIGN.val())
+// .or().eq(Task::getTaskSts, TaskStsType.PROGRESS.val());
+// })
.in(Task::getTaskSts,
TaskStsType.WAITING.val(),
TaskStsType.ASSIGN.val(),
- TaskStsType.PROGRESS.val()));
- return busyCount == 0;
+ TaskStsType.PROGRESS.val())
+ )) {
+ return false;
+ }
+ if (0 < segmentService.count(new LambdaQueryWrapper<Segment>()
+ .eq(Segment::getAgvId, agv.getId())
+ .and( i -> {
+// i.eq(Segment::getState, SegmentStateType.WAITING.toString()).or()
+ i.eq(Segment::getState, SegmentStateType.RUNNING.toString());
+ })
+ )) {
+ return false;
+ }
+ return true;
}
private List<Agv> findScopedAgvList(Guarantee plan) {
@@ -117,6 +131,7 @@
return agvService.list(wrapper);
}
+ @Data
private static class ChargeCandidate {
private final Agv agv;
private final int soc;
@@ -126,12 +141,5 @@
this.soc = soc;
}
- public Agv getAgv() {
- return agv;
- }
-
- public int getSoc() {
- return soc;
- }
}
}
--
Gitblit v1.9.1