From b6bad62d8839cc50d1a82e9ffecbbf666efb780e Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期三, 23 十月 2024 16:41:51 +0800
Subject: [PATCH] #
---
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java | 59 ++++++++++++++++++-----------
zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/KernelScheduler.java | 2
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvServiceImpl.java | 3 +
3 files changed, 39 insertions(+), 25 deletions(-)
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/KernelScheduler.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/KernelScheduler.java
index d7b7119..93c2025 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/KernelScheduler.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/KernelScheduler.java
@@ -81,7 +81,7 @@
}
for (AgvTaskDto dto : taskDtoList) {
- mainService.mergeMajorTask(dto.getAgvId(), dto.getTaskList());
+ mainService.buildMajorTask(dto.getAgvId(), dto.getTaskList());
}
this.lock.unlock();
}
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 21feeaa..763aee2 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
@@ -251,33 +251,25 @@
* 瑙f瀽鍙栨斁璐ч泦鍚堜换鍔�,杩涜鏈�浼樼殑鎺掑垪缁勫悎椤哄簭 ( 杞﹁締姝ゆ椂鏄┖闂蹭笖闈欐鐨� )
*/
@Transactional
- public synchronized void mergeMajorTask(Long agvId, List<Task> taskList) {
+ public synchronized void buildMajorTask(Long agvId, List<Task> taskList) {
if (Cools.isEmpty(taskList)) { return; }
boolean lockAcquired = false;
try {
if (!(lockAcquired = this.lock.tryLock(LOCK_TIMEOUT, TimeUnit.SECONDS))) {
throw new CoolException("generate [task] action fail, cause can not acquire lock ...");
}
- Date now = new Date();
- final String sameGroupXy = configService.getVal( "sameGroupXy", String.class);
+ // valid -----------------------------------------------
Agv agv = agvService.getById(agvId);
if (!agvService.judgeEnable(agv.getId(), agvDetail -> agvDetail.getVol() > agv.getChargeLine())) {
throw new CoolException("AGV[" + agv.getUuid() + "]褰撳墠涓嶅彲鐢�...");
}
-
if (!Cools.isEmpty(taskService.selectInSts(agvId, TaskStsType.ASSIGN, TaskStsType.PROGRESS))) {
throw new CoolException("AGV[" + agv.getUuid() + "]鍒嗛厤浠诲姟澶辫触锛屽凡瀛樺湪鎵ц浠诲姟...");
}
- AgvDetail agvDetail = agvDetailService.selectByAgvId(agvId);
- assert agvDetail != null;
- if (agvDetail.getPos() == 0) {
- if (!agvDetail.getAgvStatus().equals(AgvStatusType.CHARGE)) {
- throw new CoolException("AGV[" + agv.getUuid() + "]褰撳墠涓嶅湪瀹氫綅...");
- }
- }
-
+ // execute ----------------------------------------------------
+ Date now = new Date();
// sort and sub
taskList.sort(new Comparator<Task>() {
@Override
@@ -290,15 +282,17 @@
taskList = taskList.subList(0, backpack);
}
+ List<AgvBackpackDto> backpackDtoList = new ArrayList<>();
+
/**
- * single agvId
+ * 鍚屽贩閬撳綊绫�
+ * same lane for every single agvId
*
- * key: y + TaskPosDto.PosType.ORI_LOC / ORI_STA / DEST_LOC / DEST_STA
+ * key: y(val) + TaskPosDto.PosType.ORI_LOC / ORI_STA / DEST_LOC / DEST_STA
* val: new TaskPosDto(taskId, new Double[]{code.getX(), code.getY()}, posType)
*/
Map<String, List<TaskPosDto>> groups = new HashMap<>();
-
- List<AgvBackpackDto> backpackDtoList = new ArrayList<>();
+ final String sameGroupXy = configService.getVal( "sameGroupXy", String.class);
int backpackLev = 0;
for (Task task : taskList) {
@@ -362,7 +356,31 @@
}
/**
- * List<TaskPosDto>: task list on the same channel
+ * 1.Map<String, List<TaskPosDto>> groups
+ *
+ * key: 1000 + ORI_LOC
+ * val: [TaskPosDto(taskId, new Double[]{code.getX(), code.getY()}, posType), TaskPosDto(taskId, new Double[]{code.getX(), code.getY()}, posType),...]
+ *
+ * key: 3000 + ORI_LOC
+ * val: [TaskPosDto(taskId, new Double[]{code.getX(), code.getY()}, posType), TaskPosDto(taskId, new Double[]{code.getX(), code.getY()}, posType),...]
+ *
+ * key: 2000 + ORI_LOC
+ * val: [TaskPosDto(taskId, new Double[]{code.getX(), code.getY()}, posType), TaskPosDto(taskId, new Double[]{code.getX(), code.getY()}, posType),...]
+ *
+ * ......
+ *
+ * 2.ArrayList<List<TaskPosDto>> list
+ * [
+ * [TaskPosDto(taskId, new Double[]{code.getX(), code.getY()}, posType), TaskPosDto(taskId, new Double[]{code.getX(), code.getY()}, posType),...],
+ * [TaskPosDto(taskId, new Double[]{code.getX(), code.getY()}, posType), TaskPosDto(taskId, new Double[]{code.getX(), code.getY()}, posType),...],
+ * [TaskPosDto(taskId, new Double[]{code.getX(), code.getY()}, posType), TaskPosDto(taskId, new Double[]{code.getX(), code.getY()}, posType),...],
+ * ......
+ * ]
+ */
+
+ /**
+ * 瀵规墍鏈夊贩閬撹繘琛屾湁搴忔帓搴忥紝鍏堟槸閽堝List涓轰竴涓崟浣嶏紝瀵逛粬浠繘琛孎irstWeight鎺掑簭锛岀浉褰撲簬琛�1鐨刱ey鐨勬暟鍊艰繘琛屾湁搴忔帓搴�
+ * List<TaskPosDto>: task list on the same lane
* ArrayList<List<TaskPosDto>>: all the task list by one agv
*/
ArrayList<List<TaskPosDto>> list = new ArrayList<>(groups.values());
@@ -371,7 +389,7 @@
double o2CompVal = (o2.get(0).getFirstWeight(sameGroupXy) * 100) + o2.get(0).getPosType().compOffset;
return (int) (o1CompVal - o2CompVal);
});
-
+ // 閽堝Dto锛屾寜鐓econdWeight杩涜鎺掑簭
for (List<TaskPosDto> taskPosDtoList : list) {
taskPosDtoList.sort((o1, o2) -> (int) (o1.getSecondWeight(sameGroupXy) * 100 - o2.getSecondWeight(sameGroupXy) * 100));
}
@@ -608,11 +626,6 @@
AgvDetail agvDetail = agvDetailService.selectByAgvId(agvId);
assert agvDetail != null;
- if (agvDetail.getPos() == 0) {
- if (!agvDetail.getAgvStatus().equals(AgvStatusType.CHARGE)) {
- throw new CoolException("AGV[" + agv.getUuid() + "]褰撳墠涓嶅湪瀹氫綅...");
- }
- }
List<Action> actionList = new ArrayList<>();
// start node
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 e710b8e..59e06fd 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
@@ -81,6 +81,7 @@
i.eq(Segment::getState, SegmentStateType.RUNNING.toString());
})
) > 0) {
+ log.warn("[{}]鍙稟gv姝e湪蹇欑 -segment......", agv.getUuid());
return false;
}
if (!this.judgeOnline(agv.getId())) {
@@ -111,7 +112,7 @@
}
if (!agvDetail.getAgvStatus().equals(AgvStatusType.CHARGE)) {
if (agvDetail.getPos() != 1) {
- log.warn("[{}]鍙稟gv璇风Щ鍔ㄥ埌瀹氫綅......", agv.getUuid());
+ log.warn("[{}]鍙稟gv褰撳墠涓嶅湪瀹氫綅......", agv.getUuid());
return false;
}
}
--
Gitblit v1.9.1