From 5dbd4c432334fa014171a2578d1e04f526129c45 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期四, 12 十二月 2024 14:16:15 +0800
Subject: [PATCH] #
---
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java | 160 +++++++++++++++++++++++++++++------------------------
1 files changed, 87 insertions(+), 73 deletions(-)
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 3b6ad34..942003a 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
@@ -15,6 +15,7 @@
import com.zy.acs.common.enums.AgvCompleteType;
import com.zy.acs.common.enums.AgvDirectionType;
import com.zy.acs.common.enums.AgvSpeedType;
+import com.zy.acs.common.utils.GsonUtils;
import com.zy.acs.common.utils.Utils;
import com.zy.acs.framework.common.Cools;
import com.zy.acs.framework.common.SnowflakeIdWorker;
@@ -249,7 +250,6 @@
Agv agv = agvService.getById(agvId);
if (!agvService.judgeEnable(agv.getId(), true)) {
return;
-// throw new CoolException("AGV[" + agv.getUuid() + "]褰撳墠涓嶅彲鐢�...");
}
if (!Cools.isEmpty(taskService.selectInSts(agvId, TaskStsType.ASSIGN, TaskStsType.PROGRESS))) {
throw new CoolException("AGV[" + agv.getUuid() + "]鍒嗛厤浠诲姟澶辫触锛屽凡瀛樺湪鎵ц浠诲姟...");
@@ -560,7 +560,7 @@
travel.setTravelId(String.valueOf(snowflakeIdWorker.nextId()).substring(3));
travel.setAgvId(agv.getId());
// travel.setTaskContent(JSON.toJSONString(list));
- travel.setTaskIds(JSON.toJSONString(Collections.singletonList(task.getId())));
+ travel.setTaskIds(GsonUtils.toJson(Utils.singletonList(task.getId())));
travel.setState(TravelStateType.RUNNING.toString());
if (!travelService.save(travel)) {
throw new BusinessException("travel failed to save");
@@ -606,6 +606,7 @@
} else {
if (null != jam && i == 0) {
jam.setAvoSeg(next.getId());
+ jam.setAvoCode(endCode.getId());
}
}
}
@@ -1248,77 +1249,8 @@
.orderByAsc(Segment::getSerial)
);
- // task
- for (Segment segment : segmentList) {
- boolean taskComplete = false;
-
- Task task = taskService.getById(segment.getTaskId()); assert null != task;
- TaskTypeType typeType = TaskTypeType.get(task.getTaskTypeEl()); assert null != typeType;
-
- TaskPosDto.PosType posType = TaskPosDto.queryPosType(segment.getPosType());
- switch (Objects.requireNonNull(posType)) {
- case ORI_STA:
- case ORI_LOC:
- break;
- case DEST_STA:
- case DEST_LOC:
- case TO_CHARGE:
- case TO_STANDBY:
- if (segment.getEndNode().equals(task.getDestCode())) {
- taskComplete = true;
- }
- break;
- case MOVE:
- if (segment.getEndNode().equals(task.getDestCode())) {
- if (typeType.equals(TaskTypeType.MOVE)) {
- taskComplete = true;
- }
- }
- break;
- default:
- break;
- }
-
- if (taskComplete) {
- locService.taskCallBack(task);
-
- task.setTaskSts(TaskStsType.COMPLETE.val());
- task.setEndTime(now);
- task.setUpdateTime(now);
- if (!taskService.updateById(task)) {
- log.error("Task [{}] 鏇存柊澶辫触 锛侊紒锛�", task.getSeqNum());
- } else {
- log.info("Task [{}] 浣滀笟瀹屾瘯 ==========>> ", task.getSeqNum());
- }
-
- }
- }
-
- // action
- List<Action> actionList = actionService.list(new LambdaQueryWrapper<Action>()
- .eq(Action::getGroupId, serialNo)
- .eq(Action::getActionSts, ActionStsType.ISSUED.val())
- );
- for (Action action : actionList) {
- action.setActionSts(ActionStsType.FINISH.val());
- action.setEndTime(now);
- action.setUpdateTime(now);
- if (!actionService.updateById(action)) {
- log.error("Action [{}] 鏇存柊澶辫触 锛侊紒锛�", action.getPriority() + " - " + action.getName());
- }
- }
-
- // segment
- for (Segment segment : segmentList) {
- segment.setState(SegmentStateType.FINISH.toString());
- segment.setUpdateTime(now);
- if (!segmentService.updateById(segment)) {
- log.error("Segment [{}] 鏇存柊澶辫触 锛侊紒锛�", segment.getGroupId() + " - " + segment.getSerial());
- }
- }
-
- // segment call back
- segmentService.processNext(segmentList);
+ // settlement
+ this.settleSegmentList(segmentList, serialNo);
log.info("Agv [{}] {}浣滀笟瀹屾瘯 ==========>> ", protocol.getAgvNo(), serialNo);
@@ -1333,4 +1265,86 @@
}
}
+ @Transactional
+ public void settleSegmentList(List<Segment> segmentList, String serialNo) {
+ if (Cools.isEmpty(segmentList)) {
+ return;
+ }
+ Date now = new Date();
+
+ // task
+ for (Segment segment : segmentList) {
+ boolean taskComplete = false;
+
+ Task task = taskService.getById(segment.getTaskId()); assert null != task;
+ TaskTypeType typeType = TaskTypeType.get(task.getTaskTypeEl()); assert null != typeType;
+
+ TaskPosDto.PosType posType = TaskPosDto.queryPosType(segment.getPosType());
+ switch (Objects.requireNonNull(posType)) {
+ case ORI_STA:
+ case ORI_LOC:
+ break;
+ case DEST_STA:
+ case DEST_LOC:
+ case TO_CHARGE:
+ case TO_STANDBY:
+ if (segment.getEndNode().equals(task.getDestCode())) {
+ taskComplete = true;
+ }
+ break;
+ case MOVE:
+ if (segment.getEndNode().equals(task.getDestCode())) {
+ if (typeType.equals(TaskTypeType.MOVE)) {
+ taskComplete = true;
+ }
+ }
+ break;
+ default:
+ break;
+ }
+
+ if (taskComplete) {
+ locService.taskCallBack(task);
+
+ task.setTaskSts(TaskStsType.COMPLETE.val());
+ task.setEndTime(now);
+ task.setUpdateTime(now);
+ if (!taskService.updateById(task)) {
+ log.error("Task [{}] 鏇存柊澶辫触 锛侊紒锛�", task.getSeqNum());
+ } else {
+ log.info("Task [{}] 浣滀笟瀹屾瘯 ==========>> ", task.getSeqNum());
+ }
+
+ }
+ }
+
+ // action, follow by groupId
+ if (!Cools.isEmpty(serialNo)) {
+ List<Action> actionList = actionService.list(new LambdaQueryWrapper<Action>()
+ .eq(Action::getGroupId, serialNo)
+ .eq(Action::getActionSts, ActionStsType.ISSUED.val())
+ );
+ for (Action action : actionList) {
+ action.setActionSts(ActionStsType.FINISH.val());
+ action.setEndTime(now);
+ action.setUpdateTime(now);
+ if (!actionService.updateById(action)) {
+ log.error("Action [{}] 鏇存柊澶辫触 锛侊紒锛�", action.getPriority() + " - " + action.getName());
+ }
+ }
+ }
+
+ // segment
+ for (Segment segment : segmentList) {
+ segment.setState(SegmentStateType.FINISH.toString());
+ segment.setUpdateTime(now);
+ if (!segmentService.updateById(segment)) {
+ log.error("Segment [{}] 鏇存柊澶辫触 锛侊紒锛�", segment.getGroupId() + " - " + segment.getSerial());
+ }
+ }
+
+ // segment call back
+ segmentService.processNext(segmentList);
+ }
+
}
--
Gitblit v1.9.1