From 924ce82faeec6d896fcdc360b279215e84b69fb9 Mon Sep 17 00:00:00 2001
From: ZengTao <2773468879@qq.com>
Date: 星期四, 11 九月 2025 11:44:44 +0800
Subject: [PATCH] 1、代码补充提交

---
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java |  156 +++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 148 insertions(+), 8 deletions(-)

diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java
index c6288dd..2f41b41 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java
@@ -36,6 +36,7 @@
 
 import java.util.*;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * @Author : zhoush
@@ -94,14 +95,14 @@
         String confirmationWrodAddress = plcParameterObject.getPlcParameter("confirmationWord").getAddress();
         String currentSlot = plcParameterObject.getPlcParameter("currentCell").getValue();
 
-//        requestWord="3";
-//        glassIdeValue="P25031802|4|1";
-//        out06Glassstate="1";
-//        out08Glassstate="1";
-//        out11Glassstate ="1";
-//        out13Glassstate="1";
-//        currentSlot="1";
-//        confirmationWrodValue="0";
+        requestWord = "2";
+        glassIdeValue = "";
+        out06Glassstate = "1";
+        out08Glassstate = "1";
+        out11Glassstate = "1";
+        out13Glassstate = "1";
+        currentSlot = "1";
+        confirmationWrodValue = "0";
 
 
         log.info("1銆佽幏鍙栧埌鐨勮姹傚瓧涓猴細{}锛岃幏鍙栧埌鐨勬壂鎻廔D涓猴細{}锛岃幏鍙栧埌鐨勭‘璁ゅ瓧涓猴細{}锛岃幏鍙栧埌鐨勫嚭鐗囩姸鎬佸垎鍒负锛歡06:{}銆乬08:{}銆乬11:{}銆乬13:{},褰撳墠鏍煎瓙鍙蜂负锛歿}",
@@ -362,6 +363,145 @@
             log.info("绗煎唴娌℃湁鐜荤拑,鏃犳硶鎵ц鍑虹墖");
             return Boolean.FALSE;
         }
+//        //鑾峰彇鏈�灏忓伐绋嬩笌鐐夋暟
+//        Map<String, List<DownStorageCageDetails>> groupedMap = tempList.stream()
+//                .collect(Collectors.groupingBy(item -> item.getEngineerId() + "_" + item.getTemperingLayoutId()));
+//        // 鑾峰彇绗竴涓� 鍏堣繘鍗х悊閭d竴鐐夌殑淇℃伅
+//        List<DownStorageCageDetails> cageList =
+//                new ArrayList<>(groupedMap.values().stream().findFirst().orElse(Collections.emptyList()));
+//
+//        if (groupedMap.size() > 1) {
+//            //鎸夋祦绋嬪崱杩涜鍒嗙粍
+//            Map<String, List<DownStorageCageDetails>> getFlowCardIds = cageList.stream()
+//                    .collect(Collectors.groupingBy(item -> item.getFlowCardId() + "_" + item.getLayer()));
+//            // 鎸� 鐭竟 闄嶅簭锛岄暱杈� 闄嶅簭,鐐夊唴鐗囧簭 闄嶅簭
+//            getFlowCardIds.forEach((key, list) -> {
+//                list.sort(Comparator.comparingDouble((DownStorageCageDetails item) -> Math.min(item.getWidth(), item.getHeight()))
+//                        .reversed()
+//                        .thenComparingDouble(item -> Math.max(item.getWidth(), item.getHeight()))
+//                        .reversed()
+//                        .thenComparingInt(item -> item.getTemperingFeedSequence()));
+//            });
+//            //鑾峰彇姣忎釜娴佺▼鍗″嚭鐗囦紭鍏堢骇鏈�楂樼殑鐜荤拑
+//            tempList = getFlowCardIds.values().stream()
+//                    .map(list -> list.isEmpty() ? null : list.get(0))
+//                    .filter(Objects::nonNull)
+//                    .collect(Collectors.toList());
+//        } else {
+//            //绗煎唴鍔犳壂鐮佷綅鐜荤拑id
+//            List<String> cageGlassIds = cageList.stream()
+//                    .map(DownStorageCageDetails::getGlassId)
+//                    .collect(Collectors.toList());
+//            //鑾峰彇鐮存崯鎷胯蛋鐨勭幓鐠冨苟杩囨护璋冨凡缁忓湪绗煎唴鐨勶紝闃叉涔辨姤鐮存崯
+//            List<Damage> damageList = damageService.list(
+//                    new LambdaQueryWrapper<Damage>()
+//                            .eq(Damage::getEngineerId, cageList.get(0).getEngineerId())
+//                            .eq(Damage::getTemperingLayoutId, cageList.get(0).getTemperingLayoutId())
+//                            .and(item -> item.eq(Damage::getType, 8).or().eq(Damage::getType, 9))
+//                            .lt(Damage::getStatus, 4)
+//                            .notIn(Damage::getGlassId, cageGlassIds)
+//            );
+//            //鑾峰彇鐮存崯/鎷胯蛋鐜荤拑id
+//            List<String> damageGlassIds = damageList.stream()
+//                    .map(Damage::getGlassId)
+//                    .collect(Collectors.toList());
+//            //鑾峰彇宸插嚭鐗囩幓鐠冧俊鎭�
+//            List<DownStorageCageDetails> downStorageCageDetails = downStorageCageDetailsService.list(
+//                    new LambdaQueryWrapper<DownStorageCageDetails>()
+//                            .eq(DownStorageCageDetails::getEngineerId, cageList.get(0).getEngineerId())
+//                            .eq(DownStorageCageDetails::getTemperingLayoutId, cageList.get(0).getTemperingLayoutId())
+//            );
+//            //鑾峰彇宸插嚭鐗囩幓鐠僫d
+//            List<String> downGlassIds = downStorageCageDetails.stream()
+//                    .map(DownStorageCageDetails::getGlassId)
+//                    .collect(Collectors.toList());
+//            //鑾峰彇鎵�鏈夋湭涓嬬墖鐨勭幓鐠冧俊鎭�
+//            List<GlassInfo> glassInfoList = glassInfoService.list(
+//                    new LambdaQueryWrapper<GlassInfo>()
+//                            .eq(GlassInfo::getEngineerId, cageList.get(0).getEngineerId())
+//                            .eq(GlassInfo::getTemperingLayoutId, cageList.get(0).getTemperingLayoutId())
+//                            .notIn(CollectionUtils.isNotEmpty(damageGlassIds), GlassInfo::getGlassId, damageGlassIds)
+//                            .notIn(CollectionUtils.isNotEmpty(downGlassIds), GlassInfo::getGlassId, downGlassIds)
+//            );
+//            //鎸夋祦绋嬪崱杩涜鍒嗙粍
+//            Map<String, List<GlassInfo>> getFlowCardIds = glassInfoList.stream()
+//                    .collect(Collectors.groupingBy(item -> item.getFlowCardId() + "_" + item.getLayer()));
+//            // 鎸� 鐭竟 闄嶅簭锛岄暱杈� 闄嶅簭,鐐夊唴鐗囧簭 闄嶅簭
+//            getFlowCardIds.forEach((key, list) -> {
+//                list.sort(Comparator.comparingDouble((GlassInfo item) -> Math.min(item.getWidth(), item.getHeight()))
+//                        .reversed()
+//                        .thenComparingDouble(item -> Math.max(item.getWidth(), item.getHeight()))
+//                        .reversed()
+//                        .thenComparingInt(item -> item.getTemperingFeedSequence()));
+//            });
+//            //鑾峰彇涓�鐐夋墍鏈夋湭鍑虹墖娴佺▼鍗′紭鍏堢骇鏈�楂樼殑鐜荤拑
+//            List<GlassInfo> glassInfos = getFlowCardIds.values().stream()
+//                    .map(list -> list.isEmpty() ? null : list.get(0))
+//                    .filter(Objects::nonNull)
+//                    .collect(Collectors.toList());
+//            //鑾峰彇涓�鐐夋墍鏈夋湭鍑虹墖娴佺▼鍗′紭鍏堢骇鏈�楂樼殑鐜荤拑id
+//            List<String> noOutGlassIds = glassInfos.stream()
+//                    .map(GlassInfo::getGlassId)
+//                    .collect(Collectors.toList());
+//            //鑾峰彇鍖归厤鐨勭幓鐠冧俊鎭�
+//            List<DownStorageCageDetails> filteredList = tempList.stream()
+//                    .filter(item -> noOutGlassIds.contains(item.getGlassId()))
+//                    .collect(Collectors.toList());
+//            if (CollectionUtils.isNotEmpty(filteredList)) {
+//                tempList = filteredList;
+//            } else {
+//                //鏄惁婊$
+//                if (tempList.size() == 9) {
+//                    // 缁撴灉鍒楄〃
+//                    List<DownStorageCageDetails> resultList = new ArrayList<>();
+//
+//                    // 灏� glassInfos 杞崲鎴� Map锛屼互 flowCardId_layer 浣滀负 key
+//                    Map<String, GlassInfo> glassInfoMap = glassInfos.stream()
+//                            .collect(Collectors.toMap(
+//                                    item -> item.getFlowCardId() + "_" + item.getLayer(),
+//                                    item -> item
+//                            ));
+//
+//                    // 鎸� flowCardId 鍜� layer 杩涜鍒嗙粍
+//                    Map<String, List<DownStorageCageDetails>> groupedByFlowCardLayer = tempList.stream()
+//                            .collect(Collectors.groupingBy(item -> item.getFlowCardId() + "_" + item.getLayer()));
+//
+//                    // 閬嶅巻鍒嗙粍锛屾壘鍑烘瘡涓�缁勪腑璇樊鏈�灏忕殑 DownStorageCageDetails
+//                    for (Map.Entry<String, List<DownStorageCageDetails>> entry : groupedByFlowCardLayer.entrySet()) {
+//                        String key = entry.getKey();
+//                        List<DownStorageCageDetails> groupList = entry.getValue();
+//
+//                        // 鍙湁褰� glassInfoMap 閲屾湁鐩稿簲鐨� key 鏃讹紝鎵嶈绠楁渶鎺ヨ繎鐨勫尮閰嶉」
+//                        if (glassInfoMap.containsKey(key)) {
+//                            GlassInfo glassInfo = glassInfoMap.get(key);
+//                            double glassShortEdge = Math.min(glassInfo.getWidth(), glassInfo.getHeight());
+//                            double glassLongEdge = Math.max(glassInfo.getWidth(), glassInfo.getHeight());
+//
+//                            // 鎵惧埌璇樊鏈�灏忕殑 DownStorageCageDetails
+//                            Optional<DownStorageCageDetails> bestMatch = groupList.stream()
+//                                    .min(Comparator.comparingDouble(item -> {
+//                                        double itemShortEdge = Math.min(item.getWidth(), item.getHeight());
+//                                        double itemLongEdge = Math.max(item.getWidth(), item.getHeight());
+//
+//                                        // 鍏堟瘮杈冪煭杈硅宸�
+//                                        double shortEdgeDiff = Math.abs(itemShortEdge - glassShortEdge);
+//                                        // 鍐嶆瘮杈冮暱杈硅宸紙浠呭綋鐭竟璇樊鐩稿悓鏃讹級
+//                                        double longEdgeDiff = Math.abs(itemLongEdge - glassLongEdge);
+//
+//                                        return shortEdgeDiff * 1000 + longEdgeDiff; // 璁╃煭杈硅宸紭鍏堢骇鏇撮珮
+//                                    }));
+//
+//                            bestMatch.ifPresent(resultList::add);
+//                        }
+//                    }
+//                    tempList = resultList;
+//                } else {
+//                    return Boolean.FALSE;
+//                }
+//            }
+//        }
+
+
         //浼樺厛璧�08鐗囧彴鐨勭幓鐠冿細璧颁汉宸ヤ笅鐗囨垨鑰�2鍙锋満姊拌噦
         //1銆�08鍙板繖纰岋紝浠呰蛋1鍙锋満姊拌噦
         //2銆�08鍙扮┖闂诧紝鍏堣蛋鎵斿伐涓嬬墖鎴�2鍙锋満姊拌噦锛屾棤鐜荤拑鍑虹墖 鍦ㄨ蛋1鍙锋満姊拌噦

--
Gitblit v1.8.0