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