From cb3da951d7bbd9d702a1c4cd77b53f9cd5c31263 Mon Sep 17 00:00:00 2001
From: liriming <1343021927@qq.com>
Date: 星期四, 26 六月 2025 15:59:34 +0800
Subject: [PATCH] 无功上网与功率因数定时任务

---
 ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunCokingMainTask.java |  102 +++++++++++++++------------------------------------
 1 files changed, 30 insertions(+), 72 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 324f216..847bd7d 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
@@ -9,6 +9,8 @@
 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.data.api.point.dto.ApiPointValueDTO;
+import com.iailab.module.data.api.point.dto.ApiPointValueQueryDTO;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -55,6 +57,15 @@
             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);
+            // 当月一号到当前的天数
+            int days = calendar.get(Calendar.DAY_OF_MONTH);
+            Calendar clone = (Calendar) calendar.clone();
+            clone.set(Calendar.DAY_OF_MONTH,1);
+            // 当月一号
+            String clock_month_1 = DateUtils.format(clone.getTime(), DateUtils.FORMAT_YEAR_MONTH_DAY);
+            calendar.add(Calendar.DAY_OF_YEAR, -88);
+            // 前90天
+            String clock_90 = DateUtils.format(calendar.getTime(), DateUtils.FORMAT_YEAR_MONTH_DAY);
 
             // 清理旧数据
             cokingProcessMainService.deleteByClock(clock);
@@ -73,8 +84,6 @@
                     continue;
                 }
                 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");
@@ -91,6 +100,7 @@
                     processMainEntity.setInfoType(conf.getInfoType());
                     processMainEntity.setIndCode(conf.getIndCode());
                     processMainEntity.setIndName(conf.getIndName());
+                    processMainEntity.setIndUnit(conf.getIndUnit());
                     processMainEntity.setSort(conf.getSort());
                     // 日实际值
                     Double value = getConfValue(conf.getDataType(),conf.getPointNo());
@@ -101,86 +111,30 @@
                     processMainEntity.setStandValue(standValue == null ? BigDecimal.valueOf(-2) : BigDecimal.valueOf(standValue));
                     Double theoryValue = getConfValue("DATAPOINT",conf.getExt2());
                     processMainEntity.setTheoryValue(theoryValue == null ? BigDecimal.valueOf(-2) : 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.valueOf(-2))) {
-                        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));
-                            }
-                            // 吨焦耗蒸汽
-                            if (e.getIndCode().equals("main_djhzq") && resultCodeMap.containsKey("main_zqxh")) {
-                                // 干熄焦蒸汽产生
-                                BigDecimal mainZqxh = resultCodeMap.get("main_zqxh").getRealValue();
-                                e.setRealValue(mainZqxh.divide(jtcl,2,BigDecimal.ROUND_HALF_UP));
-                            }
-                            // 吨焦耗电
-                            if (e.getIndCode().equals("main_djhd") && resultCodeMap.containsKey("main_dlxh")) {
-                                // 干熄焦蒸汽产生
-                                BigDecimal mainDlxh = resultCodeMap.get("main_dlxh").getRealValue();
-                                e.setRealValue(mainDlxh.divide(jtcl,2,BigDecimal.ROUND_HALF_UP));
-                            }
-
-                        });
-                    }
-                }
-
-                // 计算 统计值
-                processMainEntities.forEach(processMainEntity -> {
-                    // 计算 月累计
-                    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",processMainEntity.getIndCode());
+                    // 计算 当月累计 当前自然月
+                    List<CokingProcessMainEntity> historyList_30 = cokingProcessMainService.historyList(clock_month_1, clock, "day",processMainEntity.getIndCode());
                     historyList_30.add(processMainEntity);
-                    double monthValue = historyList_30.stream().mapToDouble(e -> e.getRealValue().doubleValue()).average().orElse(0.0) * 30;
+                    // 过滤-2,平均值*一号到当天总天数
+                    double monthValue = historyList_30.stream().filter(e -> e.getRealValue().compareTo(BigDecimal.valueOf(-2)) != 0).mapToDouble(e -> e.getRealValue().doubleValue()).average().orElse(0.0) * days;
                     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",processMainEntity.getIndCode());
                     historyList_90.add(processMainEntity);
+                    // 过滤-2
+                    historyList_90 = historyList_90.stream().filter(e -> e.getRealValue().compareTo(BigDecimal.valueOf(-2)) != 0).collect(Collectors.toList());
                     double avgValue = historyList_90.stream().mapToDouble(e -> e.getRealValue().doubleValue()).average().orElse(0.0);
                     processMainEntity.setAvgValue(BigDecimal.valueOf(avgValue));
                     // 历史最优
                     double baseValue = 0.0;
-                    if (!directionMap.containsKey(processMainEntity.getIndCode()) || directionMap.get(processMainEntity.getIndCode()) > 0.0) {
+                    if (StringUtils.isNotBlank(conf.getExt3()) && Double.valueOf(conf.getExt3()) > 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);
             }
@@ -194,11 +148,15 @@
         Double value = null;
         switch (ProcessConfDataTypeEnum.getEumByCode(dataType)) {
             case DATAPOINT:
-                List<String> points = new ArrayList<>();
-                points.add(pointNo);
-                Map<String, Object> pointsRealValue = dataPointApi.queryPointsRealValue(points);
-                if (pointsRealValue.containsKey(pointNo)) {
-                    value = Double.valueOf(pointsRealValue.get(pointNo).toString());
+                ApiPointValueQueryDTO queryDTO = new ApiPointValueQueryDTO();
+                queryDTO.setPointNo(pointNo);
+                Calendar calendar = Calendar.getInstance();
+                queryDTO.setEnd(calendar.getTime());
+                calendar.add(Calendar.DAY_OF_YEAR,-1);
+                queryDTO.setStart(calendar.getTime());
+                List<ApiPointValueDTO> values = dataPointApi.queryPointHistoryValue(queryDTO);
+                if (!CollectionUtils.isEmpty(values)) {
+                    value = values.get(values.size() - 1).getV();
                 }
                 break;
             case IND:

--
Gitblit v1.9.3