From 4e3b8155722b66e25df3c6fd42cc586b68dea391 Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期五, 06 六月 2025 13:55:39 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/tools/service/impl/BigStorageBaseServiceImpl.java |  214 +++++++++++++++++++++++++++-------------------------
 1 files changed, 111 insertions(+), 103 deletions(-)

diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/tools/service/impl/BigStorageBaseServiceImpl.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/tools/service/impl/BigStorageBaseServiceImpl.java
index 4b275c5..d713005 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/tools/service/impl/BigStorageBaseServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/tools/service/impl/BigStorageBaseServiceImpl.java
@@ -5,23 +5,22 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
-import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.mes.bigstorage.entity.BigStorageCage;
 import com.mes.bigstorage.entity.BigStorageCageDetails;
-import com.mes.bigstorage.entity.BigStorageDTO;
+import com.mes.bigstorage.entity.dto.BigStorageDTO;
 import com.mes.bigstorage.service.BigStorageCageDetailsService;
 import com.mes.bigstorage.service.BigStorageCageService;
 import com.mes.bigstoragetask.entity.BigStorageCageFeedTask;
 import com.mes.common.S7object;
 import com.mes.common.config.Const;
+import com.mes.common.config.ConstSysConfig;
 import com.mes.device.PlcParameterObject;
 import com.mes.glassinfo.entity.GlassInfo;
 import com.mes.glassinfo.service.GlassInfoService;
+import com.mes.sysconfig.service.SysConfigService;
 import com.mes.tools.S7control;
 import com.mes.tools.service.BigStorageBaseService;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -49,22 +48,27 @@
     @Resource
     GlassInfoService glassInfoService;
 
-    @Value("${mes.slotWidth}")
-    private Integer slotWidth;
+    @Resource
+    SysConfigService sysConfigService;
 
-    @Value("${mes.carWidth}")
-    private Integer carWidth;
-
-    @Value("${mes.outCarMaxSize}")
-    private Integer outCarMaxSize;
-
-    @Value("${mes.glassGap}")
-    private Integer glassGap;
+//    @Value("${mes.slotWidth}")
+//    private Integer slotWidth;
+//
+//    @Value("${mes.carWidth}")
+//    private Integer carWidth;
+//
+//    @Value("${mes.outCarMaxSize}")
+//    private Integer outCarMaxSize;
+//
+//    @Value("${mes.glassGap}")
+//    private Integer glassGap;
 
 
     @Override
     public void updateSlotRemainBySlots(List<Integer> slotList) {
         //鑾峰彇鏍煎瓙鍐呮墍鏈夌殑鐜荤拑淇℃伅
+        Integer slotWidth = sysConfigService.queryConfigValue(ConstSysConfig.VERTICAL_SLOT_WIDTH);
+        int glassGap = sysConfigService.queryConfigValue(ConstSysConfig.VERTICAL_GLASS_GAP);
         List<BigStorageCageDetails> inSlotGlassList = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>()
                 .in(BigStorageCageDetails::getSlot, slotList).in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN_ALL));
         Map<Integer, Double> slotRemainMap = new HashMap<>();
@@ -449,88 +453,88 @@
 
     @Override
     public BigStorageDTO queryTargetSlotByTempering(GlassInfo glassInfo) {
-        BigStorageDTO bigStorageDTO = null;
-        MPJLambdaWrapper<BigStorageCage> wrapper = new MPJLambdaWrapper<>(BigStorageCage.class)
-                .selectAll(BigStorageCage.class)
-                .leftJoin(BigStorageCageDetails.class, BigStorageCageDetails::getSlot, BigStorageCage::getSlot)
-                .eq(BigStorageCage::getEnableState, Const.SLOT_ON)
-                .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN_ALL_ZERO)
-                .eq(BigStorageCageDetails::getEngineerId, glassInfo.getEngineerId())
-                .eq(BigStorageCageDetails::getTemperingLayoutId, glassInfo.getTemperingLayoutId())
-                .gt(BigStorageCage::getRemainWidth, Math.max(glassInfo.getWidth(), glassInfo.getHeight()))
-                .last("limit 1");
-        if (glassInfo.getTemperingLayoutId() == 0) {
-            wrapper.eq(BigStorageCageDetails::getFlowCardId, glassInfo.getFlowCardId())
-                    .eq(BigStorageCageDetails::getLayer, glassInfo.getLayer());
-//            wrapper.eq(BigStorageCageDetails::getWidth, glassInfo.getWidth()).eq(BigStorageCageDetails::getHeight, glassInfo.getHeight());
-        } else {
-            wrapper.eq(BigStorageCageDetails::getTemperingFeedSequence, glassInfo.getTemperingFeedSequence() + 1);
-        }
-        BigStorageCage bigStorageCage = bigStorageCageService.selectJoinOne(BigStorageCage.class, wrapper);
-        if (null != bigStorageCage) {
-            log.info("鏃犻挗鍖栫増鍥緄d鎴栨牴鎹綋鍓嶇幓鐠冪墖搴�+1鎵惧埌鐩爣鏍煎瓙锛歿},鐜荤拑id锛歿}", bigStorageCage.getSlot(), glassInfo.getGlassId());
-            bigStorageDTO = new BigStorageDTO();
-            bigStorageDTO.setWidth(bigStorageCage.getRemainWidth());
-            bigStorageDTO.setSlot(bigStorageCage.getSlot());
-            bigStorageDTO.setDeviceId(bigStorageCage.getDeviceId());
-            return bigStorageDTO;
-        }
-        bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>()
-                .eq(BigStorageCage::getEnableState, Const.SLOT_ON)
-                .eq(BigStorageCage::getRemainWidth, slotWidth)
-//                .notInSql(BigStorageCage::getSlot, "select distinct slot from big_storage_cage_details where state = 0")
-                .inSql(BigStorageCage::getDeviceId,
-                        "select distinct device_id from big_storage_cage_details where engineer_id = '" + glassInfo.getEngineerId() + "' and tempering_layout_id = " + glassInfo.getTemperingLayoutId())
-                .last("limit 1"));
-        if (null != bigStorageCage) {
-            log.info("鏍规嵁鐗堝浘id鎵惧埌绗煎瓙鍐呯殑鐩爣鏍煎瓙锛歿},鐜荤拑id锛歿}", bigStorageCage.getSlot(), glassInfo.getGlassId());
-            bigStorageDTO = new BigStorageDTO();
-            bigStorageDTO.setWidth(bigStorageCage.getRemainWidth());
-            bigStorageDTO.setSlot(bigStorageCage.getSlot());
-            bigStorageDTO.setDeviceId(bigStorageCage.getDeviceId());
-            return bigStorageDTO;
-        }
-
-        //鑾峰彇鐜荤拑鐨勫帤搴︼細閲嶆柊閫夌瀛愰渶瑕佹寜鐓х瀛愬彲鏀剧幓鐠冨帤搴﹁繘琛岄�夋嫨 鍥犱负瀛愭煡璇㈡帓搴忓涓籹ql鏃犲奖鍝嶏紝鎵�浠ュ厛鎵ц瀛愭煡璇㈣幏鍙栭『搴忥紝鐒跺悗涓�娆″幓鏌ヨ
-        List<Integer> deviceUsedList = bigStorageCageService.queryFreeDeviceByUsed(glassInfo.getThickness());
-        List<Integer> deviceUseds = bigStorageCageService.queryFreeDeviceByUsed(glassInfo.getThickness());
-        List<BigStorageCageDetails> engineerCount1 = baseMapper.selectList(
-                new LambdaQueryWrapper<BigStorageCageDetails>()
-                        .notIn(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT, Const.GLASS_STATE_DAMAGE, Const.GLASS_STATE_TAKE)
-                        .select(BigStorageCageDetails::getEngineerId)
-                        .groupBy(BigStorageCageDetails::getEngineerId)
-                        .between(BigStorageCageDetails::getDeviceId, 1, 5)
-        );
-        List<BigStorageCageDetails> engineerCount2 = baseMapper.selectList(
-                new LambdaQueryWrapper<BigStorageCageDetails>()
-                        .notIn(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT, Const.GLASS_STATE_DAMAGE, Const.GLASS_STATE_TAKE)
-                        .select(BigStorageCageDetails::getEngineerId)
-                        .groupBy(BigStorageCageDetails::getEngineerId)
-                        .between(BigStorageCageDetails::getDeviceId, 6, 8)
-        );
-        if (engineerCount1.size() > engineerCount2.size()) {
-            deviceUsedList.removeIf(device -> device < 6);
-        } else {
-            deviceUsedList.removeIf(device -> device > 5);
-        }
-        if (CollectionUtils.isEmpty(deviceUsedList)) {
-            deviceUsedList = deviceUseds;
-        }
-        for (Integer item : deviceUsedList) {
-            bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>()
-                    .eq(BigStorageCage::getRemainWidth, slotWidth)
-                    .eq(BigStorageCage::getEnableState, Const.SLOT_ON)
-                    .eq(BigStorageCage::getDeviceId, item)
-                    .last("limit 1"));
-            if (null != bigStorageCage) {
-                log.info("鎸夌収瀛樼鐜荤拑鏍煎瓙鏁板崰鐢ㄦ渶灏戞柟寮忚幏鍙栦俊鎭牸瀛愪负锛歿},鐜荤拑id锛歿}", bigStorageCage.getSlot(), glassInfo.getGlassId());
-                bigStorageDTO = new BigStorageDTO();
-                bigStorageDTO.setWidth(bigStorageCage.getRemainWidth());
-                bigStorageDTO.setSlot(bigStorageCage.getSlot());
-                bigStorageDTO.setDeviceId(bigStorageCage.getDeviceId());
-                return bigStorageDTO;
-            }
-        }
+//        BigStorageDTO bigStorageDTO = null;
+//        MPJLambdaWrapper<BigStorageCage> wrapper = new MPJLambdaWrapper<>(BigStorageCage.class)
+//                .selectAll(BigStorageCage.class)
+//                .leftJoin(BigStorageCageDetails.class, BigStorageCageDetails::getSlot, BigStorageCage::getSlot)
+//                .eq(BigStorageCage::getEnableState, Const.SLOT_ON)
+//                .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN_ALL_ZERO)
+//                .eq(BigStorageCageDetails::getEngineerId, glassInfo.getEngineerId())
+//                .eq(BigStorageCageDetails::getTemperingLayoutId, glassInfo.getTemperingLayoutId())
+//                .gt(BigStorageCage::getRemainWidth, Math.max(glassInfo.getWidth(), glassInfo.getHeight()))
+//                .last("limit 1");
+//        if (glassInfo.getTemperingLayoutId() == 0) {
+//            wrapper.eq(BigStorageCageDetails::getFlowCardId, glassInfo.getFlowCardId())
+//                    .eq(BigStorageCageDetails::getLayer, glassInfo.getLayer());
+////            wrapper.eq(BigStorageCageDetails::getWidth, glassInfo.getWidth()).eq(BigStorageCageDetails::getHeight, glassInfo.getHeight());
+//        } else {
+//            wrapper.eq(BigStorageCageDetails::getTemperingFeedSequence, glassInfo.getTemperingFeedSequence() + 1);
+//        }
+//        BigStorageCage bigStorageCage = bigStorageCageService.selectJoinOne(BigStorageCage.class, wrapper);
+//        if (null != bigStorageCage) {
+//            log.info("鏃犻挗鍖栫増鍥緄d鎴栨牴鎹綋鍓嶇幓鐠冪墖搴�+1鎵惧埌鐩爣鏍煎瓙锛歿},鐜荤拑id锛歿}", bigStorageCage.getSlot(), glassInfo.getGlassId());
+//            bigStorageDTO = new BigStorageDTO();
+//            bigStorageDTO.setWidth(bigStorageCage.getRemainWidth());
+//            bigStorageDTO.setSlot(bigStorageCage.getSlot());
+//            bigStorageDTO.setDeviceId(bigStorageCage.getDeviceId());
+//            return bigStorageDTO;
+//        }
+//        bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>()
+//                .eq(BigStorageCage::getEnableState, Const.SLOT_ON)
+//                .eq(BigStorageCage::getRemainWidth, slotWidth)
+////                .notInSql(BigStorageCage::getSlot, "select distinct slot from big_storage_cage_details where state = 0")
+//                .inSql(BigStorageCage::getDeviceId,
+//                        "select distinct device_id from big_storage_cage_details where engineer_id = '" + glassInfo.getEngineerId() + "' and tempering_layout_id = " + glassInfo.getTemperingLayoutId())
+//                .last("limit 1"));
+//        if (null != bigStorageCage) {
+//            log.info("鏍规嵁鐗堝浘id鎵惧埌绗煎瓙鍐呯殑鐩爣鏍煎瓙锛歿},鐜荤拑id锛歿}", bigStorageCage.getSlot(), glassInfo.getGlassId());
+//            bigStorageDTO = new BigStorageDTO();
+//            bigStorageDTO.setWidth(bigStorageCage.getRemainWidth());
+//            bigStorageDTO.setSlot(bigStorageCage.getSlot());
+//            bigStorageDTO.setDeviceId(bigStorageCage.getDeviceId());
+//            return bigStorageDTO;
+//        }
+//
+//        //鑾峰彇鐜荤拑鐨勫帤搴︼細閲嶆柊閫夌瀛愰渶瑕佹寜鐓х瀛愬彲鏀剧幓鐠冨帤搴﹁繘琛岄�夋嫨 鍥犱负瀛愭煡璇㈡帓搴忓涓籹ql鏃犲奖鍝嶏紝鎵�浠ュ厛鎵ц瀛愭煡璇㈣幏鍙栭『搴忥紝鐒跺悗涓�娆″幓鏌ヨ
+//        List<Integer> deviceUsedList = bigStorageCageService.queryFreeDeviceByUsed(glassInfo.getThickness());
+//        List<Integer> deviceUseds = bigStorageCageService.queryFreeDeviceByUsed(glassInfo.getThickness());
+//        List<BigStorageCageDetails> engineerCount1 = baseMapper.selectList(
+//                new LambdaQueryWrapper<BigStorageCageDetails>()
+//                        .notIn(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT, Const.GLASS_STATE_DAMAGE, Const.GLASS_STATE_TAKE)
+//                        .select(BigStorageCageDetails::getEngineerId)
+//                        .groupBy(BigStorageCageDetails::getEngineerId)
+//                        .between(BigStorageCageDetails::getDeviceId, 1, 5)
+//        );
+//        List<BigStorageCageDetails> engineerCount2 = baseMapper.selectList(
+//                new LambdaQueryWrapper<BigStorageCageDetails>()
+//                        .notIn(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT, Const.GLASS_STATE_DAMAGE, Const.GLASS_STATE_TAKE)
+//                        .select(BigStorageCageDetails::getEngineerId)
+//                        .groupBy(BigStorageCageDetails::getEngineerId)
+//                        .between(BigStorageCageDetails::getDeviceId, 6, 8)
+//        );
+//        if (engineerCount1.size() > engineerCount2.size()) {
+//            deviceUsedList.removeIf(device -> device < 6);
+//        } else {
+//            deviceUsedList.removeIf(device -> device > 5);
+//        }
+//        if (CollectionUtils.isEmpty(deviceUsedList)) {
+//            deviceUsedList = deviceUseds;
+//        }
+//        for (Integer item : deviceUsedList) {
+//            bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>()
+//                    .eq(BigStorageCage::getRemainWidth, slotWidth)
+//                    .eq(BigStorageCage::getEnableState, Const.SLOT_ON)
+//                    .eq(BigStorageCage::getDeviceId, item)
+//                    .last("limit 1"));
+//            if (null != bigStorageCage) {
+//                log.info("鎸夌収瀛樼鐜荤拑鏍煎瓙鏁板崰鐢ㄦ渶灏戞柟寮忚幏鍙栦俊鎭牸瀛愪负锛歿},鐜荤拑id锛歿}", bigStorageCage.getSlot(), glassInfo.getGlassId());
+//                bigStorageDTO = new BigStorageDTO();
+//                bigStorageDTO.setWidth(bigStorageCage.getRemainWidth());
+//                bigStorageDTO.setSlot(bigStorageCage.getSlot());
+//                bigStorageDTO.setDeviceId(bigStorageCage.getDeviceId());
+//                return bigStorageDTO;
+//            }
+//        }
 
         //鑾峰彇鐜荤拑鐨勫帤搴︼細閲嶆柊閫夌瀛愰渶瑕佹寜鐓х瀛愬彲鏀剧幓鐠冨帤搴﹁繘琛岄�夋嫨
 //        List<Integer> deviceNotUsedList = bigStorageCageService.queryFreeDeviceByNotUsed(glassInfo.getThickness());
@@ -549,12 +553,13 @@
 //                return bigStorageDTO;
 //            }
 //        }
-        Assert.isTrue(null != bigStorageCage, "娌℃湁绌轰綑鐨勭瀛愬瓨鏀剧幓鐠�");
-        return bigStorageDTO;
+//        Assert.isTrue(null != bigStorageCage, "娌℃湁绌轰綑鐨勭瀛愬瓨鏀剧幓鐠�");
+//        return bigStorageDTO;
+        return null;
     }
 
 
-    @Scheduled(fixedDelay = 300)
+    //    @Scheduled(fixedDelay = 300)
     public void querySizeByEngineerTask() {
         log.info("鏌ヨ缁撴灉锛歿}", querySizeByEngineer("P24072402", 1, 10, 8));
         log.info("鏌ヨ缁撴灉锛歿}", querySizeByEngineer("P24072402", 1, 5, 8));
@@ -575,13 +580,16 @@
             List<GlassInfo> infoList = glassInfoService.list(new LambdaQueryWrapper<GlassInfo>()
                     .notInSql(GlassInfo::getGlassId, "select glass_id from damage where tempering_layout_id = " + temperingLayoutId + " and engineer_id = '" + engineerId + "'")
                     .eq(GlassInfo::getTemperingLayoutId, temperingLayoutId).eq(GlassInfo::getEngineerId, engineerId).orderByAsc(GlassInfo::getTemperingFeedSequence));
-            int remainWidth = carWidth;
+            int remainWidth = sysConfigService.queryConfigValue(ConstSysConfig.VERTICAL_CAR_WIDTH);
             int trainNumber = 1;
             int serialNumber = 0;
             int min = 0;
             int temp = infoList.get(0).getTemperingFeedSequence();
             int slot = 0;
             int resultTrainNumber = 0;
+            int outCarMaxSize = sysConfigService.queryConfigValue(ConstSysConfig.VERTICAL_OUT_CAR_SIZE);
+            int carWidth = sysConfigService.queryConfigValue(ConstSysConfig.VERTICAL_CAR_WIDTH);
+            int glassGap = sysConfigService.queryConfigValue(ConstSysConfig.VERTICAL_GLASS_GAP);
             for (GlassInfo e : infoList) {
                 int maxLength = Math.max((int) e.getWidth(), (int) e.getHeight());
                 if (serialNumber >= outCarMaxSize || maxLength > remainWidth || e.getTemperingFeedSequence() >= minLength) {
@@ -621,10 +629,10 @@
             bigStorageDTO.setDeviceId(bigStorageCage.getDeviceId());
             return bigStorageDTO;
         }
-
+        int slotWidth = sysConfigService.queryConfigValue(ConstSysConfig.VERTICAL_SLOT_WIDTH);
         bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>()
                 .eq(BigStorageCage::getEnableState, Const.SLOT_ON)
-                .eq(BigStorageCage::getRemainWidth, slotWidth)
+                .eq(BigStorageCage::getRemainWidth, slotWidth).orderByAsc(BigStorageCage::getSlot)
                 .inSql(BigStorageCage::getDeviceId,
                         "select distinct device_id from big_storage_cage_details where engineer_id = '" + engineerId + "' and tempering_layout_id = " + temperingLayoutId)
                 .last("limit 1"));
@@ -642,7 +650,7 @@
         List<Integer> deviceUsedList = bigStorageCageService.queryFreeDeviceByUsed(thickness);
         for (Integer item : deviceUsedList) {
             bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>()
-                    .eq(BigStorageCage::getRemainWidth, slotWidth)
+                    .eq(BigStorageCage::getRemainWidth, slotWidth).orderByAsc(BigStorageCage::getSlot)
                     .eq(BigStorageCage::getEnableState, Const.SLOT_ON)
                     .eq(BigStorageCage::getDeviceId, item)
                     .last("limit 1"));

--
Gitblit v1.8.0