From ea8859c58b8fd24a54f7a838d6f8eaa98d57fb65 Mon Sep 17 00:00:00 2001 From: zhoushihao <zsh19950802@163.com> Date: 星期三, 18 十二月 2024 11:44:07 +0800 Subject: [PATCH] 1、大理片笼进出片任务新增限制:进片玻璃数大于可用格子时,不允许进片 2、超过最大尺寸且直通通道有玻璃时 不能进片 3、大理片超过最大高度走直通通道 4、fixbug:笼子厚度限制 --- hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java | 97 +++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 82 insertions(+), 15 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 4d69ac4..9be61a8 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; @@ -94,7 +99,8 @@ private Integer temperingOutTargetPosition; @Value("${mes.artificialOutTargetPosition}") private Integer artificialOutTargetPosition; - + @Value("${mes.slotMaxHeight}") + private Integer slotMaxHeight; @Scheduled(fixedDelay = 1000) public void inBigStorageTask() throws Exception { @@ -142,7 +148,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鍙戦�佹姤璀� @@ -155,23 +161,71 @@ //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())) { + 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)); 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.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(); @@ -180,12 +234,13 @@ 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.setId(null); bigStorageCageDetailsService.save(cageDetails); @@ -240,6 +295,18 @@ 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; } @@ -518,7 +585,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()); -- Gitblit v1.8.0