123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- package com.gyee.dataadapter.service;
- import com.gyee.dataadapter.dao.IHistoryDao;
- import com.gyee.dataadapter.dao.ILatestDao;
- import com.gyee.dataadapter.entity.PointData;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.stereotype.Service;
- import javax.annotation.Resource;
- import java.util.*;
- import java.util.concurrent.TimeUnit;
- import java.util.stream.Collectors;
- @Slf4j
- @Service
- public class TsDataService {
- @Resource
- private IAdapterService adapterService;
- @Resource
- private ILatestDao latestDao;
- @Resource
- private IHistoryDao historyDao;
- public Map<String, PointData> getLatest(String tagNames) {
- String[] split = tagNames.split(",");
- return getLatest(Arrays.asList(split));
- }
- public Map<String, PointData> getLatest(List<String> tagNames) {
- Map<Boolean, List<String>> nxFgs = tagNames.stream().collect(Collectors.groupingBy(tn -> tn.startsWith("NX_FGS_")));
- Map<String, PointData> latest = null;
- try {
- latest = historyDao.getLatest(nxFgs.get(true));
- } catch (Exception e) {
- e.printStackTrace();
- }
- Map<String, PointData> data2 = adapterService.getLatestData2(nxFgs.get(false));
- latest.putAll(data2);
- return latest;
- }
- public List<PointData> getHistoryRaw(String tagName, Date startTime, Date endTime) {
- try {
- if (tagName.startsWith("NX_FGS_")) {
- return historyDao.getHistoryRaw(tagName, startTime, endTime);
- } else {
- return adapterService.getPointData(startTime, endTime, 1, null, tagName);
- }
- } catch (Exception e) {
- log.error("异常点:" + tagName);
- log.error(e.getMessage());
- return new ArrayList<>();
- }
- }
- public List<PointData> getHistoryRaw(String tagName, long startTs, long endTs) {
- return getHistoryRaw(tagName, new Date(startTs), new Date(endTs));
- }
- public List<PointData> getHistorySnap(String tagName, long startTs, long endTs, Integer interval) {
- return getHistorySnap(tagName, new Date(startTs), new Date(endTs), interval);
- }
- public List<PointData> getHistorySnap(String tagName, Date startTime, Date endTime, Integer interval) {
- if (interval == null || interval == 0) interval = 60;
- try {
- if (tagName.startsWith("NX_FGS_")) {
- return historyDao.getHistorySnap(tagName, startTime, endTime, interval);
- } else {
- return adapterService.getPointData(startTime, endTime, 0, interval, tagName);
- }
- } catch (Exception e) {
- log.error("异常点:" + tagName);
- log.error(e.getMessage());
- return new ArrayList<>();
- }
- }
- /**
- * @param startTime:开始时间。
- * @param endTime:结束时间。
- * @param type:采样类型。0瞬时值,1原始值,2最大值,3最小值,4平均值。
- * @param interval:采样频率,单位秒。
- * @param tagName:要查询的变量(数据、测点)名。
- */
- public List<PointData> getHistoryStat(String tagName, Date startTime, Date endTime, Integer interval, Integer type) {
- if (interval == null || interval == 0) interval = 60;
- if (type == null || type < 2 || type > 4) type = 4;
- try {
- if (tagName.startsWith("NX_FGS_")) {
- return historyDao.getHistoryStat(tagName, startTime, endTime, interval, type);
- } else {
- return adapterService.getPointData(startTime, endTime, type, interval, tagName);
- }
- } catch (Exception e) {
- log.error("异常点:" + tagName);
- log.error(e.getMessage());
- return new ArrayList<>();
- }
- }
- public PointData getHistoryStat0(String tagName, Date startTime, Date endTime, Integer type) {
- if (tagName.startsWith("NX_FGS_")) {
- try {
- return historyDao.getHistoryStat0(tagName, startTime, endTime, type);
- } catch (Exception e) {
- e.printStackTrace();
- }
- } else {
- int interval = (int) TimeUnit.MILLISECONDS.toMinutes(endTime.getTime() - startTime.getTime());
- List<PointData> pd = adapterService.getPointData(startTime, endTime, type, interval, tagName);
- return pd.get(0);
- }
- return new PointData();
- }
- public boolean writeLatest(List<PointData> dataList) {
- return latestDao.writeLatest(dataList);
- }
- public boolean writeLatest(PointData data) {
- return writeLatest(Collections.singletonList(data));
- }
- public Map<String, PointData> getHistorySection(long ts, String tagNames) {
- return getHistorySection(new Date(ts), tagNames);
- }
- public Map<String, PointData> getHistorySection(Date time, String tagNames) {
- Map<Boolean, List<String>> nxFgs = Arrays.stream(tagNames.split(",")).collect(
- Collectors.groupingBy(tn -> tn.startsWith("NX_FGS_")));
- Map<String, PointData> result = new HashMap<>();
- try {
- Map<String, PointData> latest = historyDao.getHistorySection(time, nxFgs.get(true));
- result.putAll(latest);
- if (nxFgs.get(false) == null) return result;
- for (String tagName : nxFgs.get(false)) {
- List<PointData> pdsMap = adapterService.getPointData(time, time, 1, null, tagName);
- result.put(tagName, pdsMap.get(0));
- }
- return result;
- } catch (Exception e) {
- log.error(e.getMessage());
- return new HashMap<>();
- }
- }
- }
|