| | |
| | | private static final String BIG_STORAGE_CAGE_IN_TWO_TASK = "big_storage_cage_in_two_task"; |
| | | private static final String BIG_STORAGE_CAGE_OUT_TWO_TASK = "big_storage_cage_out_two_task"; |
| | | |
| | | private static final List<Integer> ONE_LINE_FIRST = Arrays.asList(930, 931, 932); |
| | | private static final List<Integer> TWO_LINE_FIRST = Arrays.asList(931, 930, 932); |
| | | |
| | | /** |
| | | * 直通格子 |
| | | */ |
| | |
| | | return; |
| | | } |
| | | //获取所有空闲的线路信息 |
| | | List<Integer> freeLineList = new ArrayList<>(); |
| | | HashMap<Integer, Boolean> map = new HashMap<>(); |
| | | //获取空闲且领取任务的数据信息,没有任务直接走玻璃调度 |
| | | try { |
| | | if (CMJ1ModbusTcp.checkConnected()) { |
| | | Boolean oneState = CMJ1ModbusTcp.readUInt16(42027 - 40001) != 0; |
| | | if (oneState) { |
| | | freeLineList.add(930); |
| | | } |
| | | map.put(930, oneState); |
| | | } else { |
| | | map.put(930, Boolean.FALSE); |
| | | } |
| | | } catch (Exception e) { |
| | | //nothing |
| | |
| | | try { |
| | | S7DataZKExtra s7DataZKExtra = s7SerializerZKQ2.read(S7DataZKExtra.class); |
| | | log.info("中空额外读取{}", s7DataZKExtra); |
| | | Boolean twoState = s7DataZKExtra.getIsFree(); |
| | | Boolean threeState = s7DataZKExtra.getIsFree03(); |
| | | if (twoState) { |
| | | freeLineList.add(931); |
| | | } |
| | | if (threeState) { |
| | | freeLineList.add(932); |
| | | } |
| | | map.put(931, s7DataZKExtra.getIsFree()); |
| | | map.put(932, s7DataZKExtra.getIsFree03()); |
| | | } catch (Exception e) { |
| | | //nothing |
| | | log.info("二/三线线空闲状态获取异常"); |
| | | } |
| | | HollowGlassOutRelationInfo hollowGlassOutRelationInfo = null; |
| | | if (CollectionUtil.isNotEmpty(freeLineList)) { |
| | | hollowGlassOutRelationInfo = hollowGlassOutRelationInfoService |
| | | .getOne(new LambdaQueryWrapper<HollowGlassOutRelationInfo>() |
| | | .in(HollowGlassOutRelationInfo::getCell, freeLineList) |
| | | .eq(HollowGlassOutRelationInfo::getState, Const.HOLLOW_FLOW_CARD_START) |
| | | .orderByAsc(HollowGlassOutRelationInfo::getUpdateTime).last("limit 1") |
| | | ); |
| | | List<Integer> resultList = new ArrayList<>(); |
| | | if (redisUtil.getCacheObject("priorityHollowSwitch")) { |
| | | resultList = TWO_LINE_FIRST; |
| | | } else { |
| | | resultList = ONE_LINE_FIRST; |
| | | } |
| | | |
| | | if (hollowGlassOutRelationInfo == null) { |
| | | hollowGlassOutRelationInfo = hollowGlassOutRelationInfoService |
| | | .getOne(new LambdaQueryWrapper<HollowGlassOutRelationInfo>() |
| | | .eq(HollowGlassOutRelationInfo::getState, Const.HOLLOW_FLOW_CARD_START) |
| | | .orderByAsc(HollowGlassOutRelationInfo::getUpdateTime).last("limit 1") |
| | | ); |
| | | HollowGlassOutRelationInfo hollowGlassOutRelationInfo = null; |
| | | int cell = -1; |
| | | for (Integer i : resultList) { |
| | | if (null == hollowGlassOutRelationInfo) { |
| | | Boolean entity = map.get(i); |
| | | cell = i; |
| | | if (null != entity && entity) { |
| | | hollowGlassOutRelationInfo = hollowGlassOutRelationInfoService |
| | | .getOne(new LambdaQueryWrapper<HollowGlassOutRelationInfo>() |
| | | .eq(HollowGlassOutRelationInfo::getCell, cell) |
| | | .eq(HollowGlassOutRelationInfo::getState, Const.HOLLOW_FLOW_CARD_START) |
| | | ); |
| | | } |
| | | } else { |
| | | break; |
| | | } |
| | | } |
| | | for (Integer i : resultList) { |
| | | if (null == hollowGlassOutRelationInfo) { |
| | | cell = i; |
| | | hollowGlassOutRelationInfo = hollowGlassOutRelationInfoService |
| | | .getOne(new LambdaQueryWrapper<HollowGlassOutRelationInfo>() |
| | | .eq(HollowGlassOutRelationInfo::getCell, cell) |
| | | .eq(HollowGlassOutRelationInfo::getState, Const.HOLLOW_FLOW_CARD_START) |
| | | ); |
| | | } else { |
| | | break; |
| | | } |
| | | } |
| | | |
| | | if (null != hollowGlassOutRelationInfo) { |
| | |
| | | List<String> glassList = noDealTaskList.stream().map(BigStorageCageTask::getGlassId).collect(Collectors.toList()); |
| | | hollowBigStorageCageDetailsService.update(new LambdaUpdateWrapper<HollowBigStorageCageDetails>() |
| | | .set(HollowBigStorageCageDetails::getState, Const.GLASS_STATE_IN) |
| | | .ne(HollowBigStorageCageDetails::getState, Const.GLASS_STATE_OUT) |
| | | .notIn(HollowBigStorageCageDetails::getState, Const.GLASS_STATE_OUT, Const.GLASS_STATE_DAMAGE, Const.GLASS_STATE_TAKE) |
| | | .in(HollowBigStorageCageDetails::getGlassId, glassList)); |
| | | |
| | | } else { |
| | |
| | | hollowBigStorageCageDetailsService.update(new LambdaUpdateWrapper<HollowBigStorageCageDetails>() |
| | | .set(HollowBigStorageCageDetails::getSlot, item.getStartSlot()) |
| | | .set(HollowBigStorageCageDetails::getState, Const.GLASS_STATE_IN) |
| | | .ne(HollowBigStorageCageDetails::getState, Const.GLASS_STATE_OUT) |
| | | .notIn(HollowBigStorageCageDetails::getState, Const.GLASS_STATE_OUT, Const.GLASS_STATE_DAMAGE, Const.GLASS_STATE_TAKE) |
| | | .eq(HollowBigStorageCageDetails::getGlassId, item.getGlassId())); |
| | | } |
| | | } |
| | |
| | | hollowBigStorageCageDetailsService.update(new LambdaUpdateWrapper<HollowBigStorageCageDetails>() |
| | | .set(HollowBigStorageCageDetails::getState, state) |
| | | .set(Const.BIG_STORAGE_AFTER_DISPATCH.equals(taskType), HollowBigStorageCageDetails::getSlot, targetSlot) |
| | | .ne(HollowBigStorageCageDetails::getState, Const.GLASS_STATE_OUT) |
| | | .notIn(HollowBigStorageCageDetails::getState, Const.GLASS_STATE_OUT, Const.GLASS_STATE_DAMAGE, Const.GLASS_STATE_TAKE) |
| | | .in(HollowBigStorageCageDetails::getGlassId, glassIds)); |
| | | try { |
| | | s7DataZKDLPTwo = new S7DataZKDLPTwo(); |