鞍钢鲅鱼圈能源管控系统后端代码
dengzedong
6 天以前 e8169f813cae950ff61af447792d429fb8312252
峰谷平累计量计算
已修改1个文件
29 ■■■■■ 文件已修改
ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunPeakValleyFlatTask.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
    }
}