| | |
| | | log.info("大理片笼空车进片任务结束时间:{},共耗时:{}ms,结束扫码任务", endDate, endDate.getTime() - startDate.getTime()); |
| | | } |
| | | |
| | | @Scheduled(fixedDelay = 10000) |
| | | @Scheduled(fixedDelay = 5000) |
| | | public void plcToHomeEdgOutTask() { |
| | | Date startDate = new Date(); |
| | | log.info("大理片笼出片任务开始执行时间:{}", startDate); |
| | |
| | | + temperingOccupySlot.getEngineerId() + "' and tempering_layout_id = '" + temperingOccupySlot.getTemperingLayoutId() + "'") |
| | | .orderBy(Boolean.TRUE, sequenceOrder, GlassInfo::getTemperingFeedSequence) |
| | | ); |
| | | Map<Integer, List<GlassInfo>> listMap = glassInfos.stream().collect(Collectors.groupingBy(item -> item.getSlot())); |
| | | Map<Integer, List<GlassInfo>> listMap = glassInfos.stream().collect(Collectors.groupingBy(item -> item.getTargetSlot())); |
| | | for (Map.Entry<Integer, List<GlassInfo>> entry : listMap.entrySet()) { |
| | | List<GlassInfo> valueList = entry.getValue(); |
| | | List<String> glassIds = valueList.stream().map(GlassInfo::getGlassId).collect(Collectors.toList()); |
| | |
| | | .ne(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT)); |
| | | //两次更新笼子的剩余尺寸:第一次防止有玻璃继续进调度后的笼子,第二次更新:计算格子的实际尺寸 |
| | | // 仅更新调度后的格子信息:起始格子完成后更新:防止调度出片过程中有新玻璃进入, |
| | | List<Integer> updateSlots = new ArrayList<>(); |
| | | updateSlots.add(bigStorageCageDetails.getSlot()); |
| | | updateSlotRemainBySlots(updateSlots); |
| | | // List<Integer> updateSlots = new ArrayList<>(); |
| | | // updateSlots.add(bigStorageCageDetails.getSlot()); |
| | | // updateSlotRemainBySlots(updateSlots); |
| | | } |
| | | } |
| | | break loop; |
| | |
| | | bigStorageCageFeedTaskService.remove(new LambdaQueryWrapper<BigStorageCageFeedTask>().in(BigStorageCageFeedTask::getTaskState, Const.GLASS_STATE_DAMAGE_TAKE)); |
| | | //理片笼详情表数据状态更新 |
| | | bigStorageCageDetailsService.remove(new LambdaQueryWrapper<BigStorageCageDetails>() |
| | | .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_NEW).in(BigStorageCageDetails::getGlassId, inDamageTaskInfoList.stream().map(BigStorageCageFeedTask::getGlassId).collect(Collectors.toList()))); |
| | | // .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_NEW) |
| | | .and(e -> e.eq(BigStorageCageDetails::getState, Const.GLASS_STATE_NEW).or() |
| | | .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN)) |
| | | .in(BigStorageCageDetails::getGlassId, inDamageTaskInfoList.stream().map(BigStorageCageFeedTask::getGlassId).collect(Collectors.toList()))); |
| | | //将破损信息新增入破损表 |
| | | List<Integer> slotList = new ArrayList<>(); |
| | | for (BigStorageCageFeedTask bigStorageCageFeedTask : inDamageTaskInfoList) { |
| | |
| | | .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP) |
| | | .eq(BigStorageCageFeedTask::getTargetSlot, 0) |
| | | ); |
| | | if(CollectionUtils.isNotEmpty(bigStorageCageFeedTasks)){ |
| | | log.info("获取到的进片任务信息{}", bigStorageCageFeedTasks); |
| | | if (CollectionUtils.isNotEmpty(bigStorageCageFeedTasks)) { |
| | | log.info("计算目标格子发送任务{}", bigStorageCageFeedTasks); |
| | | computeTargetByLineCar(bigStorageCageFeedTasks.get(0).getLine(), glassIdsCar); |
| | | } else { |
| | | log.info("再次发送进片任务{}", bigStorageCageFeedTasks); |
| | | List<BigStorageCageFeedTask> bigStorageCageFeedTaskList = bigStorageCageFeedTaskService.list( |
| | | new LambdaQueryWrapper<BigStorageCageFeedTask>() |
| | | .in(BigStorageCageFeedTask::getGlassId, glassIdsCar) |
| | | .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_CAR) |
| | | .gt(BigStorageCageFeedTask::getTargetSlot, 0) |
| | | ); |
| | | if (CollectionUtils.isNotEmpty(bigStorageCageFeedTaskList)) { |
| | | sendTaskListToPLCCar(bigStorageCageFeedTaskList); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | new LambdaQueryWrapper<GlassInfo>() |
| | | .eq(GlassInfo::getGlassId, glassId) |
| | | ); |
| | | if (glassInfo.getSlot() == null) { |
| | | if (glassInfo.getTargetSlot() == null) { |
| | | List<GlassInfo> glassInfos = glassInfoService.list( |
| | | new LambdaQueryWrapper<GlassInfo>() |
| | | .eq(GlassInfo::getEngineerId, glassInfo.getEngineerId()) |
| | |
| | | glassInfoService.update( |
| | | new LambdaUpdateWrapper<GlassInfo>() |
| | | .eq(GlassInfo::getGlassId, bigStorageCageOutTask.getGlassId()) |
| | | .set(GlassInfo::getSlot, bigStorageCageOutTask.getTrainNumber()) |
| | | .set(GlassInfo::getTargetSlot, bigStorageCageOutTask.getTrainNumber()) |
| | | ); |
| | | } |
| | | } |
| | |
| | | if (info == null) { |
| | | continue; |
| | | } |
| | | if(info.getSlot()==null){ |
| | | if (info.getTargetSlot() == null) { |
| | | computeSlot(info.getGlassId()); |
| | | info=glassInfoService.getOne( |
| | | info = glassInfoService.getOne( |
| | | new LambdaQueryWrapper<GlassInfo>() |
| | | .eq(GlassInfo::getGlassId,info.getGlassId()) |
| | | .eq(GlassInfo::getGlassId, info.getGlassId()) |
| | | ); |
| | | } |
| | | BigStorageCageDetails cageDetails = new BigStorageCageDetails(); |
| | |
| | | .eq(GlassInfo::getTotalLayer, glassInfo.getTotalLayer()) |
| | | .eq(GlassInfo::getLayer, glassInfo.getLayer()) |
| | | .eq(GlassInfo::getEngineerId, glassInfo.getEngineerId()) |
| | | .eq(GlassInfo::getMarkIcon, glassInfo.getMarkIcon()) |
| | | .notInSql(GlassInfo::getGlassId, "select distinct glass_id from big_storage_cage_details " + |
| | | "where state!=101 and engineer_id = '" + glassInfo.getEngineerId() + "' and width = " + glassInfo.getWidth() + " and height = " + glassInfo.getHeight()) |
| | | .orderByAsc(GlassInfo::getTemperingLayoutId) |