From 9152c5394d4fd9d14d1a5fb9de9d441450b2bac6 Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期三, 20 十一月 2024 08:41:13 +0800
Subject: [PATCH] 1、卧理进出片订阅功能直接按订阅结果判断,订阅后查询数据库,可能造成数据重复读,任务重复执行问题 2、大理片笼新增任务表、任务历史表脚本 3、大理片笼进片任务功能开发已完成50%

---
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageTask.java |  131 +++++++++++++++++++++++--------------------
 1 files changed, 70 insertions(+), 61 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 b51000b..2284d1e 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
@@ -3,12 +3,13 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
-import com.kangaroohy.milo.runner.subscription.SubscriptionCallback;
-import com.kangaroohy.milo.service.MiloService;
 import com.mes.bigstorage.entity.BigStorageCage;
 import com.mes.bigstorage.entity.BigStorageCageDetails;
+import com.mes.bigstorage.entity.BigStorageDTO;
 import com.mes.bigstorage.service.BigStorageCageDetailsService;
 import com.mes.bigstorage.service.BigStorageCageService;
+import com.mes.bigstoragecageIntask.entity.BigStorageCageInTask;
+import com.mes.bigstoragecageIntask.service.BigStorageCageInTaskService;
 import com.mes.bigstoragetask.entity.BigStorageCageFeedTask;
 import com.mes.bigstoragetask.entity.BigStorageCageOutTask;
 import com.mes.bigstoragetask.entity.UpdateBigStorageCageDTO;
@@ -17,19 +18,22 @@
 import com.mes.common.config.Const;
 import com.mes.damage.entity.Damage;
 import com.mes.damage.service.DamageService;
-import com.mes.edgglasstask.service.EdgGlassTaskInfoService;
+import com.mes.glassinfo.entity.GlassInfo;
 import com.mes.glassinfo.service.GlassInfoService;
 import com.mes.temperingglass.entity.TemperingGlassInfo;
 import com.mes.temperingglass.service.TemperingGlassInfoService;
+import com.mes.tools.service.BigStorageBaseService;
 import lombok.extern.slf4j.Slf4j;
 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;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -38,49 +42,79 @@
 @Component
 @Slf4j
 public class OpcPlcStorageCageTask {
-
-    @Resource
-    private BigStorageCageService bigStorageCageService;
     @Resource
     private BigStorageCageDetailsService bigStorageCageDetailsService;
-    @Resource
-    private GlassInfoService glassInfoService;
     @Resource
     private BigStorageCageFeedTaskService bigStorageCageFeedTaskService;
     @Resource
     private BigStorageCageOutTaskService bigStorageCageOutTaskService;
     @Resource
-    private EdgGlassTaskInfoService edgGlassTaskInfoService;
-    @Resource
     private TemperingGlassInfoService temperingGlassInfoService;
     @Resource
     private DamageService damageService;
 
-    @Autowired(required = false)
-    MiloService miloService;
+    @Resource
+    private GlassInfoService glassInfoService;
+    @Resource
+    private BigStorageCageService bigStorageCageService;
 
-    @Resource(name = "bigStorageStartCallback")
-    SubscriptionCallback bigStorageStartCallback;
-
-    @Value("${mes.carWidth}")
-    private Integer carWidth;
-
-    @Value("${mes.slotWidth}")
-    private Integer slotWidth;
+    @Resource
+    private BigStorageBaseService baseService;
+    @Resource
+    private BigStorageCageInTaskService bigStorageBaseInTaskService;
 
     @Value("${mes.glassGap}")
     private Integer glassGap;
 
-    @Scheduled(fixedDelay = Long.MAX_VALUE)
-    public void startOpcTask() throws Exception {
-        //璁惧涓�浜岀殑杩涚墖璇锋眰
-        miloService.subscriptionFromOpcUa(Arrays.asList("my.device01.x1", "my.device02.x1"), bigStorageStartCallback);
-    }
+//    @Resource
+//    private BigStorageCage bigStorageBaseInTaskService;
 
-    @Scheduled(fixedDelay = Long.MAX_VALUE)
-    public void outOpcTask() throws Exception {
-        //璁惧1鐨勫嚭鐗囪姹�
-        miloService.subscriptionFromOpcUa(Arrays.asList("my.device03.x1"), bigStorageStartCallback);
+//    @Autowired(required = false)
+//    MiloService miloService;
+//
+//    @Resource(name = "bigStorageStartCallback")
+//    SubscriptionCallback bigStorageStartCallback;
+
+
+//    @Scheduled(fixedDelay = Long.MAX_VALUE)
+//    public void startOpcTask() throws Exception {
+//        //璁惧涓�浜岀殑杩涚墖璇锋眰
+//        miloService.subscriptionFromOpcUa(Arrays.asList("my.device01.x1", "my.device02.x1"), bigStorageStartCallback);
+//    }
+
+//    @Scheduled(fixedDelay = Long.MAX_VALUE)
+//    public void outOpcTask() throws Exception {
+//        //璁惧1鐨勫嚭鐗囪姹�
+//        miloService.subscriptionFromOpcUa(Arrays.asList("my.device03.x1"), bigStorageStartCallback);
+//    }
+
+
+    @Scheduled(fixedDelay = 200)
+    public void inBigStorageTask() {
+        //todo:鑾峰彇杩涚墖浠诲姟琛�
+        List<BigStorageCageInTask> inTaskList = bigStorageBaseInTaskService.queryTaskMessage("big_storage_cage_in_one_task");
+        if (CollectionUtils.isEmpty(inTaskList)) {
+            log.info("褰撳墠澶ц溅鏃犺繘鐗囦换鍔★紝缁撴潫鏈湴瀹氭椂浠诲姟");
+        }
+        List<String> glassIdList = inTaskList.stream().map(BigStorageCageInTask::getGlassId).collect(Collectors.toList());
+        Map<String, List<BigStorageCageInTask>> taskMap = inTaskList.stream().collect(Collectors.groupingBy(BigStorageCageInTask::getGlassId));
+        List<GlassInfo> glassInfoList = glassInfoService.list(new LambdaQueryWrapper<GlassInfo>().in(GlassInfo::getGlassId, glassIdList));
+        //todo:璁$畻鐩爣鏍煎瓙
+        for (GlassInfo info : glassInfoList) {
+            //鑾峰彇鐩爣鏍煎瓙淇℃伅
+            BigStorageDTO bigStorageDTO = bigStorageCageDetailsService.queryTargetSlotByTempering(info);
+//            涓存椂鏇存柊鏍煎瓙鐨勫墿浣欏昂瀵革細闃叉鐩搁偦鐜荤拑杩涘悓涓�鏍煎瓙閫犳垚鍓╀綑灏哄涓嶈冻锛岀幓鐠冭秺鐣岀殑鎯呭喌锛屼换鍔″畬鎴愬悗鍐嶆鏇存柊澶х悊鐗囩琛ㄥ墿浣欏搴︼紙鎸夌収绗煎唴鐜荤拑鏁伴噺鏇存柊澶х悊鐗囩鍓╀綑灏哄锛�
+            bigStorageCageService.update(new LambdaUpdateWrapper<BigStorageCage>()
+                    .set(BigStorageCage::getRemainWidth, bigStorageDTO.getWidth() - Math.max(info.getWidth(), info.getHeight()) - glassGap)
+                    .eq(BigStorageCage::getSlot, bigStorageDTO.getSlot()));
+            BigStorageCageInTask task = taskMap.get(info.getGlassId()).get(0);
+            task.setTargetSlot(bigStorageDTO.getSlot());
+            task.setGlassId(info.getGlassId());
+            task.setTaskRunning(Const.BIG_STORAGE_TASK_RUNNING);
+            bigStorageBaseInTaskService.updateTaskMessage("", task);
+            //todo:瀛樻斁鍘嗗彶浠诲姟
+        }
+
     }
 
 
@@ -108,7 +142,7 @@
                 bigStorageCageDetailsService.updateBySlot(storageCageDTOList, Const.GLASS_STATE_IN);
                 log.info("4銆佸ぇ鐞嗙墖绗艰繘鐗囩姸鎬佸凡瀹屾垚宸插畬鎴愮殑鐜荤拑淇℃伅id:{}", inSuccessGlass);
                 //鏇存柊鐞嗙墖绗肩幓鐠冨昂瀵�
-                updateSlotRemainBySlots(inSuccessGlassSlot);
+                baseService.updateSlotRemainBySlots(inSuccessGlassSlot);
                 log.info("5銆佸ぇ鐞嗙墖绗艰繘鐗囩洰鏍囨牸瀛愬昂瀵告洿鏂板畬鎴�");
             }
 
@@ -153,7 +187,7 @@
                 List<Integer> outSuccessSlotList = outSuccessGlass.stream().map(BigStorageCageOutTask::getStartSlot).collect(Collectors.toList());
                 log.info("4銆佸ぇ鐞嗙墖绗煎嚭鐗囩姸鎬佸凡瀹屾垚宸插畬鎴愮殑鐜荤拑淇℃伅id:{}", outSuccessGlass);
                 //鏇存柊鐞嗙墖绗肩幓鐠冨昂瀵�
-                updateSlotRemainBySlots(outSuccessSlotList);
+                baseService.updateSlotRemainBySlots(outSuccessSlotList);
                 log.info("5銆佸ぇ鐞嗙墖绗艰繘鐗囩洰鏍囨牸瀛愬昂瀵告洿鏂板畬鎴�");
             }
         }
@@ -190,7 +224,7 @@
                 //鏇存柊鐞嗙墖绗肩幓鐠冨昂瀵�
                 List<Integer> slotList = scheduleSuccessGlass.stream().map(BigStorageCageOutTask::getStartSlot).distinct().collect(Collectors.toList());
                 slotList.addAll(scheduleSuccessGlass.stream().map(BigStorageCageOutTask::getEndSlot).distinct().collect(Collectors.toList()));
-                updateSlotRemainBySlots(slotList);
+                baseService.updateSlotRemainBySlots(slotList);
                 log.info("5銆佸ぇ鐞嗙墖绗艰繘鐗囩洰鏍囨牸瀛愬昂瀵告洿鏂板畬鎴�");
             }
         }
@@ -230,7 +264,7 @@
                 slotList.add(bigStorageCageFeedTask.getTargetSlot());
             }
             //鏇存柊鏍煎瓙鍓╀綑瀹藉害
-            updateSlotRemainBySlots(slotList);
+            baseService.updateSlotRemainBySlots(slotList);
             log.info("杩涚墖浠诲姟鎵ц瀹屾垚");
         }
         //鑾峰彇鍑虹墖浠诲姟琛ㄤ腑鐘舵�佷负鐮存崯鐨勬暟鎹�
@@ -258,37 +292,12 @@
                 slotList.add(bigStorageCageOutTask.getStartSlot());
             }
             //鏇存柊鏍煎瓙鍓╀綑瀹藉害
-            updateSlotRemainBySlots(slotList);
+            baseService.updateSlotRemainBySlots(slotList);
             log.info("鍑虹墖浠诲姟鎵ц瀹屾垚");
         }
         Date endDate = new Date();
         log.info("澶х悊鐗囩鐮存崯鐜荤拑娓呴櫎浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime());
         return;
-    }
-
-    public void updateSlotRemainBySlots(List<Integer> slotList) {
-        //鑾峰彇鏍煎瓙鍐呮墍鏈夌殑鐜荤拑淇℃伅
-        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<>();
-        //鏄惁瀛樺湪鏈夋牸瀛愰潪绌虹殑鐜荤拑
-        if (CollectionUtils.isNotEmpty(inSlotGlassList)) {
-            //瀛樺湪  灏嗘牸瀛愬唴鐨勭幓鐠冨垎鍒繘琛屾洿鏂�
-            slotRemainMap = inSlotGlassList.stream()
-                    .collect(Collectors.groupingBy(BigStorageCageDetails::getSlot, Collectors.summingDouble(item -> Math.max(item.getWidth(), item.getHeight()) + glassGap)));
-            slotRemainMap.forEach((e, v) -> {
-                double remainWidth = slotWidth - v >= 0 ? slotWidth - v : 0;
-                bigStorageCageService.update(new LambdaUpdateWrapper<BigStorageCage>().set(BigStorageCage::getRemainWidth, remainWidth)
-                        .eq(BigStorageCage::getSlot, e));
-            });
-        }
-        //杩囨护涓嶅瓨鍦ㄧ幓鐠冪殑鏍煎瓙 灏嗗搴﹂噸缃负鍘熷瀹藉害5000
-        Set<Integer> remainSlotList = slotRemainMap.keySet();
-        slotList.removeAll(remainSlotList);
-        if (CollectionUtils.isNotEmpty(slotList)) {
-            bigStorageCageService.update(new LambdaUpdateWrapper<BigStorageCage>().set(BigStorageCage::getRemainWidth, slotWidth)
-                    .in(BigStorageCage::getSlot, slotList));
-        }
     }
 
 

--
Gitblit v1.8.0