From 6397754d1a97f7b570435e8ab81d3ef1d152b2d0 Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期一, 11 八月 2025 16:01:53 +0800
Subject: [PATCH] 1、义乌改造:进出笼规则调整,当存在进片任务/请求时,出片大车不执行调度任务 2、进片一个笼子存放一个工程,笼子存在工程时,按笼子使用情况,剩余格子最多的优先使用 3、指定钢化工程改造

---
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java |  109 +++++++++++++++++++++++++++---------------------------
 1 files changed, 55 insertions(+), 54 deletions(-)

diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
index c88b656..2a3a54c 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
@@ -6,7 +6,6 @@
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.github.yulichang.toolkit.JoinWrappers;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
-import com.google.common.collect.Lists;
 import com.mes.base.entity.vo.BigStorageVO;
 import com.mes.bigstorage.entity.BigStorageCage;
 import com.mes.bigstorage.entity.BigStorageCageDetails;
@@ -36,6 +35,7 @@
 import com.mes.temperingglass.service.TemperingGlassInfoService;
 import com.mes.utils.RedisUtil;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
@@ -274,6 +274,48 @@
     }
 
     @Override
+    public BigStorageDTO queryTargetSlot(String EngineerId, String glassId, int thickness) {
+        BigStorageDTO bigStorageDTO = null;
+        int slotWidth = sysConfigService.queryConfigValue(ConstSysConfig.VERTICAL_SLOT_WIDTH);
+
+        BigStorageCage bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>()
+                .eq(BigStorageCage::getEnableState, Const.SLOT_ON)
+                .eq(BigStorageCage::getRemainWidth, slotWidth).orderByAsc(BigStorageCage::getSlot)
+                .inSql(BigStorageCage::getDeviceId,
+                        "select distinct device_id from big_storage_cage_details where engineer_id = '" + EngineerId + "'")
+                .last("limit 1"));
+        if (null != bigStorageCage) {
+            log.info("鏍规嵁鐗堝浘id鎵惧埌绗煎瓙鍐呯殑鐩爣鏍煎瓙锛歿},鐜荤拑id锛歿}", bigStorageCage.getSlot(), glassId);
+            bigStorageDTO = new BigStorageDTO();
+            bigStorageDTO.setWidth(bigStorageCage.getRemainWidth());
+            bigStorageDTO.setSlot(bigStorageCage.getSlot());
+            bigStorageDTO.setDeviceId(bigStorageCage.getDeviceId());
+            return bigStorageDTO;
+        }
+
+        //鑾峰彇鐜荤拑鐨勫帤搴︼細閲嶆柊閫夌瀛愰渶瑕佹寜鐓х瀛愬彲鏀剧幓鐠冨帤搴﹁繘琛岄�夋嫨 鍥犱负瀛愭煡璇㈡帓搴忓涓籹ql鏃犲奖鍝嶏紝鎵�浠ュ厛鎵ц瀛愭煡璇㈣幏鍙栭『搴忥紝鐒跺悗涓�娆″幓鏌ヨ
+        List<Integer> deviceUsedList = bigStorageCageService.queryFreeDeviceByUsed(thickness);
+
+        for (Integer item : deviceUsedList) {
+            bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>()
+                    .eq(BigStorageCage::getRemainWidth, slotWidth).orderByAsc(BigStorageCage::getSlot)
+                    .eq(BigStorageCage::getEnableState, Const.SLOT_ON)
+                    .eq(BigStorageCage::getDeviceId, item)
+                    .last("limit 1"));
+            if (null != bigStorageCage) {
+                log.info("鎸夌収瀛樼鐜荤拑鏍煎瓙鏁板崰鐢ㄦ渶灏戞柟寮忚幏鍙栦俊鎭牸瀛愪负锛歿},鐜荤拑id锛歿}", bigStorageCage.getSlot(), glassId);
+                bigStorageDTO = new BigStorageDTO();
+                bigStorageDTO.setWidth(bigStorageCage.getRemainWidth());
+                bigStorageDTO.setSlot(bigStorageCage.getSlot());
+                bigStorageDTO.setDeviceId(bigStorageCage.getDeviceId());
+                return bigStorageDTO;
+            }
+        }
+        Assert.isTrue(null != bigStorageCage, "娌℃湁绌轰綑鐨勭瀛愬瓨鏀剧幓鐠�");
+        return bigStorageDTO;
+    }
+
+    @Override
     public BigStorageDTO queryTargetSlotByTempering(GlassInfo glassInfo) {
         BigStorageDTO bigStorageDTO = null;
         int slotWidth = sysConfigService.queryConfigValue(ConstSysConfig.VERTICAL_SLOT_WIDTH);
@@ -381,6 +423,11 @@
     }
 
     @Override
+    public List<TemperingLayoutDTO> temperingIsAllByTemperingLayoutId(String engineerId, Integer temperingLayoutId) {
+        return baseMapper.temperingIsAllByTemperingLayoutId(engineerId, temperingLayoutId);
+    }
+
+    @Override
     public List<TemperingLayoutDTO> temperingIsAll() {
         return baseMapper.temperingIsAll();
     }
@@ -477,24 +524,7 @@
 
     @Override
     public boolean cancelTemperingTask() {
-        //褰撳墠姝e湪鎵ц鐨勫嚭鐗囦换鍔�
-        List<BigStorageCageHistoryTask> historyTaskList = bigStorageCageHistoryTaskService.list(new LambdaQueryWrapper<BigStorageCageHistoryTask>()
-                .eq(BigStorageCageHistoryTask::getTaskState, Const.GLASS_STATE_NEW)
-                .eq(BigStorageCageHistoryTask::getTargetSlot, Const.TEMPERING_OUT_TARGET_POSITION));
-        //涓嶅瓨鍦ㄥ嚭鐗囦换鍔★紝鐩存帴鍒犻櫎閽㈠寲灏忕墖琛ㄦ湭鍑虹墖鐨勪换鍔�
-        if (CollectionUtils.isEmpty(historyTaskList)) {
-            temperingGlassInfoMapper.delete(new LambdaQueryWrapper<TemperingGlassInfo>().eq(TemperingGlassInfo::getState, Const.TEMPERING_NEW));
-            return Boolean.TRUE;
-        }
-        //瀛樺湪鍑虹墖浠诲姟锛屽垹闄ら挗鍖栧皬鐗囪〃
-        List<String> glassIdList = historyTaskList.stream().map(BigStorageCageHistoryTask::getGlassId).collect(Collectors.toList());
-        GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().in(GlassInfo::getGlassId, glassIdList)
-                .orderByDesc(GlassInfo::getTemperingFeedSequence).last("limit 1"));
-        temperingGlassInfoMapper.delete(new LambdaQueryWrapper<TemperingGlassInfo>()
-                .eq(TemperingGlassInfo::getEngineerId, glassInfo.getEngineerId())
-                .eq(TemperingGlassInfo::getState, Const.TEMPERING_NEW)
-                .notIn(TemperingGlassInfo::getGlassId, glassIdList)
-        );
+        redisUtil.deleteObject("temperingEngineerId");
         return Boolean.TRUE;
     }
 
@@ -506,42 +536,13 @@
 
     @Override
     public boolean appointTemperingEngineerId(String engineerId) {
-        LambdaQueryWrapper<TemperingGlassInfo> temperingGlassInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
-        temperingGlassInfoLambdaQueryWrapper
-                .eq(TemperingGlassInfo::getState, Const.TEMPERING_NEW);
-        List<TemperingGlassInfo> temperingGlassInfoList = temperingGlassInfoMapper.selectList(temperingGlassInfoLambdaQueryWrapper);
-
-        int dispatchCount = bigStorageCageHistoryTaskService.count(new LambdaQueryWrapper<BigStorageCageHistoryTask>()
-                .eq(BigStorageCageHistoryTask::getTaskState, Const.GLASS_STATE_NEW)
-                .eq(BigStorageCageHistoryTask::getTaskType, Const.BIG_STORAGE_BEFORE_DISPATCH));
-
-        if (temperingGlassInfoList.size() == 0) {
-            MPJLambdaWrapper<GlassInfo> wrapper = JoinWrappers.lambda(GlassInfo.class)
-                    .select("-1 as state,t.filmsid as films_id,t.glass_id,t.flow_card_id,t.glass_type,t.width,t.height" +
-                            ",t.thickness,t.ishorizontal,t.tempering_layout_id,t.tempering_feed_sequence,t.x_coordinate,t.y_coordinate," +
-                            "t.angle,t1.slot,t.engineer_id")
-                    .innerJoin(BigStorageCageDetails.class, BigStorageCageDetails::getGlassId, GlassInfo::getGlassId)
-                    .eq(GlassInfo::getEngineerId, engineerId)
-                    .ne(GlassInfo::getTemperingLayoutId, 0)
-                    .orderByAsc(BigStorageCageDetails::getTemperingLayoutId)
-                    .orderByAsc(BigStorageCageDetails::getTemperingFeedSequence);
-            if (dispatchCount > 0) {
-                wrapper.in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN_ALL);
-            } else {
-                wrapper.in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN);
-            }
-            List<TemperingGlassInfo> temperingGlassInfos = glassInfoService.selectJoinList(TemperingGlassInfo.class, wrapper);
-
-            if (CollectionUtils.isNotEmpty(temperingGlassInfos)) {
-                //閬垮厤澶ч噺鏁版嵁鎻掑叆瀵艰嚧sqlserver鏁版嵁搴撳紓甯革紝鍒嗘壒娆℃瘡璋冨瓨鍌ㄤ緷娆�
-                List<List<TemperingGlassInfo>> temperingGlassInfoLists = Lists.partition(temperingGlassInfos, 50);
-                for (List<TemperingGlassInfo> item : temperingGlassInfoLists) {
-                    temperingGlassInfoService.saveBatch(item);
-                }
-                return true;
-            }
+        String oldEngineerId = redisUtil.getCacheObject("temperingEngineerId");
+        if (StringUtils.isBlank(oldEngineerId)) {
+            redisUtil.setCacheObject("temperingEngineerId", engineerId);
+            return Boolean.TRUE;
+        } else {
+            return Boolean.FALSE;
         }
-        return false;
     }
 
     @Override

--
Gitblit v1.8.0