From 12ecdc83fdea468758f1615fbab772d82ab89e74 Mon Sep 17 00:00:00 2001
From: 潘志宝 <979469083@qq.com>
Date: 星期三, 07 五月 2025 11:03:33 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ansteel-biz/src/main/java/com/iailab/module/ansteel/gas/entity/GasPredConfEntity.java            |   56 ++++++++++++++
 ansteel-biz/src/main/java/com/iailab/module/ansteel/gas/service/GasPredConfService.java          |   15 +++
 ansteel-biz/src/main/java/com/iailab/module/ansteel/gas/service/impl/GasPredConfServiceImpl.java |   36 +++++++++
 ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/GasController.java      |   39 +++++++++
 ansteel-biz/src/main/java/com/iailab/module/ansteel/gas/dao/GasPredConfDao.java                  |   15 +++
 ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunPeakValleyFlatTask.java          |   29 ++++--
 6 files changed, 179 insertions(+), 11 deletions(-)

diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/GasController.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/GasController.java
new file mode 100644
index 0000000..b7d5dd9
--- /dev/null
+++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/GasController.java
@@ -0,0 +1,39 @@
+package com.iailab.module.ansteel.api.controller.admin;
+
+import com.iailab.framework.common.pojo.CommonResult;
+import com.iailab.module.ansteel.api.dto.PowerNetFactorDTO;
+import com.iailab.module.ansteel.gas.entity.GasPredConfEntity;
+import com.iailab.module.ansteel.gas.service.GasPredConfService;
+import com.iailab.module.ansteel.power.entity.PowerNetFactorEntity;
+import io.swagger.v3.oas.annotations.Operation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 煤气接口
+ *
+ * @author DongYukun
+ * @Description
+ * @createTime 2025年05月07日
+ */
+@Slf4j
+@RestController
+@RequestMapping("/ansteel/api/gas")
+public class GasController {
+
+    @Autowired
+    private GasPredConfService gasPredConfService;
+
+    @GetMapping("/pred-conf/list")
+    @Operation(summary = "煤气预测配置")
+    public CommonResult<List<GasPredConfEntity>> getGasPredConfList(@RequestParam Map<String, Object> params) {
+        return CommonResult.success(gasPredConfService.list(params));
+    }
+}
diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/gas/dao/GasPredConfDao.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/gas/dao/GasPredConfDao.java
new file mode 100644
index 0000000..5d89f4b
--- /dev/null
+++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/gas/dao/GasPredConfDao.java
@@ -0,0 +1,15 @@
+package com.iailab.module.ansteel.gas.dao;
+
+import com.iailab.framework.common.dao.BaseDao;
+import com.iailab.module.ansteel.gas.entity.GasPredConfEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @author dyk
+ * @Description
+ * @createTime 2025年05月07日
+ */
+@Mapper
+public interface GasPredConfDao extends BaseDao<GasPredConfEntity> {
+
+}
diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/gas/entity/GasPredConfEntity.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/gas/entity/GasPredConfEntity.java
new file mode 100644
index 0000000..6dc7a1a
--- /dev/null
+++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/gas/entity/GasPredConfEntity.java
@@ -0,0 +1,56 @@
+package com.iailab.module.ansteel.gas.entity;
+
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 煤气预测配置
+ *
+ * @author DongYukun
+ * @Description
+ * @createTime 2025年5月7日
+ */
+@Data
+@TableName("t_gas_pred_conf")
+public class GasPredConfEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @TableId
+    private String id;
+    /**
+     * 预测图编号
+     */
+    private String chartCode;
+    /**
+     * 用户类型(发生,消耗)
+     */
+    private String userType;
+    /**
+     * 预测项编号
+     */
+    private String itemNo;
+    /**
+     * 预测项名称
+     */
+    private String itemName;
+    /**
+     * 预测项输出key
+     */
+    private String outKey;
+    /**
+     * 预测项输出名称
+     */
+    private String outName;
+    /**
+     * 排序
+     */
+    private String sort;
+}
\ No newline at end of file
diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/gas/service/GasPredConfService.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/gas/service/GasPredConfService.java
new file mode 100644
index 0000000..cc5a0f8
--- /dev/null
+++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/gas/service/GasPredConfService.java
@@ -0,0 +1,15 @@
+package com.iailab.module.ansteel.gas.service;
+
+import com.iailab.module.ansteel.gas.entity.GasPredConfEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author dyk
+ * @Description
+ * @createTime 2025年05月07日
+ */
+public interface GasPredConfService {
+    List<GasPredConfEntity> list(Map<String, Object> params);
+}
diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/gas/service/impl/GasPredConfServiceImpl.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/gas/service/impl/GasPredConfServiceImpl.java
new file mode 100644
index 0000000..2552f03
--- /dev/null
+++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/gas/service/impl/GasPredConfServiceImpl.java
@@ -0,0 +1,36 @@
+package com.iailab.module.ansteel.gas.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.iailab.module.ansteel.gas.dao.GasPredConfDao;
+import com.iailab.module.ansteel.gas.entity.GasPredConfEntity;
+import com.iailab.module.ansteel.gas.service.GasPredConfService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author dyk
+ * @Description
+ * @createTime 2025年04月18日
+ */
+@Slf4j
+@Service
+public class GasPredConfServiceImpl implements GasPredConfService {
+
+    @Resource
+    private GasPredConfDao gasPredConfDao;
+
+    @Override
+    public List<GasPredConfEntity> list(Map<String, Object> params) {
+        String chartCode = (String) params.get("chartCode");
+        QueryWrapper<GasPredConfEntity> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq(StringUtils.isNotBlank(chartCode), "chart_code", chartCode);
+        queryWrapper.orderByAsc("sort");
+        return gasPredConfDao.selectList(queryWrapper);
+
+    }
+}
\ No newline at end of file
diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunPeakValleyFlatTask.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunPeakValleyFlatTask.java
index 03ea7f6..b61a29e 100644
--- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunPeakValleyFlatTask.java
+++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunPeakValleyFlatTask.java
@@ -54,20 +54,22 @@
                 Date endTime = calendar.getTime();
                 cal.add(Calendar.DAY_OF_YEAR, -1);
                 Date startTime = cal.getTime();
-                cal.add(Calendar.DAY_OF_YEAR, -29);
-                Date monthStartTime = cal.getTime();
+                cal.add(Calendar.DAY_OF_YEAR, -27);
+                Date monthStartTime_29 = cal.getTime();
+                cal.add(Calendar.DAY_OF_YEAR, -2);
+                Date monthStartTime_30 = cal.getTime();
 
                 //计算昨日的峰/谷累积量
                 double value = getSumValue(entry.getValue(), 1, calendar);
 
                 //计算昨日总电耗
-                double totalValue = getSumValueTotal(entry.getValue().get(0).getPowerNo(), startTime, endTime);
+                double totalValue = getSumValueTotal(entry.getValue().get(0).getPowerNo(), startTime, endTime,1440,60);
 
-                //计算前三十日峰/谷累积量
-                double valueMonth = getSumValueTotal(entry.getValue().get(0).getPointNoTotal(), monthStartTime, startTime)+value;
+                //计算前29日峰/谷累积量 + 今日
+                double valueMonth = getSumValueTotal(entry.getValue().get(0).getPointNoTotal(), monthStartTime_29, endTime,29,1)+value;
 
                 //计算前三十日总电耗
-                double totalValueMonth = getSumValueTotal(entry.getValue().get(0).getPowerNo(), monthStartTime, endTime);
+                double totalValueMonth = getSumValueTotal(entry.getValue().get(0).getPowerNo(), monthStartTime_30, endTime,1440 * 30,60);
 
                 logger.info("name:"+entry.getValue().get(0).getName()+";value:"+value+";totalValue:"+totalValue+";valueMonth:"+valueMonth+";totalValueMonth:"+totalValueMonth);
 
@@ -182,15 +184,18 @@
                 throw new RuntimeException("查询测点异常");
             }
             //补全数据
-            valueList = fillMissingData(valueList, startTime, endTime);
+//            valueList = fillMissingData(valueList, startTime, endTime);
+            // 计算 startTime和endTime中有多少个点
+            long total = (endTime.getTime() - startTime.getTime()) / (60 * 1000);
+            double sum = valueList.stream().filter(e -> Double.compare(e.getV(), 0.0) > 0).mapToDouble(ApiPointValueDTO::getV).average().orElse(0.0) * Long.valueOf(total).doubleValue();
             //累加
-            double sum = valueList.stream().mapToDouble(ApiPointValueDTO::getV).sum();
+//            double sum = valueList.stream().mapToDouble(ApiPointValueDTO::getV).sum();
             value = value + sum;
         }
         return value / 60;
     }
 
-    private double getSumValueTotal(String pointNo, Date startTime, Date endTime) {
+    private double getSumValueTotal(String pointNo, Date startTime, Date endTime,Integer total,Integer divide) {
         ApiPointValueQueryDTO dto = new ApiPointValueQueryDTO();
         dto.setPointNo(pointNo);
         dto.setStart(startTime);
@@ -199,8 +204,10 @@
         //查找数据
         List<ApiPointValueDTO> valueList = dataPointApi.queryPointHistoryValue(dto);
         //补全数据
-        valueList = fillMissingData(valueList, startTime, endTime);
+//        valueList = fillMissingData(valueList, startTime, endTime);
+        double value = valueList.stream().filter(e -> Double.compare(e.getV(), 0.0) > 0).mapToDouble(ApiPointValueDTO::getV).average().orElse(0.0) * Double.valueOf(total);
+
         //累加
-        return valueList.stream().mapToDouble(ApiPointValueDTO::getV).sum() / 60;
+        return value / divide;
     }
 }

--
Gitblit v1.9.3