From 182751d469c239ac6f718cd37fb0249d61abae21 Mon Sep 17 00:00:00 2001
From: DYL <Dn1332079466>
Date: 星期六, 08 二月 2025 17:00:45 +0800
Subject: [PATCH] 历史数据查询
---
zhitan-system/src/main/java/com/zhitan/history/domain/vo/HistoricalDataExcel.java | 70 ++++++
zhitan-system/src/main/java/com/zhitan/realtimedata/service/impl/RealtimeDatabaseServiceImpl.java | 12 +
zhitan-system/src/main/java/com/zhitan/history/domain/dto/HistoricalDataDTO.java | 63 +++++
zhitan-system/src/main/java/com/zhitan/realtimedata/service/RealtimeDatabaseService.java | 14 +
zhitan-system/src/main/java/com/zhitan/history/domain/vo/HistoricalDataVO.java | 77 +++++++
zhitan-admin/src/main/java/com/zhitan/web/controller/history/HistoryDataTrendController.java | 224 ++++++++++++++++++++
zhitan-system/src/main/java/com/zhitan/realtimedata/data/RealtimeDatabaseManager.java | 163 ++++++++++++++
7 files changed, 622 insertions(+), 1 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
new file mode 100644
index 0000000..e1f067b
--- /dev/null
+++ b/zhitan-admin/src/main/java/com/zhitan/web/controller/history/HistoryDataTrendController.java
@@ -0,0 +1,224 @@
+package com.zhitan.web.controller.history;
+
+import cn.hutool.core.date.DateUtil;
+import com.zhitan.basicdata.domain.MeterImplement;
+import com.zhitan.basicdata.services.IMeterImplementService;
+import com.zhitan.common.annotation.Log;
+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.utils.poi.ExcelUtil;
+import com.zhitan.history.domain.dto.HistoricalDataDTO;
+import com.zhitan.history.domain.vo.HistoricalDataExcel;
+import com.zhitan.history.domain.vo.HistoricalDataVO;
+import com.zhitan.model.domain.EnergyIndex;
+import com.zhitan.model.service.IEnergyIndexService;
+import com.zhitan.realtimedata.domain.TagValue;
+import com.zhitan.realtimedata.service.RealtimeDatabaseService;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 璁惧鍚仠瀹炴椂鐩戞祴Controller
+ *
+ * @author sys
+ * @date 2020-03-30
+ */
+@RestController
+@RequestMapping("/dataMonitoring/historyDataTrend")
+public class HistoryDataTrendController extends BaseController {
+ @Autowired
+ private final IEnergyIndexService energyIndexService;
+
+ @Autowired
+ private final IMeterImplementService meterImplementService;
+
+ @Autowired
+ private final RealtimeDatabaseService realtimeDatabaseService;
+
+
+ public HistoryDataTrendController(IEnergyIndexService energyIndexService,
+ IMeterImplementService meterImplementService,
+ RealtimeDatabaseService realtimeDatabaseService) {
+ this.energyIndexService = energyIndexService;
+ this.meterImplementService = meterImplementService;
+ this.realtimeDatabaseService = realtimeDatabaseService;
+ }
+
+
+ @Log(title = "鑾峰彇妯″瀷鑺傜偣鍏宠仈閲囬泦鎸囨爣", businessType = BusinessType.UPDATE)
+ @GetMapping("/energyIndex/list")
+ 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);
+ return AjaxResult.error("鑾峰彇鍏宠仈鎸囨爣鍑洪敊!");
+ }
+ }
+
+ @Log(title = "鏍规嵁鏃堕棿涓庣偣浣嶆煡璇㈠巻鍙茬洃娴嬫暟鎹�", businessType = BusinessType.UPDATE)
+ @GetMapping("/getHistoricalDataByIndexId")
+ public AjaxResult getHistoricalDataByIndexId(HistoricalDataDTO dto) {
+ try {
+ // 鑾峰彇鐐逛綅淇℃伅
+ EnergyIndex energyIndex = energyIndexService.selectEnergyIndexById(dto.getIndexId());
+ 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);
+ } else {
+ count = 3600;
+ endTime = DateUtil.offsetSecond(DateUtil.offsetHour(beginTime, 1), -1);
+ }
+ // 鏌ヨ璁¢噺鍣ㄥ叿
+ MeterImplement info = meterImplementService.selectMeterImplementById(energyIndex.getMeterId());
+ List<TagValue> tagValueList = realtimeDatabaseService.retrieve(energyIndex.getCode(), beginTime, endTime,
+ RetrievalModes.BestFit, count);
+ List<HistoricalDataVO> voList = new ArrayList<>();
+ Date date = DateUtil.date();
+ for (int i = 0; i < count + 1; i++) {
+ HistoricalDataVO vo = new HistoricalDataVO();
+ vo.setIndexId(energyIndex.getIndexId());
+ String indexName = energyIndex.getName();
+ if (ObjectUtils.isNotEmpty(info)) {
+ indexName = info.getInstallactionLocation() + "_" + info.getMeterName() + "_" + indexName;
+ }
+ 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);
+ } catch (Exception ex) {
+ logger.error("鏌ヨ鍘嗗彶鐩戞祴鏁版嵁鍑洪敊锛�", ex);
+ return AjaxResult.error("鏌ヨ鍘嗗彶鐩戞祴鏁版嵁鍑洪敊!");
+ }
+ }
+
+ @Log(title = "瀵煎嚭Excel", businessType = BusinessType.UPDATE)
+ @GetMapping("/export")
+ public AjaxResult export(HistoricalDataDTO dto) {
+ try {
+ // 鑾峰彇鐐逛綅淇℃伅
+ EnergyIndex energyIndex = energyIndexService.selectEnergyIndexById(dto.getIndexId());
+ if (ObjectUtils.isEmpty(energyIndex)) {
+ return AjaxResult.success("鏈壘鍒扮偣浣嶄俊鎭�");
+ }
+ Date beginTime = dto.getDataTime();
+ Date endTime;
+ // 鏌ヨ鏉℃暟
+ int count = 23;
+ if ("DAY".equals(dto.getTimeType())) {
+ endTime = DateUtil.endOfDay(beginTime);
+ } else {
+ count = 19;
+ endTime = DateUtil.offsetSecond(DateUtil.offsetHour(beginTime, 1), -1);
+ }
+ // 鏌ヨ璁¢噺鍣ㄥ叿
+ MeterImplement infor = meterImplementService.selectMeterImplementById(energyIndex.getMeterId());
+ List<TagValue> tagValueList = realtimeDatabaseService.retrieve(energyIndex.getCode(), beginTime, endTime,
+ RetrievalModes.BestFit, count);
+ List<HistoricalDataExcel> excelList = new ArrayList<>();
+ Date date = DateUtil.date();
+ for (int i = 0; i < count + 1; i++) {
+ HistoricalDataExcel vo = new HistoricalDataExcel();
+ String indexName = energyIndex.getName();
+ if (ObjectUtils.isNotEmpty(infor)) {
+ indexName = infor.getInstallactionLocation() + "_" + infor.getMeterName() + "_" + indexName;
+ }
+ 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 (i > 0) {
+ TagValue previousTagValue = tagValueList.get(i - 1);
+ BigDecimal previousValue = BigDecimal.valueOf(previousTagValue.getValue());
+ 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.offsetHour(beginTime, 1);
+ } else {
+ beginTime = DateUtil.offsetMinute(beginTime, 3);
+ }
+ vo.setValue(String.valueOf(value));
+ vo.setUsedValue(String.valueOf(usedValue));
+ excelList.add(vo);
+ }
+ ExcelUtil<HistoricalDataExcel> util = new ExcelUtil<>(HistoricalDataExcel.class);
+ String sheetName = "鍘嗗彶鏁版嵁缁熻" + DateUtil.formatDate(dto.getDataTime());
+// return util.exportRealTimeDataExcel(excelList, sheetName);
+ return util.exportExcel(excelList, sheetName);
+ } catch (Exception ex) {
+ logger.error("瀵煎嚭Excel鏁版嵁鍑洪敊锛�", ex);
+ return AjaxResult.error("瀵煎嚭Excel鏁版嵁鍑洪敊!");
+ }
+ }
+
+}
diff --git a/zhitan-system/src/main/java/com/zhitan/history/domain/dto/HistoricalDataDTO.java b/zhitan-system/src/main/java/com/zhitan/history/domain/dto/HistoricalDataDTO.java
new file mode 100644
index 0000000..347976b
--- /dev/null
+++ b/zhitan-system/src/main/java/com/zhitan/history/domain/dto/HistoricalDataDTO.java
@@ -0,0 +1,63 @@
+package com.zhitan.history.domain.dto;
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+
+/**
+ * 鍘嗗彶鐩戞祴鏁版嵁璇锋眰 DTO
+ *
+ * @Author: Zhujw
+ * @Date: 2023/3/7
+ */
+public class HistoricalDataDTO {
+
+ /**
+ * 鐐逛綅id
+ */
+ @NotBlank(message = "鏈壘鍒扮偣浣嶄俊鎭�")
+ private String indexId;
+
+ /**
+ * 鏃堕棿绫诲瀷
+ */
+ @NotBlank(message = "鏈壘鍒版椂闂寸被鍨�")
+ private String timeType;
+
+ /**
+ * 鏌ヨ鏃堕棿
+ */
+ @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+ @NotNull(message = "鏈壘鍒版椂闂翠俊鎭�")
+ private Date dataTime;
+
+ public String getIndexId() {
+ return indexId;
+ }
+
+ public void setIndexId(String indexId) {
+ this.indexId = indexId;
+ }
+
+ public String getTimeType() {
+ return timeType;
+ }
+
+ public void setTimeType(String timeType) {
+ this.timeType = timeType;
+ }
+
+ public Date getDataTime() {
+ return dataTime;
+ }
+
+ public void setDataTime(Date dataTime) {
+ this.dataTime = dataTime;
+ }
+
+}
\ No newline at end of file
diff --git a/zhitan-system/src/main/java/com/zhitan/history/domain/vo/HistoricalDataExcel.java b/zhitan-system/src/main/java/com/zhitan/history/domain/vo/HistoricalDataExcel.java
new file mode 100644
index 0000000..ca0b653
--- /dev/null
+++ b/zhitan-system/src/main/java/com/zhitan/history/domain/vo/HistoricalDataExcel.java
@@ -0,0 +1,70 @@
+package com.zhitan.history.domain.vo;
+
+
+import com.zhitan.common.annotation.Excel;
+
+/**
+ * 鍘嗗彶鐩戞祴鏁版嵁杩斿洖 Excel
+ *
+ * @Author: Zhujw
+ * @Date: 2023/3/7
+ */
+public class HistoricalDataExcel {
+
+ /**
+ * 鐐逛綅鍚嶇О
+ */
+ @Excel(name = "鐐逛綅鍚嶇О")
+ private String indexName;
+
+ /**
+ * 鍊�
+ */
+ @Excel(name = "鍊�")
+ private String value;
+
+ /**
+ * 浣跨敤閲�
+ */
+ @Excel(name = "浣跨敤閲�")
+ private String usedValue;
+
+ /**
+ * 鏃堕棿
+ */
+ @Excel(name = "鏃堕棿")
+ private String dataTime;
+
+
+ public String getIndexName() {
+ return indexName;
+ }
+
+ public void setIndexName(String indexName) {
+ this.indexName = indexName;
+ }
+
+ public String getDataTime() {
+ return dataTime;
+ }
+
+ public void setDataTime(String dataTime) {
+ this.dataTime = dataTime;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public String getUsedValue() {
+ return usedValue;
+ }
+
+ public void setUsedValue(String usedValue) {
+ this.usedValue = usedValue;
+ }
+}
\ No newline at end of file
diff --git a/zhitan-system/src/main/java/com/zhitan/history/domain/vo/HistoricalDataVO.java b/zhitan-system/src/main/java/com/zhitan/history/domain/vo/HistoricalDataVO.java
new file mode 100644
index 0000000..b03f10b
--- /dev/null
+++ b/zhitan-system/src/main/java/com/zhitan/history/domain/vo/HistoricalDataVO.java
@@ -0,0 +1,77 @@
+package com.zhitan.history.domain.vo;
+
+
+/**
+ * 鍘嗗彶鐩戞祴鏁版嵁杩斿洖 VO
+ *
+ * @Author: Zhujw
+ * @Date: 2023/3/7
+ */
+public class HistoricalDataVO {
+
+ /**
+ * 鐐逛綅id
+ */
+ private String indexId;
+
+ /**
+ * 鐐逛綅鍚嶇О
+ */
+ private String indexName;
+
+ /**
+ * 鏃堕棿
+ */
+ private String dataTime;
+
+ /**
+ * 鍊�
+ */
+ private String value;
+
+ /**
+ * 浣跨敤閲�
+ */
+ private String usedValue;
+
+
+ public String getIndexId() {
+ return indexId;
+ }
+
+ public void setIndexId(String indexId) {
+ this.indexId = indexId;
+ }
+
+ public String getIndexName() {
+ return indexName;
+ }
+
+ public void setIndexName(String indexName) {
+ this.indexName = indexName;
+ }
+
+ public String getDataTime() {
+ return dataTime;
+ }
+
+ public void setDataTime(String dataTime) {
+ this.dataTime = dataTime;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public String getUsedValue() {
+ return usedValue;
+ }
+
+ public void setUsedValue(String usedValue) {
+ this.usedValue = usedValue;
+ }
+}
\ No newline at end of file
diff --git a/zhitan-system/src/main/java/com/zhitan/realtimedata/data/RealtimeDatabaseManager.java b/zhitan-system/src/main/java/com/zhitan/realtimedata/data/RealtimeDatabaseManager.java
new file mode 100644
index 0000000..f3914ff
--- /dev/null
+++ b/zhitan-system/src/main/java/com/zhitan/realtimedata/data/RealtimeDatabaseManager.java
@@ -0,0 +1,163 @@
+package com.zhitan.realtimedata.data;
+
+import com.influxdb.client.InfluxDBClient;
+import com.influxdb.client.InfluxDBClientFactory;
+import com.influxdb.client.domain.HealthCheck;
+import com.zhitan.common.enums.CollectionModes;
+import com.zhitan.common.enums.RetrievalModes;
+import com.zhitan.realtimedata.config.RtdbConfig;
+import com.zhitan.realtimedata.domain.TagValue;
+import com.zhitan.realtimedata.service.RealtimeDatabase;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Optional;
+
+/**
+ * @author 鑼冩柊瀵� 瀹炴椂鏁版嵁搴撹闂鐞�.
+ */
+@Component
+public class RealtimeDatabaseManager {
+
+ private final RealtimeDatabase connection;
+
+ private final Logger logger = LogManager.getLogger(RealtimeDatabaseManager.class);
+
+ public RealtimeDatabaseManager(RtdbConfig config) {
+ connection = new VirtualRtdb();
+ try {
+ InfluxDBClient influxDBClient = InfluxDBClientFactory.create(config.getHost(),
+ config.getToken().toCharArray(), config.getOrg(), config.getBucket());
+
+ logger.error("--------------------瀹炴椂搴撹繛鎺ユ垚鍔�--------------------");
+ HealthCheck health = influxDBClient.health();
+ if (health.getStatus() == HealthCheck.StatusEnum.FAIL) {
+ influxDBClient.close();
+ }
+ } catch (Exception e) {
+ logger.error(e);
+ }
+ }
+
+ public TagValue retrieve(String tagCode) {
+ List<String> tagCodes = new ArrayList<>();
+ tagCodes.add(tagCode);
+ List<TagValue> tagValues = retrieve(tagCodes);
+ if (!tagValues.isEmpty()) {
+ return tagValues.get(0);
+ }
+
+ return null;
+ }
+
+ public List<TagValue> retrieve(List<String> tagCodes) {
+ List<TagValue> tagValues = new ArrayList<>();
+ try {
+ tagValues = connection.retrieve(tagCodes);
+ } catch (Exception e) {
+ logger.error(e);
+ }
+
+ return tagValues;
+ }
+
+ public TagValue retrieve(String tagCode, Date dataTime, String timeCode) {
+ List<String> tagCodes = new ArrayList<>();
+ tagCodes.add(tagCode);
+ List<TagValue> tagValues = retrieve(tagCodes, dataTime, timeCode);
+ if (!tagValues.isEmpty()) {
+ return tagValues.get(0);
+ }
+
+ return null;
+ }
+
+ public List<TagValue> retrieve(List<String> tagCodes, Date dataTime, String timeCode) {
+ List<TagValue> tagValues = new ArrayList<>();
+ try {
+ List<TagValue> tmp = connection.retrieve(tagCodes, dataTime, timeCode);
+ for (String tagCode : tagCodes) {
+ Optional<TagValue> tagValue = tmp.stream()
+ .filter(f -> StringUtils.equalsIgnoreCase(f.getTagCode(), tagCode)).findAny();
+ TagValue value;
+ if (!tagValue.isPresent()) {
+ value = new TagValue();
+ value.setTagCode(tagCode);
+ value.setDataTime(dataTime);
+ } else {
+ value = tagValue.get();
+ }
+
+ tagValues.add(value);
+ }
+ } catch (Exception e1) {
+ logger.error(e1);
+ }
+
+ return tagValues;
+ }
+
+ public List<TagValue> retrieve(String tagCode, Date beginTime, Date endTime,
+ RetrievalModes retrievalModes, int pointCount) {
+ List<String> tagCodes = new ArrayList<>();
+ tagCodes.add(tagCode);
+ return retrieve(tagCodes, beginTime, endTime, retrievalModes, pointCount);
+ }
+
+ public List<TagValue> retrieve(List<String> tagCodes, Date beginTime, Date endTime,
+ RetrievalModes retrievalModes, int pointCount) {
+ List<TagValue> tagValues = new ArrayList<>();
+ try {
+ tagValues = connection.retrieve(tagCodes, beginTime, endTime, retrievalModes, pointCount);
+ } catch (Exception e1) {
+ logger.error(e1);
+ }
+
+ return tagValues;
+ }
+
+ public TagValue statistics(String tagCode, Date beginTime, Date endTime,
+ CollectionModes collectionModes) {
+ List<String> tagCodes = new ArrayList<>();
+ tagCodes.add(tagCode);
+ List<TagValue> tagValues = statistics(tagCodes, beginTime, endTime, collectionModes);
+ if (!tagValues.isEmpty()) {
+ return tagValues.get(0);
+ }
+
+ return null;
+ }
+
+ public List<TagValue> statistics(List<String> tagCodes, Date beginTime, Date endTime,
+ CollectionModes collectionModes) {
+ List<TagValue> tagValues = new ArrayList<>();
+ try {
+ tagValues = connection.statistics(tagCodes, beginTime, endTime, collectionModes);
+ } catch (Exception e1) {
+ logger.error(e1);
+ }
+
+ return tagValues;
+ }
+
+ public void storeData(List<TagValue> tagValues) {
+ try {
+ connection.storeData(tagValues);
+ } catch (Exception e1) {
+ logger.error(e1);
+ }
+ }
+
+ public void insertData(List<TagValue> tagValues) {
+ try {
+ connection.insertData(tagValues);
+ } catch (Exception e1) {
+ logger.error(e1);
+ }
+ }
+}
diff --git a/zhitan-system/src/main/java/com/zhitan/realtimedata/service/RealtimeDatabaseService.java b/zhitan-system/src/main/java/com/zhitan/realtimedata/service/RealtimeDatabaseService.java
index 956a5cd..dc45bc7 100644
--- a/zhitan-system/src/main/java/com/zhitan/realtimedata/service/RealtimeDatabaseService.java
+++ b/zhitan-system/src/main/java/com/zhitan/realtimedata/service/RealtimeDatabaseService.java
@@ -2,6 +2,7 @@
import com.zhitan.common.enums.CollectionModes;
+import com.zhitan.common.enums.RetrievalModes;
import com.zhitan.realtimedata.domain.TagValue;
import java.util.Date;
@@ -105,4 +106,17 @@
* @param tagValues 娴嬬偣鍘嗗彶鏃跺埢鏁版嵁
*/
void insertData(List<TagValue> tagValues);
+
+ /**
+ * 鑾峰彇涓�娈垫椂闂村唴娴嬬偣鐨勫巻鍙叉暟鎹�.
+ *
+ * @param tagCode 娴嬬偣缂栧彿
+ * @param beginTime 寮�濮嬫椂闂�
+ * @param endTime 缁撴潫鏃堕棿
+ * @param retrievalModes 鏌ヨ鏁版嵁鏂瑰紡
+ * @param pointCount 娴嬬偣寰楀埌鐨勬暟鎹釜鏁�
+ * @return 娴嬬偣鍘嗗彶鏁版嵁
+ */
+ List<TagValue> retrieve(String tagCode, Date beginTime, Date endTime,
+ RetrievalModes retrievalModes, int pointCount);
}
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 bb8b97b..7128652 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
@@ -2,6 +2,8 @@
import com.google.common.collect.Lists;
import com.zhitan.common.enums.CollectionModes;
+import com.zhitan.common.enums.RetrievalModes;
+import com.zhitan.realtimedata.data.RealtimeDatabaseManager;
import com.zhitan.realtimedata.data.influxdb.InfluxDBRepository;
import com.zhitan.realtimedata.domain.TagValue;
import com.zhitan.realtimedata.service.RealtimeDatabaseService;
@@ -20,8 +22,11 @@
private final InfluxDBRepository repository;
- public RealtimeDatabaseServiceImpl(InfluxDBRepository repository) {
+ private final RealtimeDatabaseManager realtimeDatabaseManager;
+
+ public RealtimeDatabaseServiceImpl(InfluxDBRepository repository, RealtimeDatabaseManager realtimeDatabaseManager) {
this.repository = repository;
+ this.realtimeDatabaseManager = realtimeDatabaseManager;
}
/**
@@ -146,4 +151,9 @@
repository.store(tagValues);
}
+ @Override
+ public List<TagValue> retrieve(String tagCode, Date beginTime, Date endTime,
+ RetrievalModes retrievalModes, int pointCount) {
+ return realtimeDatabaseManager.retrieve(tagCode, beginTime, endTime, retrievalModes, pointCount);
+ }
}
--
Gitblit v1.9.3