From e6b2fef18d67772b1f87ae832840890301bdb89d Mon Sep 17 00:00:00 2001 From: z1415143022 <z1415143022@163.com> Date: 星期四, 27 三月 2025 15:45:58 +0800 Subject: [PATCH] 更新 ItemizedEnergyAnalysisServiceImpl.java --- zhitan-system/src/main/java/com/zhitan/Itemizedenergyanalysis/service/impl/ItemizedEnergyAnalysisServiceImpl.java | 31 +++++++++++++++++++++++++++++-- 1 files changed, 29 insertions(+), 2 deletions(-) diff --git a/zhitan-system/src/main/java/com/zhitan/Itemizedenergyanalysis/service/impl/ItemizedEnergyAnalysisServiceImpl.java b/zhitan-system/src/main/java/com/zhitan/Itemizedenergyanalysis/service/impl/ItemizedEnergyAnalysisServiceImpl.java index edc291a..1b895d7 100644 --- a/zhitan-system/src/main/java/com/zhitan/Itemizedenergyanalysis/service/impl/ItemizedEnergyAnalysisServiceImpl.java +++ b/zhitan-system/src/main/java/com/zhitan/Itemizedenergyanalysis/service/impl/ItemizedEnergyAnalysisServiceImpl.java @@ -11,6 +11,7 @@ import com.zhitan.common.exception.ServiceException; import com.zhitan.common.utils.DateTimeUtil; import com.zhitan.common.utils.PropUtils; +import com.zhitan.common.utils.TypeTime; import com.zhitan.dataitem.service.IDataItemService; import com.zhitan.model.domain.vo.ModelNodeIndexInfo; import com.zhitan.model.mapper.ModelNodeMapper; @@ -62,19 +63,23 @@ ModelNodeIndexInfo info = nodeIndexInfo.stream().findFirst().get(); + List<TypeTime> dateTimeList; // 鏍规嵁鏃堕棿绫诲瀷璋冩暣鏃堕棿鑼冨洿 switch (dto.getTimeType()) { case TimeTypeConst.TIME_TYPE_DAY: timeType = TimeTypeConst.TIME_TYPE_HOUR; endTime = DateUtil.endOfDay(beginTime); + dateTimeList = DateTimeUtil.getDateTimeListSame(TimeTypeConst.TIME_TYPE_DAY, beginTime); break; case TimeTypeConst.TIME_TYPE_MONTH: timeType = TimeTypeConst.TIME_TYPE_DAY; endTime = DateUtil.endOfMonth(beginTime); + dateTimeList = DateTimeUtil.getDateTimeListSame(TimeTypeConst.TIME_TYPE_MONTH, beginTime); break; case TimeTypeConst.TIME_TYPE_YEAR: timeType = TimeTypeConst.TIME_TYPE_MONTH; endTime = DateUtil.endOfYear(beginTime); + dateTimeList = DateTimeUtil.getDateTimeListSame(TimeTypeConst.TIME_TYPE_YEAR, beginTime); break; default: throw new ServiceException("鏃堕棿鏍煎紡閿欒"); @@ -102,9 +107,31 @@ itemVO.setNodeId(info.getNodeId()); itemVO.setNodeName(info.getName()); itemVO.setTotal(sum); - for (int i = 0; i < dataItemList.size(); i++) { - PropUtils.setValue(itemVO,"value"+ i, dataItemList.get(i).getValue()); + + Map<Date, List<DataItem>> dateListMap = dataItemList.stream().collect(Collectors.groupingBy(DataItem::getDataTime)); + List<DataItem> results = new ArrayList<>(); + dateListMap.forEach((key, value) -> { + DataItem dataItem = new DataItem(); + dataItem.setDataTime(key); + //淇濈暀鍥涗綅灏忔暟 + double totalValue = value.stream().map(data -> BigDecimal.valueOf(data.getValue())) + .reduce(BigDecimal.ZERO, BigDecimal::add).setScale(4, RoundingMode.HALF_UP).doubleValue(); + dataItem.setValue(totalValue); + results.add(dataItem); + }); + //鏍规嵁鏃堕棿鎺掑簭 + results.sort(Comparator.comparing(DataItem::getDataTime)); + for (int i = 0; i < dateTimeList.size(); i++) { + TypeTime typeTime = dateTimeList.get(i); + Optional<DataItem> dataItem = results.stream().filter(result -> result.getDataTime().equals(typeTime.getDateTime())).findFirst(); + if (dataItem.isPresent()) { + DataItem item = dataItem.get(); + PropUtils.setValue(itemVO, "value" + i, item.getValue()); + } else { + PropUtils.setValue(itemVO, "value" + i, null); + } } + voList.add(itemVO); vo.setDataList(voList); -- Gitblit v1.9.3