| | |
| | | // checkout path |
| | | Code startCode = codeService.getById(agvDetail.getRecentCode()); |
| | | Code endCode = codeService.getById(endNode); |
| | | long startTime = System.currentTimeMillis(); |
| | | List<String> pathList = this.checkoutPath(agv, startCode, endCode, segment); |
| | | // System.out.println("checkoutPath: " + (System.currentTimeMillis() - startTime)); |
| | | if (Cools.isEmpty(pathList)) { |
| | | return; |
| | | } |
| | |
| | | String lastCodeData = pathList.get(pathList.size() - 1); |
| | | if (!endCode.getData().equals(lastCodeData)) { |
| | | // slice |
| | | Code lastCode = codeService.selectByData(lastCodeData); |
| | | Code lastCode = codeService.getCacheByData(lastCodeData); |
| | | |
| | | // if (pathList.size() <= MIN_SLICE_PATH_LENGTH) { |
| | | // return; |
| | |
| | | |
| | | mapService.lockPath(null, pathList, agv.getUuid()); |
| | | |
| | | startTime = System.currentTimeMillis(); |
| | | mainService.generateAction(segment.getAgvId(), segmentList, pathList, now); |
| | | // System.out.println("generateAction: " + (System.currentTimeMillis() - startTime)); |
| | | |
| | | } catch (Exception e) { |
| | | log.error("TrafficService.trigger", e); |
| | |
| | | List<Segment> waitingSegList = segmentService.getJustWaitingSeg(blockAgvId); |
| | | if (null != waitingSegList |
| | | && waitingSegList.stream().anyMatch( |
| | | waitingSeg -> waitingSeg.getEndNode().equals(codeService.selectByData(blockAgvCode).getId()) |
| | | waitingSeg -> waitingSeg.getEndNode().equals(codeService.getCacheByData(blockAgvCode).getId()) |
| | | )) { |
| | | maxJamTimeoutFactor = 1; |
| | | break; |
| | |
| | | |
| | | // handle jam timeout |
| | | if (null != maxJamTimeoutFactor) { |
| | | if (System.currentTimeMillis() - jam.getStartTime().getTime() > MapDataConstant.MAX_JAM_TIMEOUT * maxJamTimeoutFactor) { |
| | | if (System.currentTimeMillis() - jam.getStartTime().getTime() > (long) MapDataConstant.MAX_JAM_TIMEOUT * maxJamTimeoutFactor) { |
| | | |
| | | if (!Cools.isEmpty(lockPathList)) { |
| | | |
| | |
| | | List<String> otherWaveList = MapDataUtils.hasOtherWave(waveNodeList, agvNo); |
| | | if (!Cools.isEmpty(otherWaveList)) { |
| | | for (String otherWave : otherWaveList) { |
| | | if (1 < mapDataDispatcher.queryCodeListFromDynamicNode(lev, otherWave).size()) { |
| | | if (mapService.isWalkingByVehicle(lev, otherWave)) { |
| | | blockVehicleList.add(new BlockVehicleDto(otherWave, false)); |
| | | } else { |
| | | blockVehicleList.add(new BlockVehicleDto(otherWave, true)); |
| | |
| | | * avoidPathList include wave node and dynamic node |
| | | */ |
| | | private boolean notifyVehicleAvoid(String agvNo, String agvPosCode, List<String> avoidPathList, String sponsor, Jam jam) { |
| | | Agv agv = agvService.selectByUuid(agvNo); |
| | | if (!Cools.isEmpty(segmentService.getByAgvAndState(agv.getId(), SegmentStateType.RUNNING.toString()))) { |
| | | Long agvId = agvService.getAgvId(agvNo); |
| | | if (!Cools.isEmpty(segmentService.getByAgvAndState(agvId, SegmentStateType.RUNNING.toString()))) { |
| | | log.warn("{}号车辆避让失败,存在进行中任务!!!", agvNo); |
| | | return false; |
| | | } |
| | |
| | | } |
| | | |
| | | String endCodeData = finalNode.getCodeData(); |
| | | Code endCode = codeService.selectByData(endCodeData); |
| | | Code endCode = codeService.getCacheByData(endCodeData); |
| | | |
| | | List<Segment> waitingSegList = segmentService.getByAgvAndState(agv.getId(), SegmentStateType.WAITING.toString()); |
| | | List<Segment> waitingSegList = segmentService.getByAgvAndState(agvId, SegmentStateType.WAITING.toString()); |
| | | if (!Cools.isEmpty(waitingSegList)) { |
| | | |
| | | if (waitingSegList.size() > 1) { |
| | |
| | | Segment insertSeg = new Segment(); |
| | | insertSeg.setUuid(String.valueOf(snowflakeIdWorker.nextId()).substring(3)); |
| | | insertSeg.setTravelId(segment.getTravelId()); |
| | | insertSeg.setAgvId(agv.getId()); |
| | | insertSeg.setAgvId(agvId); |
| | | insertSeg.setTaskId(segment.getTaskId()); |
| | | insertSeg.setSerial(segment.getSerial() - 1); |
| | | insertSeg.setEndNode(endCode.getId()); |
| | |
| | | |
| | | } else { |
| | | |
| | | return mainLockWrapService.buildMinorTask(agv, TaskTypeType.MOVE, endCodeData, jam); |
| | | return mainLockWrapService.buildMinorTask(agvId, TaskTypeType.MOVE, endCodeData, jam); |
| | | } |
| | | |
| | | return true; |
| | |
| | | List<String> list = GsonUtils.fromJsonToList(jam.getJamPath(), String.class); |
| | | |
| | | Agv jamAgv = agvService.getById(jam.getJamAgv()); |
| | | List<String> jamDynamicNodes = mapDataDispatcher.queryCodeListFromDynamicNode(lev, jamAgv.getUuid()); |
| | | List<String> jamDynamicNodes = mapService.queryCodeListFromDynamicNode(lev, jamAgv.getUuid()); |
| | | // jamDynamicNodes has sorted |
| | | String firstCodeNode = jamDynamicNodes.stream().findFirst().orElse(null); |
| | | |