feat(influx): 添加电度增量数据查询功能
- 在 CommonService 中新增 getDianDuData 方法接口 - 实现电度增量数据查询的具体逻辑 - 添加对多个查询参数的循环处理支持 - 集成 InfluxDB 差值计算功能 - 处理查询结果的数据转换和格式化 - 添加对空集合的安全检查和处理
This commit is contained in:
@@ -89,4 +89,11 @@ public interface CommonService {
|
||||
StatisticalDataDTO getDataCounts(String lineId, String tableName, String columnName,String resultName, String phasic, String dataType, String clDid, String process,String startTime, String endTime);
|
||||
|
||||
List<StatisticalDataDTO> getModuleData(CommonQueryParam param);
|
||||
|
||||
/**
|
||||
* 电度增量数据查询
|
||||
* @param commonQueryParams
|
||||
* @return
|
||||
*/
|
||||
List<StatisticalDataDTO> getDianDuData(List<CommonQueryParam> commonQueryParams);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.njcn.influx.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import com.njcn.influx.imapper.CommonMapper;
|
||||
import com.njcn.influx.pojo.bo.CommonQueryParam;
|
||||
@@ -213,4 +214,33 @@ public class CommonServiceImpl implements CommonService {
|
||||
.eq(InfluxDBTableConstant.CL_DID,param.getClDid());
|
||||
return commonMapper.getDeviceRtDataByTime(influxQueryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<StatisticalDataDTO> getDianDuData(List<CommonQueryParam> commonQueryParams) {
|
||||
List<StatisticalDataDTO> resultList = new ArrayList<>();
|
||||
for (CommonQueryParam commonQueryParam: commonQueryParams) {
|
||||
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(commonQueryParam.getTableName(), StatisticalDataDTO.class);
|
||||
influxQueryWrapper.difference(commonQueryParam.getColumnName())
|
||||
.eq(InfluxDBTableConstant.LINE_ID, commonQueryParam.getLineId())
|
||||
.eq(InfluxDBTableConstant.PHASIC_TYPE, commonQueryParam.getPhasic())
|
||||
.between(InfluxDBTableConstant.TIME, commonQueryParam.getStartTime(), commonQueryParam.getEndTime())
|
||||
.eq(InfluxDBTableConstant.CL_DID, commonQueryParam.getClDid());
|
||||
if (commonQueryParam.getDataType() != null) {
|
||||
influxQueryWrapper.eq(InfluxDBTableConstant.VALUE_TYPE, commonQueryParam.getDataType());
|
||||
}
|
||||
if (commonQueryParam.getProcess() != null) {
|
||||
influxQueryWrapper.eq(InfluxDBTableConstant.PROCESS, commonQueryParam.getProcess());
|
||||
}
|
||||
List<StatisticalDataDTO> deviceRtData = commonMapper.getDeviceRtDataByTime(influxQueryWrapper);
|
||||
if (CollUtil.isNotEmpty(deviceRtData)) {
|
||||
deviceRtData.forEach(item -> {
|
||||
item.setLineId(commonQueryParam.getLineId());
|
||||
item.setPhaseType(commonQueryParam.getPhasic());
|
||||
item.setValueType("AVG");
|
||||
});
|
||||
}
|
||||
resultList.addAll(deviceRtData);
|
||||
}
|
||||
return resultList;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user