From 48c698c052185fceda88697e5a79cd14dbd6f0c3 Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期五, 28 二月 2025 10:38:56 +0800
Subject: [PATCH] #

---
 zy-acs-manager/src/main/java/com/zy/acs/manager/common/constant/AreaConstant.java      |  257 ++++++++++++++++++++++++++++++++++++
 zy-acs-flow/src/map/constants.js                                                       |    2 
 zy-acs-manager/src/main/java/com/zy/acs/manager/common/constant/AvoidAreaConstant.java |   19 ++
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java       |   75 ++++++++++
 zy-acs-manager/src/main/resources/application.yml                                      |    4 
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/MapDataWsScheduler.java |    2 
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/constant/MapDataConstant.java     |    4 
 7 files changed, 359 insertions(+), 4 deletions(-)

diff --git a/zy-acs-flow/src/map/constants.js b/zy-acs-flow/src/map/constants.js
index 6ad7434..7eb8c75 100644
--- a/zy-acs-flow/src/map/constants.js
+++ b/zy-acs-flow/src/map/constants.js
@@ -1,5 +1,5 @@
 
-export const ANIMATE_DURING_TIME = 30;
+export const ANIMATE_DURING_TIME = 100;
 
 export const MAP_DEFAULT_ROTATION = 180;
 
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/common/constant/AreaConstant.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/common/constant/AreaConstant.java
new file mode 100644
index 0000000..d826313
--- /dev/null
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/common/constant/AreaConstant.java
@@ -0,0 +1,257 @@
+package com.zy.acs.manager.common.constant;
+
+import java.util.ArrayList;
+
+public class AreaConstant {
+
+    public static final ArrayList<String> FAR_LEFT_AREA  = new ArrayList<String>(){{
+        add("00001461");
+        add("00001462");
+        add("00001463");
+        add("00001464");
+        add("00001465");
+        add("00001466");
+        add("00001467");
+        add("00001468");
+        add("00001469");
+        add("00001470");
+        add("00001471");
+        add("00001472");
+        add("00001473");
+        add("00001474");
+        add("00001475");
+        add("00001476");
+        add("00001477");
+        add("00001478");
+        add("00001479");
+        add("00001480");
+        add("00001481");
+        add("00001482");
+        add("00001483");
+        add("00001484");
+        add("00001485");
+        add("00001486");
+        add("00001487");
+        add("00001488");
+        add("00001489");
+        add("00001490");
+        add("00001491");
+        add("00001492");
+        add("00001493");
+        add("00001494");
+        add("00001495");
+        add("00001496");
+        add("00001497");
+        add("00001498");
+        add("00001499");
+        add("00001500");
+        add("00001501");
+        add("00001502");
+        add("00001503");
+        add("00001504");
+        add("00001505");
+        add("00001506");
+        add("00001507");
+        add("00001508");
+        add("00001509");
+        add("00001510");
+        add("00001511");
+        add("00001512");
+        add("00001513");
+        add("00001514");
+        add("00001515");
+        add("00001516");
+        add("00001517");
+        add("00001518");
+        add("00001519");
+        add("00001520");
+        add("00001521");
+        add("00001522");
+        add("00001523");
+        add("00001524");
+        add("00001525");
+        add("00001526");
+        add("00001527");
+        add("00001528");
+        add("00001529");
+        add("00001530");
+        add("00001531");
+        add("00001532");
+        add("00001533");
+        add("00001534");
+        add("00001535");
+        add("00001536");
+        add("00001537");
+        add("00001538");
+        add("00001539");
+        add("00001540");
+        add("00001541");
+        add("00001542");
+        add("00001543");
+        add("00001544");
+        add("00001545");
+        add("00001546");
+        add("00001547");
+        add("00001548");
+        add("00001549");
+        add("00001550");
+        add("00001551");
+        add("00001552");
+        add("00001553");
+        add("00001554");
+        add("00001555");
+        add("00001556");
+        add("00001557");
+        add("00001558");
+        add("00001559");
+        add("00001560");
+        add("00001561");
+        add("00001562");
+        add("00001563");
+        add("00001564");
+        add("00001565");
+        add("00001566");
+        add("00001567");
+        add("00001568");
+        add("00001569");
+        add("00001570");
+        add("00001571");
+        add("00001572");
+        add("00001573");
+        add("00001574");
+        add("00001575");
+        add("00001576");
+        add("00001577");
+        add("00001578");
+        add("00001579");
+        add("00001580");
+        add("00001581");
+        add("00001582");
+        add("00001583");
+        add("00001584");
+        add("00001585");
+        add("00001586");
+        add("00001587");
+        add("00001588");
+        add("00001589");
+        add("00001590");
+        add("00001591");
+        add("00001592");
+        add("00001593");
+        add("00001594");
+        add("00001595");
+        add("00001596");
+        add("00001597");
+        add("00001598");
+        add("00001599");
+        add("00001600");
+        add("00001601");
+        add("00001602");
+        add("00001603");
+        add("00001604");
+        add("00001605");
+        add("00001606");
+        add("00001607");
+        add("00001608");
+        add("00001609");
+        add("00001610");
+        add("00001611");
+        add("00001612");
+        add("00001613");
+        add("00001614");
+        add("00001615");
+        add("00001616");
+        add("00001617");
+        add("00001618");
+        add("00001619");
+        add("00001620");
+        add("00001621");
+        add("00001622");
+        add("00001623");
+        add("00001624");
+        add("00001625");
+        add("00001626");
+        add("00001627");
+        add("00001628");
+        add("00001629");
+        add("00001630");
+        add("00001631");
+        add("00001632");
+        add("00001633");
+        add("00001634");
+        add("00001635");
+        add("00001636");
+        add("00001637");
+        add("00001638");
+        add("00001639");
+        add("00001640");
+        add("00001641");
+        add("00001642");
+        add("00001643");
+        add("00001644");
+        add("00001645");
+        add("00001646");
+        add("00001647");
+        add("00001648");
+        add("00001649");
+        add("00001650");
+        add("00001651");
+        add("00001652");
+        add("00001653");
+        add("00001654");
+        add("00001655");
+        add("00001656");
+        add("00001657");
+        add("00001658");
+        add("00001659");
+        add("00001660");
+        add("00001661");
+        add("00001662");
+        add("00001663");
+        add("00001664");
+        add("00001665");
+        add("00001666");
+        add("00001667");
+        add("00001668");
+        add("00001669");
+        add("00001670");
+        add("00001671");
+        add("00001672");
+        add("00001673");
+        add("00001674");
+        add("00001675");
+        add("00001676");
+        add("00001677");
+        add("00001678");
+        add("00001679");
+        add("00001680");
+        add("00001681");
+        add("00001682");
+        add("00001683");
+        add("00001684");
+        add("00001685");
+        add("00001686");
+        add("00001687");
+        add("00001688");
+        add("00001689");
+        add("00001690");
+        add("00001691");
+        add("00001692");
+        add("00001693");
+        add("00001694");
+        add("00001695");
+        add("00001696");
+        add("00001697");
+        add("00001698");
+        add("00001699");
+        add("00001700");
+        add("00001701");
+        add("00001702");
+        add("00001703");
+        add("00001704");
+        add("00001705");
+        add("00001706");
+    }};
+
+
+}
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/common/constant/AvoidAreaConstant.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/common/constant/AvoidAreaConstant.java
new file mode 100644
index 0000000..d29cd10
--- /dev/null
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/common/constant/AvoidAreaConstant.java
@@ -0,0 +1,19 @@
+package com.zy.acs.manager.common.constant;
+
+import java.util.ArrayList;
+
+/**
+ * update man_agv set status = 0 where id > 10;
+ * update man_agv_detail set code = null where id > 10;
+ */
+public class AvoidAreaConstant {
+
+    public static final ArrayList<String> FAR_LEFT_AVOID_AREA  = new ArrayList<String>(){{
+        add("A");
+        add("B");
+        add("C");
+        add("D");
+        add("E");
+    }};
+
+}
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/constant/MapDataConstant.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/constant/MapDataConstant.java
index c8dbb55..667a037 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/constant/MapDataConstant.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/constant/MapDataConstant.java
@@ -15,4 +15,8 @@
 
     public static final String EMPTY_OF_ERROR = "EMPTY";
 
+    public static final String RESOLVE_DEADLOCK = "RESOLVE_DEADLOCK";
+
+    public static final Integer DEADLOCK_TASK_TIMEOUT = 6 * MAX_JAM_TIMEOUT;
+
 }
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 bbb1f0a..a41397a 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
@@ -37,7 +37,7 @@
 @Component
 public class MapDataWsScheduler {
 
-    public static final int WEBSOCKET_BROADCAST_INTERVAL = 30;
+    public static final int WEBSOCKET_BROADCAST_INTERVAL = 100;
 
     private ExecutorService singleThreadExecutor;
 
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java
index 8dc6dbe..775f301 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java
@@ -71,6 +71,10 @@
     private JamService jamService;
     @Autowired
     private AvoidWaveCalculator avoidWaveCalculator;
+    @Autowired
+    private TaskService taskService;
+    @Autowired
+    private FuncStaService funcStaService;
 
     @Transactional
     public synchronized void trigger(Segment segment) {
@@ -99,6 +103,77 @@
             if (!agvService.judgeEnable(agv.getId())) {
                 return;
             }
+
+            // resolve deadlock
+//            if (configService.getVal("unlockSwitch", Boolean.class)) {
+//
+//                boolean preSegIsStandbyDeadLock = false;
+//                Segment previousSeg = segmentService.getPreviousStepOfFinish(segment.getTravelId(), segment.getSerial(), MapDataConstant.RESOLVE_DEADLOCK);
+//                preSegIsStandbyDeadLock = previousSeg != null;
+//                if (preSegIsStandbyDeadLock && !jamService.isAvoidSeg(segment.getId())) {
+//                    if (0 < segmentService.count(new LambdaQueryWrapper<Segment>()
+//                            .in(Segment::getState, SegmentStateType.WAITING.toString(), SegmentStateType.RUNNING.toString())
+//                            .eq(Segment::getMemo, MapDataConstant.RESOLVE_DEADLOCK))) {
+//                        return;
+//                    }
+//                }
+//
+//                Jam jam = jamService.getJam(agv.getId(), agvDetail.getRecentCode(), segment.getId());
+//                if (!preSegIsStandbyDeadLock && (null != jam && null != jam.getDuration() && jam.getDuration() > (BlockSeverityType.SEVERE.duration - MapDataConstant.MAX_JAM_TIMEOUT)
+//                        || DateUtils.diffToMilliseconds(segment.getUpdateTime(), now)  > (BlockSeverityType.SEVERE.duration - MapDataConstant.MAX_JAM_TIMEOUT))
+//                        && (Cools.isEmpty(segment.getMemo()) || !segment.getMemo().equals(MapDataConstant.RESOLVE_DEADLOCK))) {
+//
+//                    Task task = taskService.getById(segment.getTaskId());
+//                    if (task.getTaskSts().equals(TaskStsType.PROGRESS.val())
+//                            && DateUtils.diffToMilliseconds(task.getUpdateTime(), now) > MapDataConstant.DEADLOCK_TASK_TIMEOUT) {
+//
+//                        Code endCode = null;
+//                        List<FuncSta> idleFunStaList = funcStaService.findInIdleStatus(FuncStaType.STANDBY, segment.getAgvId());
+//                        if (!Cools.isEmpty(idleFunStaList)) {
+//                            idleFunStaList = idleFunStaList.stream().filter(funcSta -> {
+//                                return 0 == segmentService.count(new LambdaQueryWrapper<Segment>()
+//                                                .eq(Segment::getEndNode, funcSta.getCode())
+//                                                .in(Segment::getState, SegmentStateType.WAITING.toString(), SegmentStateType.RUNNING.toString())
+//                                                .eq(Segment::getMemo, MapDataConstant.RESOLVE_DEADLOCK)
+//                                );
+//                            }).collect(Collectors.toList());
+//                            FuncSta funcSta = funcStaService.checkoutFurthestFunSta(agvDetailService.getCurrentCode(segment.getAgvId()).getId(), idleFunStaList);
+//                            if (null != funcSta) {
+//                                endCode = codeService.getCacheById(funcSta.getCode());
+//                            }
+//                        }
+//                        if (null == endCode) {
+//                            log.warn("AGV[{}] failed to search destination锛宼here hadn't any idle funSta锛孴askTypeType锛歿}", segment.getAgvId(), FuncStaType.STANDBY);
+//                            return;
+//                        }
+//
+//                        segment.setState(SegmentStateType.INIT.toString());
+//                        segment.setUpdateTime(now);
+//                        if (!segmentService.updateById(segment)) {
+//                            log.error("Segment [{}] failed to update 锛侊紒锛�", segment.getGroupId() + " - " + segment.getSerial());
+//                            return;
+//                        }
+//
+//                        // new move seg
+//                        Segment insertSeg = new Segment();
+//                        insertSeg.setUuid(String.valueOf(snowflakeIdWorker.nextId()).substring(3));
+//                        insertSeg.setTravelId(segment.getTravelId());
+//                        insertSeg.setAgvId(segment.getAgvId());
+//                        insertSeg.setTaskId(segment.getTaskId());
+//                        insertSeg.setSerial(segment.getSerial() - 1);
+//                        insertSeg.setEndNode(endCode.getId());
+//                        insertSeg.setPosType(TaskPosDto.PosType.MOVE.toString());
+//                        insertSeg.setState(SegmentStateType.WAITING.toString());
+//                        insertSeg.setMemo(MapDataConstant.RESOLVE_DEADLOCK);
+//                        if (!segmentService.save(insertSeg)) {
+//                            log.error("Segment [{}] failed to save 锛侊紒锛�", segment.getTravelId() + " - " + segment.getSerial());
+//                            return;
+//                        }
+//                        return;
+//                    }
+//                }
+//            }
+
             if (!Cools.isEmpty(segmentService.getByAgvAndState(agv.getId(), SegmentStateType.RUNNING.toString()))) {
                 return;
             }
diff --git a/zy-acs-manager/src/main/resources/application.yml b/zy-acs-manager/src/main/resources/application.yml
index c08728f..010ce42 100644
--- a/zy-acs-manager/src/main/resources/application.yml
+++ b/zy-acs-manager/src/main/resources/application.yml
@@ -7,7 +7,7 @@
     static-path-pattern: /**
   datasource:
     driver-class-name: com.mysql.jdbc.Driver
-    url: jdbc:mysql://127.0.0.1:3306/zy_rcs_dual2?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
+    url: jdbc:mysql://127.0.0.1:3306/zy_rcs_jbly?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
     username: root
     password: xltys1995
     type: com.alibaba.druid.pool.DruidDataSource
@@ -60,7 +60,7 @@
   max: 30
   min: 10
   timeout: 5000
-  index: 12
+  index: 9
 
 floyd:
   enable: false

--
Gitblit v1.9.1