From 3f94fedcc24f3dd289061e3d32959c5cab00f5ec Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期五, 14 六月 2024 15:03:39 +0800
Subject: [PATCH] 大理片笼出逻辑功能实现,已完成版图到齐逻辑

---
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml                           |   39 ++++++++++++++++---
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java          |    2 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java |    4 +-
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java                                   |   32 +++++++++++++++-
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/dto/TemperingLayoutDTO.java                 |    5 ++
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java            |    9 +++-
 6 files changed, 77 insertions(+), 14 deletions(-)

diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/dto/TemperingLayoutDTO.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/dto/TemperingLayoutDTO.java
index 7e11c34..279c335 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/dto/TemperingLayoutDTO.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/dto/TemperingLayoutDTO.java
@@ -12,6 +12,11 @@
     /**
      * 閽㈠寲鐗堝浘id
      */
+    private String engineerId;
+
+    /**
+     * 閽㈠寲鐗堝浘id
+     */
     private Integer temperingLayoutId;
     /**
      * 褰撳墠鐗堝浘鏁伴噺
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java
index 93a5953..1a59438 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java
@@ -4,8 +4,6 @@
 import com.mes.bigstorage.entity.BigStorageCageDetails;
 import com.mes.bigstorage.entity.dto.TemperingLayoutDTO;
 
-import java.util.List;
-
 
 /**
  * <p>
@@ -17,6 +15,11 @@
  */
 public interface BigStorageCageDetailsMapper extends MPJBaseMapper<BigStorageCageDetails> {
 
-    List<TemperingLayoutDTO> listAllTemperingCount();
+    /**
+     * 鑾峰彇閽㈠寲鐗堝浘宸茬粡鍒伴綈鐨勫伐绋嬪彿鍙婄増鍥緄d
+     *
+     * @return
+     */
+    TemperingLayoutDTO temperingIsAll();
 
 }
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java
index dc64d64..9c5ad4f 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java
@@ -41,5 +41,5 @@
      */
     BigStorageDTO queryTargetSlotByTempering(GlassInfo glassInfo);
 
-    List<TemperingLayoutDTO> listAllTemperingCount();
+    TemperingLayoutDTO temperingIsAll();
 }
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
index bda4125..f909c54 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
@@ -256,7 +256,7 @@
     }
 
     @Override
-    public List<TemperingLayoutDTO> listAllTemperingCount() {
-        return baseMapper.listAllTemperingCount();
+    public TemperingLayoutDTO temperingIsAll() {
+        return baseMapper.temperingIsAll();
     }
 }
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
index 3e13554..281f395 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
@@ -288,11 +288,39 @@
         //todo:鑾峰彇鐘舵�佸瓧  閽㈠寲浼樺厛 or 浜哄伐涓嬬墖浼樺厛
         if (true) {
             //todo:閽㈠寲浼樺厛锛氳幏鍙栫悊鐗囩  鐜荤拑灏忕墖  鐮存崯琛� 鏁伴噺   鍒ゆ柇绗煎唴鐗堝浘鏄惁鍒伴綈
-            //todo: 鍒伴綈锛屽皢鐜荤拑灏忕墖鏁版嵁瀛樺叆閽㈠寲灏忕墖琛紝閫昏緫鐢熸垚鍑虹墖浠诲姟  缁撴潫
+            TemperingLayoutDTO temperingLayoutDTO = bigStorageCageDetailsService.temperingIsAll();
+            if (null != temperingLayoutDTO) {
+                //鐜荤拑鍒伴綈
+                //todo: 鍒伴綈锛屽皢鐜荤拑灏忕墖鏁版嵁瀛樺叆閽㈠寲灏忕墖琛紝閫昏緫鐢熸垚鍑虹墖浠诲姟  缁撴潫
+                List<BigStorageCageDetails> bigStorageCageDetails = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>()
+                        .eq(BigStorageCageDetails::getTemperingLayoutId, temperingLayoutDTO.getTemperingLayoutId())
+                        .eq(BigStorageCageDetails::getEngineerId, temperingLayoutDTO.getEngineerId()));
+                List<TemperingGlassInfo> temperingGlassInfos = bigStorageCageDetails.stream().map(e -> {
+                    TemperingGlassInfo info = new TemperingGlassInfo();
+                    BeanUtils.copyProperties(e, info);
+                    return info;
+                }).collect(Collectors.toList());
+                temperingGlassInfoService.saveBatch(temperingGlassInfos);
+
+                //鎵撹溅鍓╀綑灏哄
+                AtomicReference<Integer> remainWidth = new AtomicReference<>(Const.BIG_STORAGE_WIDTH);
+                temperingGlassInfoList.stream().forEach(e -> {
+                    if (bigStorageCageOutTaskList.size() > 5 || e.getWidth() > remainWidth.get()) {
+                        return;
+                    }
+                    remainWidth.set(remainWidth.get() - e.getWidth().intValue() - Const.BIG_STORAGE_GAP);
+                    bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getState(), Const.A09_OUT_TARGET_POSITION,
+                            0, 0, 1));
+                });
+                bigStorageCageOutTaskService.saveBatch(bigStorageCageOutTaskList);
+                return;
+            }
             //todo: 鏈埌榻� 鎵ц鍐呴儴璋冨害浠诲姟 缁撴潫
+
         }
         //todo:绗煎唴鏄惁鏈変汉宸ヤ笅鐗囩幓鐠� 鏈夌洿鎺ュ嚭  鏃� 缁撴潫
-        List<TemperingLayoutDTO> list = bigStorageCageDetailsService.listAllTemperingCount();
+
+
     }
 
 
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
index 9d6527c..1f64557 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
@@ -3,15 +3,42 @@
 <mapper namespace="com.mes.bigstorage.mapper.BigStorageCageDetailsMapper">
 
     <resultMap id="temperingLayoutDTO" type="com.mes.bigstorage.entity.dto.TemperingLayoutDTO">
+        <result column="engineer_id" property="engineerId"/>
         <result column="tempering_layout_id" property="temperingLayoutId"/>
         <result column="count" property="count"/>
     </resultMap>
-    <select id="listAllTemperingCount" resultMap="temperingLayoutDTO">
-        select tempering_layout_id,
-               count(tempering_layout_id) as count
-        from big_storage_cage_details
-        where state = 100
-        group by tempering_layout_id
+    <!--    <select id="listAllTemperingCount" resultMap="temperingLayoutDTO">-->
+    <!--        select tempering_layout_id,-->
+    <!--               count(tempering_layout_id) as count-->
+    <!--        from big_storage_cage_details-->
+    <!--        where state = 100-->
+    <!--        group by tempering_layout_id-->
+    <!--    </select>-->
+    <select id="temperingIsAll" resultMap="temperingLayoutDTO">
+        SELECT T.ENGINEER_ID,
+               T.TEMPERING_LAYOUT_ID,
+               COUNT(T.TEMPERING_FEED_SEQUENCE) AS COUNT
+        FROM
+            GLASS_INFO T
+            LEFT JOIN DAMAGE T1
+        ON T.ENGINEER_ID = T1.ENGINEER_ID
+            AND T.GLASS_ID = T1.GLASS_ID
+            LEFT JOIN BIG_STORAGE_CAGE_DETAILS T2 ON T.ENGINEER_ID = T2.ENGINEER_ID
+            AND T.GLASS_ID = T2.GLASS_ID
+        WHERE
+            T1.GLASS_ID IS NULL
+          AND T2.GLASS_ID IS NULL
+          AND ( T.ENGINEER_ID
+            , T.TEMPERING_LAYOUT_ID ) IN ( SELECT DISTINCT ENGINEER_ID
+            , TEMPERING_LAYOUT_ID FROM BIG_STORAGE_CAGE_DETAILS WHERE STATE = 100 )
+        GROUP BY
+            T.ENGINEER_ID,
+            T.TEMPERING_LAYOUT_ID
+        HAVING
+            COUNT = 0
+        ORDER BY
+            T.TEMPERING_LAYOUT_ID
+            LIMIT 1
     </select>
 
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0