| | |
| | | } |
| | | return null; |
| | | } |
| | | public TaskWrk deviceDetectionGetWrkNo(RgvSlave.RgvStn inSta) { |
| | | |
| | | DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, inSta.getDevpPlcId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo()); |
| | | if (staProtocol == null || Cools.isEmpty(staProtocol.getWorkNo())) { |
| | | return null; |
| | | } |
| | | TaskWrk taskWrk = taskWrkService.selectByWrkNo(staProtocol.getWorkNo()); |
| | | return taskWrk; |
| | | } |
| | | public boolean deviceDetection(RgvSlave.RgvStn inSta,Integer rgvNo) { |
| | | ArrayList<Integer> arrayList = new ArrayList<Integer>() {{ |
| | | add(1009); |
| | |
| | | } |
| | | List<TaskWrk> taskWrkList = new ArrayList<>(); |
| | | List<Integer> staList = new ArrayList<>(); |
| | | List<String> taskNoList = taskStartRepel(); |
| | | for (RgvSlave.RgvStn inSta : rgvSlave.getRgvInSta()) { |
| | | TaskWrk taskWrk = deviceDetection(inSta); |
| | | if (taskWrk != null) { |
| | | if (taskWrk.getWrkNo().toString().equals(taskNoNow)) continue; |
| | | if (!taskNoList.contains(taskWrk.getWrkNo().toString())) continue; |
| | | taskWrkList.add(taskWrk); |
| | | staList.add(inSta.getStaNo()); |
| | | } |
| | |
| | | if (rgvOtherIDLEOther(rgvSlave)){ |
| | | if (!rgvOtherIDLE(rgvSlave,staList.get(0))){ |
| | | System.out.println("空闲就近跳过==="+rgvSlave.getId()+"==="); |
| | | RgvErrCache.updateRgvErr(rgvSlave.getId(),staList.get(0)+"空闲就近跳过"); |
| | | |
| | | sign=true; |
| | | if (itSmall){ |
| | | RgvErrCache.updateRgvErr(rgvSlave.getId(),staList.get(0)+"空闲就近跳过"); |
| | | sign=true; |
| | | } |
| | | } |
| | | } |
| | | if (sign){ |
| | |
| | | if (rgvOtherIDLEOther2(rgvSlave)){ |
| | | if (!rgvOtherIDLE2(rgvSlave,staList.get(0))){ |
| | | System.out.println("运行就近跳过==="+rgvSlave.getId()+"==="); |
| | | RgvErrCache.updateRgvErr(rgvSlave.getId(),staList.get(0)+"运行就近跳过"); |
| | | |
| | | sign=true; |
| | | if (itSmall){ |
| | | RgvErrCache.updateRgvErr(rgvSlave.getId(),staList.get(0)+"运行就近跳过"); |
| | | sign=true; |
| | | } |
| | | } |
| | | } |
| | | if (sign){ |
| | |
| | | } |
| | | } |
| | | |
| | | public List<String> taskStartRepel() { |
| | | ArrayList<String> arrayListOld = new ArrayList<>(); |
| | | ArrayList<String> arrayListNew = new ArrayList<>(); |
| | | ArrayList<Integer> arrayListAllP = new ArrayList<>(); |
| | | ArrayList<Long[]> arrayListAll = new ArrayList<>(); |
| | | for (RgvSlave rgvSlave : slaveProperties.getRgv()) { |
| | | try{ |
| | | String taskNoNow = rgvOtherTaskWrk(rgvSlave); |
| | | if (!arrayListOld.contains(taskNoNow)){ |
| | | arrayListOld.add(taskNoNow); |
| | | } |
| | | } catch (Exception e) { |
| | | } |
| | | } |
| | | for (RgvSlave rgvSlave : slaveProperties.getRgv()) { |
| | | if (rgvDetection(rgvSlave)) { |
| | | for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) { |
| | | TaskWrk taskWrk = deviceDetectionGetWrkNo(rgvStn); |
| | | if (taskWrk != null) { |
| | | if (!arrayListAllP.contains(taskWrk.getWrkNo())) { |
| | | arrayListAllP.add(taskWrk.getWrkNo()); |
| | | BasDevpPosition basDevpPositionSta = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", rgvStn.getStaNo())); |
| | | BasDevpPosition basDevpPositionEnd = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", BarcodeUtils.getOutStaNo(taskWrk.getOriginTargetPoint()))); |
| | | Long[] longList = {taskWrk.getWrkNo().longValue(),basDevpPositionSta.getPlcPosition(),basDevpPositionEnd.getPlcPosition()}; |
| | | arrayListAll.add(longList); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | List<Long[]> crossingPathsW = TrackUtils.findCrossingPathsW(arrayListAll); |
| | | List<Long> wrkNoList = new ArrayList<>(); |
| | | List<Long> signWrk = new ArrayList<>(); |
| | | for (Long[] longList : crossingPathsW) { |
| | | if (!wrkNoList.contains(longList[0]) && !signWrk.contains(longList[0])) { |
| | | if (!wrkNoList.contains(longList[1]) && !signWrk.contains(longList[1])) { |
| | | wrkNoList.add(longList[0]); |
| | | } |
| | | } |
| | | signWrk.add(longList[0]); |
| | | signWrk.add(longList[1]); |
| | | } |
| | | for (Integer str : arrayListAllP) { |
| | | if (!signWrk.contains(str.longValue())) { |
| | | arrayListNew.add(str.toString()); |
| | | } |
| | | } |
| | | for (Long wrk : wrkNoList) { |
| | | arrayListNew.add(wrk.toString()); |
| | | } |
| | | |
| | | return arrayListNew; |
| | | } |
| | | |
| | | //获取起点与终点对象 |
| | | public RgvSlave.RgvStn getRgvStnNow(RgvSlave rgvSlave, Integer staNo) { |
| | | for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) { |