From ff178a3ee50aeb73030cc6f6ee055506295e37de Mon Sep 17 00:00:00 2001 From: huangzj <826100833@qq.com> Date: Mon, 28 Aug 2023 09:09:05 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pqs-influx/pom.xml | 6 ++ .../service/impl/CommonServiceImpl.java | 74 ++++++++++++++----- 2 files changed, 61 insertions(+), 19 deletions(-) diff --git a/pqs-influx/pom.xml b/pqs-influx/pom.xml index 0dfb3a9c3..204bd243a 100644 --- a/pqs-influx/pom.xml +++ b/pqs-influx/pom.xml @@ -48,6 +48,12 @@ 1.0.0 compile + + com.njcn + cs-device-api + 1.0.0 + compile + diff --git a/pqs-influx/src/main/java/com/njcn/influx/service/impl/CommonServiceImpl.java b/pqs-influx/src/main/java/com/njcn/influx/service/impl/CommonServiceImpl.java index 1923d5a57..4a36fd97d 100644 --- a/pqs-influx/src/main/java/com/njcn/influx/service/impl/CommonServiceImpl.java +++ b/pqs-influx/src/main/java/com/njcn/influx/service/impl/CommonServiceImpl.java @@ -2,6 +2,8 @@ package com.njcn.influx.service.impl; import cn.hutool.core.lang.Dict; import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.csdevice.api.CsLineFeignClient; +import com.njcn.csdevice.enums.AlgorithmResponseEnum; import com.njcn.influx.imapper.CommonMapper; import com.njcn.influx.pojo.constant.InfluxDBTableConstant; import com.njcn.influx.pojo.dto.StatisticalDataDTO; @@ -9,10 +11,12 @@ import com.njcn.influx.query.InfluxQueryWrapper; import com.njcn.influx.service.CommonService; import com.njcn.influx.utils.ReflectUitl; import com.njcn.system.api.DicDataFeignClient; +import com.njcn.system.enums.DicDataEnum; import com.njcn.system.pojo.po.DictData; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Objects; @@ -31,6 +35,8 @@ public class CommonServiceImpl implements CommonService { private final CommonMapper commonMapper; private final DicDataFeignClient dicDataFeignClient; + + private final CsLineFeignClient csLineFeignClient; @Override public StatisticalDataDTO getLineRtData(String lineId, String tableName, String columnName, String phasic, String dataType, String clDid) { InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(getTableNameByClassId(tableName),StatisticalDataDTO.class); @@ -47,29 +53,43 @@ public class CommonServiceImpl implements CommonService { @Override public List getDeviceRtData(List lineIds, String tableName, String columnName, String phasic, String dataType) { - InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(getTableNameByClassId(tableName),StatisticalDataDTO.class); - influxQueryWrapper.select(StatisticalDataDTO::getLineId) - .select(StatisticalDataDTO::getPhaseType) - .select(StatisticalDataDTO::getValueType) - .last(columnName,InfluxDBTableConstant.VALUE) - .or(InfluxDBTableConstant.LINE_ID,lineIds) - .eq(InfluxDBTableConstant.PHASIC_TYPE,phasic) - .eq(InfluxDBTableConstant.VALUE_TYPE,dataType).groupBy(InfluxDBTableConstant.LINE_ID); - return commonMapper.getDeviceRtData(influxQueryWrapper); + List resultList = new ArrayList<>(); + for (String lineId: lineIds) { + String clDidByLineId = getClDidByLineId(lineId); + InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(getTableNameByClassId(tableName),StatisticalDataDTO.class); + influxQueryWrapper.select(StatisticalDataDTO::getLineId) + .select(StatisticalDataDTO::getPhaseType) + .select(StatisticalDataDTO::getValueType) + .last(columnName,InfluxDBTableConstant.VALUE) + .eq(InfluxDBTableConstant.LINE_ID,lineId) + .eq(InfluxDBTableConstant.PHASIC_TYPE,phasic) + .eq(InfluxDBTableConstant.VALUE_TYPE,dataType).eq(InfluxDBTableConstant.CL_DID,clDidByLineId); + List deviceRtData = commonMapper.getDeviceRtData(influxQueryWrapper); + resultList.addAll(deviceRtData); + } + + return resultList; } @Override public List getDeviceRtDataByTime(List lineIds, String tableName, String columnName, String phasic, String dataType, String startTime, String endTime) { - InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(getTableNameByClassId(tableName),StatisticalDataDTO.class); - influxQueryWrapper.select(StatisticalDataDTO::getLineId) - .select(StatisticalDataDTO::getPhaseType) - .select(StatisticalDataDTO::getValueType) - .select(columnName,InfluxDBTableConstant.VALUE) - .or(InfluxDBTableConstant.LINE_ID,lineIds) - .eq(InfluxDBTableConstant.PHASIC_TYPE,phasic) - .between(InfluxDBTableConstant.TIME, startTime, endTime) - .eq(InfluxDBTableConstant.VALUE_TYPE,dataType).groupBy(InfluxDBTableConstant.LINE_ID); - return commonMapper.getDeviceRtDataByTime(influxQueryWrapper); + List resultList = new ArrayList<>(); + for (String lineId: lineIds) { + String clDidByLineId = getClDidByLineId(lineId); + InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(getTableNameByClassId(tableName),StatisticalDataDTO.class); + influxQueryWrapper.select(StatisticalDataDTO::getLineId) + .select(StatisticalDataDTO::getPhaseType) + .select(StatisticalDataDTO::getValueType) + .select(columnName,InfluxDBTableConstant.VALUE) + .eq(InfluxDBTableConstant.LINE_ID,lineId) + .eq(InfluxDBTableConstant.PHASIC_TYPE,phasic) + .between(InfluxDBTableConstant.TIME, startTime, endTime) + .eq(InfluxDBTableConstant.VALUE_TYPE,dataType).eq(InfluxDBTableConstant.CL_DID,clDidByLineId); + List deviceRtData = commonMapper.getDeviceRtDataByTime(influxQueryWrapper); + resultList.addAll(deviceRtData); + } + + return resultList; } @Override @@ -96,4 +116,20 @@ public class CommonServiceImpl implements CommonService { } return data.getCode(); } + private String getClDidByLineId(String lineId){ + String position = csLineFeignClient.getPositionById(lineId).getData(); + if (Objects.isNull(position)){ + throw new BusinessException(AlgorithmResponseEnum.POSITION_ERROR); + } + String clDid = null; + String areaCode = dicDataFeignClient.getDicDataById(position).getData().getCode(); + if (Objects.equals(areaCode, DicDataEnum.OUTPUT_SIDE.getCode())){ + clDid = "0"; + } else if (Objects.equals(areaCode, DicDataEnum.LOAD_SIDE.getCode())){ + clDid = "1"; + } else if (Objects.equals(areaCode, DicDataEnum.GRID_SIDE.getCode())){ + clDid = "2"; + } + return clDid; + } }