From c514b7d8ad8a3f89b81c949e265446b4f09a4bb5 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期三, 20 十一月 2024 16:46:30 +0800
Subject: [PATCH] #
---
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java | 90 +++++++++++++++---------------
zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/MapDataWsScheduler.java | 15 +++-
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvServiceImpl.java | 22 +++++--
3 files changed, 71 insertions(+), 56 deletions(-)
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/MapDataWsScheduler.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/MapDataWsScheduler.java
index 43f55bb..9f6b7f2 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/MapDataWsScheduler.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/MapDataWsScheduler.java
@@ -15,6 +15,7 @@
import com.zy.acs.manager.manager.service.AgvService;
import com.zy.acs.manager.manager.service.CodeService;
import com.zy.acs.manager.manager.websocket.MapWebSocket;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -28,6 +29,7 @@
/**
* Created by vincent on 10/14/2024
*/
+@Slf4j
@Component
public class MapDataWsScheduler {
@@ -52,11 +54,14 @@
this.singleThreadExecutor.execute(() -> {
try { Thread.sleep(200); } catch (InterruptedException ignore) {}
while (!Thread.currentThread().isInterrupted()) {
-
- MapWsVo mapWsVo = new MapWsVo();
- mapWsVo.setAgvVos(syncAgv());
- MapWebSocket.broadcast(GsonUtils.toJson(mapWsVo));
- try { Thread.sleep(WEBSOCKET_BROADCAST_INTERVAL); } catch (InterruptedException ignore) {}
+ try {
+ MapWsVo mapWsVo = new MapWsVo();
+ mapWsVo.setAgvVos(syncAgv());
+ MapWebSocket.broadcast(GsonUtils.toJson(mapWsVo));
+ Thread.sleep(WEBSOCKET_BROADCAST_INTERVAL);
+ } catch (Exception e) {
+ log.error("MapDataWsScheduler.init", e);
+ }
}
});
}
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 7329135..297d0f4 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
@@ -22,7 +22,6 @@
import com.zy.acs.manager.common.domain.TaskDto;
import com.zy.acs.manager.common.domain.param.HandlerPublishParam;
import com.zy.acs.manager.common.exception.BusinessException;
-import com.zy.acs.manager.common.utils.CommonUtil;
import com.zy.acs.manager.core.domain.AgvBackpackDto;
import com.zy.acs.manager.core.domain.Lane;
import com.zy.acs.manager.core.domain.TaskPosDto;
@@ -221,7 +220,7 @@
for (Task task : taskList) {
Agv agv = allocateService.execute(task);
if (null == agv) {
- log.warn("Task[{}] has an issue锛� because it failed to checkout agv which is idle...", task.getSeqNum());
+// log.warn("Task[{}] has an issue锛� because it failed to checkout agv which is idle...", task.getSeqNum());
continue;
}
task.setAgvId(agv.getId());
@@ -249,7 +248,8 @@
// valid -----------------------------------------------
Agv agv = agvService.getById(agvId);
if (!agvService.judgeEnable(agv.getId(), true)) {
- throw new CoolException("AGV[" + agv.getUuid() + "]褰撳墠涓嶅彲鐢�...");
+ return;
+// throw new CoolException("AGV[" + agv.getUuid() + "]褰撳墠涓嶅彲鐢�...");
}
if (!Cools.isEmpty(taskService.selectInSts(agvId, TaskStsType.ASSIGN, TaskStsType.PROGRESS))) {
throw new CoolException("AGV[" + agv.getUuid() + "]鍒嗛厤浠诲姟澶辫触锛屽凡瀛樺湪鎵ц浠诲姟...");
@@ -387,48 +387,48 @@
}
// re-order by agv current position
- Code currCode = codeService.getById(agvDetail.getRecentCode());
- Double[] currPosition = new Double[] {currCode.getX(), currCode.getY()};
-
- List<TaskPosDto> theFirstOne = list.get(0);
- List<TaskPosDto> theLastOne = list.get(list.size() - 1);
-
- if (list.size() == 1) {
- TaskPosDto head = theFirstOne.get(0);
- TaskPosDto tail = theFirstOne.get(theFirstOne.size() - 1);
-
- int distanceByHead = CommonUtil.calcDistance(currPosition, head.getXy());
- int distanceByTail = CommonUtil.calcDistance(currPosition, tail.getXy());
-
- if (distanceByTail < distanceByHead) {
- Collections.reverse(theFirstOne);
- }
-
- } else {
- TaskPosDto headOfFirst = theFirstOne.get(0);
- TaskPosDto tailOfFirst = theFirstOne.get(theFirstOne.size() - 1);
-
- TaskPosDto headOfLast = theLastOne.get(0);
- TaskPosDto tailOfLast = theLastOne.get(theLastOne.size() - 1);
-
- int distanceByHeadOfFirst = CommonUtil.calcDistance(currPosition, headOfFirst.getXy());
- int distanceByTailOfFirst = CommonUtil.calcDistance(currPosition, tailOfFirst.getXy());
-
- int distanceByHeadOfLast = CommonUtil.calcDistance(currPosition, headOfLast.getXy());
- int distanceByTailOfLast = CommonUtil.calcDistance(currPosition, tailOfLast.getXy());
-
- if (Math.min(distanceByHeadOfLast, distanceByTailOfLast) < Math.min(distanceByHeadOfFirst, distanceByTailOfFirst)) {
- Collections.reverse(list);
-
- if (distanceByTailOfLast < distanceByHeadOfLast) {
- Collections.reverse(theLastOne);
- }
- } else {
- if (distanceByTailOfFirst < distanceByHeadOfFirst) {
- Collections.reverse(theFirstOne);
- }
- }
- }
+// Code currCode = codeService.getById(agvDetail.getRecentCode());
+// Double[] currPosition = new Double[] {currCode.getX(), currCode.getY()};
+//
+// List<TaskPosDto> theFirstOne = list.get(0);
+// List<TaskPosDto> theLastOne = list.get(list.size() - 1);
+//
+// if (list.size() == 1) {
+// TaskPosDto head = theFirstOne.get(0);
+// TaskPosDto tail = theFirstOne.get(theFirstOne.size() - 1);
+//
+// int distanceByHead = CommonUtil.calcDistance(currPosition, head.getXy());
+// int distanceByTail = CommonUtil.calcDistance(currPosition, tail.getXy());
+//
+// if (distanceByTail < distanceByHead) {
+// Collections.reverse(theFirstOne);
+// }
+//
+// } else {
+// TaskPosDto headOfFirst = theFirstOne.get(0);
+// TaskPosDto tailOfFirst = theFirstOne.get(theFirstOne.size() - 1);
+//
+// TaskPosDto headOfLast = theLastOne.get(0);
+// TaskPosDto tailOfLast = theLastOne.get(theLastOne.size() - 1);
+//
+// int distanceByHeadOfFirst = CommonUtil.calcDistance(currPosition, headOfFirst.getXy());
+// int distanceByTailOfFirst = CommonUtil.calcDistance(currPosition, tailOfFirst.getXy());
+//
+// int distanceByHeadOfLast = CommonUtil.calcDistance(currPosition, headOfLast.getXy());
+// int distanceByTailOfLast = CommonUtil.calcDistance(currPosition, tailOfLast.getXy());
+//
+// if (Math.min(distanceByHeadOfLast, distanceByTailOfLast) < Math.min(distanceByHeadOfFirst, distanceByTailOfFirst)) {
+// Collections.reverse(list);
+//
+// if (distanceByTailOfLast < distanceByHeadOfLast) {
+// Collections.reverse(theLastOne);
+// }
+// } else {
+// if (distanceByTailOfFirst < distanceByHeadOfFirst) {
+// Collections.reverse(theFirstOne);
+// }
+// }
+// }
// generate travel
Travel travel = new Travel();
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 d894204..545cfc7 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
@@ -45,6 +45,8 @@
private CodeService codeService;
@Autowired
private SegmentService segmentService;
+ @Autowired
+ private TaskService taskService;
@Override
public PageResult<AgvResult> pageRel(PageParam<Agv, BaseParam> pageParam) {
@@ -73,16 +75,24 @@
public Boolean judgeEnable(Long agvId, Boolean withBattery) {
Agv agv = this.getById(agvId);
AgvModel agvModel = agvModelService.getById(agv.getAgvModel());
- if (segmentService.count(new LambdaQueryWrapper<Segment>()
+ if (0 < segmentService.count(new LambdaQueryWrapper<Segment>()
.eq(Segment::getAgvId, agvId)
.and( i -> {
// i.eq(Segment::getState, SegmentStateType.WAITING.toString()).or()
i.eq(Segment::getState, SegmentStateType.RUNNING.toString());
})
- ) > 0) {
- log.warn("[{}]鍙稟gv姝e湪蹇欑 -segment......", agv.getUuid());
+ )) {
+ log.warn("[{}]鍙稟gv姝e湪蹇欑 - segment......", agv.getUuid());
return false;
}
+// if (0 < taskService.count(new LambdaQueryWrapper<Task>()
+// .eq(Task::getAgvId, agvId)
+// .eq(Task::getTaskType, TaskTypeType.TO_CHARGE.val())
+// .in(Task::getTaskSts, TaskStsType.ASSIGN.val(), TaskStsType.PROGRESS.val())
+// )){
+// log.warn("[{}]鍙稟gv姝e湪鍘诲厖鐢� - task......", agv.getUuid());
+// return false;
+// }
if (!this.judgeOnline(agv.getId())) {
log.warn("[{}]鍙稟gv涓嶆槸鍦ㄧ嚎鐘舵��......", agv.getUuid());
return false;
@@ -148,9 +158,9 @@
@Override
public Integer getBackpack(Agv agv) {
- if (null != agv.getStage()) {
- return agv.getStage();
- }
+// if (null != agv.getStage()) {
+// return agv.getStage();
+// }
AgvModel agvModel = agvModelService.getById(agv.getAgvModel());
assert null != agvModel;
return agvModel.getBackpack();
--
Gitblit v1.9.1