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