| | |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == 0)) { |
| | | if (!staProtocol.isAutoing() || !staProtocol.isLoading()) { |
| | | continue; |
| | | } |
| | | TaskWrk taskWrk = taskWrkMapper.selectCrnStaWorking(crnProtocol.getLaneNo(), staDesc.getStnNo().toString()); |
| | | if (taskWrk == null) { |
| | | log.info("堆垛机出库站到出库站:未查询到状态为13的任务信息,站点号:" + staDesc.getStnNo().toString()); |
| | | continue; |
| | | } |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == 0 || staProtocol.getWorkNo().equals(taskWrk.getWrkNo()))) { |
| | | // 查询工作档 |
| | | TaskWrk taskWrk = taskWrkMapper.selectCrnStaWorking(crnProtocol.getLaneNo(), staDesc.getStnNo().toString()); |
| | | if (taskWrk == null) { |
| | | continue; |
| | | } |
| | | log.info("下发输送线任务:taskWrk:" + JSON.toJSONString(taskWrk)); |
| | | // R r = siteController.siteDetlUpdate(Integer.valueOf(taskWrk.getTargetPoint()), taskWrk.getWrkNo().shortValue(), (short) 0, "Y", false, false); |
| | | staProtocol.setWorkNo(taskWrk.getWrkNo()); |
| | |
| | | ConcurrentHashMap<String, TaskProtocol> allTaskProtocol = taskProtocolCache.getAllTaskProtocol(); |
| | | if (!allTaskProtocol.isEmpty()) { |
| | | for (TaskProtocol taskProtocol : allTaskProtocol.values()) { |
| | | if (taskProtocol.getTaskNo() != 0) { |
| | | if (taskProtocol.getTaskNo() != 0 && taskProtocol.getTaskNo()!=32222L) { |
| | | return taskProtocol.getTaskNo().toString(); |
| | | } |
| | | } |
| | |
| | | } |
| | | 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); |
| | |
| | | public synchronized void taskStart() { |
| | | for (RgvSlave rgvSlave : slaveProperties.getRgv()) { |
| | | try { |
| | | Thread.sleep(101); |
| | | if (rgvDetection(rgvSlave)) { |
| | | String taskNoNow = rgvOtherTaskWrk(rgvSlave); |
| | | List<BasDevpPosition> basDevpPositions = basDevpPositionService.selectList(new EntityWrapper<BasDevpPosition>().orderBy("PLC_POSITION", true)); |
| | |
| | | } |
| | | 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{ |
| | | boolean itSmall = new TrackRangeUtils().IsItSmall(rgvSlave); |
| | | String taskNoNow = rgvOtherTaskWrk(rgvSlave); |
| | | if (taskNoNow.equals("无")){ |
| | | continue; |
| | | } |
| | | if (!arrayListOld.contains(taskNoNow)){ |
| | | arrayListOld.add(taskNoNow); |
| | | } |
| | | |
| | | TaskWrk taskWrk = taskWrkMapper.selectByTaskNo(taskNoNow); |
| | | if (taskWrk != null) { |
| | | if (!arrayListAllP.contains(taskWrk.getWrkNo())) { |
| | | |
| | | RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); |
| | | TaskProtocolCache taskProtocolCache = rgvThread.getTaskProtocolCache(); |
| | | |
| | | arrayListAllP.add(taskWrk.getWrkNo()); |
| | | long startP = 0; |
| | | if (!itSmall){ |
| | | startP = System.currentTimeMillis(); |
| | | } |
| | | |
| | | long endP = 0; |
| | | ConcurrentHashMap<String, TaskProtocol> allTaskProtocol = taskProtocolCache.getAllTaskProtocol(); |
| | | boolean sign = true; |
| | | for (TaskProtocol taskProtocol : allTaskProtocol.values()){ |
| | | if (taskProtocol.getTaskStatus() == 2){//取 |
| | | endP = taskProtocol.getTargetPosition(); |
| | | sign = false; |
| | | } else if (taskProtocol.getTaskStatus() == 3 && sign){//放 |
| | | endP = taskProtocol.getTargetPosition(); |
| | | } |
| | | } |
| | | if (endP == 0){ |
| | | if (itSmall){ |
| | | endP = System.currentTimeMillis(); |
| | | } |
| | | } |
| | | Long[] longList = {taskWrk.getWrkNo().longValue(),startP,endP}; |
| | | arrayListAll.add(longList); |
| | | } |
| | | } else { |
| | | RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); |
| | | TaskProtocolCache taskProtocolCache = rgvThread.getTaskProtocolCache(); |
| | | |
| | | try { |
| | | long startP = 0; |
| | | long endP = 0; |
| | | ConcurrentHashMap<String, TaskProtocol> allTaskProtocol = taskProtocolCache.getAllTaskProtocol(); |
| | | for (TaskProtocol taskProtocol : allTaskProtocol.values()){ |
| | | if (taskProtocol.getTaskStatus() == 2){//取 |
| | | startP = taskProtocol.getTargetPosition(); |
| | | } else if (taskProtocol.getTaskStatus() == 3){//放 |
| | | endP = taskProtocol.getTargetPosition(); |
| | | } |
| | | } |
| | | if (startP == 0 ){ |
| | | if (!itSmall){ |
| | | startP = System.currentTimeMillis(); |
| | | } |
| | | } |
| | | if (endP == 0){ |
| | | if (itSmall){ |
| | | endP = System.currentTimeMillis(); |
| | | } |
| | | } |
| | | // taskNoNow |
| | | long parseLong = Long.parseLong(taskNoNow); |
| | | Long[] longList = {parseLong,startP,endP}; |
| | | arrayListAll.add(longList); |
| | | |
| | | } catch (Exception e) { |
| | | log.error("任务过滤查询小车执行任务异常:"+e.getMessage()); |
| | | return new ArrayList<>(); |
| | | } |
| | | } |
| | | |
| | | } 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 (arrayListOld.contains(longList[0].toString()) || arrayListOld.contains(longList[1].toString())){ |
| | | signWrk.add(longList[0]); |
| | | signWrk.add(longList[1]); |
| | | continue; |
| | | } |
| | | 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; |
| | | } |
| | | |
| | | //获取起点与终点对象 |
| | |
| | | } |
| | | boolean signIn = false; |
| | | for (String[] locS : crnProtocol.getLocMastDemoListSign()){ |
| | | if (locS[3].equals(String.valueOf(locS.length))){ |
| | | if (locS[3].equals(String.valueOf(crnProtocol.getLocMastDemoListSign().size()))){ |
| | | String locNo1 = locS[0]; |
| | | String locNo2 = locS[2]; |
| | | ArrayList<String> locNoList = new ArrayList<>(); |