From fc46ed525a74e09292c87ca2daa395f5ae6b22ff Mon Sep 17 00:00:00 2001
From: ZengTao <2773468879@qq.com>
Date: 星期六, 29 十一月 2025 17:07:38 +0800
Subject: [PATCH] 1、因4号笼子划伤临时修改不进笼 2、大屏运行时间段最后一段缺失修改

---
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java |   73 ++++++++++++++++++++++++++++--------
 1 files changed, 56 insertions(+), 17 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 5cbe4f6..d756bb7 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
@@ -3,8 +3,8 @@
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.lang.Assert;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-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.xingshuangs.iot.protocol.s7.serializer.S7Serializer;
 import com.github.yulichang.toolkit.JoinWrappers;
 import com.kangaroohy.milo.model.ReadWriteEntity;
@@ -104,6 +104,8 @@
     private static final String ALARM_TYPE = "閽㈠寲澶х悊鐗�";
     private static final String ALARM_CODE_SIZE = "sizeSame";
     private static final String ALARM_CODE_ID = "idSame";
+    private static final String ALARM_CODE_SLOT = "slotLess";
+    private static final String ALARM_CODE_OVER = "overSize";
 
     @Resource
     private RedisUtil redisUtil;
@@ -231,6 +233,13 @@
                         .ge(BigStorageCage::getMaxThickness, entry.getKey()));
                 if (count < entry.getValue()) {
                     log.info("绗煎唴鏍煎瓙鍓╀綑鏁伴噺涓嶈冻锛岀粨鏉熸湰娆¤繘鐗�");
+                    ProductAlarmInfo alarmInfo = new ProductAlarmInfo();
+                    alarmInfo.setState(Const.LOAD_RAW_GLASS_NEW);
+                    alarmInfo.setAlarmModule(ALARM_MODULE);
+                    alarmInfo.setAlarmType(ALARM_TYPE);
+                    alarmInfo.setAlarmCode(ALARM_CODE_SLOT);
+                    alarmInfo.setAlarmMessage(count + "");
+                    productAlarmInfoService.save(alarmInfo);
                     //鍚憄lc鍙戦�佹姤璀�:绗煎唴鏍煎瓙鍓╀綑鏁伴噺涓嶈冻
 //                    miloService.writeToOpcWord(generateReadWriteEntity("DLP1A.DLP1A.alarmSignal", 16));
                     s7DataDLPOne = new S7DataDLPOne();
@@ -247,6 +256,13 @@
                     .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN_ALL));
             if (count > 0) {
                 log.info("鐩撮�氱墖鍙板瓨鍦ㄧ幓鐠冿紝缁撴潫鏈杩涚墖");
+//                ProductAlarmInfo alarmInfo = new ProductAlarmInfo();
+//                alarmInfo.setState(Const.LOAD_RAW_GLASS_NEW);
+//                alarmInfo.setAlarmModule(ALARM_MODULE);
+//                alarmInfo.setAlarmType(ALARM_TYPE);
+//                alarmInfo.setAlarmCode(ALARM_CODE_OVER);
+//                alarmInfo.setAlarmMessage("");
+//                productAlarmInfoService.save(alarmInfo);
                 //鍚憄lc鍙戦�佹姤璀�:鐩撮�氱墖鍙板瓨鍦ㄧ幓鐠冿紝鏃犳硶缁х画鐩撮��
 //                miloService.writeToOpcWord(generateReadWriteEntity("DLP1A.DLP1A.alarmSignal", 64));
                 s7DataDLPOne = new S7DataDLPOne();
@@ -398,6 +414,8 @@
                 LambdaQueryWrapper<BigStorageCage> queryWrapper = new LambdaQueryWrapper<BigStorageCage>()
                         .eq(BigStorageCage::getRemainWidth, slotWidth)
                         .eq(BigStorageCage::getEnableState, Const.SLOT_ON)
+                        .le(BigStorageCage::getMinThickness, info.getThickness())
+                        .ge(BigStorageCage::getMaxThickness, info.getThickness())
                         .orderByAsc(BigStorageCage::getDeviceId).orderByAsc(BigStorageCage::getSlot)
                         .last("limit 1");
 
@@ -462,13 +480,30 @@
 
             String temperingEngineerId = redisUtil.getCacheObject("temperingEngineerId");
             if (StringUtils.isNotBlank(temperingEngineerId)) {
-                TemperingGlassInfo temperingGlassInfo = temperingGlassInfoService.getOne(new QueryWrapper<TemperingGlassInfo>()
-                        .select("Top 1 *")
-                        .eq("engineer_id", temperingEngineerId)
-                        .orderByDesc("tempering_layout_id"));
+                List<TemperingGlassInfo> temperingGlassInfoList = temperingGlassInfoService.list(
+                        new LambdaQueryWrapper<TemperingGlassInfo>()
+                                .eq(TemperingGlassInfo::getEngineerId, temperingEngineerId)
+                                .orderByAsc(TemperingGlassInfo::getId)
+                );
                 int temperingLayoutId = 1;
-                if (temperingGlassInfo != null) {
-                    temperingLayoutId = temperingGlassInfo.getTemperingLayoutId() + 1;
+                if (CollectionUtils.isEmpty(temperingGlassInfoList)) {
+                    temperingLayoutId = 1;
+                } else {
+                    List<Integer> tempIds = temperingGlassInfoList.stream()
+                            .map(TemperingGlassInfo::getTemperingLayoutId)
+                            .distinct()
+                            .sorted()
+                            .collect(Collectors.toList());
+
+                    int expected = 1;
+                    for (int current : tempIds) {
+                        if (current > expected) {
+                            break; // 鎵惧埌绗竴涓己澶卞�硷紝璺冲嚭寰幆
+                        } else if (current == expected) {
+                            expected++; // 杩炵画鍒欓�掑鏈熸湜鐨勫��
+                        }
+                    }
+                    temperingLayoutId = expected; // 缂哄け鍒欎负expected锛岃繛缁垯涓簃ax+1
                 }
                 List<GlassInfo> glassInfos = glassInfoService.list(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getEngineerId, temperingEngineerId).eq(GlassInfo::getTemperingLayoutId, temperingLayoutId));
                 if (CollectionUtil.isEmpty(glassInfos)) {
@@ -559,6 +594,7 @@
                     .eq(BigStorageCage::getEnableState, Const.SLOT_ON));
             //瀹氫箟10涓牸瀛愪负闃堝��
             if (count <= 10) {
+                log.info("绗煎瓙瓒呰繃闃堝�硷紝鎵ц4鍙风瀛愯皟搴﹂�昏緫");
                 //鑾峰彇搴忓彿涓�1鐨勬牸瀛� 灏嗘牸瀛愬唴鐨勬墍鏈夌幓鐠冮�佸埌瀵瑰簲鐨勭瀛�
                 BigStorageCage bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>()
                         .eq(BigStorageCage::getRemainWidth, slotWidth)
@@ -566,15 +602,18 @@
                         .in(BigStorageCage::getDeviceId, Arrays.asList(5, 6))
                         .orderByAsc(BigStorageCage::getDeviceId).orderByAsc(BigStorageCage::getSlot)
                         .last("limit 1"));
-
-                list = bigStorageCageDetailsService.queryNeedDispatch();
-                computeOutGlassInfoByVirtualSlot(list, "big_storage_cage_out_one_task",
-                        bigStorageCage.getSlot(), Const.GLASS_STATE_SCHEDULE_ING, Const.BIG_STORAGE_BEFORE_DISPATCH);
-                List<Integer> slotList = new ArrayList<>();
-                slotList.add(bigStorageCage.getSlot());
-                slotList.add(list.get(0).getSlot());
-                updateSlotRemainBySlots(slotList);
-                return;
+                if (null != bigStorageCage) {
+                    list = bigStorageCageDetailsService.queryNeedDispatch();
+                    if (CollectionUtil.isNotEmpty(list)) {
+                        computeOutGlassInfoByVirtualSlot(list, "big_storage_cage_out_one_task",
+                                bigStorageCage.getSlot(), Const.GLASS_STATE_SCHEDULE_ING, Const.BIG_STORAGE_BEFORE_DISPATCH);
+                        List<Integer> slotList = new ArrayList<>();
+                        slotList.add(bigStorageCage.getSlot());
+                        slotList.add(list.get(0).getSlot());
+                        updateSlotRemainBySlots(slotList);
+                        return;
+                    }
+                }
             }
             //鐢熸垚璋冨害浠诲姟鎸夌収缁勫彿缁勫簭鐢�1寮�濮嬩緷娆″線5鍙风瀛愰�佸皬鐗�
             BigStorageSlotDTO slotDTO = bigStorageCageDetailsService.queryNeedDispatchSlotBySequence();
@@ -972,7 +1011,7 @@
 //        if (!THROUGH_SLOT.equals(list.get(0).getSlot())) {
 //            涓存椂瑙e喅鏂规:鍑虹墖鏃惰�冭檻鐜荤拑纰版挒锛屾敼涓轰竴鐗囦竴鍑�
         // 鐣岄潰鍏抽棴璋冨害寮�鍏� !Const.BIG_STORAGE_BEFORE_DISPATCH.equals(taskType)
-        if (list.get(0).getSlot() >= 500 && list.get(0).getThickness() > 8) {
+        if (list.get(0).getSlot() >= 500 && list.get(0).getThickness() > 7) {
             outGlassList = list.subList(0, 1);
         } else {
             List<String> glassIdList = bigStorageGlassRelationInfoService.queryNeedOutGlassId(

--
Gitblit v1.8.0