| | |
| | | // } |
| | | // } |
| | | public synchronized void taskDown(List<List<List<WrkMast>>> wrkMastListAll) { |
| | | |
| | | List<Integer> rgvNoM = new ArrayList<>(); |
| | | List<Integer> rgvNoR = new ArrayList<>(); |
| | | Integer wrkMastRunCount = 0; |
| | | Long devperimeter = 0L; |
| | | for (List<List<WrkMast>> wrkMastLists : wrkMastListAll) { |
| | | int wrkMastRunCount = 0; |
| | | int wrkMastCount = 0; |
| | | long rgvId = 0; |
| | | for (List<WrkMast> wrkMastList : wrkMastLists) { |
| | | for (WrkMast wrkMast : wrkMastList) { |
| | | wrkMastCount++; |
| | | } |
| | | } |
| | | runRgv: |
| | | for (List<WrkMast> wrkMastList : wrkMastLists) { |
| | | for (WrkMast wrkMast : wrkMastList) { |
| | |
| | | BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("dev_no", wrkMast.getSourceStaNo())); |
| | | if (basDevpPosition.getPlcPosition()>rgvProtocol.getRgvPos()){ |
| | | if (basDevpPosition.getPlcPosition()-rgvProtocol.getRgvPos()>taskRunPerimeter){ |
| | | if (wrkMastRunCount<wrkMastCount){ |
| | | if (rgvProtocol.getStatusType() == RgvStatusType.IDLE) { |
| | | if (!MessageQueue.offer(SlaveType.Rgv, rgvProtocol.getRgvNo(), new Task(4,null))) { |
| | | log.error("RGV漫游启动命令下发失败,RGV号={},任务数据={}", rgvId, "漫游指令"); |
| | | break runRgv; |
| | | } |
| | | wrkMastRunCount++; |
| | | continue ; |
| | | } |
| | | if (!rgvNoM.contains(rgvProtocol.getRgvNo())){ |
| | | rgvNoM.add(rgvProtocol.getRgvNo()); |
| | | wrkMastRunCount++; |
| | | break; |
| | | } |
| | | break runRgv; |
| | | continue ; |
| | | } |
| | | } else { |
| | | if (rgvProtocol.getRgvPos()+ perimeter -basDevpPosition.getPlcPosition()>taskRunPerimeter){ |
| | | if (wrkMastRunCount<wrkMastCount){ |
| | | if (rgvProtocol.getStatusType() == RgvStatusType.IDLE) { |
| | | if (!MessageQueue.offer(SlaveType.Rgv, rgvProtocol.getRgvNo(), new Task(4,null))) { |
| | | log.error("RGV漫游启动命令下发失败,RGV号={},任务数据={}", rgvId, "漫游指令"); |
| | | break runRgv; |
| | | } |
| | | wrkMastRunCount++; |
| | | continue ; |
| | | } |
| | | if (!rgvNoM.contains(rgvProtocol.getRgvNo())){ |
| | | rgvNoM.add(rgvProtocol.getRgvNo()); |
| | | wrkMastRunCount++; |
| | | break; |
| | | } |
| | | break runRgv; |
| | | continue ; |
| | | } |
| | | } |
| | | |
| | | |
| | | if (rgvProtocol.getStatusType() == RgvStatusType.ROAM) { |
| | | double finalVelocity = 0.0; // 最终速度 (m/s) |
| | |
| | | } |
| | | } |
| | | |
| | | if (!rgvNoR.contains(rgvProtocol.getRgvNo())){ |
| | | rgvNoR.add(rgvProtocol.getRgvNo()); |
| | | } else { |
| | | continue ; |
| | | } |
| | | |
| | | RgvCommand rgvCommand = new RgvCommand(); |
| | | rgvCommand.setRgvNo(rgvProtocol.getRgvNo()); |
| | |
| | | wrkMast.setCrnStrTime(now); |
| | | try { |
| | | wrkMastService.updateById(wrkMast); |
| | | wrkMastCount--; |
| | | break; |
| | | } catch (Exception e) { |
| | | log.error("更新小车任务失败,任务号:" + wrkMast.getWrkNo()); |
| | |
| | | } |
| | | } |
| | | } |
| | | try{ |
| | | for (Integer rgvNo : rgvNoM){ |
| | | if (wrkMastRunCount==0){ |
| | | break; |
| | | } |
| | | if (rgvNoR.contains(rgvNo)){ |
| | | continue; |
| | | } |
| | | RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNo); |
| | | RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); |
| | | if (rgvProtocol == null) { |
| | | continue; |
| | | } |
| | | wrkMastRunCount--; |
| | | if (rgvProtocol != null |
| | | && rgvProtocol.modeType == RgvModeType.AUTO |
| | | && rgvProtocol.getStatusType() == RgvStatusType.IDLE |
| | | && rgvProtocol.getTaskNo1() == 0 |
| | | && rgvProtocol.getAlarm() == 0) { |
| | | if (!MessageQueue.offer(SlaveType.Rgv, rgvProtocol.getRgvNo(), new Task(4,devperimeter))) { |
| | | log.error("RGV漫游启动命令下发失败,RGV号={},任务数据={}", rgvNo, "漫游指令"); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } catch (Exception e){ |
| | | |
| | | } |
| | | } |
| | | |
| | | //任务完成 |