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