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}&nbsp;({record.serial})</>
+                                            return <>{record.uuid}&nbsp;({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}&nbsp;({record.serial})</>
+                                            return <>{record.uuid}&nbsp;({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