From 6cadb3949279be48ab6bce7ecaae48fe36b21428 Mon Sep 17 00:00:00 2001
From: VVT789 <sdxt_0802@163.com>
Date: 星期四, 13 二月 2025 15:09:11 +0800
Subject: [PATCH] 获取历史数据接口的修改
---
zhitan-system/src/main/java/com/zhitan/realtimedata/service/impl/RealtimeDatabaseServiceImpl.java | 1
zhitan-common/src/main/java/com/zhitan/common/utils/ChartUtils.java | 13 ++++++
zhitan-admin/src/main/java/com/zhitan/web/controller/history/HistoryDataTrendController.java | 93 ++++++++++++++++++----------------------------
zhitan-common/src/main/java/com/zhitan/common/enums/RetrievalModes.java | 5 ++
4 files changed, 53 insertions(+), 59 deletions(-)
diff --git a/zhitan-admin/src/main/java/com/zhitan/web/controller/history/HistoryDataTrendController.java b/zhitan-admin/src/main/java/com/zhitan/web/controller/history/HistoryDataTrendController.java
index 654e694..5b5bd17 100644
--- a/zhitan-admin/src/main/java/com/zhitan/web/controller/history/HistoryDataTrendController.java
+++ b/zhitan-admin/src/main/java/com/zhitan/web/controller/history/HistoryDataTrendController.java
@@ -4,10 +4,15 @@
import com.zhitan.basicdata.domain.MeterImplement;
import com.zhitan.basicdata.services.IMeterImplementService;
import com.zhitan.common.annotation.Log;
+import com.zhitan.common.constant.CommonConst;
+import com.zhitan.common.constant.TimeTypeConst;
import com.zhitan.common.core.controller.BaseController;
import com.zhitan.common.core.domain.AjaxResult;
import com.zhitan.common.enums.BusinessType;
import com.zhitan.common.enums.RetrievalModes;
+import com.zhitan.common.enums.TimeType;
+import com.zhitan.common.utils.ChartUtils;
+import com.zhitan.common.utils.DateTimeUtil;
import com.zhitan.common.utils.poi.ExcelUtil;
import com.zhitan.history.domain.dto.HistoricalDataDTO;
import com.zhitan.history.domain.vo.HistoricalDataExcel;
@@ -18,6 +23,7 @@
import com.zhitan.realtimedata.service.RealtimeDatabaseService;
import io.swagger.annotations.Api;
import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -63,9 +69,6 @@
public AjaxResult getSettingIndex(EnergyIndex energyIndex) {
try {
List<EnergyIndex> infoList = energyIndexService.selectEnergyIndexList(energyIndex);
-// List<String> codeList= infoList.stream().map(EnergyIndex::getCode).collect(Collectors.toList());
-// List<TagValue> valList = realtimeDatabaseService.retrieve(codeList);
-// List resultList = new ArrayList();
return AjaxResult.success(infoList);
} catch (Exception ex) {
logger.error("鑾峰彇鍏宠仈閲囬泦鎸囨爣鍑洪敊锛�", ex);
@@ -82,68 +85,44 @@
if (ObjectUtils.isEmpty(energyIndex)) {
return AjaxResult.error("鏈壘鍒扮偣浣嶄俊鎭�");
}
- Date beginTime = dto.getDataTime();
- Date endTime;
- // 鏌ヨ鏉℃暟
- int count = 1440;
- if ("DAY".equals(dto.getTimeType())) {
- endTime = DateUtil.endOfDay(beginTime);
+ List<Date> dateList = new ArrayList<>();
+ if (TimeType.DAY.name().equals(dto.getTimeType())) {
+ String timeCode = DateTimeUtil.getDateTime(dto.getDataTime(), DateTimeUtil.COMMON_PATTERN_TO_DAY);
+ ChartUtils.generateDateList(TimeTypeConst.TIME_TYPE_DAY, timeCode, dateList);
+ } else if (TimeType.HOUR.name().equals(dto.getTimeType())) {
+ String timeCode = DateTimeUtil.getDateTime(dto.getDataTime(), DateTimeUtil.COMMON_PATTERN_TO_HOUR);
+ ChartUtils.generateDateList(TimeTypeConst.TIME_TYPE_HOUR, timeCode, dateList);
} else {
- count = 3600;
- endTime = DateUtil.offsetSecond(DateUtil.offsetHour(beginTime, 1), -1);
+ return AjaxResult.error("鏃堕棿闂撮殧绫诲瀷涓嶆纭�");
}
// 鏌ヨ璁¢噺鍣ㄥ叿
- MeterImplement info = meterImplementService.selectMeterImplementById(energyIndex.getMeterId());
- List<TagValue> tagValueList = realtimeDatabaseService.retrieve(energyIndex.getCode(), beginTime, endTime,
- RetrievalModes.BestFit, count);
+ MeterImplement meterInfo = meterImplementService.selectMeterImplementById(energyIndex.getMeterId());
+ if (ObjectUtils.isEmpty(meterInfo)) {
+ return AjaxResult.error("鏈壘鍒拌閲忓櫒鍏蜂俊鎭�");
+ }
List<HistoricalDataVO> voList = new ArrayList<>();
- Date date = DateUtil.date();
- for (int i = 0; i < count + 1; i++) {
+ for (Date date : dateList) {
+ List<TagValue> tagValues = new ArrayList<>();
+ if(TimeType.DAY.name().equals(dto.getTimeType())){
+ Date beginTime = date;
+ Date endTime = DateUtil.offsetHour(DateUtil.offsetMinute(date, CommonConst.DIGIT_MINUS_1), CommonConst.DIGIT_1);
+ tagValues = realtimeDatabaseService.retrieve(energyIndex.getCode(), beginTime,endTime,CommonConst.DIGIT_1);
+ }
+ if(TimeType.HOUR.name().equals(dto.getTimeType())){
+ Date beginTime = date;
+ Date endTime = DateUtil.offsetMinute(DateUtil.offsetSecond(date, CommonConst.DIGIT_MINUS_1), CommonConst.DIGIT_1);
+ tagValues = realtimeDatabaseService.retrieve(energyIndex.getCode(), beginTime,endTime,CommonConst.DIGIT_1);
+ }
+
HistoricalDataVO vo = new HistoricalDataVO();
+ vo.setDataTime(DateUtil.formatDateTime(date));
vo.setIndexId(energyIndex.getIndexId());
- String indexName = energyIndex.getName();
- if (ObjectUtils.isNotEmpty(info)) {
- indexName = info.getInstallactionLocation() + "_" + info.getMeterName() + "_" + indexName;
+ vo.setIndexName(meterInfo.getInstallactionLocation() + "_" + meterInfo.getMeterName() + "_" + energyIndex.getName());
+ vo.setValue(CommonConst.DOUBLE_MINUS_SIGN);
+ if(ObjectUtils.isNotEmpty(tagValues)){
+ vo.setValue(tagValues.get(0).getValue().toString());
}
- vo.setIndexName(indexName);
- // 鍙栧��
- String value = "--";
- String usedValue = "--";
- if (beginTime.getTime() <= date.getTime()) {
- try {
- TagValue tagValue = tagValueList.get(i);
- BigDecimal cumulative = BigDecimal.valueOf(tagValue.getValue());
- if ("SWWSDJ_SD".equals(energyIndex.getCode()) || "SWWSDJ_WD".equals(energyIndex.getCode())) {
- cumulative = cumulative.multiply(BigDecimal.valueOf(0.1));
- }
- if (i > 0) {
- TagValue previousTagValue = tagValueList.get(i - 1);
- BigDecimal previousValue = BigDecimal.ZERO;
- if (ObjectUtils.isNotEmpty(previousTagValue.getValue())) {
- previousValue = BigDecimal.valueOf(previousTagValue.getValue());
- }
- if ("SWWSDJ_SD".equals(energyIndex.getCode()) || "SWWSDJ_WD".equals(energyIndex.getCode())) {
- previousValue = previousValue.multiply(BigDecimal.valueOf(0.1));
-
- }
- usedValue = String.valueOf(cumulative.subtract(previousValue).setScale(2, RoundingMode.HALF_UP));
- }
-
- value = String.valueOf(cumulative.setScale(2, RoundingMode.HALF_UP));
- } catch (Exception ignored) {
- }
- }
- // 鏃堕棿
- String timeName = DateUtil.formatDateTime(beginTime);
- vo.setDataTime(timeName);
- if ("DAY".equals(dto.getTimeType())) {
- beginTime = DateUtil.offsetMinute(beginTime, 1);
- } else {
- beginTime = DateUtil.offsetSecond(beginTime, 1);
- }
- vo.setUsedValue(String.valueOf(usedValue));
- vo.setValue(String.valueOf(value));
voList.add(vo);
}
return AjaxResult.success(voList);
diff --git a/zhitan-common/src/main/java/com/zhitan/common/enums/RetrievalModes.java b/zhitan-common/src/main/java/com/zhitan/common/enums/RetrievalModes.java
index 24c77fa..0ad5f32 100644
--- a/zhitan-common/src/main/java/com/zhitan/common/enums/RetrievalModes.java
+++ b/zhitan-common/src/main/java/com/zhitan/common/enums/RetrievalModes.java
@@ -6,5 +6,8 @@
* 鑾峰彇瀹炴椂鏁版嵁鏂瑰紡.
*/
public enum RetrievalModes {
- Full, BestFit
+
+ Full,
+
+ BestFit
}
diff --git a/zhitan-common/src/main/java/com/zhitan/common/utils/ChartUtils.java b/zhitan-common/src/main/java/com/zhitan/common/utils/ChartUtils.java
index a099168..b102a4a 100644
--- a/zhitan-common/src/main/java/com/zhitan/common/utils/ChartUtils.java
+++ b/zhitan-common/src/main/java/com/zhitan/common/utils/ChartUtils.java
@@ -24,6 +24,19 @@
public static void generateDateList(String timeType, String timeCode, List<Date> dateList) {
Date now = new Date();
switch (timeType) {
+ case TimeTypeConst.TIME_TYPE_HOUR:
+ if (!timeCode.contains(CommonConst.SINGLE_MINUS_SIGN)) {
+ timeCode = DateTimeUtil.toDateTimeStr(timeCode, DateTimeUtil.COMMON_PATTERN_HOUR, DateTimeUtil.COMMON_PATTERN_TO_HOUR);
+ }
+ int minute = 59;
+ for (int i = CommonConst.DIGIT_0; i <= minute; i++) {
+ String tempCode = timeCode + ":0" + i;
+ if(i>9){
+ tempCode = timeCode + ":" + i;
+ }
+ Date tempD = DateTimeUtil.toDateTime(tempCode, DateTimeUtil.COMMON_PATTERN_END_WITH_MINUTE);
+ dateList.add(tempD);
+ }
case TimeTypeConst.TIME_TYPE_DAY:
if (!timeCode.contains(CommonConst.SINGLE_MINUS_SIGN)) {
timeCode = DateTimeUtil.toDateTimeStr(timeCode, DateTimeUtil.COMMON_PATTERN_DAY, DateTimeUtil.COMMON_PATTERN_TO_DAY);
diff --git a/zhitan-system/src/main/java/com/zhitan/realtimedata/service/impl/RealtimeDatabaseServiceImpl.java b/zhitan-system/src/main/java/com/zhitan/realtimedata/service/impl/RealtimeDatabaseServiceImpl.java
index 796fa5f..a06574d 100644
--- a/zhitan-system/src/main/java/com/zhitan/realtimedata/service/impl/RealtimeDatabaseServiceImpl.java
+++ b/zhitan-system/src/main/java/com/zhitan/realtimedata/service/impl/RealtimeDatabaseServiceImpl.java
@@ -178,6 +178,5 @@
tagCodes.add(tagCode);
List<TagValue> historyData = repository.getHistoryData(tagCodes, beginTime, endTime, interval);
return historyData;
-// return realtimeDatabaseManager.retrieve(tagCode, beginTime, endTime, retrievalModes, pointCount);
}
}
--
Gitblit v1.9.3