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/CacheGlassModule/src/main/java/com/mes/job/opccallback/CacheGlassStartCallback.java |   40 ++++++++++++++++++++++++++--------------
 1 files changed, 26 insertions(+), 14 deletions(-)

diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/opccallback/CacheGlassStartCallback.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/opccallback/CacheGlassStartCallback.java
index 2d81cd3..deaedf2 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/opccallback/CacheGlassStartCallback.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/opccallback/CacheGlassStartCallback.java
@@ -7,6 +7,8 @@
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.kangaroohy.milo.runner.subscription.SubscriptionCallback;
 import com.mes.common.config.Const;
+import com.mes.edgglasstaskqueueinfo.entity.EdgGlassTaskQueueInfo;
+import com.mes.edgglasstaskqueueinfo.service.EdgGlassTaskQueueInfoService;
 import com.mes.edgstoragecage.entity.EdgStorageCage;
 import com.mes.edgstoragecage.entity.EdgStorageCageDetails;
 import com.mes.edgstoragecage.service.EdgStorageCageDetailsService;
@@ -24,6 +26,7 @@
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -50,6 +53,9 @@
     @Resource
     EdgStorageDeviceTaskHistoryService edgStorageDeviceTaskHistoryService;
 
+    @Resource
+    EdgGlassTaskQueueInfoService edgGlassTaskQueueInfoService;
+
     @Value("${mes.glassGap}")
     private int glassGap;
     @Value("${mes.threshold}")
@@ -59,6 +65,7 @@
 
     @Override
     public void onSubscribe(String identifier, Object value) {
+        log.info("褰撳墠姝e湪鎵ц鐨勪换鍔′负{}", value);
         String tableName = identifier.contains("edg_storage_device_one_task") ? EDG_STORAGE_DEVICE_ONE_TASK : EDG_STORAGE_DEVICE_TWO_TASK;
         EdgStorageDeviceTask task = edgStorageDeviceTaskService.queryTaskMessage(tableName);
         try {
@@ -66,12 +73,13 @@
                 log.info("浠诲姟琛ㄥ熀纭�鏁版嵁褰曞叆澶辫触锛岃妫�鏌ユ暟鎹槸鍚﹀綍鍏ユ垚鍔�");
                 return;
             }
-            int request = task.getTaskState();
+            int request = Integer.parseInt("" + value);
             log.info("寮�濮嬫墽琛屼换鍔★紝浠诲姟璇蜂俊鎭负{}", task);
             if (request == 0) {
                 log.info("鏈敹鍒颁换鍔¤姹傦紝缁撴潫鏈浠诲姟");
             } else if (request == 1) {
                 //杩涚墖浠诲姟
+                log.info("杩涚墖浠诲姟锛氳繘鐗囩幓鐠僫d涓猴細{}", task.getGlassIdIn());
                 intoTask(task, tableName);
             } else if (request == 2) {
                 //鍑虹墖浠诲姟
@@ -83,7 +91,7 @@
                 }
             } else if (request == 4) {
                 log.info("灏嗗惎鍔ㄥ瓙鏀逛负0");
-                task.setTaskRunning(Const.GLASS_CACHE_TYPE_EMPTY);
+                task.setTaskRunning(Const.GLASS_CACHE_TYPE_RUNNING);
                 edgStorageDeviceTaskService.updateTaskMessage(tableName, task);
             } else {
                 finishTask(task, tableName);
@@ -240,6 +248,7 @@
                         .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN)
                         .eq(EdgStorageCageDetails::getSlot, task.getCurrentCell()).eq(EdgStorageCageDetails::getWidth, edgStorageCageDetails.getWidth())
                         .eq(EdgStorageCageDetails::getHeight, edgStorageCageDetails.getHeight()).eq(EdgStorageCageDetails::getThickness, edgStorageCageDetails.getThickness())
+                        .orderByAsc(EdgStorageCageDetails::getId).last("limit 1")
                 );
                 if (null != currentGlass) {
                     edgStorageCageDetails = currentGlass;
@@ -263,20 +272,26 @@
         task.setGlassIdOut(edgStorageCageDetails.getGlassId());
         task.setStartCell(edgStorageCageDetails.getSlot());
         task.setTaskRunning(taskType);
-        task.setWidth((int) edgStorageCageDetails.getWidth() * 10);
-        task.setHeight((int) edgStorageCageDetails.getHeight() * 10);
-        task.setThickness((int) edgStorageCageDetails.getThickness() * 10);
-        task.setFilmRemove(0);
+//        task.setWidth((int) edgStorageCageDetails.getWidth() * 10);
+//        task.setHeight((int) edgStorageCageDetails.getHeight() * 10);
+//        task.setThickness((int) edgStorageCageDetails.getThickness() * 10);
+//        task.setFilmRemove(0);
         edgStorageDeviceTaskService.updateTaskMessage(tableName, task);
         saveHistoryTask(task);
         //鏇存柊璇︽儏琛ㄤ换鍔″嚭鐗囦腑
         edgStorageCageDetailsService.update(new LambdaUpdateWrapper<EdgStorageCageDetails>()
                 .set(EdgStorageCageDetails::getState, Const.GLASS_STATE_OUT)
                 .eq(EdgStorageCageDetails::getGlassId, edgStorageCageDetails.getGlassId()));
+        //todo:纾ㄨ竟瀵瑰垪琛ㄦ柊澧炰竴鏉℃暟鎹�
+        EdgGlassTaskQueueInfo edgInfo = new EdgGlassTaskQueueInfo();
+        BeanUtils.copyProperties(task, edgInfo);
+        edgInfo.setState(Const.GLASS_STATE_NEW);
+        edgGlassTaskQueueInfoService.save(edgInfo);
         return Boolean.TRUE;
     }
 
     private boolean finishTask(EdgStorageDeviceTask task, String tableName) {
+        log.info("褰撳墠浠诲姟淇℃伅涓猴細{}", task);
         if (task.getTaskState() <= 4) {
             log.info("鏈夋鍦ㄦ墽琛岀殑浠诲姟锛岀粨鏉�");
             return Boolean.FALSE;
@@ -284,20 +299,16 @@
         Integer cell = task.getStartCell();
         Integer state = task.getTaskState();
         task.setTaskRunning(Const.GLASS_CACHE_TYPE_EMPTY);
-        task.setTaskState(Const.GLASS_CACHE_TYPE_EMPTY);
         task.setGlassIdOut("");
         task.setStartCell(0);
-        task.setWidth(0);
-        task.setHeight(0);
-        task.setThickness(0);
-        task.setFilmRemove(0);
         edgStorageDeviceTaskService.updateTaskMessage(tableName, task);
         edgStorageDeviceTaskHistoryService.update(new LambdaUpdateWrapper<EdgStorageDeviceTaskHistory>()
                 .eq(EdgStorageDeviceTaskHistory::getTaskState, Const.RAW_GLASS_TASK_NEW)
                 .set(EdgStorageDeviceTaskHistory::getTaskState,
                         Const.GLASS_CACHE_TYPE_FINISH.equals(state) ? Const.RAW_GLASS_TASK_SUCCESS : Const.RAW_GLASS_TASK_FAILURE)
         );
-        updateCellRemainWidth(cell);
+        int device = tableName.equals("edg_storage_device_one_task") ? 1 : 2;
+        updateCellRemainWidth(cell, device);
         return Boolean.TRUE;
     }
 
@@ -407,12 +418,13 @@
         EdgStorageDeviceTaskHistory taskHistory = new EdgStorageDeviceTaskHistory();
         BeanUtils.copyProperties(task, taskHistory);
         taskHistory.setTaskType(task.getTaskRunning());
+        taskHistory.setCreateTime(new Date());
         taskHistory.setTaskState(Const.RAW_GLASS_TASK_NEW);
         edgStorageDeviceTaskHistoryService.save(taskHistory);
         return Boolean.TRUE;
     }
 
-    private boolean updateCellRemainWidth(int slot) {
+    private boolean updateCellRemainWidth(int slot, int device) {
         List<EdgStorageCageDetails> list = edgStorageCageDetailsService.list(new LambdaQueryWrapper<EdgStorageCageDetails>().eq(EdgStorageCageDetails::getSlot, slot)
                 .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN));
         int remainWidth = cellLength;
@@ -421,7 +433,7 @@
             remainWidth = cellLength - widthTotal >= 0 ? cellLength - widthTotal : 0;
         }
         edgStorageCageService.update(new LambdaUpdateWrapper<EdgStorageCage>().
-                set(EdgStorageCage::getRemainWidth, remainWidth).eq(EdgStorageCage::getSlot, slot));
+                set(EdgStorageCage::getRemainWidth, remainWidth).eq(EdgStorageCage::getSlot, slot).eq(EdgStorageCage::getDeviceId, device));
         return Boolean.TRUE;
     }
 }

--
Gitblit v1.8.0