From b0530ed9211230227a8f94e394eda779d5ae5fc1 Mon Sep 17 00:00:00 2001 From: birt <2499248221@qq.com> Date: 星期日, 13 四月 2025 01:51:52 +0800 Subject: [PATCH] birtzhang --- zhitan-system/src/main/java/com/zhitan/branchanalysis/service/impl/BranchAnalysisServiceImpl.java | 63 ++++++++++++++++++++----------- 1 files changed, 41 insertions(+), 22 deletions(-) diff --git a/zhitan-system/src/main/java/com/zhitan/branchanalysis/service/impl/BranchAnalysisServiceImpl.java b/zhitan-system/src/main/java/com/zhitan/branchanalysis/service/impl/BranchAnalysisServiceImpl.java index 443fc99..848a1bc 100644 --- a/zhitan-system/src/main/java/com/zhitan/branchanalysis/service/impl/BranchAnalysisServiceImpl.java +++ b/zhitan-system/src/main/java/com/zhitan/branchanalysis/service/impl/BranchAnalysisServiceImpl.java @@ -4,29 +4,30 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.zhitan.branchanalysis.domain.BranchAnalysisVO; +import com.zhitan.branchanalysis.service.IBranchAnalysisService; import com.zhitan.common.constant.TimeTypeConst; import com.zhitan.common.exception.ServiceException; import com.zhitan.common.utils.DateTimeUtil; -import com.zhitan.branchanalysis.service.IBranchAnalysisService; import com.zhitan.common.utils.PropUtils; +import com.zhitan.common.utils.TypeTime; import com.zhitan.dataitem.mapper.DataItemMapper; import com.zhitan.model.domain.vo.ModelNodeIndexInfo; -import com.zhitan.model.domain.vo.ModelNodeIndexInfor; import com.zhitan.model.mapper.ModelNodeMapper; import com.zhitan.realtimedata.domain.DataItem; import com.zhitan.realtimedata.domain.dto.BranchAnalysisDTO; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; -import java.util.Date; -import java.util.List; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.*; import java.util.stream.Collectors; /** - * c + * 鏀矾鐢ㄨ兘鍒嗘瀽 * - * @author sys - * @date 2021-01-11 + * @author zt + * @date 2025-03-27 */ @Service @AllArgsConstructor @@ -39,7 +40,7 @@ public BranchAnalysisVO getBranchAnalysisService(BranchAnalysisDTO dto) { String timeType = dto.getTimeType(); String dataTime = dto.getDataTime(); - Date beginTime = DateTimeUtil.getTypeTime(timeType, dataTime); + Date beginTime = DateTimeUtil.getTime(timeType, dataTime); DateTime endTime = null; List<ModelNodeIndexInfo> nodeIndexInfo = modelNodeMapper.getModelNodeIndexIdByNodeId(dto.getNodeId(), dto.getEnergyType()); @@ -49,43 +50,61 @@ return new BranchAnalysisVO(); } - 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("鏃堕棿鏍煎紡閿欒"); } - //鑾峰彇鏁版嵁椤瑰垪琛� + BranchAnalysisVO vo = new BranchAnalysisVO(); + if (ObjectUtil.isEmpty(indexlist)) { + return vo; + } List<DataItem> dataItemlist = dataItemMapper.getDataItemTimeRangeInforByIndexIds(beginTime, endTime, timeType, indexlist); - BranchAnalysisVO vo = new BranchAnalysisVO(); double sum = dataItemlist.stream().mapToDouble(DataItem::getValue).sum(); vo.setTotal(sum); - if (ObjectUtil.isNotEmpty(info.getIndexId())) { - vo.setUntil(info.getUnitId()); - } + vo.setNodeId(dto.getNodeId()); + vo.setNodeName(nodeIndexInfo.get(0).getName()); + Map<Date, List<DataItem>> dateListMap = dataItemlist.stream().collect(Collectors.groupingBy(DataItem::getDataTime)); - vo.setNodeId(info.getNodeId()); - vo.setNodeName(info.getName()); - for (int i = 0; i < dataItemlist.size(); i++) { - PropUtils.setValue(vo, "value" + i, dataItemlist.get(i).getValue()); + 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(vo, "value" + i, item.getValue()); + } else { + PropUtils.setValue(vo, "value" + i, null); + } } - return vo; - - } } -- Gitblit v1.9.3