version/db/20241117.rarBinary files differ
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}> 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,because 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,because 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,because 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) { 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); 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("避让通知失败,{}号车辆存在多个等待中的Segment!!!", 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; } } 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); } 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); 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); 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; 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("{}号车辆存在多个等待中的Segment!!!", agvService.getById(agvId).getUuid()); } return waitingSegList.get(0); return waitingSegList; } } 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 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>