feat(influx): 添加电度增量数据查询功能

- 在 CommonService 中新增 getDianDuData 方法接口
- 实现电度增量数据查询的具体逻辑
- 添加对多个查询参数的循环处理支持
- 集成 InfluxDB 差值计算功能
- 处理查询结果的数据转换和格式化
- 添加对空集合的安全检查和处理
This commit is contained in:
xy
2026-06-03 10:12:04 +08:00
parent 91e42a1679
commit f187e89588
2 changed files with 37 additions and 0 deletions

View File

@@ -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);
}

View File

@@ -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;
}
}