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