From ed2835b42336fd902c255bdc62e9837debc31c44 Mon Sep 17 00:00:00 2001 From: 潘志宝 <979469083@qq.com> Date: 星期二, 06 五月 2025 14:31:56 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunPeakValleyFlatTask.java | 69 ++++++++++++++++++++++++++++++---- 1 files changed, 60 insertions(+), 9 deletions(-) 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 9628f91..4cb978d 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 @@ -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); @@ -137,10 +170,14 @@ dto.setPointNo(entity.getPowerNo()); dto.setStart(startTime); dto.setEnd(endTime); - logger.info("开始查询,测点:"+entity.getPowerNo()+"startTime:"+startTime+"endTime:"+endTime); - + logger.info("开始查询,测点:" + entity.getPowerNo() + "startTime:" + startTime + "endTime:" + endTime); + List<ApiPointValueDTO> valueList; //查找数据 - List<ApiPointValueDTO> valueList = dataPointApi.queryPointHistoryValue(dto); + try { + valueList = dataPointApi.queryPointHistoryValue(dto); + } catch (Exception e) { + throw new RuntimeException("查询测点异常"); + } //补全数据 valueList = fillMissingData(valueList, startTime, endTime); //累加 @@ -149,4 +186,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; + } } -- Gitblit v1.9.3