From 19f92e5de6ac9441838d1f2ec04d5ef150fe55d1 Mon Sep 17 00:00:00 2001
From: ZengTao <2773468879@qq.com>
Date: 星期五, 10 十月 2025 08:17:37 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassNewTask.java |   65 ++++++++++++++++----------------
 1 files changed, 33 insertions(+), 32 deletions(-)

diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassNewTask.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassNewTask.java
index 4048bb8..a49c7f9 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassNewTask.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassNewTask.java
@@ -117,13 +117,14 @@
     public void startOneOpcTask() throws Exception {
         S7DataWL s7DataWLTwo = s7SerializerWLTwo.read(S7DataWL.class);
         S7DataWL s7DataWLOne = s7SerializerWLOne.read(S7DataWL.class);
+        S7DataWLExtra s7DataWLExtraTwo = s7SerializerWLTwo.read(S7DataWLExtra.class);
         log.info("涓�绾垮崸鐞�: {}", s7DataWLOne);
         //鑾峰彇绗簩鏉$嚎璺殑鍗у紡鐞嗙墖绗肩姸鎬�
         Boolean twoInkageEntity = s7DataWLTwo.getDeviceState();
         //榛樿鍙窇涓�鍙板崸寮忕悊鐗�,涓ゆ潯绾胯矾閮藉彲浠ヨ蛋
         int cellFlag = 1;
         //濡傛灉涓ゆ潯绾块兘鍚姩鍒欏彧鑳借窇涓�鏉$嚎
-        if (twoInkageEntity != null && !twoInkageEntity) {
+        if (!twoInkageEntity && !Const.OUT_DISABLE.equals(s7DataWLExtraTwo.getD06SlotState())) {
             cellFlag = 2;
         }
         startOneOpcTaskChild(s7DataWLOne, 1, cellFlag);
@@ -133,13 +134,15 @@
     public void startTwoOpcTask() throws Exception {
         S7DataWL s7DataWLOne = s7SerializerWLOne.read(S7DataWL.class);
         S7DataWL s7DataWLTwo = s7SerializerWLTwo.read(S7DataWL.class);
+        S7DataWLExtra s7DataWLExtraTwo = s7SerializerWLTwo.read(S7DataWLExtra.class);
         log.info("浜岀嚎鍗х悊: {}", s7DataWLTwo);
         Boolean oneInkageEntity = s7DataWLOne.getDeviceState();
         int cellFlag = 1;
-        if (oneInkageEntity != null && !oneInkageEntity) {
+        if (!oneInkageEntity && !Const.OUT_DISABLE.equals(s7DataWLExtraTwo.getD06SlotState())) {
             cellFlag = 2;
         }
         startOneOpcTaskChild(s7DataWLTwo, 2, cellFlag);
+
     }
 
     private void startOneOpcTaskChild(S7DataWL task, int device, int cellFlag) throws Exception {
@@ -173,15 +176,15 @@
             //杩涚墖浠诲姟
             log.info("璁惧锛歿}鐘舵�侊細{}", device, request);
             log.info("杩涚墖浠诲姟锛氳繘鐗囩幓鐠僫d涓猴細{}", task.getGlassIdIn());
-            intoTask(task, "", device);
+            intoTask(task, device);
         } else if (request == 2 && taskRunning == 0) {
             //鍑虹墖浠诲姟
-            outTask(task, "", device, cellFlag);
+            outTask(task, device, cellFlag);
         } else if (request == 3 && taskRunning == 0) {
             //鐩撮�氫换鍔�
             log.info("璁惧锛歿}鐘舵�侊細{}", device, request);
-            if (!outTask(task, "", device, cellFlag)) {
-                intoTask(task, "", device);
+            if (!outTask(task, device, cellFlag)) {
+                intoTask(task, device);
             }
         } else if (request == 4) {
             log.info("璁惧锛歿}鐘舵�侊細{}", device, request);
@@ -218,7 +221,7 @@
     }
 
     @Scheduled(fixedDelay = 1000)
-    public void edgTwoOpcTask() throws Exception {
+    public void edgTwoOpcTask() {
         S7DataWL s7DataWLTwo = s7SerializerWLTwo.read(S7DataWL.class);
         String glassId = s7DataWLTwo.getGlassId();
         log.info("2鍙风嚎鐜荤拑id{},鍘嗗彶id{}", glassId, glassIdTwo);
@@ -229,7 +232,7 @@
         edgTaskChild(glassId, 2);
     }
 
-    private void edgTaskChild(String glassId, int cell) throws Exception {
+    private void edgTaskChild(String glassId, int cell) {
         ratio = sysConfigService.queryConfigValue(ConstSysConfig.CACHE_RATIO);
         GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId).last("limit 1"));
         if (glassInfo == null) {
@@ -270,9 +273,9 @@
         }
     }
 
-    private boolean intoTask(S7DataWL task, String tableName, int deviceId) {
+    private boolean intoTask(S7DataWL task, int deviceId) {
         Date startDate = new Date();
-        log.info("寮�濮嬫墽琛岃繘鐗囦换鍔★紝浠诲姟淇℃伅涓猴細{},琛ㄥ悕涓猴細{},璁惧id:{},寮�濮嬫椂闂达細{}", task, tableName, deviceId, startDate);
+        log.info("寮�濮嬫墽琛岃繘鐗囦换鍔★紝浠诲姟淇℃伅涓猴細{},璁惧id:{},寮�濮嬫椂闂达細{}", task, deviceId, startDate);
         //鑾峰彇鐜荤拑鐨勫熀鏈俊鎭�
         GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, task.getGlassIdIn()));
         if (null == glassInfo) {
@@ -338,7 +341,7 @@
         return Boolean.TRUE;
     }
 
-    private boolean outTask(S7DataWL task, String tableName, int deviceId, int cellFlag) throws Exception {
+    private boolean outTask(S7DataWL task, int deviceId, int cellFlag) {
         Date startDate = new Date();
         //鑾峰彇瀵瑰簲鐨勮澶囩姸鎬佷俊鎭�
         S7DataWL s7DataWLOne = s7SerializerWLOne.read(S7DataWL.class);
@@ -350,7 +353,7 @@
         //鐘舵�佹湁3涓儏鍐碉細0绌洪棽 1蹇欑 2绂佺敤
         //涓ゆ潯绾块兘涓虹鐢ㄥ垯涓嶅嚭鐜荤拑
         if (Const.OUT_DISABLE.equals(oneOutState) && Const.OUT_DISABLE.equals(twoOutState)) {
-            log.info("A09銆丄10涓簕},{}闈炶嚜鍔ㄧ姸鎬侊紝鏃犳硶鍑虹墖", oneOutState, oneOutState);
+            log.info("璁惧{}:A09銆丄10涓簕},{}闈炶嚜鍔ㄧ姸鎬侊紝鏃犳硶鍑虹墖", deviceId, oneOutState, oneOutState);
             return Boolean.FALSE;
         }
         //鑾峰彇d06鐗囧彴鐘舵��
@@ -359,15 +362,14 @@
         // 3:浜屽彿绾夸竴瀵瑰鐨勬儏鍐典笅锛岃幏鍙栦竴鍙风嚎纾ㄨ竟鍓嶇墖鍙癈08鐨勭姸鎬侊紝C08闈炵鐢ㄦ椂锛屼竴鍙风嚎灏嗘寜鐓06鐗囧彴鐘舵�佽寰楀嚭鐗�
         if (cellFlag == 2) {
             if (deviceId == 1) {
-
                 twoOutState = twoOutState & d06OutState;
             } else {
                 oneOutState = oneOutState & d06OutState;
             }
         }
 
-        log.info("寮�濮嬫墽琛屽嚭鐗�/鐩撮�氫换鍔★紝浠诲姟淇℃伅涓猴細{},琛ㄥ悕涓猴細{},璁惧id:{},寮�濮嬫椂闂达細{},涓�鍙风嚎鐘舵�侊細{}锛屼簩鍙风嚎鐘舵�侊細{}",
-                task, tableName, deviceId, startDate, oneOutState, twoOutState);
+        log.info("寮�濮嬫墽琛屽嚭鐗�/鐩撮�氫换鍔★紝浠诲姟淇℃伅涓猴細{},璁惧id:{},寮�濮嬫椂闂达細{},涓�鍙风嚎鐘舵�侊細{}锛屼簩鍙风嚎鐘舵�侊細{}",
+                task, deviceId, startDate, oneOutState, twoOutState);
         //鑾峰彇褰撳墠闇�瑕佽蛋閭f潯绾�
         int cell = 0;
         if (cellFlag == 1) {
@@ -381,26 +383,24 @@
                 cell = Const.TWO_OUT_TARGET_POSITION;
             }
         }
-        if (Const.OUT_FREE.equals(oneOutState) && Const.OUT_FREE.equals(twoOutState)) {
-            if (cellFlag == 2) {
-                if (!outChildTask(task, tableName, deviceId, cell, startDate)) {
-                    cell = cell == Const.ONE_OUT_TARGET_POSITION ? Const.TWO_OUT_TARGET_POSITION : Const.ONE_OUT_TARGET_POSITION;
-                    return outChildTask(task, tableName, deviceId, cell, startDate);
-                }
-            } else {
-                return outChildTask(task, tableName, deviceId, cell, startDate);
+        log.info("{}绾胯矾璁$畻瀹屾垚锛歿}", deviceId, cell);
+        if (cellFlag == 2) {
+            if (!outChildTask(task, deviceId, cell, startDate)) {
+                cell = cell == Const.ONE_OUT_TARGET_POSITION ? Const.TWO_OUT_TARGET_POSITION : Const.ONE_OUT_TARGET_POSITION;
+                return outChildTask(task, deviceId, cell, startDate);
             }
         } else {
-            return outChildTask(task, tableName, deviceId, cell, startDate);
+            return outChildTask(task, deviceId, cell, startDate);
         }
         return Boolean.TRUE;
     }
 
-    private boolean outChildTask(S7DataWL task, String tableName, int deviceId, int cell, Date startDate) {
+    private boolean outChildTask(S7DataWL task, int deviceId, int cell, Date startDate) {
         EdgStorageCageDetails edgStorageCageDetails = null;
 
         //绗煎唴鏄増鍥剧浉宸槸鍚﹁秴杩囬槇鍊�
         boolean flag = queryMaxMinDiffByDevice(threshold, deviceId);
+        log.info("{}闃堝�艰绠楀畬鎴愶細{}", deviceId, flag);
         if (flag) {
             //鍏堟壘鏈�灏忕増鍥剧増搴忕殑鐜荤拑灏忕墖
             EdgStorageCageDetails minEdgDetails = edgStorageCageDetailsService.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>()
@@ -424,15 +424,18 @@
                 );
             }
         }
+        log.info("{}鎸夌収闃堝�兼煡鎵剧粨鏋滐細{}", deviceId, edgStorageCageDetails);
         if (null == edgStorageCageDetails) {
 //        鑾峰彇鍘嗗彶琛ㄤ腑涓婃浠诲姟鏈�鍚庝竴鐗囧昂瀵�
             EdgStorageDeviceTaskHistory edgeData = edgStorageDeviceTaskHistoryService.getOne(new LambdaQueryWrapper<EdgStorageDeviceTaskHistory>()
                     .eq(EdgStorageDeviceTaskHistory::getDeviceId, cell)
                     .in(EdgStorageDeviceTaskHistory::getTaskType, Const.GLASS_CACHE_TYPE_OUT, Const.GLASS_CACHE_TYPE_THROUGH)
                     .orderByDesc(EdgStorageDeviceTaskHistory::getId).last("limit 1"));
+            log.info("{}鑾峰彇涓婃浠诲姟淇℃伅锛歿}", deviceId, edgeData);
             if (null != edgeData) {
                 GlassInfo glassOutInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, edgeData.getGlassIdOut()));
                 //绗煎唴鐨勭幓鐠冪殑灏哄鏄惁鍜屼笂涓�娆′换鍔′竴鑷�
+
                 edgStorageCageDetails = edgStorageCageDetailsService.queryEdgStorageDetailsBySize(deviceId, task.getCurrentCell(), glassOutInfo.getWidth(), glassOutInfo.getHeight(), cell, maxThickness);
                 if (null == edgStorageCageDetails && StringUtils.isNotBlank(task.getGlassIdIn())) {
                     GlassInfo glassInInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>()
@@ -448,11 +451,13 @@
                 }
             }
         }
+        log.info("{}鑾峰彇鍘嗗彶琛ㄤ腑涓婃浠诲姟鏈�鍚庝竴鐗囧昂瀵革細{}", deviceId, edgStorageCageDetails);
         //鍓嶉潰宸茬粡灏哄闂澶勭悊瀹屾瘯锛屽紑濮嬭绠楁棤鐩稿悓灏哄鐨勬柊鐜荤拑灏忕墖
         if (null == edgStorageCageDetails) {
             edgStorageCageDetails = edgStorageCageDetailsService.queryEdgStorageDetailsByLimitSize(deviceId, Integer.parseInt(task.getCurrentCell().toString()), 0, 0,
                     cell, minOneFirstLength, minOneSecondLength, maxTwoFirstLength, maxTwoSecondLength, maxThickness);
         }
+        log.info("{}寮�濮嬭绠楁棤鐩稿悓灏哄鐨勬柊鐜荤拑灏忕墖锛歿}", deviceId, edgStorageCageDetails);
         if (edgStorageCageDetails == null && StringUtils.isNotBlank(task.getGlassIdIn())) {
             //鍜屼笂娆′换鍔′笉瀛樺湪鐩稿悓灏哄
             GlassInfo glassInInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, task.getGlassIdIn()));
@@ -469,6 +474,7 @@
                 log.info("鐩撮�氫换鍔$洰鏍囩嚎璺负{},杩涚墖鐜荤拑灏哄涓簕}*{},涓嶇鍚堝嚭鐗囨潯浠�", cell, maxLength, minLength);
             }
         }
+        log.info("{}鐩撮�氫换鍔★細{}", deviceId, edgStorageCageDetails);
         if (edgStorageCageDetails == null) {
             //鍜屼笂娆′换鍔′笉瀛樺湪鐩稿悓灏哄
             log.info("绗煎唴娌℃湁鐜荤拑浜�");
@@ -480,7 +486,7 @@
             if (3 != task.getTaskState()) {
                 return Boolean.FALSE;
             }
-            log.info("5銆佺洿閫氫换鍔�,灏嗙幓鐠冧俊鎭彃鍏ュ崸寮忕悊鐗囩,褰撳墠鐜荤拑淇℃伅:{}", edgStorageCageDetails);
+            log.info("5銆亄}鐩撮�氫换鍔�,灏嗙幓鐠冧俊鎭彃鍏ュ崸寮忕悊鐗囩,褰撳墠鐜荤拑淇℃伅:{}", edgStorageCageDetails);
             if (glassInIdOne.equals(task.getGlassIdIn()) || glassInIdTwo.equals(task.getGlassIdIn())) {
                 log.info("鐜荤拑id涓庝笂娆$浉鍚岋紝绂佹杩涚墖");
                 return Boolean.FALSE;
@@ -494,11 +500,7 @@
                 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, deviceId)
-                    .eq(EdgStorageCage::getEnableState, Const.SLOT_ON)
-                    .ge(EdgStorageCage::getRemainWidth, cellLength)
-                    .last("order by abs(slot - " + task.getCurrentCell() + ") limit 1"));
+            EdgStorageCage storageCage = edgStorageCageService.selectNearestEmpty(Integer.parseInt(task.getCurrentCell().toString()), deviceId, Boolean.TRUE);
             Assert.isTrue(null != storageCage, "鏍煎瓙宸叉弧,鏃犳硶鎵ц鐩撮�氫换鍔�");
             log.info("3銆佹煡璇㈠崸寮忕悊鐗囩閲岄潰鐨勭┖鏍�:{}", storageCage);
             edgStorageCageDetails.setSlot(storageCage.getSlot());
@@ -534,7 +536,6 @@
         task.setStartCell(edgStorageCageDetails.getSlot());
         task.setTaskRunning(taskType);
         task.setEndCell(cell);
-//        edgStorageDeviceTaskService.updateTaskMessage(tableName, task);
         if (deviceId == 1) {
             s7SerializerWLOne.write(
                     S7DataWL.builder()

--
Gitblit v1.8.0