From 8d425ae26f1070043f4e81e7ebce1e6f39d5d013 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期一, 18 十一月 2024 10:21:52 +0800
Subject: [PATCH] #
---
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java | 12 ++++--
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java | 34 ++++++++++++++---
zy-acs-manager/src/main/resources/application.yml | 2
zy-acs-flow/src/page/jam/JamList.jsx | 4 +-
zy-acs-manager/src/main/resources/mapper/manager/JamMapper.xml | 14 +++++++
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/JamServiceImpl.java | 6 +++
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/mapper/JamMapper.java | 2 +
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/PatrolService.java | 5 ++
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/SegmentServiceImpl.java | 4 +-
version/db/20241117.rar | 0
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/JamService.java | 13 ++++++
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/SegmentService.java | 2
12 files changed, 81 insertions(+), 17 deletions(-)
diff --git a/version/db/20241117.rar b/version/db/20241117.rar
new file mode 100644
index 0000000..40f8a1a
--- /dev/null
+++ b/version/db/20241117.rar
Binary files differ
diff --git a/zy-acs-flow/src/page/jam/JamList.jsx b/zy-acs-flow/src/page/jam/JamList.jsx
index 8711523..117584d 100644
--- a/zy-acs-flow/src/page/jam/JamList.jsx
+++ b/zy-acs-flow/src/page/jam/JamList.jsx
@@ -261,7 +261,7 @@
</ReferenceField>
<ReferenceField source="jamSeg" label="table.field.jam.jamSeg" reference="segment" link={false} sortable={false}>
<FunctionField render={(record) => {
- return <>{record.groupId} ({record.serial})</>
+ return <>{record.uuid} ({record.serial})</>
}} />
</ReferenceField>
<ReferenceField source="jamCode" label="table.field.jam.jamCode" reference="code" link={false} sortable={false}>
@@ -272,7 +272,7 @@
</ReferenceField>
<ReferenceField source="avoSeg" label="table.field.jam.avoSeg" reference="segment" link={false} sortable={false}>
<FunctionField render={(record) => {
- return <>{record.groupId} ({record.serial})</>
+ return <>{record.uuid} ({record.serial})</>
}} />
</ReferenceField>
<ReferenceField source="avoCode" label="table.field.jam.avoCode" reference="code" link={false} sortable={false}>
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 0c0703d..7329135 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
@@ -254,6 +254,10 @@
if (!Cools.isEmpty(taskService.selectInSts(agvId, TaskStsType.ASSIGN, TaskStsType.PROGRESS))) {
throw new CoolException("AGV[" + agv.getUuid() + "]鍒嗛厤浠诲姟澶辫触锛屽凡瀛樺湪鎵ц浠诲姟...");
}
+ if (!Cools.isEmpty(segmentService.getByAgvAndState(agv.getId(), SegmentStateType.WAITING.toString()))
+ || !Cools.isEmpty(segmentService.getByAgvAndState(agv.getId(), SegmentStateType.RUNNING.toString()))) {
+ throw new CoolException("AGV[" + agv.getUuid() + "] failed to assign锛宐ecause already has the segment in running...");
+ }
// execute ----------------------------------------------------
Date now = new Date();
@@ -501,6 +505,10 @@
if (!Cools.isEmpty(taskService.selectInSts(agv.getId(), TaskStsType.ASSIGN, TaskStsType.PROGRESS))) {
throw new CoolException("AGV[" + agv.getUuid() + "] failed to assign锛宐ecause already has the task in running...");
}
+ if (!Cools.isEmpty(segmentService.getByAgvAndState(agv.getId(), SegmentStateType.WAITING.toString()))
+ || !Cools.isEmpty(segmentService.getByAgvAndState(agv.getId(), SegmentStateType.RUNNING.toString()))) {
+ throw new CoolException("AGV[" + agv.getUuid() + "] failed to assign锛宐ecause already has the segment in running...");
+ }
Date now = new Date();
Code endCode = null;
@@ -623,10 +631,6 @@
default:
break;
}
-
-// if (taskType.equals(TaskTypeType.TO_STANDBY)) {
-// redis.setObject(RedisConstant.AGV_TO_STANDBY_FLAG, agv.getUuid(), false);
-// }
return true;
} catch (Exception e) {
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/PatrolService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/PatrolService.java
index d818b04..eac0d0d 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/PatrolService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/PatrolService.java
@@ -106,7 +106,10 @@
Code startCode = codeService.getById(agvDetail.getRecentCode());
List<String> notInCodeList = new ArrayList<>();
- notInCodeList.add("00000151");
+ notInCodeList.add("00000401");
+ notInCodeList.add("00000403");
+ notInCodeList.add("00000411");
+ notInCodeList.add("00000413");
List<Code> list = codeService.list(new LambdaQueryWrapper<Code>().notIn(Code::getData, notInCodeList));
Collections.shuffle(list);
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 eed8e6a..7729fe5 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
@@ -271,10 +271,11 @@
} else {
// select optimal block vehicle
- String blockAgvNo = blockVehicleList.stream()
- .filter(BlockVehicleDto::isAvoidable)
- .map(BlockVehicleDto::getVehicle)
- .findFirst().orElse(null);
+// String blockAgvNo = blockVehicleList.stream()
+// .filter(BlockVehicleDto::isAvoidable)
+// .map(BlockVehicleDto::getVehicle)
+// .findFirst().orElse(null);
+ String blockAgvNo = this.checkoutBestSolutionOfBlocks(blockVehicleList);
// block vehicle info
Agv blockAgv = agvService.selectByUuid(blockAgvNo);
@@ -290,8 +291,11 @@
}
// 鍒ゆ柇涓嬩釜浠诲姟鏄惁涓哄師鍦颁换鍔★紝濡傛灉鏄垯绛夊緟 ===>> 瓒呰繃绛夊緟鏃堕棿锛岀粫璺紱濡傛灉涓嶆槸锛岃闃诲杞﹁締閬胯
- Segment waitingSeg = segmentService.getJustWaitingSeg(blockAgv.getId());
- if (null != waitingSeg && waitingSeg.getEndNode().equals(codeService.selectByData(blockAgvCode).getId())) {
+ List<Segment> waitingSegList = segmentService.getJustWaitingSeg(blockAgv.getId());
+ if (null != waitingSegList
+ && waitingSegList.stream().anyMatch(
+ waitingSeg -> waitingSeg.getEndNode().equals(codeService.selectByData(blockAgvCode).getId())
+ )) {
maxJamTimeoutFactor = 1;
break;
}
@@ -437,6 +441,10 @@
List<Segment> waitingSegList = segmentService.getByAgvAndState(agv.getId(), SegmentStateType.WAITING.toString());
if (!Cools.isEmpty(waitingSegList)) {
+ if (waitingSegList.size() > 1) {
+ log.error("閬胯閫氱煡澶辫触锛寋}鍙疯溅杈嗗瓨鍦ㄥ涓瓑寰呬腑鐨凷egment锛侊紒锛�", agvNo);
+ return false;
+ }
// revert
Date now = new Date();
for (Segment seg : waitingSegList) {
@@ -508,4 +516,18 @@
return blackPathList.stream().distinct().collect(Collectors.toList());
}
+ private String checkoutBestSolutionOfBlocks(List<BlockVehicleDto> blockVehicleList) {
+ assert !Cools.isEmpty(blockVehicleList);
+ for (BlockVehicleDto blockVehicleDto : blockVehicleList) {
+ if (!blockVehicleDto.isAvoidable()) {
+ continue;
+ }
+ // 娌℃湁閬胯涓殑浠诲姟
+ if (Cools.isEmpty(jamService.getUnfinishedAvoSegByAvo(blockVehicleDto.getVehicle(), null))) {
+ return blockVehicleDto.getVehicle();
+ }
+ }
+ return null;
+ }
+
}
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/mapper/JamMapper.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/mapper/JamMapper.java
index 676d2f4..79bc636 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/mapper/JamMapper.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/mapper/JamMapper.java
@@ -12,4 +12,6 @@
List<Jam> selectJamFromSegmentByAvo(@Param("jamSeg")Long jamSeg, @Param("avoAgv")Long avoAgv);
+ List<Jam> selectUnfinishedAvoSegByAvo(@Param("avoAgv")Long avoAgv, @Param("currSeg")Long currSeg);
+
}
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/JamService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/JamService.java
index 88de9a4..61d58b3 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/JamService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/JamService.java
@@ -11,12 +11,25 @@
Jam getJam(Long agvId, Long jamCode, Long jamSeg);
+ /**
+ * 涓昏涓� 閬胯杞�
+ * 闃诲浠诲姟 鏈� 瀹屾垚
+ * 閬胯浠诲姟 宸� 瀹屾垚
+ */
List<Jam> getUnfinishedOriginJamByAvo(Long avoAgv, Long currCode, Long currSeg);
Jam getCycleJam(Long jamAgv, Long jamSeg, String avoAgvNo);
List<Jam> getJamFromSegmentByAvo(Segment jamSeg, String avoAgvNo);
+
+ /**
+ * 涓昏涓� 閬胯杞�
+ * 闃诲浠诲姟 涓嶇
+ * 閬胯浠诲姟 鏈� 瀹屾垚
+ */
+ List<Jam> getUnfinishedAvoSegByAvo(String avoAgvNo, Segment currSeg);
+
List<Jam> queryByAvoid(Long avoAgv, JamStateType jamState);
Boolean checkIfFinish(Long avoAgv, String currCodeData);
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/SegmentService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/SegmentService.java
index 02803e3..737f465 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/SegmentService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/SegmentService.java
@@ -12,7 +12,7 @@
Segment getNextStepOfInit(Long travelId, Integer serial);
- Segment getJustWaitingSeg(Long agvId);
+ List<Segment> getJustWaitingSeg(Long agvId);
List<Segment> getSamePos(List<Segment> segmentList);
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/JamServiceImpl.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/JamServiceImpl.java
index 2569b2c..15eed3a 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/JamServiceImpl.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/JamServiceImpl.java
@@ -73,6 +73,12 @@
}
@Override
+ public List<Jam> getUnfinishedAvoSegByAvo(String avoAgvNo, Segment currSeg) {
+ Agv avoAgv = agvService.selectByUuid(avoAgvNo);
+ return this.baseMapper.selectUnfinishedAvoSegByAvo(avoAgv.getId(), null);
+ }
+
+ @Override
public List<Jam> queryByAvoid(Long avoAgv, JamStateType jamState) {
if (null == avoAgv) {
return null;
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/SegmentServiceImpl.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/SegmentServiceImpl.java
index da6a106..c17f43c 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/SegmentServiceImpl.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/SegmentServiceImpl.java
@@ -58,7 +58,7 @@
}
@Override
- public Segment getJustWaitingSeg(Long agvId) {
+ public List<Segment> getJustWaitingSeg(Long agvId) {
if (null == agvId) {
return null;
}
@@ -69,7 +69,7 @@
if (waitingSegList.size() > 1) {
log.error("{}鍙疯溅杈嗗瓨鍦ㄥ涓瓑寰呬腑鐨凷egment锛侊紒锛�", agvService.getById(agvId).getUuid());
}
- return waitingSegList.get(0);
+ return waitingSegList;
}
}
diff --git a/zy-acs-manager/src/main/resources/application.yml b/zy-acs-manager/src/main/resources/application.yml
index 19180cc..f0726e7 100644
--- a/zy-acs-manager/src/main/resources/application.yml
+++ b/zy-acs-manager/src/main/resources/application.yml
@@ -8,7 +8,7 @@
static-path-pattern: /**
datasource:
driver-class-name: com.mysql.jdbc.Driver
- url: jdbc:mysql://localhost:3306/zy_rcs?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
+ url: jdbc:mysql://localhost:3306/zy_rcs1?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
# url: jdbc:mysql://192.168.2.46:3306/zy_acs?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: xltys1995
diff --git a/zy-acs-manager/src/main/resources/mapper/manager/JamMapper.xml b/zy-acs-manager/src/main/resources/mapper/manager/JamMapper.xml
index b5b38d5..d1a55fc 100644
--- a/zy-acs-manager/src/main/resources/mapper/manager/JamMapper.xml
+++ b/zy-acs-manager/src/main/resources/mapper/manager/JamMapper.xml
@@ -53,4 +53,18 @@
AND mj.avo_agv = #{avoAgv}
</select>
+ <select id="selectUnfinishedAvoSegByAvo" resultType="com.zy.acs.manager.manager.entity.Jam">
+ SELECT
+ mj.*
+ FROM man_jam mj
+ LEFT JOIN man_segment jam_seg ON mj.jam_seg = jam_seg.id
+ LEFT JOIN man_segment avo_seg ON mj.avo_seg = avo_seg.id
+ WHERE 1=1
+ AND avo_seg.state IN ('INIT', 'WAITING')
+ AND mj.avo_agv = #{avoAgv}
+ <if test="currSeg != null">
+ AND mj.avo_seg = #{currSeg}
+ </if>
+ </select>
+
</mapper>
--
Gitblit v1.9.1