refactor(data-process): 重构数据处理服务依赖注入和数据获取逻辑

- 将 PqReasonableRangeFeignClient 替换为 IPqReasonableRangeService 接口
- 统一使用本地服务接口替代远程调用,优化性能
- 移除废弃的 WlMinuteData 方法和相关设备线路查询逻辑
- 标准化时间相关的导入包,只保留必要的类
- 清理未使用的资源注入和函数式编程相关导入
- 简化数据获取流程,统一使用 getMinuteData 方法
This commit is contained in:
xy
2026-05-20 14:08:49 +08:00
parent 5d4e461ef0
commit 7f6172d0ad
27 changed files with 252 additions and 1178 deletions

View File

@@ -0,0 +1,110 @@
package com.njcn.algorithm.pojo.dto;
import lombok.Data;
import java.io.Serializable;
/**
* @author xy
*/
@Data
public class PqReasonableRangeDto implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
private String id;
/**
* 指标code
*/
private String indexCode;
/**
* 指标名称
*/
private String indexName;
/**
* 指标开始
*/
private Integer harmStart;
/**
* 指标结束
*/
private Integer harmEnd;
/**
* 指标所属项别
*/
private String phaseType;
/**
* 指标所属influxdb表的实体类
*/
private String influxdbTableName;
/**
* 指标所属类的属性
*/
private String influxdbColumnName;
/**
* 指标下限
*/
private Double minValue;
/**
* 指标上限
*/
private Double maxValue;
/**
* 电压等级是否参与计算(0:不参与1:参与)
*/
private Integer isVoltage;
/**
* Ct变比是否参与计算
*/
private Integer ctAttendFlag;
/**
* 指标数据源influxdboralcemysql
*/
private String dataSource;
/**
* 无具体范围,判断的条件描述
*/
private String otherAlgorithm;
/**
* 备注
*/
private String remark;
/**
* 单位
*/
private String unit;
/**
* 排序
*/
private Integer sort;
/**
* 所属系统pqsgovern目前就这个两个系统
*/
private String belongingSystem;
/**
* 状态(0:删除 1:正常)
*/
private Integer state;
}

View File

@@ -0,0 +1,120 @@
package com.njcn.algorithm.pojo.po;
import com.baomidou.mybatisplus.annotation.TableName;
import com.njcn.db.bo.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
* <p>
*
* </p>
*
* @author xy
* @since 2025-02-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("pq_reasonable_range")
public class PqReasonableRange extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
private String id;
/**
* 指标code
*/
private String indexCode;
/**
* 指标名称
*/
private String indexName;
/**
* 指标开始
*/
private Integer harmStart;
/**
* 指标结束
*/
private Integer harmEnd;
/**
* 指标所属项别
*/
private String phaseType;
/**
* 指标所属influxdb表的实体类
*/
private String influxdbTableName;
/**
* 指标所属类的属性
*/
private String influxdbColumnName;
/**
* 指标下限
*/
private Double minValue;
/**
* 指标上限
*/
private Double maxValue;
/**
* 电压等级是否参与计算(0:不参与1:参与)
*/
private Integer isVoltage;
/**
* Ct变比是否参与计算
*/
private Integer ctAttendFlag;
/**
* 指标数据源influxdboralcemysql
*/
private String dataSource;
/**
* 无具体范围,判断的条件描述
*/
private String otherAlgorithm;
/**
* 备注
*/
private String remark;
/**
* 单位
*/
private String unit;
/**
* 排序
*/
private Integer sort;
/**
* 所属系统pqsgovern目前就这个两个系统
*/
private String belongingSystem;
/**
* 状态(0:删除 1:正常)
*/
private Integer state;
}

View File

@@ -0,0 +1,91 @@
package com.njcn.algorithm.controller;
import com.njcn.algorithm.pojo.dto.PqReasonableRangeDto;
import com.njcn.algorithm.service.line.IPqReasonableRangeService;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.constant.OperateType;
import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.csdevice.enums.DeviceOperate;
import com.njcn.dataProcess.param.DataCleanParam;
import com.njcn.web.advice.DeviceLog;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
* <p>
* 前端控制器
* </p>
*
* @author xy
* @since 2025-02-13
*/
@Validated
@Slf4j
@Controller
@RestController
@RequestMapping("/pqReasonableRange")
@Api(tags = "数据清洗标准库")
public class PqReasonableRangeController extends BaseController {
@Resource
private IPqReasonableRangeService pqReasonableRangeService;
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.QUERY)
@PostMapping("/getData")
@ApiOperation("按条件获取数据合理范围")
public HttpResult<List<PqReasonableRangeDto>> getData(@RequestBody DataCleanParam param) {
String methodDescribe = getMethodDescribe("getData");
List<PqReasonableRangeDto> list = pqReasonableRangeService.getReasonableRangeList(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.ADD)
@PostMapping("/save")
@ApiOperation("新增数据合理范围")
public HttpResult<String> save(@RequestBody @Validated PqReasonableRangeDto dto) {
String methodDescribe = getMethodDescribe("save");
boolean result = pqReasonableRangeService.savePqReasonableRange(dto);
if (result) {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, "新增成功", methodDescribe);
}
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, "新增失败", methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.UPDATE)
@PostMapping("/update")
@ApiOperation("更新数据合理范围")
public HttpResult<String> update(@RequestBody @Validated PqReasonableRangeDto dto) {
String methodDescribe = getMethodDescribe("update");
boolean result = pqReasonableRangeService.updatePqReasonableRange(dto);
if (result) {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, "更新成功", methodDescribe);
}
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, "更新失败", methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/delete")
@ApiOperation("删除数据合理范围")
@DeviceLog(operateType = DeviceOperate.DELETE)
public HttpResult<String> delete(@RequestParam("id") String id) {
String methodDescribe = getMethodDescribe("delete");
boolean result = pqReasonableRangeService.deletePqReasonableRange(id);
if (result) {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, "删除成功", methodDescribe);
}
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.FAIL, "删除失败", methodDescribe);
}
}

View File

@@ -0,0 +1,15 @@
package com.njcn.algorithm.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.algorithm.pojo.po.PqReasonableRange;
/**
* <p>
* Mapper 接口
* </p>
*
* @author xy
* @since 2025-02-13
*/
public interface PqReasonableRangeMapper extends BaseMapper<PqReasonableRange> {
}

View File

@@ -1,7 +1,7 @@
package com.njcn.algorithm.service.line;
import com.njcn.algorithm.pojo.bo.CalculatedParam;
import com.njcn.dataProcess.pojo.dto.PqReasonableRangeDto;
import com.njcn.algorithm.pojo.dto.PqReasonableRangeDto;
import com.njcn.device.pq.pojo.vo.LineDetailVO;
import com.njcn.system.pojo.po.DictData;

View File

@@ -0,0 +1,33 @@
package com.njcn.algorithm.service.line;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.algorithm.pojo.dto.PqReasonableRangeDto;
import com.njcn.algorithm.pojo.po.PqReasonableRange;
import com.njcn.dataProcess.param.DataCleanParam;
import java.util.List;
/**
* <p>
* 服务类
* </p>
*
* @author xy
* @since 2025-02-13
*/
public interface IPqReasonableRangeService extends IService<PqReasonableRange> {
/**
* 根据条件获取稳态指标正常范围数据
* @param param
* @return
*/
List<PqReasonableRangeDto> getReasonableRangeList(DataCleanParam param);
boolean savePqReasonableRange(PqReasonableRangeDto dto);
boolean updatePqReasonableRange(PqReasonableRangeDto dto);
boolean deletePqReasonableRange(String id);
}

View File

@@ -3,8 +3,10 @@ package com.njcn.algorithm.serviceimpl.line;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import com.njcn.algorithm.pojo.bo.CalculatedParam;
import com.njcn.algorithm.pojo.dto.PqReasonableRangeDto;
import com.njcn.algorithm.service.line.FlowAsyncService;
import com.njcn.algorithm.service.line.IDataCleanService;
import com.njcn.algorithm.service.line.IPqReasonableRangeService;
import com.njcn.algorithm.utils.MemorySizeUtil;
import com.njcn.dataProcess.api.*;
import com.njcn.dataProcess.dto.RmpEventDetailDTO;
@@ -33,7 +35,9 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.lang.reflect.Method;
import java.time.*;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.function.Function;
@@ -80,7 +84,7 @@ public class DataCleanServiceImpl implements IDataCleanService {
@Resource
private PqDataVerifyFeignClient pqDataVerifyFeignClient;
@Resource
private PqReasonableRangeFeignClient pqReasonableRangeFeignClient;
private IPqReasonableRangeService pqReasonableRangeService;
@Resource
private LineFeignClient lineFeignClient;
@Resource
@@ -644,7 +648,7 @@ public class DataCleanServiceImpl implements IDataCleanService {
DataCleanParam param = new DataCleanParam();
param.setSystemType(DataCleanEnum.Pqs.getCode());
// param.setDataSource(DataCleanEnum.InfluxDB.getCode());
List<PqReasonableRangeDto> list = pqReasonableRangeFeignClient.getData(param).getData();
List<PqReasonableRangeDto> list = pqReasonableRangeService.getReasonableRangeList(param);
if (CollUtil.isNotEmpty(list)) {
pqReasonableRangeDtoMap = list.stream().collect(Collectors.groupingBy(PqReasonableRangeDto::getInfluxdbTableName));
}
@@ -662,7 +666,7 @@ public class DataCleanServiceImpl implements IDataCleanService {
if (ObjectUtil.isNotNull(tableName)) {
param.setTableName(tableName);
}
List<PqReasonableRangeDto> list = pqReasonableRangeFeignClient.getData(param).getData();
List<PqReasonableRangeDto> list = pqReasonableRangeService.getReasonableRangeList(param);
if (CollUtil.isNotEmpty(list)) {
pqReasonableRangeDtoMap = list.stream().collect(Collectors.toMap(PqReasonableRangeDto::getIndexCode, Function.identity()));
}

View File

@@ -7,6 +7,7 @@ import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.nacos.shaded.com.google.gson.Gson;
import com.njcn.algorithm.pojo.bo.CalculatedParam;
import com.njcn.algorithm.pojo.dto.PqReasonableRangeDto;
import com.njcn.algorithm.service.line.FlowAsyncService;
import com.njcn.dataProcess.api.*;
import com.njcn.dataProcess.dto.DataCleanJsonDTO;
@@ -92,7 +93,7 @@ public class FlowAsyncServiceImpl implements FlowAsyncService {
@Override
@Async("asyncExecutor")
public void lineDataClean(LineDetailVO.Detail line, Map<String, List<PqReasonableRangeDto>> map, String dataDate,DictData dip,DictData rise,int size,int i) {
public void lineDataClean(LineDetailVO.Detail line, Map<String, List<PqReasonableRangeDto>> map, String dataDate, DictData dip, DictData rise, int size, int i) {
LineDetailVO.Detail item = line;
List<Map<String, Object>> resultData = new ArrayList<>();
Set<String> allTimeSet = new HashSet<>();

View File

@@ -0,0 +1,80 @@
package com.njcn.algorithm.serviceimpl.line;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.algorithm.mapper.PqReasonableRangeMapper;
import com.njcn.algorithm.pojo.dto.PqReasonableRangeDto;
import com.njcn.algorithm.pojo.po.PqReasonableRange;
import com.njcn.algorithm.service.line.IPqReasonableRangeService;
import com.njcn.dataProcess.param.DataCleanParam;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* <p>
* 服务实现类
* </p>
*
* @author xy
* @since 2025-02-13
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class PqReasonableRangeServiceImpl extends ServiceImpl<PqReasonableRangeMapper, PqReasonableRange> implements IPqReasonableRangeService {
@Override
public List<PqReasonableRangeDto> getReasonableRangeList(DataCleanParam param) {
List<PqReasonableRangeDto> result = new ArrayList<>();
LambdaQueryWrapper<PqReasonableRange> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(PqReasonableRange::getBelongingSystem,param.getSystemType());
if(StrUtil.isNotBlank(param.getDataSource())){
queryWrapper.eq(PqReasonableRange::getDataSource,param.getDataSource());
}
if(StrUtil.isNotBlank(param.getTableName())){
queryWrapper.eq(PqReasonableRange::getInfluxdbTableName,param.getTableName());
}
queryWrapper.eq(PqReasonableRange::getState,1);
List<PqReasonableRange> list = this.list(queryWrapper);
if (CollUtil.isNotEmpty(list)) {
list.forEach(item->{
PqReasonableRangeDto dto = new PqReasonableRangeDto();
BeanUtils.copyProperties(item,dto);
result.add(dto);
});
}
return result;
}
@Override
public boolean savePqReasonableRange(PqReasonableRangeDto dto) {
PqReasonableRange entity = new PqReasonableRange();
BeanUtils.copyProperties(dto, entity);
entity.setState(1);
return this.save(entity);
}
@Override
public boolean updatePqReasonableRange(PqReasonableRangeDto dto) {
PqReasonableRange entity = new PqReasonableRange();
BeanUtils.copyProperties(dto, entity);
return this.updateById(entity);
}
@Override
public boolean deletePqReasonableRange(String id) {
PqReasonableRange entity = this.getById(id);
if (entity != null) {
entity.setState(0);
return this.updateById(entity);
}
return false;
}
}