From 0d7505f8301d2721edfa031d5f4ebf82b2d02a17 Mon Sep 17 00:00:00 2001
From: 潘志宝 <979469083@qq.com>
Date: 星期五, 09 五月 2025 10:27:00 +0800
Subject: [PATCH] Merge branch 'master' of http://dlindusit.com:53929/r/ansteel

---
 ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingMainTask.java |   98 ++++++++++++++++++++++++++++++++++++------------
 1 files changed, 73 insertions(+), 25 deletions(-)

diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingMainTask.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingMainTask.java
index 254e305..2336153 100644
--- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingMainTask.java
+++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingMainTask.java
@@ -4,6 +4,8 @@
 import com.iailab.module.ansteel.coking.entity.*;
 import com.iailab.module.ansteel.coking.service.*;
 import com.iailab.module.ansteel.common.enums.ProcessConfDataTypeEnum;
+import com.iailab.module.data.api.arc.ArcDataApi;
+import com.iailab.module.data.api.arc.dto.ApiArcDataDTO;
 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;
@@ -17,6 +19,7 @@
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.util.*;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -34,6 +37,8 @@
     @Resource
     private DataPointApi dataPointApi;
     @Resource
+    private ArcDataApi arcDataApi;
+    @Resource
     private IndItemApi indItemApi;
     @Resource
     private CokingProcessMainService cokingProcessMainService;
@@ -43,8 +48,18 @@
         logger.info("runCokingMainTask,参数为:{}", processTypes);
         try {
 
-            String[] split = processTypes.split(",");
+            Calendar calendar = Calendar.getInstance();
+            calendar.set(Calendar.MILLISECOND, 0);
+            calendar.set(Calendar.SECOND, 0);
+            calendar.set(Calendar.MINUTE, 0);
+            calendar.set(Calendar.HOUR_OF_DAY, 0);
+            calendar.add(Calendar.DAY_OF_YEAR, -1);
+            String clock = DateUtils.format(calendar.getTime(), DateUtils.FORMAT_YEAR_MONTH_DAY);
 
+            // 清理旧数据
+            cokingProcessMainService.deleteByClock(clock);
+
+            String[] split = processTypes.split(",");
             for (String processType : split) {
                 CokingProcessConfEntity queryParams = new CokingProcessConfEntity();
                 queryParams.setIndType(processType);
@@ -54,24 +69,13 @@
                     continue;
                 }
 
-                Calendar calendar = Calendar.getInstance();
-                calendar.set(Calendar.MILLISECOND, 0);
-                calendar.set(Calendar.SECOND, 0);
-                calendar.set(Calendar.MINUTE, 0);
-                calendar.set(Calendar.HOUR_OF_DAY, 0);
-                calendar.add(Calendar.DAY_OF_YEAR, -1);
-                String clock = DateUtils.format(calendar.getTime(), DateUtils.FORMAT_YEAR_MONTH_DAY);
-
-                // 清理旧数据
-                cokingProcessMainService.deleteByClock(clock);
-
-                // 主工序指标 筛选info_type = 0
-                List<CokingProcessConfEntity> indList = list.stream().filter(e -> e.getInfoType().equals("0")).collect(Collectors.toList());
-                if (CollectionUtils.isEmpty(indList)) {
+                if (CollectionUtils.isEmpty(list)) {
                     continue;
                 }
-                List<CokingProcessMainEntity> processMainEntities = new ArrayList<>(indList.size());
-                for (CokingProcessConfEntity conf : indList) {
+                List<CokingProcessMainEntity> processMainEntities = new ArrayList<>(list.size());
+                // 历史最优计算方向,正数取最大值,负数取最小值
+                Map<String,Double> directionMap = new HashMap<>(list.size());
+                for (CokingProcessConfEntity conf : list) {
                     if (StringUtils.isBlank(conf.getDataType())) {
                         logger.info("DataType is Empty");
                         continue;
@@ -97,34 +101,74 @@
                     processMainEntity.setStandValue(standValue == null ? BigDecimal.ZERO : BigDecimal.valueOf(standValue));
                     Double theoryValue = getConfValue("DATAPOINT",conf.getExt2());
                     processMainEntity.setTheoryValue(theoryValue == null ? BigDecimal.ZERO : BigDecimal.valueOf(theoryValue));
+                    // 历史最优计算方向
+                    if (conf.getExt3() != null) {
+                        directionMap.put(conf.getIndCode(),Double.valueOf(conf.getExt3()));
+                    }
+                    processMainEntities.add(processMainEntity);
+                }
+                // 计算吨焦产煤气,吨焦产蒸汽,吨焦耗煤气
+                Map<String, CokingProcessMainEntity> resultCodeMap = processMainEntities.stream().collect(Collectors.toMap(CokingProcessMainEntity::getIndCode, Function.identity(), (e1, e2) -> e1));
+                // 有焦炭产量
+                if (resultCodeMap.containsKey("main_jcmq")) {
+                    // 焦炭产量
+                    BigDecimal jtcl = resultCodeMap.get("main_jcmq").getRealValue();
+                    if (jtcl != null && !jtcl.equals(BigDecimal.ZERO)) {
+                        processMainEntities.forEach(e -> {
+                            // 吨焦产煤气
+                            if (e.getIndCode().equals("main_jcmq") && resultCodeMap.containsKey("main_jlmqfs")) {
+                                // 焦炉煤气发生
+                                BigDecimal mainJlmqfs = resultCodeMap.get("main_jlmqfs").getRealValue();
+                                e.setRealValue(mainJlmqfs.divide(jtcl,2,BigDecimal.ROUND_HALF_UP));
+                            }
+                            // 吨焦产蒸汽
+                            if (e.getIndCode().equals("main_djczq") && resultCodeMap.containsKey("main_gxjzqcs")) {
+                                // 干熄焦蒸汽产生
+                                BigDecimal mainGxjzqcs = resultCodeMap.get("main_gxjzqcs").getRealValue();
+                                e.setRealValue(mainGxjzqcs.divide(jtcl,2,BigDecimal.ROUND_HALF_UP));
+                            }
+                            // 吨焦耗煤气
+                            if (e.getIndCode().equals("main_djhmq") && resultCodeMap.containsKey("main_glmqxh") && resultCodeMap.containsKey("main_jlmqxh")) {
+                                // 高炉煤气消耗
+                                BigDecimal mainGlmqxh = resultCodeMap.get("main_glmqxh").getRealValue();
+                                // 焦炉煤气消耗
+                                BigDecimal mainJlmqxh = resultCodeMap.get("main_jlmqxh").getRealValue();
+                                e.setRealValue(mainGlmqxh.add(mainJlmqxh).divide(jtcl,2,BigDecimal.ROUND_HALF_UP));
+                            }
+                        });
+                    }
+                }
 
+                // 计算 统计值
+                processMainEntities.forEach(processMainEntity -> {
                     // 计算 月累计
-                    calendar.add(Calendar.DAY_OF_YEAR, -29);
+                    calendar.add(Calendar.DAY_OF_YEAR, -28);
                     String clock_30 = DateUtils.format(calendar.getTime(), DateUtils.FORMAT_YEAR_MONTH_DAY);
-                    List<CokingProcessMainEntity> historyList_30 = cokingProcessMainService.historyList(clock_30, clock, "day",conf.getIndCode());
+                    List<CokingProcessMainEntity> historyList_30 = cokingProcessMainService.historyList(clock_30, clock, "day",processMainEntity.getIndCode());
                     historyList_30.add(processMainEntity);
-                    double monthValue = historyList_30.stream().mapToDouble(e -> e.getRealValue().doubleValue()).sum();
+                    double monthValue = historyList_30.stream().mapToDouble(e -> e.getRealValue().doubleValue()).average().orElse(0.0) * 30;
                     processMainEntity.setMonthValue(BigDecimal.valueOf(monthValue));
 
                     // 计算 历史平均
                     calendar.add(Calendar.DAY_OF_YEAR, -60);
                     String clock_90 = DateUtils.format(calendar.getTime(), DateUtils.FORMAT_YEAR_MONTH_DAY);
-                    List<CokingProcessMainEntity> historyList_90 = cokingProcessMainService.historyList(clock_90, clock, "day",conf.getIndCode());
+                    List<CokingProcessMainEntity> historyList_90 = cokingProcessMainService.historyList(clock_90, clock, "day",processMainEntity.getIndCode());
                     historyList_90.add(processMainEntity);
                     double avgValue = historyList_90.stream().mapToDouble(e -> e.getRealValue().doubleValue()).average().orElse(0.0);
                     processMainEntity.setAvgValue(BigDecimal.valueOf(avgValue));
                     // 历史最优
                     double baseValue = 0.0;
-                    if (Double.valueOf(conf.getExt3()) > 0.0) {
+                    if (!directionMap.containsKey(processMainEntity.getIndCode()) || directionMap.get(processMainEntity.getIndCode()) > 0.0) {
                         baseValue = historyList_90.stream().mapToDouble(e -> e.getRealValue().doubleValue()).max().orElse(0.0);
                     }else {
                         baseValue = historyList_90.stream().mapToDouble(e -> e.getRealValue().doubleValue()).min().orElse(0.0);
                     }
                     processMainEntity.setBaseValue(BigDecimal.valueOf(baseValue));
+                });
 
 
-                    processMainEntities.add(processMainEntity);
-                }
+
+
                 cokingProcessMainService.save(processMainEntities);
             }
         } catch (Exception ex) {
@@ -150,7 +194,11 @@
                     value = Double.valueOf(indValues.get(0).getDataValue().toString());
                 }
                 break;
-            case MODEL:
+            case ARC:
+                ApiArcDataDTO apiArcDataDTO = arcDataApi.queryArcLastValue(pointNo);
+                if (apiArcDataDTO != null) {
+                    value = apiArcDataDTO.getArcValue().doubleValue();
+                }
                 break;
             default:
                 break;

--
Gitblit v1.9.3