From 43a6eccb37602e27c56bf7c40a74c8350ecfd82e Mon Sep 17 00:00:00 2001
From: wang <3597712270@qq.com>
Date: 星期三, 15 五月 2024 11:51:46 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/HangZhouMes

---
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java |  234 ++++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 153 insertions(+), 81 deletions(-)

diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java
index b5c01ee..f94df84 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java
@@ -1,6 +1,8 @@
 package com.mes.downstorage.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.yulichang.query.MPJQueryWrapper;
 
 
@@ -13,22 +15,33 @@
 
 import com.mes.downstorage.mapper.DownStorageCageMapper;
 import com.mes.downstorage.service.DownStorageCageDetailsService;
+import com.mes.downworkstation.entity.DownWorkstation;
+import com.mes.downworkstation.mapper.DownWorkstationMapper;
 import com.mes.glassinfo.entity.GlassInfo;
+import com.mes.glassinfo.mapper.GlassInfoMapper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
+
 @Slf4j
 @Service
 public class DownStorageCageDetailsServiceImpl extends ServiceImpl<DownStorageCageDetailsMapper, DownStorageCageDetails> implements DownStorageCageDetailsService {
 
-    @Autowired
+    @Autowired(required = false)
     private DownStorageCageMapper downStorageCageMapper;
     @Autowired
     private DownStorageCageDetailsMapper downStorageCageDetailsMapper;
+    @Autowired
+    private GlassInfoMapper glassInfoMapper;
+    @Autowired
+    private DownWorkstationMapper downWorkstationMapper;
+
     @Override
     public void addDownStorageCageDetails(DownStorageCageDetails details) {
         this.save(details);
@@ -37,7 +50,7 @@
 
     @Override
     //淇敼鐞嗙墖绗煎唴淇℃伅 鍔熻兘锛氬绗煎唴鏍呮牸鐜荤拑 銆愭坊鍔�/鍒犻櫎/鏇存崲銆�
-    public boolean updatedownStorageCageDetails(DownStorageCageDetails details){
+    public boolean updatedownStorageCageDetails(DownStorageCageDetails details) {
         baseMapper.updateById(details);
         return true;
     }
@@ -63,104 +76,163 @@
     }
 
 
+//    @Override
+//    public List<DownStorageCageDetails> getCacheOut(int start, int end) {
+//        log.info("鏍规嵁浼犲叆鐨勫伐浣嶆煡璇㈢鍚堟寜鐓ч『搴忓拰澶у皬鍑虹墖鐨勫皬鐗�");
+//        return  downStorageCageMapper.selectJoinList(
+//                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCage>()
+//                        .select("escd.*")
+//                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
+//                        .leftJoin("down_workstation dw on escd.flow_card_id = dw.flow_card_id")
+//                        .leftJoin("glass_info gi on dw.flow_card_id = gi.flowcard_id  and gi.flowcard_id=escd.flow_card_id ")
+//                        .isNotNull("escd.slot")
+//                        .between("dw.workstation_id", start, end)
+//                        .orderByDesc("escd.width")
+//                        .orderByDesc("escd.height")
+//        );
+//    }
 
 
-
-
-
-
-
-
-
-
-
-    @Override
-    public List<DownStorageCageDetails> getCacheOut(int start, int end) {
-        log.info("鏍规嵁浼犲叆鐨勫伐浣嶆煡璇㈢鍚堟寜鐓ч『搴忓拰澶у皬鍑虹墖鐨勫皬鐗�");
-        return  downStorageCageMapper.selectJoinList(
-                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCage>()
-                        .select("escd.*")
-                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
-                        .leftJoin("down_workstation dw on escd.flow_card_id = dw.flow_card_id")
-                        .leftJoin("glass_info gi on dw.flow_card_id = gi.flowcard_id  and gi.flowcard_id=escd.flow_card_id ")
-                        .isNotNull("escd.slot")
-                        .between("dw.workstation_id", start, end)
-                        .orderByDesc("escd.width")
-                        .orderByDesc("escd.height")
-        );
-    }
+//    @Override
+//    public List<DownStorageCageDetails> selectCacheEmpty2(){
+//        return  downStorageCageMapper.selectJoinList(
+//                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCage>()
+//                        .select("escd.glass_id","escd.flow_card_id","escd.width","escd.height")
+//                        .leftJoin("down_storage_cage_details escd on t.device_id=escd.device_id and t.slot=escd.slot")
+//                        .isNull("escd.slot")
+//        );
+//    }
 
 
     @Override
-    public List<DownStorageCageDetails> selectCacheEmpty2(){
-        return  downStorageCageMapper.selectJoinList(
-                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCage>()
-                        .select("escd.glass_id","escd.flow_card_id","escd.width","escd.height")
-                        .leftJoin("down_storage_cage_details escd on t.device_id=escd.device_id and t.slot=escd.slot")
-                        .isNull("escd.slot")
+    public List<Map<String, Object>> getCacheInfo() {
+        log.info("鏌ヨ绗煎瓙鍐呬俊鎭�");
+        return downStorageCageDetailsMapper.selectJoinMaps(JoinWrappers.lambda(DownStorageCageDetails.class) // 浣跨敤 JoinWrappers.lambda 鍒涘缓鑱斿悎鏌ヨ
+                .selectAll(DownStorageCageDetails.class) // 閫夋嫨鎵�鏈夊瓧娈�
+                .eq(DownStorageCage::getSlot, DownStorageCageDetails::getSlot) // 璁剧疆鍏宠仈鏉′欢
+                .orderByAsc(DownStorageCage::getSlot) // 鎸� slot 瀛楁鍗囧簭鎺掑簭
         );
     }
+
+//
+//    @Override
+//    public List<Map> getCacheInfo() {
+//        log.info(" 鏌ヨ绗煎瓙鍐呬俊鎭�");
+//        return downStorageCageMapper.selectJoinList(
+//                Map.class, new MPJQueryWrapper<DownStorageCage>()
+//                        .select("escd.*")
+//                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
+//                        .orderByAsc("t.slot")
+//        );
+//
+//    }
+
+//    @Override
+//    public List<DownStorageCageDetails> getCacheLeisure() {
+//        log.info(" 鏌ヨ绗煎瓙鍐呯┖闂�");
+//        List<DownStorageCageDetails> list = downStorageCageMapper.selectJoinList(
+//                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCage>()
+//                        .select("escd.*")
+//                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
+//                        .isNull("escd.slot")
+//
+//                        .orderByAsc("escd.slot")
+//        );
+//        return list;
+//    }
+
+
+//    @Override
+//    public List<DownStorageCageDetails> getIsExistIntoCacheByflowcardid(String flowcardid, double width) {
+//        log.info("  鏌ヨ鍙繘姝ょ墖鐜荤拑鐨勬爡鏍煎彿  鎵惧埌绌烘牸");
+//
+//        return downStorageCageMapper.selectJoinList(
+//                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCage>()
+//                        .select("escd.*")
+//                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
+//                        .isNull("escd.slot")
+//                        .apply("t.remain_width - " + width + " > 0")
+//                        .orderByAsc("escd.sequence")
+//        );
+//
+//
+//
+//
+//    }
 
 
     @Override
-    public List<Map> getCacheInfo() {
-        log.info(" 鏌ヨ绗煎瓙鍐呬俊鎭�");
-        return downStorageCageMapper.selectJoinList(
-                Map.class, new MPJQueryWrapper<DownStorageCage>()
-                        .select("escd.*")
-                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
-                        .orderByAsc("t.slot")
-        );
-
-    }
+    public List<DownStorageCageDetails> CacheOut1(int start, int end) {
 
 
-
-    @Override
-    public List<DownStorageCageDetails> getCacheLeisure() {
-        log.info(" 鏌ヨ绗煎瓙鍐呯┖闂�");
-        List<DownStorageCageDetails> list = downStorageCageMapper.selectJoinList(
-                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCage>()
-                        .select("escd.*")
-                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
-                        .isNull("escd.slot")
-
-                        .orderByAsc("escd.slot")
-        );
-        return list;
-    }
+        List<DownStorageCageDetails> cageDetails = downStorageCageDetailsMapper.selectList(null);
+        // Step 5: 鍒ゆ柇 down_storage_cage_details 缁撴灉鏁伴噺鏄惁涓�9锛屽鏋滄槸锛屽垯鎵ц鍙﹀涓�涓煡璇�
+        if (cageDetails.size() == 9) {
+            log.info("1銆佺瀛愭弧浜嗙殑鏃跺�欙紝鎸夌収绗煎唴鐗堝浘id 鐗堝浘鐗囧簭鍑�");
+            List<DownWorkstation> workstationList = downWorkstationMapper.selectList(new QueryWrapper<DownWorkstation>().between("workstation_id", start, end));
 
 
-    @Override
-    public List<DownStorageCageDetails> getIsExistIntoCacheByflowcardid(String flowcardid, double width) {
-        log.info("  鏌ヨ鍙繘姝ょ墖鐜荤拑鐨勬爡鏍煎彿  鎵惧埌绌烘牸");
+            List<String> flowCardIds = new ArrayList<>();
+            for (DownWorkstation workstation : workstationList) {
+                flowCardIds.add(workstation.getFlowCardId());
+            }
 
-        return downStorageCageMapper.selectJoinList(
-                DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCage>()
-                        .select("escd.*")
-                        .leftJoin("down_storage_cage_details escd on t.slot = escd.slot")
-                        .isNull("escd.slot")
-                        .apply("t.remain_width - " + width + " > 0")
-                        .orderByAsc("escd.sequence")
-        );
+            if (flowCardIds.isEmpty()) {
+                log.error("鏈壘鍒板搴旂殑 flow_card_id");
+                return Collections.emptyList(); // 杩斿洖绌哄垪琛ㄦ垨鑰呮姏鍑哄紓甯革紝瑙嗘儏鍐佃�屽畾
+            }
+            LambdaQueryWrapper<DownStorageCageDetails> anotherQueryWrapper = Wrappers.lambdaQuery();
+
+            anotherQueryWrapper.orderByAsc(DownStorageCageDetails::getTemperingLayoutId);
+            anotherQueryWrapper.orderByDesc(DownStorageCageDetails::getTemperingFeedSequence);
+            anotherQueryWrapper.in(DownStorageCageDetails::getFlowCardId, flowCardIds);
+            anotherQueryWrapper.last("LIMIT 1");
+            return downStorageCageDetailsMapper.selectList(anotherQueryWrapper);
+        } else {
+
+            // Step 1: 鏌ヨ DownWorkstation 琛ㄨ幏鍙栧搴� workstation_id 鐨� flow_card_id
+            List<DownWorkstation> workstationList = downWorkstationMapper.selectList(new QueryWrapper<DownWorkstation>().between("workstation_id", start, end));
 
 
+            List<String> flowCardIds = new ArrayList<>();
+            for (DownWorkstation workstation : workstationList) {
+                flowCardIds.add(workstation.getFlowCardId());
+            }
+
+            if (flowCardIds.isEmpty()) {
+                log.error("2銆佹湭鎵惧埌瀵瑰簲鐨� flow_card_id");
+                return Collections.emptyList(); // 杩斿洖绌哄垪琛ㄦ垨鑰呮姏鍑哄紓甯革紝瑙嗘儏鍐佃�屽畾
+            }
+            log.info("娴佺▼鍗�:{}", flowCardIds);
+            LambdaQueryWrapper<GlassInfo> queryWrapper2 = Wrappers.lambdaQuery();
+            queryWrapper2.select(GlassInfo::getFlowCardId,
+                    GlassInfo::getGlassId,
+                    GlassInfo::getTemperingLayoutId,
+                    GlassInfo::getTemperingFeedSequence)
+                    .notInSql(GlassInfo::getGlassId, "SELECT glass_id FROM down_glass_info")
+                    .orderByAsc(GlassInfo::getTemperingLayoutId)
+                    .orderByDesc(GlassInfo::getTemperingFeedSequence)
+                    .last("LIMIT 1");
+
+            // 鏌ヨ GlassInfo 琛�
+            List<GlassInfo> glassInfos = glassInfoMapper.selectList(queryWrapper2);
+            if (glassInfos.isEmpty()) {
+                log.error("鏈壘鍒板搴旂殑鐜荤拑淇℃伅");
+                return Collections.emptyList(); // 杩斿洖绌哄垪琛ㄦ垨鑰呮姏鍑哄紓甯革紝瑙嗘儏鍐佃�屽畾
+            }
+            // Step 3: 鏋勯�犳煡璇� down_storage_cage_details 琛ㄧ殑鏉′欢
+            List<String> glassIds = glassInfos.stream().map(GlassInfo::getGlassId).collect(Collectors.toList());
+            LambdaQueryWrapper<DownStorageCageDetails> cageDetailsQueryWrapper = Wrappers.lambdaQuery();
+            cageDetailsQueryWrapper.in(DownStorageCageDetails::getGlassId, glassIds);
+            cageDetailsQueryWrapper.in(DownStorageCageDetails::getFlowCardId, flowCardIds);
+
+            log.info("鎸夌収娴佺▼鍗$殑鐗堝浘id 鐗堝浘鐗囧簭鍑�");
+            // Step 4: 鏌ヨ down_storage_cage_details 琛ㄥ苟杩斿洖缁撴灉
+            return downStorageCageDetailsMapper.selectList(cageDetailsQueryWrapper);
+        }
 
 
     }
-
-
-
-
-
-
-
-
-
-
-
-
-
 
 
 }

--
Gitblit v1.8.0