From 34de09b7eb5e1aa7cc03494b8ed82b49839454f4 Mon Sep 17 00:00:00 2001
From: 潘志宝 <979469083@qq.com>
Date: 星期五, 25 四月 2025 17:24:14 +0800
Subject: [PATCH] 影响因数偏差值 表结构修改

---
 ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelGXJTask.java      |  120 +++++----
 ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelHCTask.java       |   89 +++++--
 ansteel-biz/db/mysql.sql                                                                          |  118 +++++----
 ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelBMTask.java       |   84 +++++-
 ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/entity/CokingTraceDeviationEntity.java |  103 +++++++-
 ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelLJTask.java       |  103 +++++---
 ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/dto/CokingTraceDeviationDTO.java       |   67 ++++
 7 files changed, 473 insertions(+), 211 deletions(-)

diff --git a/ansteel-biz/db/mysql.sql b/ansteel-biz/db/mysql.sql
index 4874375..20d02e8 100644
--- a/ansteel-biz/db/mysql.sql
+++ b/ansteel-biz/db/mysql.sql
@@ -248,7 +248,7 @@
     ADD COLUMN `cur_flag` int DEFAULT 0 COMMENT '无功返送(1:大于0是,-1:小于0是)';
 
 ALTER TABLE `t_power_net_factor`
-    ADD COLUMN `node_code`  varchar(50) NULL DEFAULT NULL COMMENT '节点编号';
+    ADD COLUMN `node_code` varchar(50) NULL DEFAULT NULL COMMENT '节点编号';
 
 -- ----------------------------
 -- 电力功率因数-发电机组实时状态
@@ -518,14 +518,32 @@
     `process`     varchar(20) NULL DEFAULT NULL COMMENT '工序名称',
     `sug_obj`     varchar(20) NULL DEFAULT NULL COMMENT '建议对象',
     `clock`       varchar(20) NULL DEFAULT NULL COMMENT '查询时间',
-    `group_name`  varchar(20) NULL DEFAULT NULL COMMENT '分组名称',
-    `ind_name`    varchar(20) NULL DEFAULT NULL COMMENT '指标名称',
-    `ind_value`   varchar(20) NULL DEFAULT NULL COMMENT '偏差值',
-    `ind_unit`    varchar(20) NULL DEFAULT NULL COMMENT '单位',
+    `ind1_name`   varchar(20) NULL DEFAULT NULL COMMENT '一级指标-偏差值-名称',
+    `ind1_value`  varchar(20) NULL DEFAULT NULL COMMENT '一级指标-偏差值-值',
+    `ind1_unit`   varchar(20) NULL DEFAULT NULL COMMENT '一级指标-偏差值-单位',
+    `ind2_name`   varchar(20) NULL DEFAULT NULL COMMENT '二级指标-偏差值-名称',
+    `ind2_value`  varchar(20) NULL DEFAULT NULL COMMENT '二级指标-偏差值-值',
+    `ind2_unit`   varchar(20) NULL DEFAULT NULL COMMENT '二级指标-偏差值-单位',
+    `fac1_name`   varchar(20) NULL DEFAULT NULL COMMENT '影响因素1-偏差值-名称',
+    `fac1_value`  varchar(20) NULL DEFAULT NULL COMMENT '影响因素1-偏差值-值',
+    `fac1_unit`   varchar(20) NULL DEFAULT NULL COMMENT '影响因素1-偏差值-单位',
+    `fac2_name`   varchar(20) NULL DEFAULT NULL COMMENT '影响因素2-偏差值-名称',
+    `fac2_value`  varchar(20) NULL DEFAULT NULL COMMENT '影响因素2-偏差值-值',
+    `fac2_unit`   varchar(20) NULL DEFAULT NULL COMMENT '影响因素2-偏差值-单位',
+    `fac3_name`   varchar(20) NULL DEFAULT NULL COMMENT '影响因素3-偏差值-名称',
+    `fac3_value`  varchar(20) NULL DEFAULT NULL COMMENT '影响因素3-偏差值-值',
+    `fac3_unit`   varchar(20) NULL DEFAULT NULL COMMENT '影响因素4-偏差值-单位',
+    `fac4_name`   varchar(20) NULL DEFAULT NULL COMMENT '影响因素4-偏差值-名称',
+    `fac4_value`  varchar(20) NULL DEFAULT NULL COMMENT '影响因素4-偏差值-值',
+    `fac4_unit`   varchar(20) NULL DEFAULT NULL COMMENT '影响因素4-偏差值-单位',
+    `fac5_name`   varchar(20) NULL DEFAULT NULL COMMENT '影响因素5-偏差值-名称',
+    `fac5_value`  varchar(20) NULL DEFAULT NULL COMMENT '影响因素5-偏差值-值',
+    `fac5_unit`   varchar(20) NULL DEFAULT NULL COMMENT '影响因素5-偏差值-单位',
     `create_date` datetime COMMENT '创建时间',
     PRIMARY KEY (`id`) USING BTREE,
     key           idx_clock (clock)
 ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC COMMENT '焦化工序影响因数偏差值';
+
 
 -- ----------------------------
 -- 焦化工序-异常溯源折线图
@@ -553,16 +571,16 @@
 DROP TABLE IF EXISTS `t_coking_trace_data`;
 CREATE TABLE `t_coking_trace_data`
 (
-    `id`         varchar(36) NOT NULL COMMENT 'id',
-    `rel_id`     varchar(36) NULL DEFAULT NULL COMMENT '关联ID',
+    `id`          varchar(36) NOT NULL COMMENT 'id',
+    `rel_id`      varchar(36) NULL DEFAULT NULL COMMENT '关联ID',
     `process`     varchar(20) NULL DEFAULT NULL COMMENT '工序名称',
-    `ex_obj`     varchar(20) NULL DEFAULT NULL COMMENT '异常对象',
+    `ex_obj`      varchar(20) NULL DEFAULT NULL COMMENT '异常对象',
     `clock`       varchar(20) NULL DEFAULT NULL COMMENT '查询时间',
-    `data_type`  varchar(20) NULL DEFAULT NULL COMMENT '数据类型',
-    `point_no`   varchar(20) NULL DEFAULT NULL COMMENT '异常点位编号',
-    `point_name` varchar(20) NULL DEFAULT NULL COMMENT '异常点位名称',
-    `ex_time`    datetime NULL DEFAULT NULL COMMENT '异常时间',
-    `ex_type`    varchar(200) NULL DEFAULT NULL COMMENT '异常原因',
+    `data_type`   varchar(20) NULL DEFAULT NULL COMMENT '数据类型',
+    `point_no`    varchar(20) NULL DEFAULT NULL COMMENT '异常点位编号',
+    `point_name`  varchar(20) NULL DEFAULT NULL COMMENT '异常点位名称',
+    `ex_time`     datetime NULL DEFAULT NULL COMMENT '异常时间',
+    `ex_type`     varchar(200) NULL DEFAULT NULL COMMENT '异常原因',
     `create_date` datetime COMMENT '创建时间',
     PRIMARY KEY (`id`) USING BTREE,
     key           idx_rel_id (rel_id)
@@ -572,31 +590,32 @@
 -- 焦化工序-能耗整体情况
 -- ----------------------------
 DROP TABLE IF EXISTS `t_coking_overview`;
-CREATE TABLE `t_coking_overview` (
-                                     `id` varchar(36) COLLATE utf8mb4_general_ci NOT NULL COMMENT 'id',
-                                     `rel_id` varchar(36) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '关联ID',
-                                     `process_type` varchar(20) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '工序类型',
-                                     `sub_process_type` varchar(20) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '子工序类型',
-                                     `clock` varchar(20) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '查询时间',
-                                     `steam_p` decimal(10,4) DEFAULT NULL COMMENT '蒸汽发生',
-                                     `dj_steam_p` decimal(10,4) DEFAULT NULL COMMENT '吨焦产蒸汽',
-                                     `steam_c` decimal(10,4) DEFAULT NULL COMMENT '蒸汽消耗',
-                                     `steam_only_c` decimal(10,4) DEFAULT NULL COMMENT '蒸汽单耗',
-                                     `steam_v` decimal(10,4) DEFAULT NULL COMMENT '蒸汽量',
-                                     `gas_p` decimal(10,4) DEFAULT NULL COMMENT '煤气发生',
-                                     `gas_c` decimal(10,4) DEFAULT NULL COMMENT '煤气消耗',
-                                     `power_c` decimal(10,4) DEFAULT NULL COMMENT '电力消耗',
-                                     `power_only_c` decimal(10,4) DEFAULT NULL COMMENT '电力单耗',
-                                     `power_c_standard` decimal(10,4) DEFAULT NULL COMMENT '电耗基准',
-                                     `idle_time` decimal(10,4) DEFAULT NULL COMMENT '空转时间',
-                                     `bfg_c` decimal(10,4) DEFAULT NULL COMMENT 'BFG消耗',
-                                     `cog_p` decimal(10,4) DEFAULT NULL COMMENT 'COG回收',
-                                     `cog_c` decimal(10,4) DEFAULT NULL COMMENT 'COG消耗',
-                                     `bfg_only_c` decimal(10,4) DEFAULT NULL COMMENT 'BFG单耗',
-                                     `cog_only_c` decimal(10,4) DEFAULT NULL COMMENT 'COG单耗',
-                                     PRIMARY KEY (`id`) USING BTREE,
-                                     UNIQUE KEY `process_type_clock_unique` (`process_type`,`sub_process_type`,`clock`),
-                                     KEY `idx_rel_id` (`rel_id`)
+CREATE TABLE `t_coking_overview`
+(
+    `id`               varchar(36) COLLATE utf8mb4_general_ci NOT NULL COMMENT 'id',
+    `rel_id`           varchar(36) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '关联ID',
+    `process_type`     varchar(20) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '工序类型',
+    `sub_process_type` varchar(20) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '子工序类型',
+    `clock`            varchar(20) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '查询时间',
+    `steam_p`          decimal(10, 4)                         DEFAULT NULL COMMENT '蒸汽发生',
+    `dj_steam_p`       decimal(10, 4)                         DEFAULT NULL COMMENT '吨焦产蒸汽',
+    `steam_c`          decimal(10, 4)                         DEFAULT NULL COMMENT '蒸汽消耗',
+    `steam_only_c`     decimal(10, 4)                         DEFAULT NULL COMMENT '蒸汽单耗',
+    `steam_v`          decimal(10, 4)                         DEFAULT NULL COMMENT '蒸汽量',
+    `gas_p`            decimal(10, 4)                         DEFAULT NULL COMMENT '煤气发生',
+    `gas_c`            decimal(10, 4)                         DEFAULT NULL COMMENT '煤气消耗',
+    `power_c`          decimal(10, 4)                         DEFAULT NULL COMMENT '电力消耗',
+    `power_only_c`     decimal(10, 4)                         DEFAULT NULL COMMENT '电力单耗',
+    `power_c_standard` decimal(10, 4)                         DEFAULT NULL COMMENT '电耗基准',
+    `idle_time`        decimal(10, 4)                         DEFAULT NULL COMMENT '空转时间',
+    `bfg_c`            decimal(10, 4)                         DEFAULT NULL COMMENT 'BFG消耗',
+    `cog_p`            decimal(10, 4)                         DEFAULT NULL COMMENT 'COG回收',
+    `cog_c`            decimal(10, 4)                         DEFAULT NULL COMMENT 'COG消耗',
+    `bfg_only_c`       decimal(10, 4)                         DEFAULT NULL COMMENT 'BFG单耗',
+    `cog_only_c`       decimal(10, 4)                         DEFAULT NULL COMMENT 'COG单耗',
+    PRIMARY KEY (`id`) USING BTREE,
+    UNIQUE KEY `process_type_clock_unique` (`process_type`,`sub_process_type`,`clock`),
+    KEY                `idx_rel_id` (`rel_id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='工序概况情况';
 
 -- ----------------------------
@@ -637,20 +656,21 @@
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='月最大需量,实测需量,有功功率';
 
 ALTER TABLE `t_power_demand`
-    ADD COLUMN `code`  varchar(50) NULL DEFAULT NULL COMMENT '编号';
+    ADD COLUMN `code` varchar(50) NULL DEFAULT NULL COMMENT '编号';
 
-CREATE UNIQUE INDEX  `idx_code` ON t_power_demand(`code`);
+CREATE UNIQUE INDEX `idx_code` ON t_power_demand (`code`);
 
 -- ----------------------------
 -- 负荷移植-调整后的功率因数与无功倒送量
 -- ----------------------------
-CREATE TABLE `t_power_adjusted_factor` (
-                                           `id` varchar(36) NOT NULL,
-                                           `code` varchar(50) DEFAULT NULL COMMENT '编码',
-                                           `name` varchar(50) DEFAULT NULL COMMENT '名称',
-                                           `data_type`  varchar(20) NULL DEFAULT NULL COMMENT '数据类型',
-                                           `point_no` varchar(50) DEFAULT NULL COMMENT '点位',
-                                           `sort` varchar(50) DEFAULT NULL COMMENT '排序',
-                                           PRIMARY KEY (`id`),
-                                           UNIQUE key         uk_code (code)
+CREATE TABLE `t_power_adjusted_factor`
+(
+    `id`        varchar(36) NOT NULL,
+    `code`      varchar(50) DEFAULT NULL COMMENT '编码',
+    `name`      varchar(50) DEFAULT NULL COMMENT '名称',
+    `data_type` varchar(20) NULL DEFAULT NULL COMMENT '数据类型',
+    `point_no`  varchar(50) DEFAULT NULL COMMENT '点位',
+    `sort`      varchar(50) DEFAULT NULL COMMENT '排序',
+    PRIMARY KEY (`id`),
+    UNIQUE key uk_code (code)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='调整后的功率因数与无功倒送量';
\ No newline at end of file
diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/dto/CokingTraceDeviationDTO.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/dto/CokingTraceDeviationDTO.java
index 2014f4e..33f807f 100644
--- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/dto/CokingTraceDeviationDTO.java
+++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/dto/CokingTraceDeviationDTO.java
@@ -33,17 +33,68 @@
 	@Schema(description = "查询时间")
 	private String clock;
 
-	@Schema(description = "分组名称")
-	private String groupName;
+	@Schema(description = "一级指标-偏差值-名称")
+	private String ind1Name;
 
-	@Schema(description = "指标名称")
-	private String indName;
+	@Schema(description = "一级指标-偏差值-值")
+	private String ind1Value;
 
-	@Schema(description = "偏差值")
-	private String indValue;
+	@Schema(description = "一级指标-偏差值-单位")
+	private String ind1Unit;
 
-	@Schema(description = "单位")
-	private String indUnit;
+	@Schema(description = "二级指标-偏差值-名称")
+	private String ind2Name;
+
+	@Schema(description = "二级指标-偏差值-值")
+	private String ind2Value;
+
+	@Schema(description = "二级指标-偏差值-单位")
+	private String ind2Unit;
+
+	@Schema(description = "影响因素1-偏差值-名称")
+	private String fac1Name;
+
+	@Schema(description = "影响因素1-偏差值-值")
+	private String fac1Value;
+
+	@Schema(description = "影响因素1-偏差值-单位")
+	private String fac1Unit;
+
+	@Schema(description = "影响因素2-偏差值-名称")
+	private String fac2Name;
+
+	@Schema(description = "影响因素2-偏差值-值")
+	private String fac2Value;
+
+	@Schema(description = "影响因素2-偏差值-单位")
+	private String fac2Unit;
+
+	@Schema(description = "影响因素3-偏差值-名称")
+	private String fac3Name;
+
+	@Schema(description = "影响因素3-偏差值-值")
+	private String fac3Value;
+
+	@Schema(description = "影响因素3-偏差值-单位")
+	private String fac3Unit;
+
+	@Schema(description = "影响因素4-偏差值-名称")
+	private String fac4Name;
+
+	@Schema(description = "影响因素4-偏差值-值")
+	private String fac4Value;
+
+	@Schema(description = "影响因素4-偏差值-单位")
+	private String fac4Unit;
+
+	@Schema(description = "影响因素5-偏差值-名称")
+	private String fac5Name;
+
+	@Schema(description = "影响因素5-偏差值-值")
+	private String fac5Value;
+
+	@Schema(description = "影响因素5-偏差值-单位")
+	private String fac5Unit;
 
 	@Schema(description = "创建时间")
 	private Date createDate;
diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/entity/CokingTraceDeviationEntity.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/entity/CokingTraceDeviationEntity.java
index 32fab94..cac87a7 100644
--- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/entity/CokingTraceDeviationEntity.java
+++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/coking/entity/CokingTraceDeviationEntity.java
@@ -18,15 +18,15 @@
 public class CokingTraceDeviationEntity {
 
     @TableId(type = IdType.ASSIGN_UUID)
-	private String id;
+    private String id;
     /**
      * 关联ID
      */
-	private String relId;
+    private String relId;
     /**
      * 工序名称
      */
-	private String process;
+    private String process;
     /**
      * 建议对象
      */
@@ -34,25 +34,102 @@
     /**
      * 查询时间
      */
-	private String clock;
+    private String clock;
     /**
-     * 分组名称
+     * 一级指标-偏差值-名称
      */
-	private String groupName;
+    private String ind1Name;
     /**
-     * 指标名称
+     * 一级指标-偏差值-值
      */
-	private String indName;
+    private String ind1Value;
     /**
-     * 偏差值
+     * 一级指标-偏差值-单位
      */
-	private String indValue;
+    private String ind1Unit;
+
+
     /**
-     * 单位
+     * 二级指标-偏差值-名称
      */
-	private String indUnit;
+    private String ind2Name;
+    /**
+     * 二级指标-偏差值-值
+     */
+    private String ind2Value;
+    /**
+     * 二级指标-偏差值-单位
+     */
+    private String ind2Unit;
+
+    /**
+     * 影响因素1-偏差值-名称
+     */
+    private String fac1Name;
+    /**
+     * 影响因素1-偏差值-值
+     */
+    private String fac1Value;
+    /**
+     * 影响因素1-偏差值-单位
+     */
+    private String fac1Unit;
+
+    /**
+     * 影响因素2-偏差值-名称
+     */
+    private String fac2Name;
+    /**
+     * 影响因素2-偏差值-值
+     */
+    private String fac2Value;
+    /**
+     * 影响因素2-偏差值-单位
+     */
+    private String fac2Unit;
+
+    /**
+     * 影响因素3-偏差值-名称
+     */
+    private String fac3Name;
+    /**
+     * 影响因素3-偏差值-值
+     */
+    private String fac3Value;
+    /**
+     * 影响因素3-偏差值-单位
+     */
+    private String fac3Unit;
+
+    /**
+     * 影响因素4-偏差值-名称
+     */
+    private String fac4Name;
+    /**
+     * 影响因素4-偏差值-值
+     */
+    private String fac4Value;
+    /**
+     * 影响因素4-偏差值-单位
+     */
+    private String fac4Unit;
+
+    /**
+     * 影响因素5-偏差值-名称
+     */
+    private String fac5Name;
+    /**
+     * 影响因素5-偏差值-值
+     */
+    private String fac5Value;
+    /**
+     * 影响因素5-偏差值-单位
+     */
+    private String fac5Unit;
+
+
     /**
      * 创建时间
      */
-	private Date createDate;
+    private Date createDate;
 }
\ No newline at end of file
diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelBMTask.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelBMTask.java
index c07ec92..d62de28 100644
--- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelBMTask.java
+++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelBMTask.java
@@ -19,6 +19,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -72,6 +73,8 @@
 
     private final static String indType = "备煤工序异常溯源";
 
+    private final static String coalRow = "coalRow";
+
     private static final HashMap<String, Object> coalColoumMap = new HashMap<String, Object>() {{
         put("coalColoum0", "一级指标-偏差值");
         put("coalColoum1", "二级指标-偏差值");
@@ -88,9 +91,9 @@
             "\"coalPrepElecIndex\":[[0.8,0.73],[723,608],[1782,1782],[752,743],[729,783]],\n" +
             "\"coalPrepElecTotal1\":\"1#粉碎机耗电因粉碎机偏高增加220KW/h,经模型计算,建建议调整单班用煤量,预计可使粉碎机耗电量指标降低170KW/h\",\n" +
             "\"coalPrepElecTotal2\":\"1#粉碎机耗电量数据异常\",\n" +
-            "\"coalColoum0\":[[0,450],[0,137],[0,342]],\n" +
-            "\"coalColoum1\":[[2,306],[3,134],[1,142]],\n" +
-            "\"coalColoum2\":[[4,142],[4,132],[4,349]],\n" +
+            "\"coalRow0\":[[0,450],[0,137],[0,342]],\n" +
+            "\"coalRow1\":[[0,450],[3,134],[1,142]],\n" +
+            "\"coalRow2\":[[4,142],[4,132],[4,349]],\n" +
             "\"coalPrepElecHomePage\":[[50,42],[10,10]],\n" +
             "\"coalHomeIndex\":[[90.4,90.2],[80.3,78],[103,100],[280,270]],\n" +
             "\"coalIndexInfo\":\"2月18日甲班:备煤耗电异常\",\n" +
@@ -190,27 +193,64 @@
     public void saveTraceDeviation(String relId, String process, String clock, JSONObject result) {
         List<ChartParamDTO> list = mcsApi.getChartParamList(CommonConstant.COAL_INDEX_CHARTCODE);
         Map<String, String> steamIndexMaps = list.stream().collect(Collectors.toMap(ChartParamDTO::getParamCode, e -> e.getParamName()));
-        for (int i = 0; i <= 2; i++) {
-            String coalColoum = result.get("coalColoum" + i).toString();
-            if (StringUtils.isNotBlank(coalColoum)) {
-                JSONArray responseArr = JSON.parseArray(coalColoum);
-                List<CokingTraceDeviationEntity> entityList = new ArrayList<>();
-                for (int j = 0; j < responseArr.size(); j++) {
-                    JSONArray element = JSON.parseArray(responseArr.get(j).toString());
-                    CokingTraceDeviationEntity deviationEntity = new CokingTraceDeviationEntity();
-                    deviationEntity.setRelId(relId);
-                    deviationEntity.setProcess(process);
-                    deviationEntity.setClock(clock);
-                    deviationEntity.setSugObj(SugObj);
-                    deviationEntity.setGroupName(coalColoumMap.get("coalColoum" + i).toString());
-                    deviationEntity.setIndName(steamIndexMaps.get(element.get(0).toString()));
-                    deviationEntity.setIndValue(element.get(1).toString());
-                    deviationEntity.setCreateDate(new Date());
-                    entityList.add(deviationEntity);
-                }
-                cokingTraceDeviationService.save(entityList);
+
+        List<String> coalRowKeys = new ArrayList<>();
+        result.forEach((key, value) -> {
+            if (StringUtils.isBlank(key) && key.contains(coalRow)) {
+                coalRowKeys.add(key);
             }
+
+        });
+
+        List<CokingTraceDeviationEntity> entityList = new ArrayList<>();
+        for (String key : coalRowKeys) {
+            JSONArray rowArr = JSON.parseArray(result.get(key).toString());
+            if (CollectionUtils.isEmpty(rowArr)) {
+                continue;
+            }
+            CokingTraceDeviationEntity entity = new CokingTraceDeviationEntity();
+            entity.setRelId(relId);
+            entity.setProcess(process);
+            entity.setClock(clock);
+            entity.setSugObj(SugObj);
+
+            entity.setInd1Name(steamIndexMaps.get(rowArr.getJSONArray(0).get(0).toString()));
+            entity.setInd1Value(rowArr.getJSONArray(0).get(1).toString());
+            entity.setInd1Unit("");
+
+            entity.setInd2Name(steamIndexMaps.get(rowArr.getJSONArray(1).get(0).toString()));
+            entity.setInd2Value(rowArr.getJSONArray(1).get(1).toString());
+            entity.setInd2Unit("");
+
+            if (rowArr.size() > 2) {
+                entity.setFac1Name(steamIndexMaps.get(rowArr.getJSONArray(2).get(0).toString()));
+                entity.setFac1Value(rowArr.getJSONArray(2).get(1).toString());
+                entity.setFac1Unit("");
+            }
+            if (rowArr.size() > 3) {
+                entity.setFac2Name(steamIndexMaps.get(rowArr.getJSONArray(3).get(0).toString()));
+                entity.setFac2Value(rowArr.getJSONArray(3).get(1).toString());
+                entity.setFac2Unit("");
+            }
+            if (rowArr.size() > 4) {
+                entity.setFac3Name(steamIndexMaps.get(rowArr.getJSONArray(4).get(0).toString()));
+                entity.setFac3Value(rowArr.getJSONArray(4).get(1).toString());
+                entity.setFac3Unit("");
+            }
+            if (rowArr.size() > 5) {
+                entity.setFac4Name(steamIndexMaps.get(rowArr.getJSONArray(5).get(0).toString()));
+                entity.setFac4Value(rowArr.getJSONArray(5).get(1).toString());
+                entity.setFac4Unit("");
+            }
+            if (rowArr.size() > 6) {
+                entity.setFac5Name(steamIndexMaps.get(rowArr.getJSONArray(6).get(0).toString()));
+                entity.setFac5Value(rowArr.getJSONArray(6).get(1).toString());
+                entity.setFac5Unit("");
+            }
+            entityList.add(entity);
         }
+
+        cokingTraceDeviationService.save(entityList);
     }
 
     public void saveAnalyInd(String relId, String process, String analyDate, String analyClass, String analyContent) {
diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelGXJTask.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelGXJTask.java
index e7bed8b..423463e 100644
--- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelGXJTask.java
+++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelGXJTask.java
@@ -19,6 +19,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -51,22 +52,16 @@
     private CokingTraceIndService cokingTraceIndService;
 
     @Autowired
-    private CokingTraceConfService cokingTraceConfService;
-
-    @Autowired
     private McsApi mcsApi;
-
-    @Autowired
-    private DataPointApi dataPointApi;
-
-    @Autowired
-    private IndItemApi indItemApi;
 
     private final static String process = "干熄焦工序";
 
     private final static String reportName = "干熄焦工序异常溯源";
 
     private final static String indType = "干熄焦工序异常溯源";
+
+    private final static String steamRow = "steamRow";
+
     private static final HashMap<String, Object> steamFirstColoumMap = new HashMap<String, Object>() {{
         put("steamFirstColoum0", "一级指标-偏差值");
         put("steamFirstColoum1", "二级指标-偏差值");
@@ -88,12 +83,12 @@
     private static final String jsonStr="{\"result\":{" +
             "      \"steamTotal1\":\"2#干熄焦蒸汽发生量因空气导入量偏高、锅炉入口温度偏低而减少13t,经模型计算,建议调整空气导入量,预计可使主蒸汽流量指标升高20m3/h\",\n" +
             "      \"steamTotal2\":\"2#干熄焦蒸汽发生量因空气导入量偏高、锅炉入口温度偏低而减少13m3/h,经模型计算,建议调整循环风机转速,预计可使主蒸汽流量指标升高32m3/h\",\n" +
-            "      \"steamFirstColoum0\":[[14,20],[14,30],[14,35]],\n" +
-            "      \"steamFirstColoum1\":[[10,5],[11,15],[21,20]],\n" +
-            "      \"steamFirstColoum2\":[[74,8],[36,18],[35,34]],\n" +
-            "      \"steamFirstColoum3\":[[24,67],[6,12],[19,21]],\n" +
-            "      \"steamFirstColoum4\":[[21,19],[22,31],[8,42]],\n" +
-            "      \"steamFirstColoum5\":[[11,45],[9,62],[18,34]],\n" +
+            "      \"steamRow0\":[[14,20],[14,30],[14,35]],\n" +
+            "      \"steamRow1\":[[10,5],[11,15],[21,20]],\n" +
+            "      \"steamRow2\":[[74,8],[36,18],[35,34]],\n" +
+            "      \"steamRow3\":[[24,67],[6,12],[19,21]],\n" +
+            "      \"steamRow4\":[[21,19],[22,31],[8,42]],\n" +
+            "      \"steamRow5\":[[11,45],[9,62],[18,34]],\n" +
             "      \"steamSecondColoum0\":[[14,20],[14,50],[14,13]],\n" +
             "      \"steamSecondColoum1\":[[11,27],[10,35],[22,16]],\n" +
             "      \"steamSecondColoum2\":[[36,90],[35,34],[74,55]],\n" +
@@ -196,51 +191,66 @@
 
     @Transactional
     public void saveTraceDeviation(String relId, String process, String clock, JSONObject result) {
-        List<ChartParamDTO> list = mcsApi.getChartParamList(CommonConstant.STEAM_INDEX_CHARTCODE);
+        List<ChartParamDTO> list = mcsApi.getChartParamList(CommonConstant.COAL_INDEX_CHARTCODE);
         Map<String, String> steamIndexMaps = list.stream().collect(Collectors.toMap(ChartParamDTO::getParamCode, e -> e.getParamName()));
-        for(int i=0;i<=5;i++){
-            String steamFirstColoum = result.get("steamFirstColoum"+i).toString();
-            if(StringUtils.isNotBlank(steamFirstColoum)){
-                JSONArray responseArr = JSON.parseArray(steamFirstColoum);
-                List<CokingTraceDeviationEntity> entityList = new ArrayList<>();
-                for (int j = 0; j < responseArr.size(); j++) {
-                    JSONArray element = JSON.parseArray(responseArr.get(j).toString());
-                    CokingTraceDeviationEntity deviationEntity = new CokingTraceDeviationEntity();
-                    deviationEntity.setRelId(relId);
-                    deviationEntity.setProcess(process);
-                    deviationEntity.setClock(clock);
-                    deviationEntity.setSugObj("1#");
-                    deviationEntity.setGroupName(steamFirstColoumMap.get("steamFirstColoum"+i).toString());
-                    deviationEntity.setIndName(steamIndexMaps.get(element.get(0).toString()));
-                    deviationEntity.setIndValue(element.get(1).toString());
-                    deviationEntity.setCreateDate(new Date());
-                    entityList.add(deviationEntity);
-                }
-                cokingTraceDeviationService.save(entityList);
+
+        List<String> coalRowKeys = new ArrayList<>();
+        result.forEach((key, value) -> {
+            if (StringUtils.isBlank(key) && key.contains(steamRow)) {
+                coalRowKeys.add(key);
             }
-        }
-        for(int i=0;i<=5;i++){
-            String steamSecondColoum = result.get("steamSecondColoum"+i).toString();
-            if(StringUtils.isNotBlank(steamSecondColoum)){
-                JSONArray responseArr = JSON.parseArray(steamSecondColoum);
-                List<CokingTraceDeviationEntity> entityList = new ArrayList<>();
-                for (int j = 0; j < responseArr.size(); j++) {
-                    JSONArray element = JSON.parseArray(responseArr.get(j).toString());
-                    CokingTraceDeviationEntity deviationEntity = new CokingTraceDeviationEntity();
-                    deviationEntity.setRelId(relId);
-                    deviationEntity.setProcess(process);
-                    deviationEntity.setClock(clock);
-                    deviationEntity.setSugObj("2#");
-                    deviationEntity.setGroupName(steamSecondColoumMap.get("steamSecondColoum" + i).toString());
-                    deviationEntity.setIndName(steamIndexMaps.get(element.get(0).toString()));
-                    deviationEntity.setIndValue(element.get(1).toString());
-                    deviationEntity.setCreateDate(new Date());
-                    entityList.add(deviationEntity);
-                }
-                cokingTraceDeviationService.save(entityList);
+
+        });
+
+        List<CokingTraceDeviationEntity> entityList = new ArrayList<>();
+        for (String key : coalRowKeys) {
+            JSONArray rowArr = JSON.parseArray(result.get(key).toString());
+            if (CollectionUtils.isEmpty(rowArr)) {
+                continue;
             }
+            CokingTraceDeviationEntity entity = new CokingTraceDeviationEntity();
+            entity.setRelId(relId);
+            entity.setProcess(process);
+            entity.setClock(clock);
+            entity.setSugObj("");
+
+            entity.setInd1Name(steamIndexMaps.get(rowArr.getJSONArray(0).get(0).toString()));
+            entity.setInd1Value(rowArr.getJSONArray(0).get(1).toString());
+            entity.setInd1Unit("");
+
+            entity.setInd2Name(steamIndexMaps.get(rowArr.getJSONArray(1).get(0).toString()));
+            entity.setInd2Value(rowArr.getJSONArray(1).get(1).toString());
+            entity.setInd2Unit("");
+
+            if (rowArr.size() > 2) {
+                entity.setFac1Name(steamIndexMaps.get(rowArr.getJSONArray(2).get(0).toString()));
+                entity.setFac1Value(rowArr.getJSONArray(2).get(1).toString());
+                entity.setFac1Unit("");
+            }
+            if (rowArr.size() > 3) {
+                entity.setFac2Name(steamIndexMaps.get(rowArr.getJSONArray(3).get(0).toString()));
+                entity.setFac2Value(rowArr.getJSONArray(3).get(1).toString());
+                entity.setFac2Unit("");
+            }
+            if (rowArr.size() > 4) {
+                entity.setFac3Name(steamIndexMaps.get(rowArr.getJSONArray(4).get(0).toString()));
+                entity.setFac3Value(rowArr.getJSONArray(4).get(1).toString());
+                entity.setFac3Unit("");
+            }
+            if (rowArr.size() > 5) {
+                entity.setFac4Name(steamIndexMaps.get(rowArr.getJSONArray(5).get(0).toString()));
+                entity.setFac4Value(rowArr.getJSONArray(5).get(1).toString());
+                entity.setFac4Unit("");
+            }
+            if (rowArr.size() > 6) {
+                entity.setFac5Name(steamIndexMaps.get(rowArr.getJSONArray(6).get(0).toString()));
+                entity.setFac5Value(rowArr.getJSONArray(6).get(1).toString());
+                entity.setFac5Unit("");
+            }
+            entityList.add(entity);
         }
 
+        cokingTraceDeviationService.save(entityList);
     }
 
     public void saveAnalyInd(String relId, String process, String analyDate, String analyClass, String analyContent) {
diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelHCTask.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelHCTask.java
index b62563e..07e4cb6 100644
--- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelHCTask.java
+++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelHCTask.java
@@ -7,10 +7,6 @@
 import com.iailab.module.ansteel.coking.entity.*;
 import com.iailab.module.ansteel.coking.service.*;
 import com.iailab.module.ansteel.common.constant.CommonConstant;
-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;
-import com.iailab.module.data.api.point.DataPointApi;
 import com.iailab.module.model.api.mcs.McsApi;
 import com.iailab.module.model.api.mcs.dto.ChartParamDTO;
 import org.apache.commons.lang3.StringUtils;
@@ -64,6 +60,8 @@
 
     private final static String indType = "化产工序异常溯源";
 
+    private final static String chemProdRow = "chemProdRow";
+
     private static final HashMap<String, Object> chemProdColoumMap = new HashMap<String, Object>() {{
         put("chemProdFirstColoum0", "一级指标-偏差值");
         put("chemProdFirstColoum1", "二级指标-偏差值");
@@ -82,9 +80,9 @@
             "\"chemProdSteam\":[[33836,33925]],  \n" +
             "\"chemProdIndex\":[[352,355],[68,66.3],[82.5,87.6],[50.7,56.5],[73.5,73.1]],\n" +
             "\"chemProdTotal\":\"蒸汽消耗量异常,当前值1342,经模型计算,指标1异常,当前值1342,建议调整指标1至区间[90,110],指标2异常,当前值1342,建议调整指标2至区间[50,80]\",\n" +
-            "\"chemProdFirstColoum0\":[[0,42]],\n" + "      " +
-            "\"chemProdFirstColoum1\":[[5,1342],[7,1342],[9,1342]],\n" +
-            "\"chemProdFirstColoum2\":[[5,10,1342],[5,16,1342],[7,18,1342]],\n" +
+            "\"chemProdRow0\":[[0,42]],\n" + "      " +
+            "\"chemProdRow1\":[[5,1342],[7,1342],[9,1342]],\n" +
+            "\"chemProdRow2\":[[5,10,1342],[5,16,1342],[7,18,1342]],\n" +
             "\"chemProdHomePage\":[[9,1342],[9,1342]],\n" +
             "\"chemProdHomeIndex\":[[90.4,90.2],[80.3,78],[103,100],[280,270]],\n" +
             "\"chemProdHomeIndexInfo\":\"2月18日甲班:化产蒸汽消耗量异常\",\n" +
@@ -181,29 +179,66 @@
 
     @Transactional
     public void saveTraceDeviation(String relId, String process, String clock, JSONObject result) {
-        List<ChartParamDTO> list = mcsApi.getChartParamList(CommonConstant.CHEMPROD_INDEX_CHARTCODE);
+        List<ChartParamDTO> list = mcsApi.getChartParamList(CommonConstant.COAL_INDEX_CHARTCODE);
         Map<String, String> steamIndexMaps = list.stream().collect(Collectors.toMap(ChartParamDTO::getParamCode, e -> e.getParamName()));
-        for (int i = 0; i <= 2; i++) {
-            String chemProdFirstColoum = result.get("chemProdFirstColoum" + i).toString();
-            if (StringUtils.isNotBlank(chemProdFirstColoum)) {
-                JSONArray responseArr = JSON.parseArray(chemProdFirstColoum);
-                List<CokingTraceDeviationEntity> cokingTraceDeviationEntities = new ArrayList<>();
-                for (int j = 0; j < responseArr.size(); j++) {
-                    JSONArray element = JSON.parseArray(responseArr.get(j).toString());
-                    CokingTraceDeviationEntity deviationEntity = new CokingTraceDeviationEntity();
-                    deviationEntity.setRelId(relId);
-                    deviationEntity.setProcess(process);
-                    deviationEntity.setClock(clock);
-                    deviationEntity.setSugObj(SugObj);
-                    deviationEntity.setGroupName(chemProdColoumMap.get("chemProdFirstColoum" + i).toString());
-                    deviationEntity.setIndName(steamIndexMaps.get(element.get(0).toString()));
-                    deviationEntity.setIndValue(element.get(1).toString());
-                    deviationEntity.setCreateDate(new Date());
-                    cokingTraceDeviationEntities.add(deviationEntity);
-                }
-                cokingTraceDeviationService.save(cokingTraceDeviationEntities);
+
+        List<String> coalRowKeys = new ArrayList<>();
+        result.forEach((key, value) -> {
+            if (StringUtils.isBlank(key) && key.contains(chemProdRow)) {
+                coalRowKeys.add(key);
             }
+
+        });
+
+        List<CokingTraceDeviationEntity> entityList = new ArrayList<>();
+        for (String key : coalRowKeys) {
+            JSONArray rowArr = JSON.parseArray(result.get(key).toString());
+            if (CollectionUtils.isEmpty(rowArr)) {
+                continue;
+            }
+            CokingTraceDeviationEntity entity = new CokingTraceDeviationEntity();
+            entity.setRelId(relId);
+            entity.setProcess(process);
+            entity.setClock(clock);
+            entity.setSugObj(SugObj);
+
+            entity.setInd1Name(steamIndexMaps.get(rowArr.getJSONArray(0).get(0).toString()));
+            entity.setInd1Value(rowArr.getJSONArray(0).get(1).toString());
+            entity.setInd1Unit("");
+
+            entity.setInd2Name(steamIndexMaps.get(rowArr.getJSONArray(1).get(0).toString()));
+            entity.setInd2Value(rowArr.getJSONArray(1).get(1).toString());
+            entity.setInd2Unit("");
+
+            if (rowArr.size() > 2) {
+                entity.setFac1Name(steamIndexMaps.get(rowArr.getJSONArray(2).get(0).toString()));
+                entity.setFac1Value(rowArr.getJSONArray(2).get(1).toString());
+                entity.setFac1Unit("");
+            }
+            if (rowArr.size() > 3) {
+                entity.setFac2Name(steamIndexMaps.get(rowArr.getJSONArray(3).get(0).toString()));
+                entity.setFac2Value(rowArr.getJSONArray(3).get(1).toString());
+                entity.setFac2Unit("");
+            }
+            if (rowArr.size() > 4) {
+                entity.setFac3Name(steamIndexMaps.get(rowArr.getJSONArray(4).get(0).toString()));
+                entity.setFac3Value(rowArr.getJSONArray(4).get(1).toString());
+                entity.setFac3Unit("");
+            }
+            if (rowArr.size() > 5) {
+                entity.setFac4Name(steamIndexMaps.get(rowArr.getJSONArray(5).get(0).toString()));
+                entity.setFac4Value(rowArr.getJSONArray(5).get(1).toString());
+                entity.setFac4Unit("");
+            }
+            if (rowArr.size() > 6) {
+                entity.setFac5Name(steamIndexMaps.get(rowArr.getJSONArray(6).get(0).toString()));
+                entity.setFac5Value(rowArr.getJSONArray(6).get(1).toString());
+                entity.setFac5Unit("");
+            }
+            entityList.add(entity);
         }
+
+        cokingTraceDeviationService.save(entityList);
     }
 
     public void saveAnalyInd(String relId, String process, String analyDate, String analyClass, String analyContent) {
diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelLJTask.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelLJTask.java
index 46e165f..eb85583 100644
--- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelLJTask.java
+++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingTraceModelLJTask.java
@@ -9,8 +9,6 @@
 import com.iailab.module.ansteel.coking.entity.CokingTraceSuggestEntity;
 import com.iailab.module.ansteel.coking.service.*;
 import com.iailab.module.ansteel.common.constant.CommonConstant;
-import com.iailab.module.data.api.ind.IndItemApi;
-import com.iailab.module.data.api.point.DataPointApi;
 import com.iailab.module.model.api.mcs.McsApi;
 import com.iailab.module.model.api.mcs.dto.ChartParamDTO;
 import org.apache.commons.lang3.StringUtils;
@@ -19,6 +17,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -50,19 +49,10 @@
     private CokingTraceIndService cokingTraceIndService;
 
     @Autowired
-    private CokingTraceConfService cokingTraceConfService;
-
-    @Autowired
     private CokingTraceChartService cokingTraceChartService;
 
     @Autowired
     private McsApi mcsApi;
-
-    @Autowired
-    private DataPointApi dataPointApi;
-
-    @Autowired
-    private IndItemApi indItemApi;
 
     private final static String process = "炼焦工序";
 
@@ -71,6 +61,8 @@
     private final static String SugObj = "LJ";
 
     private final static String indType = "炼焦工序异常溯源";
+
+    private final static String cokeRow = "cokeRow";
 
     private static final HashMap<String, Object> cokeColoumMap = new HashMap<String, Object>() {{
         put("cokeColoum0", "一级指标-偏差值");
@@ -92,12 +84,12 @@
             "\"cokeHeat\":[3.7,3.8],\n" + "      " +
             "\"cokeIndex\":[[0.8,0.7],[608,608],[1440,1460],[1346,1293],[0.8,0.7],[1372,1293]],\n" + "      " +
             "\"cokeTotal\":\"炼焦吨焦耗热量因煤气流量偏高、煤气水分偏低而增加23,经模型计算,延建议调整煤气流量,预计可使吨焦耗热量指标降低17\",\n" + "      " +
-            "\"cokeColoum0\":[[0,13],[0,42],[0,34]],\n" + "      " +
-            "\"cokeColoum1\":[[13,12],[12,34],[24,42]],\n" + "     " +
-            "\"cokeColoum2\":[[27,45],[58,42],[70,31]],\n" + "      " +
-            "\"cokeColoum3\":[[108,56],[110,89],[185,21]],\n" + "      " +
-            "\"cokeColoum4\":[[199,13],[200,51],[197,34]],\n" + "      " +
-            "\"cokeColoum5\":[[147,33],[131,12],[122,13]],\n" + "      " +
+            "\"cokeRow0\":[[0,13],[0,42],[0,34]],\n" + "      " +
+            "\"cokeRow1\":[[13,12],[12,34],[24,42]],\n" + "     " +
+            "\"cokeRow2\":[[27,45],[58,42],[70,31]],\n" + "      " +
+            "\"cokeRow3\":[[108,56],[110,89],[185,21]],\n" + "      " +
+            "\"cokeRow4\":[[199,13],[200,51],[197,34]],\n" + "      " +
+            "\"cokeRow5\":[[147,33],[131,12],[122,13]],\n" + "      " +
             "\"cokeHomePage\":[[202,42],[203,13],[204,45],[205,34],[206,17]],\n" + "      " +
             "\"cokeHomeIndex\":[[90.4,90.2],[80.3,78],[103,100],[280,270]],\n" + "      " +
             "\"cokeHomeIndexInfo\":\"2月18日甲班:吨焦耗热量异常\",\n" + "      " +
@@ -194,29 +186,66 @@
 
     @Transactional
     public void saveTraceDeviation(String relId, String process, String clock, JSONObject result) {
-        List<ChartParamDTO> list = mcsApi.getChartParamList(CommonConstant.COKE_INDEX_CHARTCODE);
+        List<ChartParamDTO> list = mcsApi.getChartParamList(CommonConstant.COAL_INDEX_CHARTCODE);
         Map<String, String> steamIndexMaps = list.stream().collect(Collectors.toMap(ChartParamDTO::getParamCode, e -> e.getParamName()));
-        for (int i = 0; i <= 5; i++) {
-            String cokeColoum = result.get("cokeColoum" + i).toString();
-            if (StringUtils.isNotBlank(cokeColoum)) {
-                JSONArray responseArr = JSON.parseArray(cokeColoum);
-                List<CokingTraceDeviationEntity> entityList = new ArrayList<>();
-                for (int j = 0; j < responseArr.size(); j++) {
-                    JSONArray element = JSON.parseArray(responseArr.get(j).toString());
-                    CokingTraceDeviationEntity deviationEntity = new CokingTraceDeviationEntity();
-                    deviationEntity.setRelId(relId);
-                    deviationEntity.setProcess(process);
-                    deviationEntity.setClock(clock);
-                    deviationEntity.setSugObj(SugObj);
-                    deviationEntity.setGroupName(cokeColoumMap.get("cokeColoum" + i).toString());
-                    deviationEntity.setIndName(steamIndexMaps.get(element.get(0).toString()));
-                    deviationEntity.setIndValue(element.get(1).toString());
-                    deviationEntity.setCreateDate(new Date());
-                    entityList.add(deviationEntity);
-                }
-                cokingTraceDeviationService.save(entityList);
+
+        List<String> coalRowKeys = new ArrayList<>();
+        result.forEach((key, value) -> {
+            if (StringUtils.isBlank(key) && key.contains(cokeRow)) {
+                coalRowKeys.add(key);
             }
+
+        });
+
+        List<CokingTraceDeviationEntity> entityList = new ArrayList<>();
+        for (String key : coalRowKeys) {
+            JSONArray rowArr = JSON.parseArray(result.get(key).toString());
+            if (CollectionUtils.isEmpty(rowArr)) {
+                continue;
+            }
+            CokingTraceDeviationEntity entity = new CokingTraceDeviationEntity();
+            entity.setRelId(relId);
+            entity.setProcess(process);
+            entity.setClock(clock);
+            entity.setSugObj(SugObj);
+
+            entity.setInd1Name(steamIndexMaps.get(rowArr.getJSONArray(0).get(0).toString()));
+            entity.setInd1Value(rowArr.getJSONArray(0).get(1).toString());
+            entity.setInd1Unit("");
+
+            entity.setInd2Name(steamIndexMaps.get(rowArr.getJSONArray(1).get(0).toString()));
+            entity.setInd2Value(rowArr.getJSONArray(1).get(1).toString());
+            entity.setInd2Unit("");
+
+            if (rowArr.size() > 2) {
+                entity.setFac1Name(steamIndexMaps.get(rowArr.getJSONArray(2).get(0).toString()));
+                entity.setFac1Value(rowArr.getJSONArray(2).get(1).toString());
+                entity.setFac1Unit("");
+            }
+            if (rowArr.size() > 3) {
+                entity.setFac2Name(steamIndexMaps.get(rowArr.getJSONArray(3).get(0).toString()));
+                entity.setFac2Value(rowArr.getJSONArray(3).get(1).toString());
+                entity.setFac2Unit("");
+            }
+            if (rowArr.size() > 4) {
+                entity.setFac3Name(steamIndexMaps.get(rowArr.getJSONArray(4).get(0).toString()));
+                entity.setFac3Value(rowArr.getJSONArray(4).get(1).toString());
+                entity.setFac3Unit("");
+            }
+            if (rowArr.size() > 5) {
+                entity.setFac4Name(steamIndexMaps.get(rowArr.getJSONArray(5).get(0).toString()));
+                entity.setFac4Value(rowArr.getJSONArray(5).get(1).toString());
+                entity.setFac4Unit("");
+            }
+            if (rowArr.size() > 6) {
+                entity.setFac5Name(steamIndexMaps.get(rowArr.getJSONArray(6).get(0).toString()));
+                entity.setFac5Value(rowArr.getJSONArray(6).get(1).toString());
+                entity.setFac5Unit("");
+            }
+            entityList.add(entity);
         }
+
+        cokingTraceDeviationService.save(entityList);
     }
 
     public void saveAnalyInd(String relId, String process, String analyDate, String analyClass, String analyContent) {

--
Gitblit v1.9.3