From 4daff68fd4971e74c6637044912a1789fe148714 Mon Sep 17 00:00:00 2001 From: ustcyc <yincun@163.com> Date: 星期五, 28 三月 2025 18:08:48 +0800 Subject: [PATCH] Merge branch 'master' of https://github.com/Andy-Yin/zhitan-ems --- zhitan-vue/src/views/poweranalysis/perPassu/index.vue | 11 ++++++----- zhitan-vue/src/views/poweranalysis/pariPassu/index.vue | 9 +++++---- zhitan-system/src/main/java/com/zhitan/Itemizedenergyanalysis/service/impl/ItemizedEnergyAnalysisServiceImpl.java | 31 +++++++++++++++++++++++++++++-- 3 files changed, 40 insertions(+), 11 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); diff --git a/zhitan-vue/src/views/poweranalysis/pariPassu/index.vue b/zhitan-vue/src/views/poweranalysis/pariPassu/index.vue index a1221a9..1da4671 100644 --- a/zhitan-vue/src/views/poweranalysis/pariPassu/index.vue +++ b/zhitan-vue/src/views/poweranalysis/pariPassu/index.vue @@ -156,7 +156,7 @@ function handleNodeClick(data) { queryParams.value.nodeId = data.id queryParams.value.nodeName = data.label - handleTimeType(period.value[1].value) + handleTimeType("MONTH") listEnergyTypeList().then((res) => { energyTypeList.value = res.data queryParams.value.energyType = energyTypeList.value[0].enersno @@ -168,11 +168,11 @@ function handleTimeType(e) { queryParams.value.timeType = e if (e == "MONTH") { - queryParams.value.timeCode = proxy.dayjs(new Date()).format("YYYY-MM") + queryParams.value.dataTime = proxy.dayjs(new Date()).format("YYYY-MM-DD") } else if (e == "YEAR") { - queryParams.value.timeCode = proxy.dayjs(new Date()).format("YYYY") + queryParams.value.dataTime = proxy.dayjs(new Date()).format("YYYY-MM-DD") } else { - queryParams.value.timeCode = proxy.dayjs(new Date()).format("YYYY-MM-DD") + queryParams.value.dataTime = proxy.dayjs(new Date()).format("YYYY-MM-DD") } } function handleEnergyType(item) { @@ -200,6 +200,7 @@ proxy.addDateRange({ ...queryParams.value, ...query.value, + timeCode: queryParams.value.dataTime, }) ).then((res) => { if (!!res.code && res.code == 200) { diff --git a/zhitan-vue/src/views/poweranalysis/perPassu/index.vue b/zhitan-vue/src/views/poweranalysis/perPassu/index.vue index b37d75a..d38108c 100644 --- a/zhitan-vue/src/views/poweranalysis/perPassu/index.vue +++ b/zhitan-vue/src/views/poweranalysis/perPassu/index.vue @@ -156,7 +156,7 @@ function handleNodeClick(data) { queryParams.value.nodeId = data.id queryParams.value.nodeName = data.label - handleTimeType(period.value[1].value) + handleTimeType("MONTH") listEnergyTypeList().then((res) => { energyTypeList.value = res.data queryParams.value.energyType = energyTypeList.value[0].enersno @@ -168,11 +168,11 @@ function handleTimeType(e) { queryParams.value.timeType = e if (e == "MONTH") { - queryParams.value.timeCode = proxy.dayjs(new Date()).format("YYYY-MM") + queryParams.value.dataTime = proxy.dayjs(new Date()).format("YYYY-MM-DD") } else if (e == "YEAR") { - queryParams.value.timeCode = proxy.dayjs(new Date()).format("YYYY") + queryParams.value.dataTime = proxy.dayjs(new Date()).format("YYYY-MM-DD") } else { - queryParams.value.timeCode = proxy.dayjs(new Date()).format("YYYY-MM-DD") + queryParams.value.dataTime = proxy.dayjs(new Date()).format("YYYY-MM-DD") } } function handleEnergyType(item) { @@ -200,6 +200,7 @@ proxy.addDateRange({ ...queryParams.value, ...query.value, + timeCode: queryParams.value.dataTime, }) ).then((res) => { if (!!res.code && res.code == 200) { @@ -554,11 +555,11 @@ // 鑳借�楀姣斿垎鏋�-閲嶇疆 function resetQuery() { proxy.resetForm("queryRef") - handleTimeType(period.value[1].value) queryParams.value.energyType = energyTypeList.value[0].enersno queryParams.value.enername = energyTypeList.value[0].enername queryParams.value.muid = energyTypeList.value[0].muid queryParams.value.analysisType = "MOM" + handleTimeType(period.value[1].value) handleQuery() } // 鑳借�楀姣斿垎鏋�-瀵煎嚭 -- Gitblit v1.9.3