| | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.concurrent.atomic.AtomicBoolean; |
| | | import java.util.concurrent.atomic.AtomicReference; |
| | | import java.util.stream.Collectors; |
| | | |
| | |
| | | computeTargetByLine(outLine, d02GoAdress, d05GoAdress); |
| | | } |
| | | |
| | | @Scheduled(fixedDelay = 5000) |
| | | public void plcToHomeEdgOutTask() { |
| | | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 按照玻璃id判断玻璃状态及卧转立是否可直接启动 |
| | | */ |
| | |
| | | * |
| | | * @return |
| | | */ |
| | | private Integer getStartLine() { |
| | | public Integer getStartLine() { |
| | | List<BigStorageCageFeedTask> taskList = bigStorageCageFeedTaskService.list(new LambdaQueryWrapper<BigStorageCageFeedTask>() |
| | | .inSql(BigStorageCageFeedTask::getId, "select min(id) from big_storage_cage_feed_task where task_state = 2 group by line")); |
| | | Assert.isTrue(CollectionUtils.isEmpty(taskList), "卧转立两条线都没有玻璃进片任务"); |
| | | Assert.isFalse(CollectionUtils.isEmpty(taskList), "卧转立两条线都没有玻璃进片任务"); |
| | | Map<String, Integer> taskMap = taskList.stream().collect(Collectors.toMap(BigStorageCageFeedTask::getGlassId, |
| | | BigStorageCageFeedTask::getLine)); |
| | | GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>() |
| | |
| | | /** |
| | | * 计算任务表进片线路的目标格子,并启动任务 |
| | | */ |
| | | private boolean computeTargetByLine(Integer line, String d02GoAdress, String d05GoAdress) { |
| | | public boolean computeTargetByLine(Integer line, String d02GoAdress, String d05GoAdress) { |
| | | //1、获取任务表中的所有玻璃(指定线路且已经进卧转立完成) |
| | | List<BigStorageCageFeedTask> taskList = bigStorageCageFeedTaskService.list(new LambdaQueryWrapper<BigStorageCageFeedTask>() |
| | | .eq(BigStorageCageFeedTask::getLine, line) |
| | |
| | | AtomicReference<BigStorageDTO> bigStorageDTO = new AtomicReference<>(new BigStorageDTO()); |
| | | Map<String, GlassInfo> glassInfoMap = glassInfos.stream().collect(Collectors.toMap(GlassInfo::getGlassId, p -> p)); |
| | | List<BigStorageCageDetails> bigStorageCageDetailsList = new ArrayList<>(); |
| | | AtomicBoolean taskFlag = new AtomicBoolean(Boolean.TRUE); |
| | | taskList.stream().forEach(e -> { |
| | | BigStorageCageDetails cageDetails = new BigStorageCageDetails(); |
| | | //按照版图信息获取进片笼子格子号 |
| | |
| | | } else { |
| | | bigStorageDTO.set(bigStorageCageDetailsService.queryTargetSlotByTempering(info)); |
| | | } |
| | | e.setTragetSlot(bigStorageDTO.get().getSlot()); |
| | | e.setTargetSlot(bigStorageDTO.get().getSlot()); |
| | | cageDetails.setSlot(bigStorageDTO.get().getSlot()); |
| | | cageDetails.setState(Const.GLASS_STATE_IN); |
| | | temperingLayoutIdTemp.set(info.getTemperingLayoutId()); |
| | | temperingFeedSequenceTemp.set(info.getTemperingFeedSequence()); |
| | | bigStorageCageDetailsList.add(cageDetails); |
| | | taskFlag.set(bigStorageCageFeedTaskService.updateById(e)); |
| | | if (!taskFlag.get()) { |
| | | return; |
| | | } |
| | | }); |
| | | //3、更新进片任务表 |
| | | boolean taskFlag = bigStorageCageFeedTaskService.updateBatchById(taskList); |
| | | //3、更新进片任务表 遇到问题:无法批量更新,批量更新无法走指定从库 |
| | | |
| | | //4、在详情表中加入进片玻璃信息 |
| | | bigStorageCageDetailsService.saveBatch(bigStorageCageDetailsList); |
| | | if (taskFlag) { |
| | | if (taskFlag.get()) { |
| | | String lineAddress = line.equals(Const.A09_OUT_TARGET_POSITION) ? d02GoAdress : d05GoAdress; |
| | | S7object.getinstance().plccontrol.writeWord(lineAddress, (short) 1); |
| | | // S7object.getinstance().plccontrol.writeWord(lineAddress, (short) 1); |
| | | } |
| | | return taskFlag; |
| | | return taskFlag.get(); |
| | | } |
| | | } |