From 1577c2e2874c1fad9ac684356bf0e568c3015045 Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期三, 27 十一月 2024 09:46:15 +0800
Subject: [PATCH] 1、大理片笼新增进笼规则,计算本工程下所有玻璃的虚拟格子信息,按照虚拟格子,匹配笼内的实际格子,进笼之后查看格子是否有到齐的,执行调度任务 2、卧理修改任务执行顺序,移除捕获异常操作 3、不覆盖原有逻辑,新增opc任务,避免任务重复执行报错

---
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageTask.java |   46 +++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 39 insertions(+), 7 deletions(-)

diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageTask.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageTask.java
index dcd3a91..8200db0 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageTask.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageTask.java
@@ -11,7 +11,7 @@
 import com.mes.base.entity.BigStorageCageBaseInfo;
 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.entity.dto.SlotSequenceDTO;
 import com.mes.bigstorage.entity.dto.TemperingLayoutDTO;
 import com.mes.bigstorage.service.BigStorageCageDetailsService;
@@ -35,7 +35,6 @@
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
@@ -85,7 +84,7 @@
     private boolean sequenceOrder;
 
 
-    @Scheduled(fixedDelay = 1000)
+    // @Scheduled(fixedDelay = 1000)
     public void inBigStorageTask() throws Exception {
         ReadWriteEntity inkageEntity = miloService.readFromOpcUa("DLP1A.DLP1A.mesControl");
         if (true != Boolean.parseBoolean(inkageEntity.getValue() + "")) {
@@ -107,8 +106,24 @@
         if (CollectionUtils.isEmpty(inTaskList)) {
             log.info("褰撳墠澶ц溅鏃犺繘鐗囩幓鐠冿紝缁撴潫杩涚墖浠诲姟");
         }
+
         List<String> glassIdList = inTaskList.stream().map(BigStorageCageTask::getGlassId).collect(Collectors.toList());
         log.info("鑾峰彇浠诲姟鐨勭幓鐠僫d锛歿}", glassIdList);
+        Map<String, Long> glassCountMap = glassIdList.stream().collect(Collectors.groupingBy(e -> e, Collectors.counting()));
+        for (Map.Entry<String, Long> entry : glassCountMap.entrySet()) {
+            if (entry.getValue() > 1) {
+                log.info("杩涚墖鐜荤拑{}瀛樺湪鐩稿悓锛岀粨鏉熸湰娆′换鍔�", entry.getKey());
+                //todo:鍚憄lc鍙戦�佹姤璀�
+                return;
+            }
+        }
+        List<BigStorageCageDetails> detailsList = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>().in(BigStorageCageDetails::getGlassId, glassIdList)
+                .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN_ALL));
+        if (CollectionUtil.isNotEmpty(detailsList)) {
+            log.info("鐞嗙墖绗煎瓨鍦ㄧ浉鍚岀殑杩涚墖鐜荤拑{}锛岀粨鏉熸湰娆′换鍔�", detailsList);
+            //todo:鍚憄lc鍙戦�佹姤璀�
+            return;
+        }
         List<GlassInfo> glassInfoList = glassInfoService.list(new LambdaQueryWrapper<GlassInfo>().in(GlassInfo::getGlassId, glassIdList));
 
         Map<String, List<GlassInfo>> glassListMap = glassInfoList.stream().collect(Collectors.groupingBy(GlassInfo::getGlassId));
@@ -148,7 +163,7 @@
         miloService.writeToOpcWord(generateReadWriteEntity("DLP1A.DLP1A.MesReply", 1));
     }
 
-    @Scheduled(fixedDelay = 1000)
+    // @Scheduled(fixedDelay = 1000)
     public void outBigStorageTask() throws Exception {
         Date startDate = new Date();
         ReadWriteEntity inkageEntity = miloService.readFromOpcUa("DLP1B.DLP1B.mesControl");
@@ -243,7 +258,10 @@
                         if (CollectionUtils.isNotEmpty(list)) {
                             computeOutGlassInfo(list, "big_storage_cage_out_one_task", second.getSlot(), Const.GLASS_STATE_SCHEDULE_ING, Const.BIG_STORAGE_BEFORE_DISPATCH);
                         }
-                        updateSlotRemainBySlots(Arrays.asList(second.getSlot()));
+                        //浣跨敤Arrays.asList() 浣跨敤removeAll鎶ラ敊锛屾敼涓烘甯镐娇鐢↙ist
+                        List<Integer> slotList = new ArrayList<>();
+                        slotList.add(second.getSlot());
+                        updateSlotRemainBySlots(slotList);
                         break loop;
                     }
                 }
@@ -254,7 +272,7 @@
         return;
     }
 
-    @Scheduled(fixedDelay = 1000)
+    // @Scheduled(fixedDelay = 1000)
     public void finishInBigStorageTask() throws Exception {
         ReadWriteEntity inkageEntity = miloService.readFromOpcUa("DLP1A.DLP1A.mesControl");
         if (true != Boolean.parseBoolean(inkageEntity.getValue() + "")) {
@@ -312,7 +330,7 @@
         miloService.writeToOpcWord(generateReadWriteEntity("DLP1A.DLP1A.MesReply", 0));
     }
 
-    @Scheduled(fixedDelay = 1000)
+    // @Scheduled(fixedDelay = 1000)
     public void finishOutBigStorageTask() throws Exception {
         ReadWriteEntity inkageEntity = miloService.readFromOpcUa("DLP1B.DLP1B.mesControl");
         if (true != Boolean.parseBoolean(inkageEntity.getValue() + "")) {
@@ -377,6 +395,20 @@
                     .set(BigStorageCageHistoryTask::getTaskState, item.getTaskState())
                     .eq(BigStorageCageHistoryTask::getTaskType, taskType)
                     .eq(BigStorageCageHistoryTask::getGlassId, item.getGlassId()));
+            //鏇存柊閽㈠寲灏忕墖琛�
+            Integer taskState = item.getTaskState();
+            if (taskState == 2) {
+                temperingGlassInfoService.update(new LambdaUpdateWrapper<TemperingGlassInfo>()
+                        .set(TemperingGlassInfo::getState, Const.TEMPERING_OUT).eq(TemperingGlassInfo::getGlassId, item.getGlassId()));
+            } else if (taskState == 3) {
+//                temperingGlassInfoService.remove(new LambdaQueryWrapper<TemperingGlassInfo>().eq(TemperingGlassInfo::getGlassId, item.getGlassId()));
+                temperingGlassInfoService.update(new LambdaUpdateWrapper<TemperingGlassInfo>()
+                        .set(TemperingGlassInfo::getState, Const.TEMPERING_DAMAGE
+                        ).eq(TemperingGlassInfo::getGlassId, item.getGlassId()));
+
+            } else {
+//                绌烘墽琛�
+            }
         }
 //       閲嶇疆浠诲姟琛ㄦ暟鎹�
         bigStorageCageTaskService.updateOutTaskMessage("big_storage_cage_out_one_task");

--
Gitblit v1.8.0