From b9b44b51b201e2f5a9a1f3665c7fb76b5690f9af Mon Sep 17 00:00:00 2001 From: wu <731351411@qq.com> Date: 星期一, 23 十二月 2024 16:13:08 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java | 142 +++++++++++++++++++++++++++++++++++------------ 1 files changed, 106 insertions(+), 36 deletions(-) diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java index 4788c66..2faeee9 100644 --- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java +++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java @@ -75,6 +75,11 @@ @Autowired(required = false) MiloService miloService; + /** + * 鐩撮�氭牸瀛� + */ + private static final Integer THROUGH_SLOT = 920; + @Resource private RedisUtil redisUtil; @@ -90,13 +95,14 @@ @Value("${mes.outCarMaxSize}") private Integer outCarMaxSize; - @Value("${mes.sequence.order}") - private boolean sequenceOrder; @Value("${mes.temperingOutTargetPosition}") private Integer temperingOutTargetPosition; @Value("${mes.artificialOutTargetPosition}") private Integer artificialOutTargetPosition; - + @Value("${mes.slotMaxHeight}") + private Integer slotMaxHeight; + @Value("${mes.slotMaxthickness}") + private Integer slotMaxthickness; @Scheduled(fixedDelay = 1000) public void inBigStorageTask() throws Exception { @@ -144,7 +150,7 @@ } } List<BigStorageCageDetails> detailsList = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>().in(BigStorageCageDetails::getGlassId, glassIdList) - .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN_ALL)); + .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN_ALL_ZERO)); if (CollectionUtil.isNotEmpty(detailsList)) { log.info("鐞嗙墖绗煎瓨鍦ㄧ浉鍚岀殑杩涚墖鐜荤拑{}锛岀粨鏉熸湰娆′换鍔�", detailsList); //todo:鍚憄lc鍙戦�佹姤璀� @@ -157,23 +163,77 @@ //todo:鍚憄lc鍙戦�佹姤璀� return; } + //鎸夌収鐜荤拑鍘氬害鍒嗙粍锛屽垽鏂墿浣欐牸瀛愭槸鍚﹀彲浠ュ瓨鏀� + Map<Double, Long> thickCountMap = glassInfoList.stream().collect(Collectors.groupingBy(GlassInfo::getThickness, Collectors.counting())); + for (Map.Entry<Double, Long> entry : thickCountMap.entrySet()) { + int count = bigStorageCageService.count(new LambdaQueryWrapper<BigStorageCage>() + .eq(BigStorageCage::getEnableState, Const.SLOT_ON).eq(BigStorageCage::getRemainWidth, slotWidth) + .le(BigStorageCage::getMinThickness, entry.getKey()) + .ge(BigStorageCage::getMaxThickness, entry.getKey())); + if (count < entry.getValue()) { + log.info("绗煎唴鏍煎瓙鍓╀綑鏁伴噺涓嶈冻锛岀粨鏉熸湰娆¤繘鐗�"); + //todo:鍚憄lc鍙戦�佹姤璀� + return; + } + } + //todo:瓒呭ぇ灏哄 + if (slotMaxHeight < Math.min(glassInfoList.get(0).getWidth(), glassInfoList.get(0).getHeight()) || glassInfoList.get(0).getThickness() > slotMaxthickness) { + int count = bigStorageCageDetailsService.count(new LambdaQueryWrapper<BigStorageCageDetails>() + .eq(BigStorageCageDetails::getSlot, THROUGH_SLOT) + .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN_ALL)); + if (count > 0) { + log.info("鐩撮�氱墖鍙板瓨鍦ㄧ幓鐠冿紝缁撴潫鏈杩涚墖"); + //todo:鍚憄lc鍙戦�佹姤璀� + return; + } + } + //淇敼纾ㄨ竟瀵瑰垪琛ㄧ殑鐜荤拑鐘舵�� edgGlassTaskInfoService.update(new LambdaUpdateWrapper<EdgGlassTaskInfo>() .set(EdgGlassTaskInfo::getState, Const.EDG_GLASS_SUCCESS).in(EdgGlassTaskInfo::getGlassId, glassIdList)); + //鎶ュ伐 + for (String glass : glassIdList) { + damageService.autoSubmitReport(glass, inTaskList.get(0).getStartSlot(), "纾ㄨ竟", "杩涘ぇ鐞嗙墖绗�"); + } + Map<String, List<GlassInfo>> glassListMap = glassInfoList.stream().collect(Collectors.groupingBy(GlassInfo::getGlassId)); //璁$畻鐩爣鏍煎瓙 List<BigStorageCageHistoryTask> historyTasks = new ArrayList<>(); - for (BigStorageCageTask task : inTaskList) { - GlassInfo info = glassListMap.get(task.getGlassId()).get(0); - BigStorageDTO bigStorageDTO = bigStorageGlassInfoService.queryBigStorageTargetSlot(info.getEngineerId(), info.getTemperingLayoutId(), info.getTemperingFeedSequence()); - //鑾峰彇鐩爣鏍煎瓙淇℃伅 + //瓒呭ぇ灏哄涓庢甯稿昂瀵哥幓鐠冭绠楁柟寮忎笉涓�鏍� + if (slotMaxHeight > Math.min(glassInfoList.get(0).getWidth(), glassInfoList.get(0).getHeight())) { + for (BigStorageCageTask task : inTaskList) { + GlassInfo info = glassListMap.get(task.getGlassId()).get(0); + BigStorageDTO bigStorageDTO = bigStorageGlassInfoService.queryBigStorageTargetSlot(info.getEngineerId(), info.getTemperingLayoutId(), info.getTemperingFeedSequence()); + //鑾峰彇鐩爣鏍煎瓙淇℃伅 // BigStorageDTO bigStorageDTO = bigStorageCageDetailsService.queryTargetSlotByTempering(info); // 涓存椂鏇存柊鏍煎瓙鐨勫墿浣欏昂瀵革細闃叉鐩搁偦鐜荤拑杩涘悓涓�鏍煎瓙閫犳垚鍓╀綑灏哄涓嶈冻锛岀幓鐠冭秺鐣岀殑鎯呭喌锛屼换鍔″畬鎴愬悗鍐嶆鏇存柊澶х悊鐗囩琛ㄥ墿浣欏搴︼紙鎸夌収绗煎唴鐜荤拑鏁伴噺鏇存柊澶х悊鐗囩鍓╀綑灏哄锛� - bigStorageCageService.update(new LambdaUpdateWrapper<BigStorageCage>() - .set(BigStorageCage::getRemainWidth, bigStorageDTO.getWidth() - Math.max(info.getWidth(), info.getHeight()) - glassGap) - .eq(BigStorageCage::getSlot, bigStorageDTO.getSlot())); - task.setTargetSlot(bigStorageDTO.getSlot()); - task.setGlassId(info.getGlassId()); + bigStorageCageService.update(new LambdaUpdateWrapper<BigStorageCage>() + .set(BigStorageCage::getRemainWidth, bigStorageDTO.getWidth() - Math.max(info.getWidth(), info.getHeight()) - glassGap) + .eq(BigStorageCage::getSlot, bigStorageDTO.getSlot())); + task.setTargetSlot(bigStorageDTO.getSlot()); + task.setGlassId(info.getGlassId()); + bigStorageCageTaskService.updateTaskMessage("big_storage_cage_in_one_task", task); + //瀛樻斁鍘嗗彶浠诲姟 + BigStorageCageHistoryTask historyTask = new BigStorageCageHistoryTask(); + BeanUtils.copyProperties(task, historyTask); + historyTask.setTaskType(Const.BIG_STORAGE_BEFORE_IN); + historyTask.setGlassCount(glassInfoList.size()); + historyTask.setTaskState(Const.ENGINEERING_NEW); + historyTasks.add(historyTask); + BigStorageCageDetails cageDetails = new BigStorageCageDetails(); + BeanUtils.copyProperties(info, cageDetails); + cageDetails.setSlot(bigStorageDTO.getSlot()); + cageDetails.setState(Const.GLASS_STATE_NEW); + cageDetails.setDeviceId(bigStorageDTO.getDeviceId()); + cageDetails.setSequence(bigStorageDTO.getSlotSequence()); + cageDetails.setGap(glassGap); + cageDetails.setFilmsId(info.getFilmsid()); + cageDetails.setId(null); + bigStorageCageDetailsService.save(cageDetails); + } + } else { + BigStorageCageTask task = inTaskList.get(0); + task.setTargetSlot(THROUGH_SLOT); bigStorageCageTaskService.updateTaskMessage("big_storage_cage_in_one_task", task); //瀛樻斁鍘嗗彶浠诲姟 BigStorageCageHistoryTask historyTask = new BigStorageCageHistoryTask(); @@ -182,13 +242,15 @@ historyTask.setGlassCount(glassInfoList.size()); historyTask.setTaskState(Const.ENGINEERING_NEW); historyTasks.add(historyTask); + GlassInfo info = glassInfoList.get(0); BigStorageCageDetails cageDetails = new BigStorageCageDetails(); BeanUtils.copyProperties(info, cageDetails); - cageDetails.setSlot(bigStorageDTO.getSlot()); + cageDetails.setSlot(THROUGH_SLOT); cageDetails.setState(Const.GLASS_STATE_NEW); - cageDetails.setDeviceId(bigStorageDTO.getDeviceId()); - cageDetails.setSequence(bigStorageDTO.getSlotSequence()); + cageDetails.setDeviceId(0); + cageDetails.setSequence(0); cageDetails.setGap(glassGap); + cageDetails.setFilmsId(info.getFilmsid()); cageDetails.setId(null); bigStorageCageDetailsService.save(cageDetails); } @@ -225,22 +287,25 @@ //鏄惁鍏佽閽㈠寲 //鏄惁鏈夋鍦ㄩ挗鍖栫殑鐜荤拑:閽㈠寲灏忕墖琛ㄥ叧鑱斿巻鍙蹭换鍔¤〃锛岀瓫閫夋湭鍑虹鐨勭幓鐠冧俊鎭� // 鑾峰彇褰撳墠閽㈠寲浠诲姟鏈畬鎴愬嚭鐗囩殑鐜荤拑淇℃伅 - List<TemperingGlassInfo> unFinishTemperingGlassInfoList = temperingGlassInfoService.list(new LambdaQueryWrapper<TemperingGlassInfo>().eq(TemperingGlassInfo::getState, Const.TEMPERING_NEW)); + List<TemperingGlassInfo> unFinishTemperingGlassInfoList = temperingGlassInfoService.list(new LambdaQueryWrapper<TemperingGlassInfo>() + .eq(TemperingGlassInfo::getState, Const.TEMPERING_NEW).orderByAsc(TemperingGlassInfo::getTemperingFeedSequence)); if (CollectionUtil.isNotEmpty(unFinishTemperingGlassInfoList)) { -// List<String> glassIdList = unFinishTemperingGlassInfoList.stream().map(TemperingGlassInfo::getGlassId).collect(Collectors.toList()); -// List<BigStorageCageHistoryTask> historyTaskList = bigStorageCageHistoryTaskService.list(new LambdaQueryWrapper<BigStorageCageHistoryTask>() -// .eq(BigStorageCageHistoryTask::getTaskType, Const.BIG_STORAGE_BEFORE_OUT) -// .in(BigStorageCageHistoryTask::getGlassId, glassIdList)); -// List<TemperingGlassInfo> temperingGlassList = unFinishTemperingGlassInfoList; -// if (CollectionUtil.isNotEmpty(historyTaskList)) { -// List<String> taskGlassList = historyTaskList.stream().map(BigStorageCageHistoryTask::getGlassId).collect(Collectors.toList()); -// temperingGlassList = unFinishTemperingGlassInfoList.stream().filter(e -> !taskGlassList.contains(e.getGlassId())).collect(Collectors.toList()); -// } -// if (CollectionUtil.isNotEmpty(unFinishTemperingGlassInfoList)) { log.info("鏈夋鍦ㄥ嚭鐗囩殑閽㈠寲浠诲姟"); computeOutGlassInfoByVirtualSlot(unFinishTemperingGlassInfoList, "big_storage_cage_out_one_task", temperingOutTargetPosition, Const.GLASS_STATE_OUT_ING, Const.BIG_STORAGE_BEFORE_OUT); Date endDate = new Date(); log.info("澶х悊鐗囩鍑虹墖浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime()); + return; + } + + BigStorageCageDetails details = bigStorageCageDetailsService.getOne(new LambdaQueryWrapper<BigStorageCageDetails>() + .eq(BigStorageCageDetails::getSlot, THROUGH_SLOT) + .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN_ALL).last("limit 1")); + if (details != null) { + TemperingGlassInfo temperingGlassInfo = new TemperingGlassInfo(); + BeanUtils.copyProperties(details, temperingGlassInfo); + temperingGlassInfo.setState(-1); + temperingGlassInfoService.save(temperingGlassInfo); + computeOutGlassInfoByVirtualSlot(Arrays.asList(temperingGlassInfo), "big_storage_cage_out_one_task", temperingOutTargetPosition, Const.GLASS_STATE_OUT_ING, Const.BIG_STORAGE_BEFORE_OUT); return; } @@ -260,7 +325,7 @@ .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN) .eq(GlassInfo::getTemperingLayoutId, item.getTemperingLayoutId()) .eq(GlassInfo::getEngineerId, item.getEngineerId()) - .orderBy(Boolean.TRUE, sequenceOrder, GlassInfo::getTemperingFeedSequence)); + .orderByAsc(GlassInfo::getTemperingFeedSequence)); if (CollectionUtil.isNotEmpty(temperingGlassInfos)) { temperingGlassInfoService.saveBatch(temperingGlassInfos); computeOutGlassInfoByVirtualSlot(temperingGlassInfos, "big_storage_cage_out_one_task", temperingOutTargetPosition, Const.GLASS_STATE_OUT_ING, Const.BIG_STORAGE_BEFORE_OUT); @@ -299,21 +364,22 @@ continue; } int sequence = -1; - int startSlot = -1; + int targetSlot = -1; for (BigStorageSequenceDTO item : sequenceDTOList) { - if (item.getMinSequence() == sequence + 1) { + if (item.getMaxSequence() == sequence - 1) { //鐢熸垚璋冨害浠诲姟 - int targetSlot = item.getSlot(); + int startSlot = item.getSlot(); list = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>() .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN).eq(BigStorageCageDetails::getSlot, startSlot)); - computeOutGlassInfoByVirtualSlot(list, "big_storage_cage_out_one_task", targetSlot, Const.GLASS_STATE_SCHEDULE_ING, Const.BIG_STORAGE_BEFORE_DISPATCH); + computeOutGlassInfoByVirtualSlot(list, "big_storage_cage_out_one_task", + targetSlot, Const.GLASS_STATE_SCHEDULE_ING, Const.BIG_STORAGE_BEFORE_DISPATCH); List<Integer> slotList = new ArrayList<>(); slotList.add(targetSlot); updateSlotRemainBySlots(slotList); break loop; } - sequence = item.getMaxSequence(); - startSlot = item.getSlot(); + sequence = item.getMinSequence(); + targetSlot = item.getSlot(); } } } @@ -466,6 +532,10 @@ bigStorageCageDetailsService.updateBySlot(storageCageDTOList, Const.GLASS_STATE_OUT); } else { bigStorageCageDetailsService.updateBySlot(storageCageDTOList, Const.GLASS_STATE_IN); + //todo:鎸夌収鏍煎瓙淇℃伅鏇存柊瀵瑰簲鐨勮澶噄d + List<Integer> slotList = storageCageDTOList.stream().map(UpdateBigStorageCageDTO::getTargetSlot).distinct().collect(Collectors.toList()); + bigStorageCageDetailsService.updateDeviceIdBySlot(slotList); + } log.info("4銆佸ぇ鐞嗙墖绗艰繘鐗囩姸鎬佸凡瀹屾垚宸插畬鎴愮殑鐜荤拑淇℃伅id:{}", v); updateSlotRemainBySlots(outSuccessGlassSlot); @@ -518,7 +588,7 @@ Damage damage = new Damage(); damage.setGlassId(item.getGlassId()); damage.setLine(item.getStartSlot()); - damage.setWorkingProcedure("纾ㄨ竟"); + damage.setWorkingProcedure("澶х悊鐗囩"); damage.setRemark("杩涚鍓嶅崸杞珛"); damage.setStatus(1); damage.setType(item.getTaskState()); @@ -644,7 +714,7 @@ log.info("灏嗗嚭鐗囩幓鐠儃}鐜荤拑鐘舵�佹敼涓哄嚭鐗囦腑", glassIds); bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>() .set(BigStorageCageDetails::getState, state) - .set(Const.RAW_GLASS_TASK_TYPE_DISPATCH.equals(taskType), BigStorageCageBaseInfo::getSlot, targetSlot) + .set(Const.BIG_STORAGE_BEFORE_DISPATCH.equals(taskType), BigStorageCageBaseInfo::getSlot, targetSlot) .ne(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT) .in(BigStorageCageDetails::getGlassId, glassIds)); try { -- Gitblit v1.8.0