From 3420c1e93b9af68ef2b8b4de6af6e59c7b9a5e2f Mon Sep 17 00:00:00 2001
From: 潘志宝 <979469083@qq.com>
Date: 星期三, 23 四月 2025 17:29:28 +0800
Subject: [PATCH] 生产指标增加字段 indCode

---
 ansteel-biz/db/mysql.sql                                                                   |    4 +
 ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/CokingProdDayDTO.java          |    5 +
 ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingChildDayTask.java    |  119 ++++++++++++++++++++-------------------
 ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/entity/CokingProdDayEntity.java |    2 
 ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingProdDayTask.java     |   25 +++----
 5 files changed, 81 insertions(+), 74 deletions(-)

diff --git a/ansteel-biz/db/mysql.sql b/ansteel-biz/db/mysql.sql
index 4b6443c..6c7e340 100644
--- a/ansteel-biz/db/mysql.sql
+++ b/ansteel-biz/db/mysql.sql
@@ -354,11 +354,13 @@
     `id`        varchar(36) NOT NULL COMMENT 'id',
     `clock`     varchar(20) NULL DEFAULT NULL COMMENT '查询时间',
     `info_type` varchar(10) NULL DEFAULT NULL COMMENT '信息类型(0:生产情况,1:能源发生,2:能源消耗)',
+    `ind_code`  varchar(50) NULL DEFAULT NULL COMMENT '数据编码',
     `ind_name`  varchar(50) NULL DEFAULT NULL COMMENT '数据名称',
     `ind_unit`  varchar(50) NULL DEFAULT NULL COMMENT '数据单位',
     `ind_value` varchar(50) NULL DEFAULT NULL COMMENT '数据值',
     `sort`      int NULL DEFAULT NULL COMMENT '排序',
-    PRIMARY KEY (`id`) USING BTREE
+    PRIMARY KEY (`id`) USING BTREE,
+    key         idx_clock (clock)
 ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC COMMENT '焦化工序日生产信息';
 
 -- ----------------------------
diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/CokingProdDayDTO.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/CokingProdDayDTO.java
index c04fd72..620aa03 100644
--- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/CokingProdDayDTO.java
+++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/dto/CokingProdDayDTO.java
@@ -24,7 +24,10 @@
     @Schema(description = "信息类型(0:生产情况,1:能源发生,2:能源消耗)")
     private String infoType;
 
-    @Schema(description = "数据名称")
+    @Schema(description = "指标编码")
+    private String indCode;
+
+    @Schema(description = "指标名称")
     private String indName;
 
     @Schema(description = "数据单位")
diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/entity/CokingProdDayEntity.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/entity/CokingProdDayEntity.java
index a712453..2989e66 100644
--- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/entity/CokingProdDayEntity.java
+++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/entity/CokingProdDayEntity.java
@@ -24,6 +24,8 @@
 
     private String infoType;
 
+    private String indCode;
+
     private String indName;
 
     private String indUnit;
diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingChildDayTask.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingChildDayTask.java
index e558a04..a1adf38 100644
--- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingChildDayTask.java
+++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingChildDayTask.java
@@ -11,6 +11,7 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
 import java.util.*;
@@ -48,65 +49,67 @@
             CokingProcessConfEntity queryParams = new CokingProcessConfEntity();
             queryParams.setIndType("child");
             List<CokingProcessConfEntity> list = cokingProcessConfService.list(queryParams);
-            if (ObjectUtils.isNotEmpty(list)) {
-                // 先建立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))));
-
-                logger.info("清理旧数据");
-                cokingProcessChildService.deleteByClock(clock);
-
-                AtomicReference<Integer> counter = new AtomicReference<>(1);
-                groupMap.forEach((group, confList) -> {
-                    CokingProcessChildEntity cokingProcessChildEntity = new CokingProcessChildEntity();
-                    cokingProcessChildEntity.setInfoType("0");
-                    cokingProcessChildEntity.setSort(counter.getAndSet(counter.get() + 1));
-                    cokingProcessChildEntity.setCategory("day");
-                    cokingProcessChildEntity.setClock(clock);
-                    CokingProcessConfEntity childConf = confList.get(0);
-                    cokingProcessChildEntity.setIndType(childConf.getExt3());
-                    cokingProcessChildEntity.setIndMain(childConf.getExt4());
-                    cokingProcessChildEntity.setIndName(childConf.getExt5());
-                    confList.forEach(conf -> {
-                        List<String> points = new ArrayList<>();
-                        points.add(conf.getPointNo());
-                        Map<String, Object> stringObjectMap = dataPointApi.queryPointsRealValue(points);
-                        //保存数据
-                        Object value = stringObjectMap.get(conf.getPointNo());
-                        if(ObjectUtils.isNotEmpty(value)) {
-                            if(conf.getExt2().equals(ProcessIndDataTypeEnum.LSPJ.getCode())) {
-                                cokingProcessChildEntity.setAvgValue(value.toString());
-                            } else if(conf.getExt2().equals(ProcessIndDataTypeEnum.LLZ.getCode())) {
-                                cokingProcessChildEntity.setTheoryValue(value.toString());
-                            } else if(conf.getExt2().equals(ProcessIndDataTypeEnum.SJZ.getCode())) {
-                                cokingProcessChildEntity.setActualValue(value.toString());
-                            } else if(conf.getExt2().equals(ProcessIndDataTypeEnum.JZZ.getCode())) {
-                                cokingProcessChildEntity.setStandValue(value.toString());
-                            } else if(conf.getExt2().equals(ProcessIndDataTypeEnum.SSSJ.getCode())) {
-                                cokingProcessChildEntity.setRealValue(value.toString());
-                            }
-                        }
-                    });
-                    cokingProcessChildService.save(cokingProcessChildEntity);
-                });
+            if (CollectionUtils.isEmpty(list)) {
+                logger.info("子工序配置为空");
+                return;
             }
+            // 先建立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))));
+
+            logger.info("清理旧数据");
+            cokingProcessChildService.deleteByClock(clock);
+
+            AtomicReference<Integer> counter = new AtomicReference<>(1);
+            groupMap.forEach((group, confList) -> {
+                CokingProcessChildEntity cokingProcessChildEntity = new CokingProcessChildEntity();
+                cokingProcessChildEntity.setInfoType("0");
+                cokingProcessChildEntity.setSort(counter.getAndSet(counter.get() + 1));
+                cokingProcessChildEntity.setCategory("day");
+                cokingProcessChildEntity.setClock(clock);
+                CokingProcessConfEntity childConf = confList.get(0);
+                cokingProcessChildEntity.setIndType(childConf.getExt3());
+                cokingProcessChildEntity.setIndMain(childConf.getExt4());
+                cokingProcessChildEntity.setIndName(childConf.getExt5());
+                confList.forEach(conf -> {
+                    List<String> points = new ArrayList<>();
+                    points.add(conf.getPointNo());
+                    Map<String, Object> stringObjectMap = dataPointApi.queryPointsRealValue(points);
+                    //保存数据
+                    Object value = stringObjectMap.get(conf.getPointNo());
+                    if(ObjectUtils.isNotEmpty(value)) {
+                        if(conf.getExt2().equals(ProcessIndDataTypeEnum.LSPJ.getCode())) {
+                            cokingProcessChildEntity.setAvgValue(value.toString());
+                        } else if(conf.getExt2().equals(ProcessIndDataTypeEnum.LLZ.getCode())) {
+                            cokingProcessChildEntity.setTheoryValue(value.toString());
+                        } else if(conf.getExt2().equals(ProcessIndDataTypeEnum.SJZ.getCode())) {
+                            cokingProcessChildEntity.setActualValue(value.toString());
+                        } else if(conf.getExt2().equals(ProcessIndDataTypeEnum.JZZ.getCode())) {
+                            cokingProcessChildEntity.setStandValue(value.toString());
+                        } else if(conf.getExt2().equals(ProcessIndDataTypeEnum.SSSJ.getCode())) {
+                            cokingProcessChildEntity.setRealValue(value.toString());
+                        }
+                    }
+                });
+                cokingProcessChildService.save(cokingProcessChildEntity);
+            });
 
         } catch (Exception ex) {
             logger.error("RunCokingChildDayTask运行异常");
diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingProdDayTask.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingProdDayTask.java
index 5be926e..539719a 100644
--- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingProdDayTask.java
+++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingProdDayTask.java
@@ -5,7 +5,6 @@
 import com.iailab.module.ansteel.coking.entity.CokingProdDayEntity;
 import com.iailab.module.ansteel.coking.service.CokingProcessConfService;
 import com.iailab.module.ansteel.coking.service.CokingProdDayService;
-import com.iailab.module.ansteel.coking.service.CokingTraceIndService;
 import com.iailab.module.ansteel.common.enums.ProcessConfDataTypeEnum;
 import com.iailab.module.data.api.ind.IndItemApi;
 import com.iailab.module.data.api.ind.dto.ApiIndItemValueDTO;
@@ -40,9 +39,6 @@
 
     @Resource
     private CokingProdDayService cokingProdDayService;
-
-    @Resource
-    private CokingTraceIndService cokingTraceIndService;
 
     @Resource
     private DataPointApi dataPointApi;
@@ -96,7 +92,7 @@
                         break;
 
                 }
-                saveProdDay(conf, value, clock);
+                saveProdDay(conf, value, clock, conf.getIndCode());
             }
         } catch (Exception ex) {
             logger.error("RunCokingProdDayTask运行异常");
@@ -106,14 +102,15 @@
 
     }
 
-    private void saveProdDay(CokingProcessConfEntity conf, String value, String clock) {
-        CokingProdDayEntity cokingProdDayEntity = new CokingProdDayEntity();
-        cokingProdDayEntity.setInfoType(conf.getInfoType());
-        cokingProdDayEntity.setSort(conf.getSort());
-        cokingProdDayEntity.setIndName(conf.getIndName());
-        cokingProdDayEntity.setIndUnit(conf.getIndUnit());
-        cokingProdDayEntity.setIndValue(value);
-        cokingProdDayEntity.setClock(clock);
-        cokingProdDayService.save(cokingProdDayEntity);
+    private void saveProdDay(CokingProcessConfEntity conf, String value, String clock, String indCode) {
+        CokingProdDayEntity entity = new CokingProdDayEntity();
+        entity.setInfoType(conf.getInfoType());
+        entity.setSort(conf.getSort());
+        entity.setIndCode(indCode);
+        entity.setIndName(conf.getIndName());
+        entity.setIndUnit(conf.getIndUnit());
+        entity.setIndValue(value);
+        entity.setClock(clock);
+        cokingProdDayService.save(entity);
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3