From 544e09fe0722796f209d5834e3a1716c617e3598 Mon Sep 17 00:00:00 2001
From: DYL0109 <dn18191638832@163.com>
Date: 星期四, 27 三月 2025 10:03:46 +0800
Subject: [PATCH] Merge pull request #39 from Andy-Yin/zt_from_develop1.0
---
zhitan-system/src/main/java/com/zhitan/branchanalysis/service/impl/BranchAnalysisServiceImpl.java | 61 +++++++++++++-------
zhitan-common/src/main/java/com/zhitan/common/utils/DateTimeUtil.java | 72 ++++++++++++++++++++++++
2 files changed, 112 insertions(+), 21 deletions(-)
diff --git a/zhitan-common/src/main/java/com/zhitan/common/utils/DateTimeUtil.java b/zhitan-common/src/main/java/com/zhitan/common/utils/DateTimeUtil.java
index 3299e26..93d8031 100644
--- a/zhitan-common/src/main/java/com/zhitan/common/utils/DateTimeUtil.java
+++ b/zhitan-common/src/main/java/com/zhitan/common/utils/DateTimeUtil.java
@@ -844,4 +844,76 @@
}
return resultList;
}
+
+ /**
+ * 閫氳繃鏃堕棿绫诲瀷杩斿洖瀵瑰簲鐨勬椂闂磍ist
+ * <p>
+ * 鍙傛暟锛�
+ * timeType="YEAR",dataTime="2025-01-01 00:00:00"
+ * timeType="MONTH",dataTime="2025-01-01 00:00:00"
+ * timeType="DAY",dataTime="2025-01-01 00:00:00"
+ * 杩斿洖鏍煎紡锛�
+ * [
+ * {"datatime":"2025-01-01 00:00:00","value":"value1"},
+ * {"datatime":"2025-02-01 00:00:00","value":"value2"},
+ * {"datatime":"2025-03-01 00:00:00","value":"value3"},
+ * {"datatime":"2025-04-01 00:00:00","value":"value4"},
+ * {"datatime":"2025-05-01 00:00:00","value":"value5"},
+ * {"datatime":"2025-06-01 00:00:00","value":"value6"},
+ * {"datatime":"2025-07-01 00:00:00","value":"value7"},
+ * {"datatime":"2025-08-01 00:00:00","value":"value8"},
+ * {"datatime":"2025-09-01 00:00:00","value":"value9"},
+ * {"datatime":"2025-10-01 00:00:00","value":"value10"},
+ * {"datatime":"2025-11-01 00:00:00","value":"value11"},
+ * {"datatime":"2025-12-01 00:00:00","value":"value12"}
+ * ]
+ *
+ * @param timeType
+ * @param dataTime
+ * @return
+ */
+ public static List<TypeTime> getDateTimeListSame(String timeType, Date dataTime) {
+
+ List<TypeTime> resultList = new ArrayList<>();
+ Date beginTime;
+ switch (timeType) {
+ case TimeTypeConst.TIME_TYPE_DAY:
+ beginTime = DateUtil.beginOfDay(dataTime);
+ for (int i = 1; i <= 24; i++) {
+ TypeTime typeTime = new TypeTime();
+ typeTime.setDataTime(DateUtil.format(beginTime, COMMON_PATTERN));
+ typeTime.setTimeCode(CommonConst.WORD_H + DateUtil.format(beginTime, COMMON_PATTERN_HOUR));
+ typeTime.setDateTime(beginTime);
+ typeTime.setValue("value" + i);
+ resultList.add(typeTime);
+ beginTime = addHours(beginTime, 1);
+ }
+ break;
+ case TimeTypeConst.TIME_TYPE_MONTH:
+ beginTime = DateUtil.beginOfMonth(dataTime);
+ for (int i = 1; i <= 31; i++) {
+ TypeTime typeTime = new TypeTime();
+ typeTime.setDataTime(DateUtil.format(beginTime, COMMON_PATTERN));
+ typeTime.setTimeCode(CommonConst.WORD_D + DateUtil.format(beginTime, COMMON_PATTERN_DAY));
+ typeTime.setDateTime(beginTime);
+ typeTime.setValue("value" + i);
+ resultList.add(typeTime);
+ beginTime = addDays(beginTime, 1);
+ }
+ break;
+ case TimeTypeConst.TIME_TYPE_YEAR:
+ beginTime = DateUtil.beginOfYear(dataTime);
+ for (int i = 1; i <= 12; i++) {
+ TypeTime typeTime = new TypeTime();
+ typeTime.setDataTime(DateUtil.format(beginTime, COMMON_PATTERN));
+ typeTime.setTimeCode(CommonConst.WORD_M + DateUtil.format(beginTime, COMMON_PATTERN_MONTH));
+ typeTime.setDateTime(beginTime);
+ typeTime.setValue("value" + i);
+ resultList.add(typeTime);
+ beginTime = addMonths(beginTime, 1);
+ }
+ break;
+ }
+ return resultList;
+ }
}
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 73859cb..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
@@ -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