From 87bf646a21a1664575110a85a132f486d8954293 Mon Sep 17 00:00:00 2001 From: zhoushihao <zsh19950802@163.com> Date: 星期一, 17 六月 2024 14:10:33 +0800 Subject: [PATCH] 大理片笼进出片任务逻辑初次提交:已完成进出片、调度功能,功能待调整优化 --- hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java | 48 +++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 41 insertions(+), 7 deletions(-) diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java index 281f395..6bf600b 100644 --- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java +++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.mes.bigstorage.entity.BigStorageCageDetails; import com.mes.bigstorage.entity.BigStorageDTO; +import com.mes.bigstorage.entity.dto.SlotSequenceDTO; import com.mes.bigstorage.entity.dto.TemperingLayoutDTO; import com.mes.bigstorage.service.BigStorageCageDetailsService; import com.mes.bigstorage.service.BigStorageCageService; @@ -62,6 +63,9 @@ @Value("${mes.sequence.order}") private boolean sequenceOrder; + + @Value("${mes.slotWidth}") + private Integer slotWidth; public static boolean bigStorageCageFullAlarm = false; @@ -285,13 +289,13 @@ return; } - //todo:鑾峰彇鐘舵�佸瓧 閽㈠寲浼樺厛 or 浜哄伐涓嬬墖浼樺厛 + //鑾峰彇鐘舵�佸瓧 閽㈠寲浼樺厛 or 浜哄伐涓嬬墖浼樺厛 if (true) { - //todo:閽㈠寲浼樺厛锛氳幏鍙栫悊鐗囩 鐜荤拑灏忕墖 鐮存崯琛� 鏁伴噺 鍒ゆ柇绗煎唴鐗堝浘鏄惁鍒伴綈 + //閽㈠寲浼樺厛锛氳幏鍙栫悊鐗囩 鐜荤拑灏忕墖 鐮存崯琛� 鏁伴噺 鍒ゆ柇绗煎唴鐗堝浘鏄惁鍒伴綈 TemperingLayoutDTO temperingLayoutDTO = bigStorageCageDetailsService.temperingIsAll(); if (null != temperingLayoutDTO) { //鐜荤拑鍒伴綈 - //todo: 鍒伴綈锛屽皢鐜荤拑灏忕墖鏁版嵁瀛樺叆閽㈠寲灏忕墖琛紝閫昏緫鐢熸垚鍑虹墖浠诲姟 缁撴潫 + //鍒伴綈锛屽皢鐜荤拑灏忕墖鏁版嵁瀛樺叆閽㈠寲灏忕墖琛紝閫昏緫鐢熸垚鍑虹墖浠诲姟 缁撴潫 List<BigStorageCageDetails> bigStorageCageDetails = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>() .eq(BigStorageCageDetails::getTemperingLayoutId, temperingLayoutDTO.getTemperingLayoutId()) .eq(BigStorageCageDetails::getEngineerId, temperingLayoutDTO.getEngineerId())); @@ -302,7 +306,7 @@ }).collect(Collectors.toList()); temperingGlassInfoService.saveBatch(temperingGlassInfos); - //鎵撹溅鍓╀綑灏哄 + //澶ц溅鍓╀綑灏哄 AtomicReference<Integer> remainWidth = new AtomicReference<>(Const.BIG_STORAGE_WIDTH); temperingGlassInfoList.stream().forEach(e -> { if (bigStorageCageOutTaskList.size() > 5 || e.getWidth() > remainWidth.get()) { @@ -315,11 +319,41 @@ bigStorageCageOutTaskService.saveBatch(bigStorageCageOutTaskList); return; } - //todo: 鏈埌榻� 鎵ц鍐呴儴璋冨害浠诲姟 缁撴潫 + //鏈埌榻� 鎵ц鍐呴儴璋冨害浠诲姟 缁撴潫 + TemperingLayoutDTO temperingOccupySlot = bigStorageCageDetailsService.queryTemperingOccupySlot(); + if (null != temperingOccupySlot) { + 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); + if (first.getMinSequence() == second.getMaxSequence() + 1 + && second.getRemainWidth() > Const.BIG_STORAGE_WIDTH - first.getRemainWidth() - Const.BIG_STORAGE_GAP) { + List<BigStorageCageDetails> list = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>() + .eq(BigStorageCageDetails::getSlot, first.getSlot()).eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN)); + List<BigStorageCageOutTask> outTasks = list.stream().map(e -> new BigStorageCageOutTask(e.getGlassId(), first.getSlot(), second.getSlot(), + 0, 0, 1)).collect(Collectors.toList()); + bigStorageCageOutTaskService.saveBatch(outTasks); + return; + } + } + } } - //todo:绗煎唴鏄惁鏈変汉宸ヤ笅鐗囩幓鐠� 鏈夌洿鎺ュ嚭 鏃� 缁撴潫 - + //绗煎唴鏄惁鏈変汉宸ヤ笅鐗囩幓鐠� 鏈夌洿鎺ュ嚭 鏃� 缁撴潫 + List<BigStorageCageDetails> oneList = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>() + .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN).orderByDesc(BigStorageCageDetails::getWidth)); + AtomicReference<Integer> remainWidth = new AtomicReference<>(Const.BIG_STORAGE_WIDTH); + if (CollectionUtils.isNotEmpty(oneList)) { + oneList.stream().forEach(e -> { + if (remainWidth.get() < e.getWidth().intValue()) { + return; + } + bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getSlot(), 0, 0, 0, 1)); + remainWidth.set(remainWidth.get() - e.getWidth().intValue() - Const.BIG_STORAGE_GAP); + }); + bigStorageCageOutTaskService.saveBatch(bigStorageCageOutTaskList); + return; + } } -- Gitblit v1.8.0