| | |
| | | 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); |
| | | |
| | |
| | | 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); |
| | |
| | | //查找数据 |
| | | 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; |
| | | } |
| | | } |