From fc0cd9cb4452d86c47c362f849d3643d23d01d67 Mon Sep 17 00:00:00 2001
From: 潘志宝 <979469083@qq.com>
Date: 星期日, 13 四月 2025 20:05:00 +0800
Subject: [PATCH] 负荷移植建议与方案

---
 ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingMainDayTask.java |   81 +++++++++++++++++++++++++++++-----------
 1 files changed, 58 insertions(+), 23 deletions(-)

diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingMainDayTask.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingMainDayTask.java
index 347ebf6..4080513 100644
--- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingMainDayTask.java
+++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingMainDayTask.java
@@ -2,10 +2,8 @@
 
 import com.iailab.module.ansteel.api.entity.CokingProcessConfEntity;
 import com.iailab.module.ansteel.api.entity.CokingProcessMainEntity;
-import com.iailab.module.ansteel.api.entity.CokingProdDayEntity;
 import com.iailab.module.ansteel.api.service.CokingProcessConfService;
 import com.iailab.module.ansteel.api.service.CokingProcessMainService;
-import com.iailab.module.ansteel.api.service.CokingProdDayService;
 import com.iailab.module.data.api.point.DataPointApi;
 import org.apache.commons.lang3.ObjectUtils;
 import org.slf4j.Logger;
@@ -15,10 +13,9 @@
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.concurrent.atomic.AtomicReference;
+import java.util.stream.Collectors;
 
 /**
  * @author HouZhongjian
@@ -50,8 +47,31 @@
             queryParams.setIndType("main");
             List<CokingProcessConfEntity> list = cokingProcessConfService.list(queryParams);
             if (ObjectUtils.isNotEmpty(list)) {
-//                List<String> points = list.stream().map(CokingProcessConfEntity::getIndCode).collect(Collectors.toList());
-//                Map<String, Object> stringObjectMap = dataPointApi.queryPointsRealValue(points);
+                //按照指标大类扩展字段ext1分类 并且按照sort排序
+//                Map<String, List<CokingProcessConfEntity>> groupMap = list.stream().sorted(Comparator.comparing(CokingProcessConfEntity::getSort))
+//                        .collect(Collectors.groupingBy(CokingProcessConfEntity::getExt1, TreeMap::new, Collectors.toList()));
+
+                // 先建立ext1到sort的映射关系
+                Map<String, Integer> ext1ToSort = list.stream()
+                        .collect(Collectors.toMap(
+                                CokingProcessConfEntity::getExt1,
+                                CokingProcessConfEntity::getSort,
+                                (oldValue, newValue) -> oldValue));
+
+                // 然后按这个关系排序分组
+                Map<String, List<CokingProcessConfEntity>> groupMap = list.stream()
+                        .sorted(Comparator.comparing(CokingProcessConfEntity::getSort))
+                        .collect(Collectors.collectingAndThen(
+                                Collectors.groupingBy(CokingProcessConfEntity::getExt1),
+                                map -> map.entrySet().stream()
+                                        .sorted(Comparator.comparingInt(
+                                                e -> ext1ToSort.get(e.getKey())))  // 按ext1对应的sort值排序
+                                        .collect(Collectors.toMap(
+                                                Map.Entry::getKey,
+                                                Map.Entry::getValue,
+                                                (a, b) -> a,
+                                                LinkedHashMap::new))));
+
                 // 获取当前日期时间
                 LocalDateTime now = LocalDateTime.now();
                 // 减去一天得到昨天同一时间
@@ -59,21 +79,36 @@
                 // 格式化输出
                 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
                 String formattedDateTime = yesterday.format(formatter);
-
-                list.stream().forEach(cokingProcessConfEntity -> {
-                    List<String> points = new ArrayList<>();
-                    points.add(cokingProcessConfEntity.getPointNo());
-                    Map<String, Object> stringObjectMap = dataPointApi.queryPointsRealValue(points);
-                    //保存数据
-                    if(ObjectUtils.isNotEmpty(stringObjectMap.get(cokingProcessConfEntity.getPointNo()))) {
-                        CokingProcessMainEntity cokingProcessMainEntity = new CokingProcessMainEntity();
-                        cokingProcessMainEntity.setInfoType("0");
-                        cokingProcessMainEntity.setSort(cokingProcessConfEntity.getSort());
-                        cokingProcessMainEntity.setIndName(cokingProcessConfEntity.getIndName());
-
-                        cokingProcessMainEntity.setClock(formattedDateTime);
-                        cokingProcessMainService.save(cokingProcessMainEntity);
-                    }
+                //计数器
+                AtomicReference<Integer> counter = new AtomicReference<>(1);
+                groupMap.forEach((group, confList) -> {
+                    CokingProcessMainEntity cokingProcessMainEntity = new CokingProcessMainEntity();
+                    cokingProcessMainEntity.setInfoType("0");
+                    cokingProcessMainEntity.setSort(counter.getAndSet(counter.get() + 1));
+                    cokingProcessMainEntity.setCategory("day");
+                    cokingProcessMainEntity.setIndName(group);
+                    cokingProcessMainEntity.setClock(formattedDateTime);
+                    confList.forEach(cokingProcessConfEntity -> {
+                        List<String> points = new ArrayList<>();
+                        points.add(cokingProcessConfEntity.getPointNo());
+                        Map<String, Object> stringObjectMap = dataPointApi.queryPointsRealValue(points);
+                        //保存数据
+                        Object value = stringObjectMap.get(cokingProcessConfEntity.getPointNo());
+                        if(ObjectUtils.isNotEmpty(value)) {
+                            if(cokingProcessConfEntity.getIndCode().endsWith("LSPJ")) {
+                                cokingProcessMainEntity.setAvgValue(value.toString());
+                            } else if(cokingProcessConfEntity.getIndCode().endsWith("LLZ")) {
+                                cokingProcessMainEntity.setTheoryValue(value.toString());
+                            } else if(cokingProcessConfEntity.getIndCode().endsWith("SJZ")) {
+                                cokingProcessMainEntity.setActualValue(value.toString());
+                            } else if(cokingProcessConfEntity.getIndCode().endsWith("JZZ")) {
+                                cokingProcessMainEntity.setStandValue(value.toString());
+                            } else if(cokingProcessConfEntity.getIndCode().endsWith("SSSJ")) {
+                                cokingProcessMainEntity.setRealValue(value.toString());
+                            }
+                        }
+                    });
+                    cokingProcessMainService.save(cokingProcessMainEntity);
                 });
             }
 

--
Gitblit v1.9.3