From 0aacd330fca570ab3350aef5bda901f23aee23b3 Mon Sep 17 00:00:00 2001
From: wangfei <3597712270@qq.com>
Date: 星期三, 20 十一月 2024 13:51:00 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/opccallback/CacheGlassStartCallback.java |   78 +++++++++++++++++++++++----------------
 1 files changed, 46 insertions(+), 32 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 68e550d..8941f5c 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
@@ -63,30 +63,39 @@
     @Value("${mes.cellLength}")
     private int cellLength;
 
+    private Date startDate;
+
     @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;
+        int device = tableName.equals("edg_storage_device_one_task") ? 1 : 2;
         EdgStorageDeviceTask task = edgStorageDeviceTaskService.queryTaskMessage(tableName);
         try {
             if (task == null) {
                 log.info("浠诲姟琛ㄥ熀纭�鏁版嵁褰曞叆澶辫触锛岃妫�鏌ユ暟鎹槸鍚﹀綍鍏ユ垚鍔�");
                 return;
             }
-            int request = task.getTaskState();
+            if (task.getTaskState() == 2) {
+                //闃叉鍑虹墖浠诲姟涓旂鍓嶆湁鐜荤拑鐨勬儏鍐碉紝灏嗚繘鐗噄d缃┖锛屽嵆鍑虹墖浠呰�冭檻绗煎唴鐨勭幓鐠�
+                task.setGlassIdIn("");
+            }
+            int request = Integer.parseInt("" + value);
             log.info("寮�濮嬫墽琛屼换鍔★紝浠诲姟璇蜂俊鎭负{}", task);
             if (request == 0) {
                 log.info("鏈敹鍒颁换鍔¤姹傦紝缁撴潫鏈浠诲姟");
             } else if (request == 1) {
                 //杩涚墖浠诲姟
-                intoTask(task, tableName);
+                log.info("杩涚墖浠诲姟锛氳繘鐗囩幓鐠僫d涓猴細{}", task.getGlassIdIn());
+                intoTask(task, tableName, device);
             } else if (request == 2) {
                 //鍑虹墖浠诲姟
-                outTask(task, tableName);
+                outTask(task, tableName, device);
             } else if (request == 3) {
                 //鐩撮�氫换鍔�
-                if (!outTask(task, tableName)) {
-                    intoTask(task, tableName);
+                if (!outTask(task, tableName, device)) {
+                    intoTask(task, tableName, device);
                 }
             } else if (request == 4) {
                 log.info("灏嗗惎鍔ㄥ瓙鏀逛负0");
@@ -103,7 +112,7 @@
         }
     }
 
-    private boolean intoTask(EdgStorageDeviceTask task, String tableName) {
+    private boolean intoTask(EdgStorageDeviceTask task, String tableName, int deviceId) {
         //鑾峰彇鐜荤拑鐨勫熀鏈俊鎭�
         GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, task.getGlassIdIn()));
         if (null == glassInfo) {
@@ -111,11 +120,12 @@
             return Boolean.FALSE;
         }
         //鑾峰彇褰撳墠杩涚墖鐜荤拑id鍜岃繘鐗囨牸瀛�  鐩稿悓灏哄鍙互鏀句笅鐨勬牸瀛�
-        EdgStorageCage edgStorageCage = edgStorageCageService.getEdgStorageCageBySize(1, glassInfo.getWidth(), glassInfo.getHeight(), task.getCurrentCell());
+        EdgStorageCage edgStorageCage = edgStorageCageService.getEdgStorageCageBySize(deviceId, glassInfo.getWidth(), glassInfo.getHeight(), task.getCurrentCell());
         if (edgStorageCage == null) {
             log.info("鐩稿悓灏哄鍙互鏀句笅鐨勬牸瀛愭湭鎵惧埌锛屾牸瀛恑d:{}", task.getCurrentCell());
 //            SELECT * from edg_storage_cage where device_id = 1 and remain_width > 1000 order by abs(slot - 10)
-            List<EdgStorageCage> storageCageList = edgStorageCageService.list(new LambdaQueryWrapper<EdgStorageCage>().eq(EdgStorageCage::getDeviceId, 1)
+            List<EdgStorageCage> storageCageList = edgStorageCageService.list(new LambdaQueryWrapper<EdgStorageCage>()
+                    .eq(EdgStorageCage::getDeviceId, deviceId)
                     .eq(EdgStorageCage::getEnableState, Const.SLOT_ON)
                     .ge(EdgStorageCage::getRemainWidth, Math.max(glassInfo.getWidth(), glassInfo.getHeight())).last("order by abs(slot - " + task.getCurrentCell() + ")"));
 //            //鐩撮�氫换鍔�
@@ -144,7 +154,7 @@
         return Boolean.TRUE;
     }
 
-    private boolean outTask(EdgStorageDeviceTask task, String tableName) {
+    private boolean outTask(EdgStorageDeviceTask task, String tableName, int deviceId) {
         EdgStorageCageDetails edgStorageCageDetails = null;
         //绗煎唴鏄増鍥剧浉宸槸鍚﹁秴杩囬槇鍊�
         boolean flag = queryMaxMinDiff(threshold);
@@ -152,6 +162,7 @@
             EdgStorageCageDetails minEdgDetails = edgStorageCageDetailsService.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>()
                     .inSql(EdgStorageCageDetails::getSlot, "select slot from edg_storage_cage where enable_state = " + Const.SLOT_ON)
                     .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN)
+                    .eq(EdgStorageCageDetails::getDeviceId, deviceId)
                     .orderByAsc(EdgStorageCageDetails::getTemperingLayoutId)
                     .orderBy(Boolean.TRUE, Boolean.TRUE, EdgStorageCageDetails::getTemperingFeedSequence)
                     .last("limit 1"));
@@ -159,6 +170,7 @@
             edgStorageCageDetails = edgStorageCageDetailsService.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>()
                     .eq(EdgStorageCageDetails::getWidth, minEdgDetails.getWidth())
                     .eq(EdgStorageCageDetails::getHeight, minEdgDetails.getHeight())
+                    .eq(EdgStorageCageDetails::getDeviceId, deviceId)
                     .inSql(EdgStorageCageDetails::getId, "select min(id) from edg_storage_cage_details where state = 100 group by slot ")
                     .last("order by abs(slot - " + task.getCurrentCell() + ")  asc limit 1")
             );
@@ -176,6 +188,7 @@
             if (null == edgStorageCageDetails) {
                 edgStorageCageDetails = edgStorageCageDetailsService.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>()
                         .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN)
+                        .eq(EdgStorageCageDetails::getDeviceId, deviceId)
                         .eq(EdgStorageCageDetails::getSlot, minEdgDetails.getSlot())
                         .orderByAsc(EdgStorageCageDetails::getId)
                         .last("limit 1")
@@ -192,7 +205,7 @@
             if (null != edgeData) {
                 GlassInfo glassOutInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, edgeData.getGlassIdOut()));
                 //绗煎唴鐨勭幓鐠冪殑灏哄鏄惁鍜屼笂涓�娆′换鍔′竴鑷�
-                edgStorageCageDetails = edgStorageCageDetailsService.queryEdgStorageDetailsBySize(glassOutInfo.getWidth(), glassOutInfo.getHeight());
+                edgStorageCageDetails = edgStorageCageDetailsService.queryEdgStorageDetailsBySize(deviceId, task.getCurrentCell(), glassOutInfo.getWidth(), glassOutInfo.getHeight());
                 if (null == edgStorageCageDetails && StringUtils.isNotBlank(task.getGlassIdIn())) {
                     GlassInfo glassInInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>()
                             .eq(GlassInfo::getGlassId, task.getGlassIdIn())
@@ -206,7 +219,7 @@
             }
         }
         if (null == edgStorageCageDetails) {
-            edgStorageCageDetails = edgStorageCageDetailsService.queryEdgStorageDetailsBySize(0, 0);
+            edgStorageCageDetails = edgStorageCageDetailsService.queryEdgStorageDetailsBySize(deviceId, task.getCurrentCell(), 0, 0);
         }
         if (edgStorageCageDetails == null && StringUtils.isNotBlank(task.getGlassIdIn())) {
             //鍜屼笂娆′换鍔′笉瀛樺湪鐩稿悓灏哄
@@ -222,21 +235,28 @@
         int taskType = Const.GLASS_CACHE_TYPE_OUT;
         String glassId = edgStorageCageDetails.getGlassId();
         if (glassId.equals(task.getGlassIdIn())) {
+            if (3 != task.getTaskState()) {
+                return Boolean.FALSE;
+            }
             log.info("5銆佺洿閫氫换鍔�,灏嗙幓鐠冧俊鎭彃鍏ュ崸寮忕悊鐗囩,褰撳墠鐜荤拑淇℃伅:{}", edgStorageCageDetails);
             //鐜荤拑淇℃伅鏇挎崲
             String glassIdChange = queryAndChangeGlass(glassId);
+            //澶勭悊鍦ㄥ崸鐞嗗唴鐨勭幓鐠冧俊鎭細绗煎唴鐨勬暟鎹鐞�
+            queryEdgAndChangeGlass(edgStorageCageDetails.getGlassId(), glassIdChange);
             if (StringUtils.isNotBlank(glassIdChange)) {
                 edgStorageCageDetails = new EdgStorageCageDetails();
                 GlassInfo one = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId));
                 BeanUtils.copyProperties(one, edgStorageCageDetails);
             }
-            EdgStorageCage storageCage = edgStorageCageService.getOne(new LambdaQueryWrapper<EdgStorageCage>().eq(EdgStorageCage::getDeviceId, 1)
+            EdgStorageCage storageCage = edgStorageCageService.getOne(new LambdaQueryWrapper<EdgStorageCage>()
+                    .eq(EdgStorageCage::getDeviceId, deviceId)
                     .eq(EdgStorageCage::getEnableState, Const.SLOT_ON)
-                    .ge(EdgStorageCage::getRemainWidth, cellLength).last("order by abs(slot - " + task.getCurrentCell() + ")")
-                    .last("limit 1"));
+                    .ge(EdgStorageCage::getRemainWidth, cellLength)
+                    .last("order by abs(slot - " + task.getCurrentCell() + ") limit 1"));
             Assert.isTrue(null != storageCage, "鏍煎瓙宸叉弧,鏃犳硶鎵ц鐩撮�氫换鍔�");
             log.info("3銆佹煡璇㈠崸寮忕悊鐗囩閲岄潰鐨勭┖鏍�:{}", storageCage);
             edgStorageCageDetails.setSlot(storageCage.getSlot());
+            edgStorageCageDetails.setDeviceId(storageCage.getDeviceId());
             edgStorageCageDetails.setState(Const.GLASS_STATE_OUT);
             edgStorageCageDetailsService.save(edgStorageCageDetails);
             taskType = Const.GLASS_CACHE_TYPE_THROUGH;
@@ -245,8 +265,10 @@
             if (!edgStorageCageDetails.getSlot().equals(task.getCurrentCell())) {
                 EdgStorageCageDetails currentGlass = edgStorageCageDetailsService.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>()
                         .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN)
+                        .eq(EdgStorageCageDetails::getDeviceId, deviceId)
                         .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;
@@ -261,28 +283,24 @@
             edgStorageCageDetailsService.update(wrapper);
             log.info("5銆佹洿鏂板嚭鐗囩幓鐠冪殑鐘舵�佷负{}", Const.GLASS_STATE_OUT);
         }
-
-        //鐜荤拑淇℃伅鏇挎崲
-//        String glassIdChange = queryAndChangeGlass(edgStorageCageDetails.getGlassId());
-        //澶勭悊鍦ㄥ崸鐞嗗唴鐨勭幓鐠冧俊鎭細绗煎唴鐨勬暟鎹鐞�
-//        queryEdgAndChangeGlass(edgStorageCageDetails.getGlassId(), glassIdChange);
         //鐢熸垚鍑虹墖浠诲姟
         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);
+
         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.setCreateTime(new Date());
+        edgInfo.setWidth((int) edgStorageCageDetails.getWidth());
+        edgInfo.setHeight((int) edgStorageCageDetails.getWidth());
+        edgInfo.setThickness((int) edgStorageCageDetails.getWidth());
         edgInfo.setState(Const.GLASS_STATE_NEW);
         edgGlassTaskQueueInfoService.save(edgInfo);
         return Boolean.TRUE;
@@ -297,20 +315,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;
     }
 
@@ -426,7 +440,7 @@
         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;
@@ -435,7 +449,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