鞍钢鲅鱼圈能源管控系统后端代码
dongyukun
7 天以前 e99b85b724b9013db0bd12a7de9521e8a3fc8520
峰谷平占比计算
已修改2个文件
63 ■■■■■ 文件已修改
ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunPeakValleyFlatTask.java 59 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/power/entity/PeakValleyFlatEntity.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunPeakValleyFlatTask.java
@@ -47,14 +47,47 @@
            groupedByPointNo.entrySet().stream().forEach(entry -> {
                //计算昨日的累积量
                //计算昨日的峰/谷累积量
                double value = getSumValue(entry.getValue(), 1, calendar);
                //下发昨日的累积量
                ApiPointValueWriteDTO dto = new ApiPointValueWriteDTO();
                dto.setPointNo(entry.getValue().get(0).getPointNo());
                dto.setValue(value);
                dataPointApi.writePointRealValue(dto);
                //计算昨日总电耗
                Calendar cal = (Calendar) calendar.clone();
                cal.set(Calendar.MILLISECOND, 0);
                cal.set(Calendar.MINUTE, 0);
                cal.set(Calendar.HOUR_OF_DAY, 0);
                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();
                double totalValue = getSumValueTotal(entry.getValue().get(0).getPowerNo(), startTime, endTime);
                //下发昨日占比
                ApiPointValueWriteDTO percentDto = new ApiPointValueWriteDTO();
                percentDto.setPointNo(entry.getValue().get(0).getPointNo());
                double percent = totalValue == 0 ? 0 : value / totalValue * 100;
                percentDto.setValue(percent);
                dataPointApi.writePointRealValue(percentDto);
                //下发昨日峰/谷累积量
                ApiPointValueWriteDTO totalDto = new ApiPointValueWriteDTO();
                percentDto.setPointNo(entry.getValue().get(0).getPointNoTotal());
                percentDto.setValue(value);
                dataPointApi.writePointRealValue(totalDto);
                //计算前三十日峰/谷累积量
                double valueMonth = getSumValueTotal(entry.getValue().get(0).getPointNoTotal(), monthStartTime, endTime);
                //计算前三十日总电耗
                double totalValueMonth = getSumValueTotal(entry.getValue().get(0).getPowerNo(), monthStartTime, endTime);
                //下发前三十日占比
                ApiPointValueWriteDTO monthDto = new ApiPointValueWriteDTO();
                monthDto.setPointNo(entry.getValue().get(0).getPointNoMonth());
                double percentMonth = totalValueMonth == 0 ? 0 : valueMonth / totalValueMonth * 100;
                monthDto.setValue(percentMonth);
                dataPointApi.writePointRealValue(monthDto);
            });
        } catch (Exception ex) {
            logger.error("runPeakValleyFlatTask运行异常", ex);
@@ -149,4 +182,18 @@
        }
        return value / 60;
    }
    private double getSumValueTotal(String pointNo, Date startTime, Date endTime) {
        ApiPointValueQueryDTO dto = new ApiPointValueQueryDTO();
        dto.setPointNo(pointNo);
        dto.setStart(startTime);
        dto.setEnd(endTime);
        //查找数据
        List<ApiPointValueDTO> valueList = dataPointApi.queryPointHistoryValue(dto);
        //补全数据
        valueList = fillMissingData(valueList, startTime, endTime);
        //累加
        return valueList.stream().mapToDouble(ApiPointValueDTO::getV).sum() / 60;
    }
}
ansteel-biz/src/main/java/com/iailab/module/ansteel/power/entity/PeakValleyFlatEntity.java
@@ -41,6 +41,10 @@
     */
    private String pointNoMonth;
    /**
     * 下发测点编码
     */
    private String pointNoTotal;
    /**
     * 功率测点编码
     */
    private String powerNo;