|  |  |  | 
|---|
|  |  |  | String jamAgvNo = jamVehicleList.get(0); | 
|---|
|  |  |  | if (mapDataDispatcher.queryCodeListFromDynamicNode(null, jamAgvNo).size() > 1 && pathList.size() <= MIN_SLICE_PATH_LENGTH) { | 
|---|
|  |  |  | pathList.clear(); | 
|---|
|  |  |  | //                        return pathList; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | * avoidPathList include wave node and dynamic node | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | private boolean notifyVehicleAvoid(String agvNo, String agvPosCode, List<String> avoidPathList, String sponsor, Jam jam) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | assert avoidPathList.size() >= 2; | 
|---|
|  |  |  | Agv agv = agvService.selectByUuid(agvNo); | 
|---|
|  |  |  | if (!Cools.isEmpty(segmentService.getByAgvAndState(agv.getId(), SegmentStateType.RUNNING.toString()))) { | 
|---|
|  |  |  | log.warn("{}号车辆避让失败,存在进行中任务!!!", agvNo); | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | int[] startMapIdx = mapDataDispatcher.getCodeMatrixIdx(null, agvPosCode); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | RetreatNavigateNode startNode = new RetreatNavigateNode(startMapIdx[0], startMapIdx[1], agvPosCode); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | assert avoidPathList.size() >= 2; | 
|---|
|  |  |  | RetreatNavigateNode finalNode = retreatNavigateService.execute(agvNo, startNode, avoidPathList, sponsor, jam); | 
|---|
|  |  |  | if (null == finalNode) { | 
|---|
|  |  |  | log.warn("{}号车辆避让失败,检索避让点失败!!!", agvNo); | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Date now = new Date(); | 
|---|
|  |  |  | String endCodeData = finalNode.getCodeData(); | 
|---|
|  |  |  | Agv agv = agvService.selectByUuid(agvNo); | 
|---|
|  |  |  | Code endCode = codeService.selectByData(endCodeData); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | jam.setAvoCode(endCode.getId()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (!Cools.isEmpty(segmentService.getByAgvAndState(agv.getId(), SegmentStateType.RUNNING.toString()))) { | 
|---|
|  |  |  | log.warn("{}号车辆避让失败,存在进行中任务!!!", agvNo); | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | List<Segment> waitingSegList = segmentService.getByAgvAndState(agv.getId(), SegmentStateType.WAITING.toString()); | 
|---|
|  |  |  | if (!Cools.isEmpty(waitingSegList)) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // revert | 
|---|
|  |  |  | Date now = new Date(); | 
|---|
|  |  |  | for (Segment seg : waitingSegList) { | 
|---|
|  |  |  | seg.setState(SegmentStateType.INIT.toString()); | 
|---|
|  |  |  | seg.setUpdateTime(now); | 
|---|