| | |
| | | .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN) |
| | | .orderBy(Boolean.TRUE, sequenceOrder, BigStorageCageDetails::getTemperingFeedSequence) |
| | | ); |
| | | //当一格玻璃都到齐时 |
| | | if (bigStorageCageDetailsList.size() == valueList.size()) { |
| | | long distinctSlotCount = bigStorageCageDetailsList.stream() |
| | | .map(BigStorageCageDetails::getSlot) |
| | | .distinct() |
| | | .count(); |
| | | //当玻璃不在同一格时 |
| | | if (distinctSlotCount > 1) { |
| | | BigStorageCageDetails maxSequenceDetail = bigStorageCageDetailsList.stream() |
| | | .max(Comparator.comparingInt(BigStorageCageDetails::getTemperingFeedSequence)) |
| | | .orElse(null); // 如果没有元素,返回 null |
| | | int maxSlot = maxSequenceDetail.getSlot(); |
| | | int serialNumber = 1; |
| | | for (BigStorageCageDetails bigStorageCageDetails : bigStorageCageDetailsList |
| | | ) { |
| | | if (bigStorageCageDetails.getSlot() != maxSlot) { |
| | | bigStorageCageOutTaskService.save(new BigStorageCageOutTask(bigStorageCageDetails.getGlassId(), bigStorageCageDetails.getSlot(), maxSlot, |
| | | bigStorageCageDetails.getWidth() * 10, bigStorageCageDetails.getHeight() * 10, 1, serialNumber++, Const.BIG_STORAGE_OUT_NEW, new Date())); |
| | | List<BigStorageCageDetails> overSizeGlass = bigStorageCageDetailsList.stream().filter( |
| | | t -> Math.min(t.getWidth(), t.getHeight()) > 2500 |
| | | ).collect(Collectors.toList()); |
| | | if(CollectionUtils.isEmpty(overSizeGlass)){ |
| | | //当一格玻璃都到齐时 |
| | | if (bigStorageCageDetailsList.size() == valueList.size()) { |
| | | long distinctSlotCount = bigStorageCageDetailsList.stream() |
| | | .map(BigStorageCageDetails::getSlot) |
| | | .distinct() |
| | | .count(); |
| | | //当玻璃不在同一格时 |
| | | if (distinctSlotCount > 1) { |
| | | BigStorageCageDetails maxSequenceDetail = bigStorageCageDetailsList.stream() |
| | | .max(Comparator.comparingInt(BigStorageCageDetails::getTemperingFeedSequence)) |
| | | .orElse(null); // 如果没有元素,返回 null |
| | | int maxSlot = maxSequenceDetail.getSlot(); |
| | | int serialNumber = 1; |
| | | for (BigStorageCageDetails bigStorageCageDetails : bigStorageCageDetailsList |
| | | ) { |
| | | if (bigStorageCageDetails.getSlot() != maxSlot) { |
| | | bigStorageCageOutTaskService.save(new BigStorageCageOutTask(bigStorageCageDetails.getGlassId(), bigStorageCageDetails.getSlot(), maxSlot, |
| | | bigStorageCageDetails.getWidth() * 10, bigStorageCageDetails.getHeight() * 10, 1, serialNumber++, Const.BIG_STORAGE_OUT_NEW, new Date())); |
| | | |
| | | bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>().set(BigStorageCageDetails::getState, Const.GLASS_STATE_SCHEDULE_ING) |
| | | .set(BigStorageCageBaseInfo::getSlot, maxSlot).eq(BigStorageCageDetails::getGlassId, bigStorageCageDetails.getGlassId()) |
| | | .ne(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT)); |
| | | //两次更新笼子的剩余尺寸:第一次防止有玻璃继续进调度后的笼子,第二次更新:计算格子的实际尺寸 |
| | | // 仅更新调度后的格子信息:起始格子完成后更新:防止调度出片过程中有新玻璃进入, |
| | | // List<Integer> updateSlots = new ArrayList<>(); |
| | | // updateSlots.add(bigStorageCageDetails.getSlot()); |
| | | // updateSlotRemainBySlots(updateSlots); |
| | | bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>().set(BigStorageCageDetails::getState, Const.GLASS_STATE_SCHEDULE_ING) |
| | | .set(BigStorageCageBaseInfo::getSlot, maxSlot).eq(BigStorageCageDetails::getGlassId, bigStorageCageDetails.getGlassId()) |
| | | .ne(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT)); |
| | | //两次更新笼子的剩余尺寸:第一次防止有玻璃继续进调度后的笼子,第二次更新:计算格子的实际尺寸 |
| | | // 仅更新调度后的格子信息:起始格子完成后更新:防止调度出片过程中有新玻璃进入, |
| | | } |
| | | } |
| | | break loop; |
| | | } |
| | | break loop; |
| | | } |
| | | } |
| | | } |
| | | // List<GlassInfo> glassInfoList = glassInfoService.list( |
| | | // new LambdaQueryWrapper<GlassInfo>() |
| | | // .eq(GlassInfo::getTemperingLayoutId, temperingOccupySlot.getTemperingLayoutId()) |
| | | // .eq(GlassInfo::getEngineerId, temperingOccupySlot.getEngineerId()) |
| | | // .notInSql(GlassInfo::getGlassId, "select glass_id from damage where type=8 and engineer_id='" |
| | | // + temperingOccupySlot.getEngineerId() + "' and tempering_layout_id = '" + temperingOccupySlot.getTemperingLayoutId() + "'") |
| | | // ); |
| | | // List<BigStorageCageDetails> glassInfoLists = new ArrayList<>(); |
| | | // glassInfoList.forEach(glassInfo -> { |
| | | // BigStorageCageDetails details = new BigStorageCageDetails(); |
| | | // BeanUtils.copyProperties(glassInfo, details); |
| | | // details.setSlot(1); |
| | | // glassInfoLists.add(details); |
| | | // }); |
| | | // List<BigStorageCageDetails> bigStorageCageDetailsList = bigStorageCageDetailsService.list( |
| | | // new LambdaQueryWrapper<BigStorageCageDetails>() |
| | | // .eq(BigStorageCageDetails::getEngineerId, temperingOccupySlot.getEngineerId()) |
| | | // .eq(BigStorageCageDetails::getTemperingLayoutId, temperingOccupySlot.getTemperingLayoutId()) |
| | | // .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN) |
| | | // .orderBy(Boolean.TRUE, sequenceOrder, BigStorageCageDetails::getTemperingFeedSequence) |
| | | // ); |
| | | //// if (glassInfoLists.size() == bigStorageCageDetailsList.size()) { |
| | | // computeOutMoreGlassInfo(glassInfoLists, Boolean.TRUE, 2); |
| | | // computeOutMoreGlassInfo(bigStorageCageDetailsList, Boolean.TRUE, 3); |
| | | // int allTrainNumber = allTask.stream() |
| | | // .map(BigStorageCageOutTask::getTrainNumber) |
| | | // .collect(Collectors.toSet()) |
| | | // .size(); |
| | | // int allTrainSlot = allTask.stream() |
| | | // .map(BigStorageCageOutTask::getStartSlot) |
| | | // .collect(Collectors.toSet()) |
| | | // .size(); |
| | | // int notallTrainNumber = notAllTask.stream() |
| | | // .map(BigStorageCageOutTask::getTrainNumber) |
| | | // .collect(Collectors.toSet()) |
| | | // .size(); |
| | | // int notallTrainSlot = notAllTask.stream() |
| | | // .map(BigStorageCageOutTask::getStartSlot) |
| | | // .collect(Collectors.toSet()) |
| | | // .size(); |
| | | //// if (allTrainNumber < notallTrainNumber || (allTrainNumber == notallTrainNumber && allTrainSlot < notallTrainSlot)) { |
| | | // List<SlotSequenceDTO> slotSequenceList = bigStorageCageDetailsService.queryGlassMaxAndMin(temperingOccupySlot.getEngineerId(), temperingOccupySlot.getTemperingLayoutId()); |
| | | // for (int i = 0; i < slotSequenceList.size() - 1; i++) { |
| | | // SlotSequenceDTO first = slotSequenceList.get(i); |
| | | // SlotSequenceDTO second = slotSequenceList.get(i + 1); |
| | | // int slotWidth = first.getRemainWidth() - glassGap; |
| | | // List<BigStorageCageDetails> list = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>() |
| | | // .eq(BigStorageCageDetails::getSlot, second.getSlot()).eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN) |
| | | // .orderBy(Boolean.TRUE, !sequenceOrder, BigStorageCageDetails::getTemperingFeedSequence)); |
| | | // if (CollectionUtils.isNotEmpty(list)) { |
| | | // List<BigStorageCageOutTask> outTasks = new ArrayList<>(); |
| | | // int serialNumber = 1; |
| | | // for (BigStorageCageDetails item : list) { |
| | | // int maxlength = (int) Math.max(item.getWidth(), item.getHeight()); |
| | | // if (slotWidth > maxlength) { |
| | | // slotWidth = slotWidth - maxlength - glassGap; |
| | | // outTasks.add(new BigStorageCageOutTask(item.getGlassId(), second.getSlot(), first.getSlot(), |
| | | // item.getWidth() * 10, item.getHeight() * 10, 1, serialNumber++, Const.BIG_STORAGE_OUT_NEW, new Date())); |
| | | // } else { |
| | | // outTasks.add(new BigStorageCageOutTask(item.getGlassId(), second.getSlot(), second.getSlot(), |
| | | // item.getWidth() * 10, item.getHeight() * 10, 1, serialNumber++, Const.BIG_STORAGE_OUT_NEW, new Date())); |
| | | // } |
| | | // } |
| | | // List<String> glassList = outTasks.stream() |
| | | // .filter(item -> !item.getStartSlot().equals(item.getEndSlot())) |
| | | // .map(BigStorageCageOutTask::getGlassId) |
| | | // .collect(Collectors.toList()); |
| | | // if (glassList.size() > 0) { |
| | | // //新增调度任务 |
| | | // bigStorageCageOutTaskService.saveBatch(outTasks); |
| | | // //更新理片笼详情表调度的后的玻璃位置信息:生成任务后先将玻璃格子位置进行调整,玻璃状态改为调度中,新增调度完成任务,处理调度完成后玻璃状态改为100. |
| | | //// List<String> glassList = list.stream().map(BigStorageCageDetails::getGlassId).collect(Collectors.toList()); |
| | | // |
| | | // bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>().set(BigStorageCageDetails::getState, Const.GLASS_STATE_SCHEDULE_ING) |
| | | // .set(BigStorageCageBaseInfo::getSlot, first.getSlot()).in(BigStorageCageDetails::getGlassId, glassList) |
| | | // .ne(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT)); |
| | | // |
| | | // //两次更新笼子的剩余尺寸:第一次防止有玻璃继续进调度后的笼子,第二次更新:计算格子的实际尺寸 |
| | | // // 仅更新调度后的格子信息:起始格子完成后更新:防止调度出片过程中有新玻璃进入, |
| | | // updateSlotRemainBySlots(Arrays.asList(second.getSlot())); |
| | | // break loop; |
| | | // } |
| | | // |
| | | // } |
| | | // } |
| | | // } |
| | | // } |
| | | } |
| | | // //向plc写入确认字 |
| | | // int returnData = 0; |
| | |
| | | * 按照玻璃id判断玻璃状态及卧转立是否可直接启动 |
| | | */ |
| | | public Boolean judgeGlassTypeStatus(String glassId, Integer line, String mesAddress) { |
| | | //预排格子 |
| | | computeSlot(glassId); |
| | | // 预排格子 |
| | | // computeSlot(glassId); |
| | | //判断此玻璃是在笼内或已生成进片任务 |
| | | BigStorageCageFeedTask bigStorageCageFeedTask = bigStorageCageFeedTaskService.getOne( |
| | | new LambdaQueryWrapper<BigStorageCageFeedTask>() |
| | |
| | | damageService.deleteByGlassId(glassId); |
| | | Damage damage = new Damage(); |
| | | damage.setGlassId(glassId); |
| | | damage.setWorkingProcedure("钢化"); |
| | | damage.setWorkingProcedure("磨边"); |
| | | damage.setLine(line); |
| | | damage.setType(1); |
| | | damage.setRemark("进大理片"); |
| | |
| | | if (sitToUpRemainWidth.getGlassCount() == 0) { |
| | | return Boolean.FALSE; |
| | | } |
| | | List<Integer> lineList = bigStorageCageFeedTaskService.querySitToUpGlass(); |
| | | if (CollectionUtils.isNotEmpty(lineList)) { |
| | | Integer lineFirst = lineList.get(0); |
| | | if (line == lineFirst) { |
| | | return Boolean.TRUE; |
| | | } else { |
| | | return Boolean.FALSE; |
| | | } |
| | | } else { |
| | | return Boolean.FALSE; |
| | | } |
| | | |
| | | //获取玻璃信息 |
| | | GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId)); |
| | | return sitToUpRemainWidth.getWidth() < Math.max(glassInfo.getWidth(), glassInfo.getHeight()); |
| | | // GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId)); |
| | | // return sitToUpRemainWidth.getWidth() < Math.max(glassInfo.getWidth(), glassInfo.getHeight()); |
| | | } |
| | | |
| | | public String queryAndChangeGlass(String glassId) { |