Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
37959a4a7e | ||
| 2d07a60001 | |||
|
|
e982fa960e |
@@ -16,7 +16,6 @@ import com.njcn.common.pojo.annotation.OperateInfo;
|
|||||||
import com.njcn.common.pojo.enums.common.LogEnum;
|
import com.njcn.common.pojo.enums.common.LogEnum;
|
||||||
import com.njcn.common.pojo.exception.BusinessException;
|
import com.njcn.common.pojo.exception.BusinessException;
|
||||||
import com.njcn.csdevice.api.CsLineFeignClient;
|
import com.njcn.csdevice.api.CsLineFeignClient;
|
||||||
import com.njcn.csdevice.pojo.dto.CsLineDTO;
|
|
||||||
import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
|
import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
|
||||||
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
||||||
import com.njcn.device.biz.pojo.dto.DeptGetDeviceDTO;
|
import com.njcn.device.biz.pojo.dto.DeptGetDeviceDTO;
|
||||||
@@ -24,7 +23,6 @@ import com.njcn.device.biz.pojo.dto.DeptGetSubStationDTO;
|
|||||||
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
|
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
|
||||||
import com.njcn.device.biz.pojo.param.DeptGetLineParam;
|
import com.njcn.device.biz.pojo.param.DeptGetLineParam;
|
||||||
import com.njcn.device.pq.api.DeptLineFeignClient;
|
import com.njcn.device.pq.api.DeptLineFeignClient;
|
||||||
import com.njcn.redis.utils.RedisUtil;
|
|
||||||
import com.njcn.user.api.DeptFeignClient;
|
import com.njcn.user.api.DeptFeignClient;
|
||||||
import com.njcn.user.pojo.po.Dept;
|
import com.njcn.user.pojo.po.Dept;
|
||||||
import com.njcn.web.controller.BaseController;
|
import com.njcn.web.controller.BaseController;
|
||||||
@@ -75,8 +73,6 @@ public class ExecutionCenter extends BaseController {
|
|||||||
private CsLineFeignClient csLineFeignClient;
|
private CsLineFeignClient csLineFeignClient;
|
||||||
@Resource
|
@Resource
|
||||||
private FlowAsyncService flowService;
|
private FlowAsyncService flowService;
|
||||||
@Resource
|
|
||||||
private RedisUtil redisUtil;
|
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* 1、校验非全链执行时,tagNames节点标签集合必须为非空,否则提示---无可执行节点
|
* 1、校验非全链执行时,tagNames节点标签集合必须为非空,否则提示---无可执行节点
|
||||||
@@ -147,27 +143,9 @@ public class ExecutionCenter extends BaseController {
|
|||||||
String methodDescribe = getMethodDescribe("wlMeasurementPointExecutor");
|
String methodDescribe = getMethodDescribe("wlMeasurementPointExecutor");
|
||||||
//手动判断参数是否合法,
|
//手动判断参数是否合法,
|
||||||
CalculatedParam calculatedParam = judgeExecuteParam(baseParam);
|
CalculatedParam calculatedParam = judgeExecuteParam(baseParam);
|
||||||
//缓存监测点、接线方式数据
|
|
||||||
List<CsLineDTO> csLineDTOList = csLineFeignClient.getAllLineDetail().getData();
|
|
||||||
List<String> lineIdList = new ArrayList<>();
|
|
||||||
Map<String, Integer> lineConTypeMap = new HashMap<>();
|
|
||||||
if (CollectionUtils.isNotEmpty(csLineDTOList)) {
|
|
||||||
lineIdList = csLineDTOList.stream().map(CsLineDTO::getLineId).collect(Collectors.toList());
|
|
||||||
//接线方式(0-星型 1-角型 2-V型)
|
|
||||||
lineConTypeMap = csLineDTOList.stream()
|
|
||||||
.filter(dto -> dto.getLineId() != null)
|
|
||||||
.collect(Collectors.toMap(
|
|
||||||
CsLineDTO::getLineId,
|
|
||||||
dto -> dto.getConType() != null ? dto.getConType() : 0,
|
|
||||||
(v1, v2) -> v1
|
|
||||||
));
|
|
||||||
redisUtil.saveByKeyWithExpire("wlLineDetail", lineConTypeMap, 3600L*3);
|
|
||||||
}
|
|
||||||
// 测点索引
|
// 测点索引
|
||||||
if (CollectionUtils.isEmpty(calculatedParam.getIdList())) {
|
if (CollectionUtils.isEmpty(calculatedParam.getIdList())) {
|
||||||
calculatedParam.setIdList(lineIdList);
|
calculatedParam.setIdList(csLineFeignClient.getAllLine().getData());
|
||||||
} else {
|
|
||||||
calculatedParam.setIdList(calculatedParam.getIdList());
|
|
||||||
}
|
}
|
||||||
LiteflowResponse liteflowResponse;
|
LiteflowResponse liteflowResponse;
|
||||||
if (baseParam.isRepair()) {
|
if (baseParam.isRepair()) {
|
||||||
|
|||||||
@@ -1,91 +0,0 @@
|
|||||||
package com.njcn.algorithm.controller;
|
|
||||||
|
|
||||||
|
|
||||||
import com.njcn.algorithm.pojo.dto.PqReasonableRangeDto;
|
|
||||||
import com.njcn.algorithm.pojo.param.DataCleanParam;
|
|
||||||
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.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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package com.njcn.algorithm.service.line;
|
package com.njcn.algorithm.service.line;
|
||||||
|
|
||||||
import com.njcn.algorithm.pojo.bo.CalculatedParam;
|
import com.njcn.algorithm.pojo.bo.CalculatedParam;
|
||||||
import com.njcn.algorithm.pojo.dto.PqReasonableRangeDto;
|
import com.njcn.dataProcess.pojo.dto.PqReasonableRangeDto;
|
||||||
import com.njcn.device.pq.pojo.vo.LineDetailVO;
|
import com.njcn.device.pq.pojo.vo.LineDetailVO;
|
||||||
import com.njcn.system.pojo.po.DictData;
|
import com.njcn.system.pojo.po.DictData;
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.njcn.algorithm.service.line;
|
|||||||
|
|
||||||
import com.njcn.algorithm.pojo.bo.CalculatedParam;
|
import com.njcn.algorithm.pojo.bo.CalculatedParam;
|
||||||
|
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author xy
|
* @author xy
|
||||||
|
|||||||
@@ -3,15 +3,13 @@ package com.njcn.algorithm.serviceimpl.line;
|
|||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.njcn.algorithm.pojo.bo.CalculatedParam;
|
import com.njcn.algorithm.pojo.bo.CalculatedParam;
|
||||||
import com.njcn.algorithm.pojo.dto.PqReasonableRangeDto;
|
|
||||||
import com.njcn.algorithm.pojo.param.DataCleanParam;
|
|
||||||
import com.njcn.algorithm.service.line.FlowAsyncService;
|
import com.njcn.algorithm.service.line.FlowAsyncService;
|
||||||
import com.njcn.algorithm.service.line.IDataCleanService;
|
import com.njcn.algorithm.service.line.IDataCleanService;
|
||||||
import com.njcn.algorithm.service.line.IPqReasonableRangeService;
|
|
||||||
import com.njcn.algorithm.utils.MemorySizeUtil;
|
import com.njcn.algorithm.utils.MemorySizeUtil;
|
||||||
import com.njcn.dataProcess.api.*;
|
import com.njcn.dataProcess.api.*;
|
||||||
import com.njcn.dataProcess.dto.RmpEventDetailDTO;
|
import com.njcn.dataProcess.dto.RmpEventDetailDTO;
|
||||||
import com.njcn.dataProcess.enums.DataCleanEnum;
|
import com.njcn.dataProcess.enums.DataCleanEnum;
|
||||||
|
import com.njcn.dataProcess.param.DataCleanParam;
|
||||||
import com.njcn.dataProcess.param.LineCountEvaluateParam;
|
import com.njcn.dataProcess.param.LineCountEvaluateParam;
|
||||||
import com.njcn.dataProcess.pojo.dto.*;
|
import com.njcn.dataProcess.pojo.dto.*;
|
||||||
import com.njcn.dataProcess.pojo.po.PqDataVerify;
|
import com.njcn.dataProcess.pojo.po.PqDataVerify;
|
||||||
@@ -35,9 +33,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.time.Instant;
|
import java.time.*;
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.ZoneId;
|
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
@@ -52,8 +48,8 @@ public class DataCleanServiceImpl implements IDataCleanService {
|
|||||||
|
|
||||||
private static final Logger logger = LoggerFactory.getLogger(DataCleanServiceImpl.class);
|
private static final Logger logger = LoggerFactory.getLogger(DataCleanServiceImpl.class);
|
||||||
|
|
||||||
@Value("${line.num:10}")
|
@Value("${line.num}")
|
||||||
private Integer NUM;
|
private Integer NUM = 100;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private DataVFeignClient dataVFeignClient;
|
private DataVFeignClient dataVFeignClient;
|
||||||
@@ -84,7 +80,7 @@ public class DataCleanServiceImpl implements IDataCleanService {
|
|||||||
@Resource
|
@Resource
|
||||||
private PqDataVerifyFeignClient pqDataVerifyFeignClient;
|
private PqDataVerifyFeignClient pqDataVerifyFeignClient;
|
||||||
@Resource
|
@Resource
|
||||||
private IPqReasonableRangeService pqReasonableRangeService;
|
private PqReasonableRangeFeignClient pqReasonableRangeFeignClient;
|
||||||
@Resource
|
@Resource
|
||||||
private LineFeignClient lineFeignClient;
|
private LineFeignClient lineFeignClient;
|
||||||
@Resource
|
@Resource
|
||||||
@@ -101,7 +97,7 @@ public class DataCleanServiceImpl implements IDataCleanService {
|
|||||||
public void dataQualityCleanHandler(CalculatedParam calculatedParam) {
|
public void dataQualityCleanHandler(CalculatedParam calculatedParam) {
|
||||||
MemorySizeUtil.getNowMemory();
|
MemorySizeUtil.getNowMemory();
|
||||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
|
||||||
logger.info("{},{}数据质量清洗算法执行=====》", LocalDateTime.now(),calculatedParam.getDataDate());
|
logger.info("{},数据质量清洗算法执行=====》", LocalDateTime.now());
|
||||||
//获取监测点的统计间隔
|
//获取监测点的统计间隔
|
||||||
List<String> listOfString = (List<String>) (List<?>) calculatedParam.getIdList();
|
List<String> listOfString = (List<String>) (List<?>) calculatedParam.getIdList();
|
||||||
List<LineDetailDataVO> lineDetailDataVOS = lineFeignClient.getLineDetailList(listOfString).getData();
|
List<LineDetailDataVO> lineDetailDataVOS = lineFeignClient.getLineDetailList(listOfString).getData();
|
||||||
@@ -290,7 +286,7 @@ public class DataCleanServiceImpl implements IDataCleanService {
|
|||||||
DictData dip = dicDataFeignClient.getDicDataByCodeAndType(DicDataEnum.VOLTAGE_DIP.getCode(), DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
|
DictData dip = dicDataFeignClient.getDicDataByCodeAndType(DicDataEnum.VOLTAGE_DIP.getCode(), DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
|
||||||
DictData rise = dicDataFeignClient.getDicDataByCodeAndType(DicDataEnum.VOLTAGE_RISE.getCode(), DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
|
DictData rise = dicDataFeignClient.getDicDataByCodeAndType(DicDataEnum.VOLTAGE_RISE.getCode(), DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
|
||||||
MemorySizeUtil.getNowMemory();
|
MemorySizeUtil.getNowMemory();
|
||||||
logger.info("{},{}原始表数据清洗=====》", LocalDateTime.now(),calculatedParam.getDataDate());
|
logger.info("{},原始表数据清洗=====》", LocalDateTime.now());
|
||||||
//获取标准
|
//获取标准
|
||||||
Map<String, List<PqReasonableRangeDto>> map = getStandardData();
|
Map<String, List<PqReasonableRangeDto>> map = getStandardData();
|
||||||
//获取监测点台账信息
|
//获取监测点台账信息
|
||||||
@@ -304,7 +300,7 @@ public class DataCleanServiceImpl implements IDataCleanService {
|
|||||||
lineParam.setStartTime(TimeUtils.getBeginOfDay(calculatedParam.getDataDate()));
|
lineParam.setStartTime(TimeUtils.getBeginOfDay(calculatedParam.getDataDate()));
|
||||||
lineParam.setEndTime(TimeUtils.getEndOfDay(calculatedParam.getDataDate()));
|
lineParam.setEndTime(TimeUtils.getEndOfDay(calculatedParam.getDataDate()));
|
||||||
for (int i = 0; i < lineDetail.size(); i++) {
|
for (int i = 0; i < lineDetail.size(); i++) {
|
||||||
// logger.info( calculatedParam.getDataDate()+"总数据:" + lineDetail.size() + "=====》当前第" + (i + 1));
|
logger.info( calculatedParam.getDataDate()+"总数据:" + lineDetail.size() + "=====》当前第" + (i + 1));
|
||||||
LineDetailVO.Detail item = lineDetail.get(i);
|
LineDetailVO.Detail item = lineDetail.get(i);
|
||||||
flowService.lineDataClean(item, map, calculatedParam.getDataDate(), dip, rise,lineDetail.size(),(i + 1));
|
flowService.lineDataClean(item, map, calculatedParam.getDataDate(), dip, rise,lineDetail.size(),(i + 1));
|
||||||
}
|
}
|
||||||
@@ -648,7 +644,7 @@ public class DataCleanServiceImpl implements IDataCleanService {
|
|||||||
DataCleanParam param = new DataCleanParam();
|
DataCleanParam param = new DataCleanParam();
|
||||||
param.setSystemType(DataCleanEnum.Pqs.getCode());
|
param.setSystemType(DataCleanEnum.Pqs.getCode());
|
||||||
// param.setDataSource(DataCleanEnum.InfluxDB.getCode());
|
// param.setDataSource(DataCleanEnum.InfluxDB.getCode());
|
||||||
List<PqReasonableRangeDto> list = pqReasonableRangeService.getReasonableRangeList(param);
|
List<PqReasonableRangeDto> list = pqReasonableRangeFeignClient.getData(param).getData();
|
||||||
if (CollUtil.isNotEmpty(list)) {
|
if (CollUtil.isNotEmpty(list)) {
|
||||||
pqReasonableRangeDtoMap = list.stream().collect(Collectors.groupingBy(PqReasonableRangeDto::getInfluxdbTableName));
|
pqReasonableRangeDtoMap = list.stream().collect(Collectors.groupingBy(PqReasonableRangeDto::getInfluxdbTableName));
|
||||||
}
|
}
|
||||||
@@ -666,7 +662,7 @@ public class DataCleanServiceImpl implements IDataCleanService {
|
|||||||
if (ObjectUtil.isNotNull(tableName)) {
|
if (ObjectUtil.isNotNull(tableName)) {
|
||||||
param.setTableName(tableName);
|
param.setTableName(tableName);
|
||||||
}
|
}
|
||||||
List<PqReasonableRangeDto> list = pqReasonableRangeService.getReasonableRangeList(param);
|
List<PqReasonableRangeDto> list = pqReasonableRangeFeignClient.getData(param).getData();
|
||||||
if (CollUtil.isNotEmpty(list)) {
|
if (CollUtil.isNotEmpty(list)) {
|
||||||
pqReasonableRangeDtoMap = list.stream().collect(Collectors.toMap(PqReasonableRangeDto::getIndexCode, Function.identity()));
|
pqReasonableRangeDtoMap = list.stream().collect(Collectors.toMap(PqReasonableRangeDto::getIndexCode, Function.identity()));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package com.njcn.algorithm.serviceimpl.line;
|
|||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import com.njcn.algorithm.pojo.bo.CalculatedParam;
|
import com.njcn.algorithm.pojo.bo.CalculatedParam;
|
||||||
import com.njcn.algorithm.service.line.IDataComAssService;
|
import com.njcn.algorithm.service.line.IDataComAssService;
|
||||||
import com.njcn.algorithm.utils.MemorySizeUtil;
|
|
||||||
import com.njcn.dataProcess.api.DataComAssFeignClient;
|
import com.njcn.dataProcess.api.DataComAssFeignClient;
|
||||||
import com.njcn.dataProcess.api.DataFlickerFeignClient;
|
import com.njcn.dataProcess.api.DataFlickerFeignClient;
|
||||||
import com.njcn.dataProcess.api.DataVFeignClient;
|
import com.njcn.dataProcess.api.DataVFeignClient;
|
||||||
@@ -39,8 +38,8 @@ import java.util.stream.Collectors;
|
|||||||
public class DataComAssServiceImpl implements IDataComAssService {
|
public class DataComAssServiceImpl implements IDataComAssService {
|
||||||
|
|
||||||
private static final Logger logger = LoggerFactory.getLogger(DayDataServiceImpl.class);
|
private static final Logger logger = LoggerFactory.getLogger(DayDataServiceImpl.class);
|
||||||
|
@Value("${line.num}")
|
||||||
|
private Integer NUM = 100;
|
||||||
@Resource
|
@Resource
|
||||||
private DataVFeignClient dataVFeignClient;
|
private DataVFeignClient dataVFeignClient;
|
||||||
|
|
||||||
@@ -51,17 +50,10 @@ public class DataComAssServiceImpl implements IDataComAssService {
|
|||||||
@Resource
|
@Resource
|
||||||
private PqDataVerifyFeignClient pqDataVerifyFeignClient;
|
private PqDataVerifyFeignClient pqDataVerifyFeignClient;
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询配置 辽宁版本比较特殊,没有CP95值,采用平均值进行判断
|
|
||||||
*/
|
|
||||||
@Value("${version.used:master}")
|
|
||||||
private String versionUsed;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dataComAssHandler(CalculatedParam calculatedParam) {
|
public void dataComAssHandler(CalculatedParam calculatedParam) {
|
||||||
List<DataComassesDPO> list = new ArrayList<>();
|
List<DataComassesDPO> list = new ArrayList<>();
|
||||||
MemorySizeUtil.getNowMemory();
|
logger.info("{},r_stat_comasses_d算法开始=====》", LocalDateTime.now());
|
||||||
logger.info("{},{}r_stat_comasses_d算法开始=====》", LocalDateTime.now(),calculatedParam.getDataDate());
|
|
||||||
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
||||||
lineParam.setStartTime(TimeUtils.getBeginOfDay(calculatedParam.getDataDate()));
|
lineParam.setStartTime(TimeUtils.getBeginOfDay(calculatedParam.getDataDate()));
|
||||||
lineParam.setEndTime(TimeUtils.getEndOfDay(calculatedParam.getDataDate()));
|
lineParam.setEndTime(TimeUtils.getEndOfDay(calculatedParam.getDataDate()));
|
||||||
@@ -144,7 +136,7 @@ public class DataComAssServiceImpl implements IDataComAssService {
|
|||||||
BigDecimal hundred = BigDecimal.valueOf(100);
|
BigDecimal hundred = BigDecimal.valueOf(100);
|
||||||
//************************************电压偏差********************************************
|
//************************************电压偏差********************************************
|
||||||
lineParam.setPhasicType(Arrays.asList("A", "B", "C"));
|
lineParam.setPhasicType(Arrays.asList("A", "B", "C"));
|
||||||
lineParam.setValueType(Collections.singletonList("AVG"));
|
lineParam.setValueType(Arrays.asList("AVG"));
|
||||||
lineParam.setColumnName("vu_dev");
|
lineParam.setColumnName("vu_dev");
|
||||||
lineParam.setGe("10");
|
lineParam.setGe("10");
|
||||||
Integer vuDev1 = dataVFeignClient.getColumnNameCountRawData(lineParam).getData();
|
Integer vuDev1 = dataVFeignClient.getColumnNameCountRawData(lineParam).getData();
|
||||||
@@ -175,7 +167,6 @@ public class DataComAssServiceImpl implements IDataComAssService {
|
|||||||
//************************************频率偏差********************************************
|
//************************************频率偏差********************************************
|
||||||
lineParam.setColumnName("freq_dev");
|
lineParam.setColumnName("freq_dev");
|
||||||
lineParam.setGe("0.3");
|
lineParam.setGe("0.3");
|
||||||
lineParam.setGe(null);
|
|
||||||
Integer freqDev1 = dataVFeignClient.getColumnNameCountRawData(lineParam).getData();
|
Integer freqDev1 = dataVFeignClient.getColumnNameCountRawData(lineParam).getData();
|
||||||
|
|
||||||
lineParam.setGe("0.2");
|
lineParam.setGe("0.2");
|
||||||
@@ -203,15 +194,8 @@ public class DataComAssServiceImpl implements IDataComAssService {
|
|||||||
}
|
}
|
||||||
//************************************谐波畸变率********************************************
|
//************************************谐波畸变率********************************************
|
||||||
lineParam.setColumnName("v_thd");
|
lineParam.setColumnName("v_thd");
|
||||||
|
lineParam.setValueType(Arrays.asList("CP95"));
|
||||||
if("liaoning".equals(versionUsed)){
|
|
||||||
lineParam.setValueType(Collections.singletonList("AVG"));
|
|
||||||
}else {
|
|
||||||
lineParam.setValueType(Collections.singletonList("CP95"));
|
|
||||||
}
|
|
||||||
|
|
||||||
lineParam.setGe("6");
|
lineParam.setGe("6");
|
||||||
lineParam.setLt(null);
|
|
||||||
Integer vThd1 = dataVFeignClient.getColumnNameCountRawData(lineParam).getData();
|
Integer vThd1 = dataVFeignClient.getColumnNameCountRawData(lineParam).getData();
|
||||||
|
|
||||||
lineParam.setGe("4");
|
lineParam.setGe("4");
|
||||||
@@ -240,12 +224,7 @@ public class DataComAssServiceImpl implements IDataComAssService {
|
|||||||
|
|
||||||
//************************************三相电压不平衡度********************************************
|
//************************************三相电压不平衡度********************************************
|
||||||
lineParam.setColumnName("v_unbalance");
|
lineParam.setColumnName("v_unbalance");
|
||||||
if("liaoning".equals(versionUsed)){
|
|
||||||
lineParam.setValueType(Collections.singletonList("MAX"));
|
|
||||||
}
|
|
||||||
lineParam.setPhasicType(Collections.singletonList("T"));
|
|
||||||
lineParam.setGe("4");
|
lineParam.setGe("4");
|
||||||
lineParam.setLt(null);
|
|
||||||
Integer vUnbalance1 = dataVFeignClient.getColumnNameCountRawData(lineParam).getData();
|
Integer vUnbalance1 = dataVFeignClient.getColumnNameCountRawData(lineParam).getData();
|
||||||
|
|
||||||
lineParam.setGe("2");
|
lineParam.setGe("2");
|
||||||
@@ -274,9 +253,7 @@ public class DataComAssServiceImpl implements IDataComAssService {
|
|||||||
//************************************电压波动(短时闪变)********************************************
|
//************************************电压波动(短时闪变)********************************************
|
||||||
lineParam.setColumnName("pst");
|
lineParam.setColumnName("pst");
|
||||||
lineParam.setValueType(null);
|
lineParam.setValueType(null);
|
||||||
lineParam.setPhasicType(Arrays.asList("A", "B", "C"));
|
|
||||||
lineParam.setGe("0.8");
|
lineParam.setGe("0.8");
|
||||||
lineParam.setLt("1");
|
|
||||||
Integer plt1 = dataFlickerFeignClient.getColumnNameCountRawData(lineParam).getData();
|
Integer plt1 = dataFlickerFeignClient.getColumnNameCountRawData(lineParam).getData();
|
||||||
|
|
||||||
lineParam.setGe("0.6");
|
lineParam.setGe("0.6");
|
||||||
@@ -296,11 +273,11 @@ public class DataComAssServiceImpl implements IDataComAssService {
|
|||||||
Integer plt5 = dataFlickerFeignClient.getColumnNameCountRawData(lineParam).getData();
|
Integer plt5 = dataFlickerFeignClient.getColumnNameCountRawData(lineParam).getData();
|
||||||
BigDecimal pltAll = BigDecimal.valueOf(plt1 + plt2 + plt3 + plt4 + plt5);
|
BigDecimal pltAll = BigDecimal.valueOf(plt1 + plt2 + plt3 + plt4 + plt5);
|
||||||
if (pltAll.compareTo(BigDecimal.ZERO) != 0) {
|
if (pltAll.compareTo(BigDecimal.ZERO) != 0) {
|
||||||
outMap.put("data_pst1", BigDecimal.valueOf(plt1).multiply(hundred).divide(pltAll, 3, RoundingMode.HALF_UP));
|
outMap.put("data_plt1", BigDecimal.valueOf(plt1).multiply(hundred).divide(pltAll, 3, RoundingMode.HALF_UP));
|
||||||
outMap.put("data_pst2", BigDecimal.valueOf(plt2).multiply(hundred).divide(pltAll, 3, RoundingMode.HALF_UP));
|
outMap.put("data_plt2", BigDecimal.valueOf(plt2).multiply(hundred).divide(pltAll, 3, RoundingMode.HALF_UP));
|
||||||
outMap.put("data_pst3", BigDecimal.valueOf(plt3).multiply(hundred).divide(pltAll, 3, RoundingMode.HALF_UP));
|
outMap.put("data_plt3", BigDecimal.valueOf(plt3).multiply(hundred).divide(pltAll, 3, RoundingMode.HALF_UP));
|
||||||
outMap.put("data_pst4", BigDecimal.valueOf(plt4).multiply(hundred).divide(pltAll, 3, RoundingMode.HALF_UP));
|
outMap.put("data_plt4", BigDecimal.valueOf(plt4).multiply(hundred).divide(pltAll, 3, RoundingMode.HALF_UP));
|
||||||
outMap.put("data_pst5", BigDecimal.valueOf(plt5).multiply(hundred).divide(pltAll, 3, RoundingMode.HALF_UP));
|
outMap.put("data_plt5", BigDecimal.valueOf(plt5).multiply(hundred).divide(pltAll, 3, RoundingMode.HALF_UP));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!CollUtil.isEmpty(outMap)) {
|
if (!CollUtil.isEmpty(outMap)) {
|
||||||
|
|||||||
@@ -35,9 +35,8 @@ public class DayDataServiceImpl implements IDayDataService {
|
|||||||
|
|
||||||
private static final Logger logger = LoggerFactory.getLogger(DayDataServiceImpl.class);
|
private static final Logger logger = LoggerFactory.getLogger(DayDataServiceImpl.class);
|
||||||
|
|
||||||
@Value("${line.num:10}")
|
@Value("${line.num}")
|
||||||
private Integer NUM;
|
private Integer NUM = 100;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private DataVFeignClient dataVFeignClient;
|
private DataVFeignClient dataVFeignClient;
|
||||||
@Resource
|
@Resource
|
||||||
@@ -76,8 +75,7 @@ public class DayDataServiceImpl implements IDayDataService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dataVHandler(CalculatedParam calculatedParam) {
|
public void dataVHandler(CalculatedParam calculatedParam) {
|
||||||
MemorySizeUtil.getNowMemory();
|
logger.info("{},dataV表转r_stat_data_v_d算法开始=====》", LocalDateTime.now());
|
||||||
logger.info("{},{}dataV表转r_stat_data_v_d算法开始=====》", LocalDateTime.now(),calculatedParam.getDataDate());
|
|
||||||
List<DataVDto> result = new ArrayList<>();
|
List<DataVDto> result = new ArrayList<>();
|
||||||
//远程接口获取分钟数据
|
//远程接口获取分钟数据
|
||||||
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
||||||
@@ -93,6 +91,7 @@ public class DayDataServiceImpl implements IDayDataService {
|
|||||||
//获取原始数据
|
//获取原始数据
|
||||||
List<CommonMinuteDto> partList = dataVFeignClient.getBaseData(lineParam).getData();
|
List<CommonMinuteDto> partList = dataVFeignClient.getBaseData(lineParam).getData();
|
||||||
if (CollUtil.isNotEmpty(partList)) {
|
if (CollUtil.isNotEmpty(partList)) {
|
||||||
|
logger.info("{}dataV集合大小为>>>>>>>>>>>>{}",lineParam.getStartTime(),MemorySizeUtil.getObjectSize(partList));
|
||||||
partList.forEach(item->{
|
partList.forEach(item->{
|
||||||
//相别
|
//相别
|
||||||
List<CommonMinuteDto.PhasicType> phasicTypeList = item.getPhasicTypeList();
|
List<CommonMinuteDto.PhasicType> phasicTypeList = item.getPhasicTypeList();
|
||||||
@@ -126,8 +125,7 @@ public class DayDataServiceImpl implements IDayDataService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dataIHandler(CalculatedParam calculatedParam) {
|
public void dataIHandler(CalculatedParam calculatedParam) {
|
||||||
MemorySizeUtil.getNowMemory();
|
logger.info("{},dataI表转r_stat_data_i_d算法开始=====》", LocalDateTime.now());
|
||||||
logger.info("{},{}dataI表转r_stat_data_i_d算法开始=====》", LocalDateTime.now(),calculatedParam.getDataDate());
|
|
||||||
List<DataIDto> result = new ArrayList<>();
|
List<DataIDto> result = new ArrayList<>();
|
||||||
//远程接口获取分钟数据
|
//远程接口获取分钟数据
|
||||||
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
||||||
@@ -175,8 +173,7 @@ public class DayDataServiceImpl implements IDayDataService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dataFlickerHandler(CalculatedParam calculatedParam) {
|
public void dataFlickerHandler(CalculatedParam calculatedParam) {
|
||||||
MemorySizeUtil.getNowMemory();
|
logger.info("{},dataFlicker表转r_stat_data_flicker_d算法开始=====》", LocalDateTime.now());
|
||||||
logger.info("{},{}dataFlicker表转r_stat_data_flicker_d算法开始=====》", LocalDateTime.now(),calculatedParam.getDataDate());
|
|
||||||
List<String> valueList = Arrays.asList("AVG","MAX","MIN","CP95");
|
List<String> valueList = Arrays.asList("AVG","MAX","MIN","CP95");
|
||||||
List<DataFlickerDto> result = new ArrayList<>();
|
List<DataFlickerDto> result = new ArrayList<>();
|
||||||
//远程接口获取分钟数据
|
//远程接口获取分钟数据
|
||||||
@@ -225,8 +222,7 @@ public class DayDataServiceImpl implements IDayDataService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dataFlucHandler(CalculatedParam calculatedParam) {
|
public void dataFlucHandler(CalculatedParam calculatedParam) {
|
||||||
MemorySizeUtil.getNowMemory();
|
logger.info("{},dataFluc表转r_stat_data_fluc_d算法开始=====》", LocalDateTime.now());
|
||||||
logger.info("{},{}dataFluc表转r_stat_data_fluc_d算法开始=====》", LocalDateTime.now(),calculatedParam.getDataDate());
|
|
||||||
List<String> valueList = Arrays.asList("AVG","MAX","MIN","CP95");
|
List<String> valueList = Arrays.asList("AVG","MAX","MIN","CP95");
|
||||||
List<DataFlucDto> result = new ArrayList<>();
|
List<DataFlucDto> result = new ArrayList<>();
|
||||||
//远程接口获取分钟数据
|
//远程接口获取分钟数据
|
||||||
@@ -275,8 +271,7 @@ public class DayDataServiceImpl implements IDayDataService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dataHarmPhasicIHandler(CalculatedParam calculatedParam) {
|
public void dataHarmPhasicIHandler(CalculatedParam calculatedParam) {
|
||||||
MemorySizeUtil.getNowMemory();
|
logger.info("{},dataHarmPhasicI表转r_stat_data_harmphasic_i_d算法开始=====》", LocalDateTime.now());
|
||||||
logger.info("{},{}dataHarmPhasicI表转r_stat_data_harmphasic_i_d算法开始=====》", LocalDateTime.now(),calculatedParam.getDataDate());
|
|
||||||
List<DataHarmPhasicIDto> result = new ArrayList<>();
|
List<DataHarmPhasicIDto> result = new ArrayList<>();
|
||||||
//远程接口获取分钟数据
|
//远程接口获取分钟数据
|
||||||
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
||||||
@@ -324,8 +319,7 @@ public class DayDataServiceImpl implements IDayDataService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dataHarmPhasicVHandler(CalculatedParam calculatedParam) {
|
public void dataHarmPhasicVHandler(CalculatedParam calculatedParam) {
|
||||||
MemorySizeUtil.getNowMemory();
|
logger.info("{},dataHarmPhasicV表转r_stat_data_harmphasic_v_d算法开始=====》", LocalDateTime.now());
|
||||||
logger.info("{},{}dataHarmPhasicV表转r_stat_data_harmphasic_v_d算法开始=====》", LocalDateTime.now(),calculatedParam.getDataDate());
|
|
||||||
List<DataHarmPhasicVDto> result = new ArrayList<>();
|
List<DataHarmPhasicVDto> result = new ArrayList<>();
|
||||||
//远程接口获取分钟数据
|
//远程接口获取分钟数据
|
||||||
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
||||||
@@ -373,8 +367,7 @@ public class DayDataServiceImpl implements IDayDataService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dataHarmPowerPHandler(CalculatedParam calculatedParam) {
|
public void dataHarmPowerPHandler(CalculatedParam calculatedParam) {
|
||||||
MemorySizeUtil.getNowMemory();
|
logger.info("{},dataHarmPowerP表转r_stat_data_harmpower_p_d算法开始=====》", LocalDateTime.now());
|
||||||
logger.info("{},{}dataHarmPowerP表转r_stat_data_harmpower_p_d算法开始=====》", LocalDateTime.now(),calculatedParam.getDataDate());
|
|
||||||
List<DataHarmPowerPDto> result = new ArrayList<>();
|
List<DataHarmPowerPDto> result = new ArrayList<>();
|
||||||
//远程接口获取分钟数据
|
//远程接口获取分钟数据
|
||||||
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
||||||
@@ -422,8 +415,7 @@ public class DayDataServiceImpl implements IDayDataService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dataHarmPowerQHandler(CalculatedParam calculatedParam) {
|
public void dataHarmPowerQHandler(CalculatedParam calculatedParam) {
|
||||||
MemorySizeUtil.getNowMemory();
|
logger.info("{},dataHarmPowerQ表转r_stat_data_harmpower_q_d算法开始=====》", LocalDateTime.now());
|
||||||
logger.info("{},{}dataHarmPowerQ表转r_stat_data_harmpower_q_d算法开始=====》", LocalDateTime.now(),calculatedParam.getDataDate());
|
|
||||||
List<DataHarmPowerQDto> result = new ArrayList<>();
|
List<DataHarmPowerQDto> result = new ArrayList<>();
|
||||||
//远程接口获取分钟数据
|
//远程接口获取分钟数据
|
||||||
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
||||||
@@ -471,8 +463,7 @@ public class DayDataServiceImpl implements IDayDataService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dataHarmPowerSHandler(CalculatedParam calculatedParam) {
|
public void dataHarmPowerSHandler(CalculatedParam calculatedParam) {
|
||||||
MemorySizeUtil.getNowMemory();
|
logger.info("{},dataHarmPowerS表转r_stat_data_harmpower_s_d算法开始=====》", LocalDateTime.now());
|
||||||
logger.info("{},{}dataHarmPowerS表转r_stat_data_harmpower_s_d算法开始=====》", LocalDateTime.now(),calculatedParam.getDataDate());
|
|
||||||
List<DataHarmPowerSDto> result = new ArrayList<>();
|
List<DataHarmPowerSDto> result = new ArrayList<>();
|
||||||
//远程接口获取分钟数据
|
//远程接口获取分钟数据
|
||||||
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
||||||
@@ -520,8 +511,7 @@ public class DayDataServiceImpl implements IDayDataService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dataHarmRateIHandler(CalculatedParam calculatedParam) {
|
public void dataHarmRateIHandler(CalculatedParam calculatedParam) {
|
||||||
MemorySizeUtil.getNowMemory();
|
logger.info("{},dataHarmRateI表转r_stat_data_harmRate_i_d算法开始=====》", LocalDateTime.now());
|
||||||
logger.info("{},{}dataHarmRateI表转r_stat_data_harmRate_i_d算法开始=====》", LocalDateTime.now(),calculatedParam.getDataDate());
|
|
||||||
List<DataHarmRateIDto> result = new ArrayList<>();
|
List<DataHarmRateIDto> result = new ArrayList<>();
|
||||||
//远程接口获取分钟数据
|
//远程接口获取分钟数据
|
||||||
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
||||||
@@ -569,8 +559,7 @@ public class DayDataServiceImpl implements IDayDataService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dataHarmRateVHandler(CalculatedParam calculatedParam) {
|
public void dataHarmRateVHandler(CalculatedParam calculatedParam) {
|
||||||
MemorySizeUtil.getNowMemory();
|
logger.info("{},dataHarmRateV表转r_stat_data_harmRate_v_d算法开始=====》", LocalDateTime.now());
|
||||||
logger.info("{},{}dataHarmRateV表转r_stat_data_harmRate_v_d算法开始=====》", LocalDateTime.now(),calculatedParam.getDataDate());
|
|
||||||
List<DataHarmRateVDto> result = new ArrayList<>();
|
List<DataHarmRateVDto> result = new ArrayList<>();
|
||||||
//远程接口获取分钟数据
|
//远程接口获取分钟数据
|
||||||
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
||||||
@@ -618,8 +607,7 @@ public class DayDataServiceImpl implements IDayDataService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dataInHarmIHandler(CalculatedParam calculatedParam) {
|
public void dataInHarmIHandler(CalculatedParam calculatedParam) {
|
||||||
MemorySizeUtil.getNowMemory();
|
logger.info("{},dataInHarmI表转r_stat_data_inharm_i_d算法开始=====》", LocalDateTime.now());
|
||||||
logger.info("{},{}dataInHarmI表转r_stat_data_inharm_i_d算法开始=====》", LocalDateTime.now(),calculatedParam.getDataDate());
|
|
||||||
List<DataInHarmIDto> result = new ArrayList<>();
|
List<DataInHarmIDto> result = new ArrayList<>();
|
||||||
//远程接口获取分钟数据
|
//远程接口获取分钟数据
|
||||||
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
||||||
@@ -667,8 +655,7 @@ public class DayDataServiceImpl implements IDayDataService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dataInHarmVHandler(CalculatedParam calculatedParam) {
|
public void dataInHarmVHandler(CalculatedParam calculatedParam) {
|
||||||
MemorySizeUtil.getNowMemory();
|
logger.info("{},dataInHarmV表转r_stat_data_inharm_v_d算法开始=====》", LocalDateTime.now());
|
||||||
logger.info("{},{}dataInHarmV表转r_stat_data_inharm_v_d算法开始=====》", LocalDateTime.now(),calculatedParam.getDataDate());
|
|
||||||
List<DataInHarmVDto> result = new ArrayList<>();
|
List<DataInHarmVDto> result = new ArrayList<>();
|
||||||
//远程接口获取分钟数据
|
//远程接口获取分钟数据
|
||||||
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
||||||
@@ -716,8 +703,7 @@ public class DayDataServiceImpl implements IDayDataService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dataPltHandler(CalculatedParam calculatedParam) {
|
public void dataPltHandler(CalculatedParam calculatedParam) {
|
||||||
MemorySizeUtil.getNowMemory();
|
logger.info("{},dataPlt表转r_stat_data_plt_d算法开始=====》", LocalDateTime.now());
|
||||||
logger.info("{},{}dataPlt表转r_stat_data_plt_d算法开始=====》", LocalDateTime.now(),calculatedParam.getDataDate());
|
|
||||||
List<DataPltDto> result = new ArrayList<>();
|
List<DataPltDto> result = new ArrayList<>();
|
||||||
List<String> valueList = Arrays.asList("AVG","MAX","MIN","CP95");
|
List<String> valueList = Arrays.asList("AVG","MAX","MIN","CP95");
|
||||||
//远程接口获取分钟数据
|
//远程接口获取分钟数据
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import cn.hutool.core.util.CharsetUtil;
|
|||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.alibaba.nacos.shaded.com.google.gson.Gson;
|
import com.alibaba.nacos.shaded.com.google.gson.Gson;
|
||||||
import com.njcn.algorithm.pojo.bo.CalculatedParam;
|
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.FlowAsyncService;
|
||||||
import com.njcn.dataProcess.api.*;
|
import com.njcn.dataProcess.api.*;
|
||||||
import com.njcn.dataProcess.dto.DataCleanJsonDTO;
|
import com.njcn.dataProcess.dto.DataCleanJsonDTO;
|
||||||
@@ -93,7 +92,7 @@ public class FlowAsyncServiceImpl implements FlowAsyncService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Async("asyncExecutor")
|
@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;
|
LineDetailVO.Detail item = line;
|
||||||
List<Map<String, Object>> resultData = new ArrayList<>();
|
List<Map<String, Object>> resultData = new ArrayList<>();
|
||||||
Set<String> allTimeSet = new HashSet<>();
|
Set<String> allTimeSet = new HashSet<>();
|
||||||
@@ -390,16 +389,16 @@ public class FlowAsyncServiceImpl implements FlowAsyncService {
|
|||||||
bak.setState(1);
|
bak.setState(1);
|
||||||
//存储文件
|
//存储文件
|
||||||
InputStream reportStream = IoUtil.toStream(new Gson().toJson(resultData), CharsetUtil.UTF_8);
|
InputStream reportStream = IoUtil.toStream(new Gson().toJson(resultData), CharsetUtil.UTF_8);
|
||||||
String[] date = dataDate.split("-");
|
|
||||||
String fileName = fileStorageUtil.uploadStreamSpecifyName(
|
String fileName = fileStorageUtil.uploadStreamSpecifyName(
|
||||||
reportStream
|
reportStream
|
||||||
, OssPath.DATA_CLEAN + date[0] + "/"+ date[1] + "/"+ date[2] + "/"
|
, OssPath.DATA_CLEAN + dataDate + "/"
|
||||||
, item.getLineId() + ".txt");
|
, item.getLineId() + ".txt");
|
||||||
//存储数据
|
//存储数据
|
||||||
bak.setFilePath(fileName);
|
bak.setFilePath(fileName);
|
||||||
}
|
}
|
||||||
pqDataVerifyNewFeignClient.insertData(bak);
|
pqDataVerifyNewFeignClient.insertData(bak);
|
||||||
resultData=null;
|
resultData=null;
|
||||||
|
logger.info( dataDate+"总数据:" + size + "=====》当前第" + i+"已完成!");
|
||||||
System.gc();
|
System.gc();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import cn.hutool.core.collection.CollUtil;
|
|||||||
import cn.hutool.core.collection.ListUtil;
|
import cn.hutool.core.collection.ListUtil;
|
||||||
import cn.hutool.core.date.DatePattern;
|
import cn.hutool.core.date.DatePattern;
|
||||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||||
import cn.hutool.core.util.ArrayUtil;
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.njcn.algorithm.pojo.bo.CalculatedParam;
|
import com.njcn.algorithm.pojo.bo.CalculatedParam;
|
||||||
import com.njcn.algorithm.service.line.IDataCrossingService;
|
import com.njcn.algorithm.service.line.IDataCrossingService;
|
||||||
@@ -43,7 +42,10 @@ import java.lang.reflect.Method;
|
|||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@@ -59,7 +61,7 @@ import java.util.stream.Collectors;
|
|||||||
public class IDataCrossingServiceImpl implements IDataCrossingService {
|
public class IDataCrossingServiceImpl implements IDataCrossingService {
|
||||||
|
|
||||||
private static final Logger logger = LoggerFactory.getLogger(DayDataServiceImpl.class);
|
private static final Logger logger = LoggerFactory.getLogger(DayDataServiceImpl.class);
|
||||||
@Value("${line.num:10}")
|
@Value("${line.num}")
|
||||||
private Integer NUM;
|
private Integer NUM;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
@@ -104,28 +106,29 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
|
|||||||
}
|
}
|
||||||
Map<String, Overlimit> overLimitMap = overLimitList.stream().collect(Collectors.toMap(Overlimit::getId, Function.identity()));
|
Map<String, Overlimit> overLimitMap = overLimitList.stream().collect(Collectors.toMap(Overlimit::getId, Function.identity()));
|
||||||
//以100个监测点分片处理
|
//以100个监测点分片处理
|
||||||
MemorySizeUtil.getNowMemory();
|
List<List<String>> pendingIds = ListUtils.partition(lineIds, 1);
|
||||||
List<List<String>> pendingIds = ListUtils.partition(lineIds, 20);
|
|
||||||
ArrayList<String> phase = ListUtil.toList(PhaseType.PHASE_A, PhaseType.PHASE_B, PhaseType.PHASE_C);
|
ArrayList<String> phase = ListUtil.toList(PhaseType.PHASE_A, PhaseType.PHASE_B, PhaseType.PHASE_C);
|
||||||
|
MemorySizeUtil.getNowMemory();
|
||||||
|
|
||||||
for (List<String> pendingId : pendingIds) {
|
List<CompletableFuture<Void>> futures = new ArrayList<>();
|
||||||
List<CompletableFuture<Void>> futures = new ArrayList<>();
|
for (int i = 0; i < pendingIds.size(); i++) {
|
||||||
for (String s : pendingId) {
|
logger.info(calculatedParam.getDataDate()+" 总分区数据:" + pendingIds.size() + "=====》当前第"+(i + 1)+"小分区");
|
||||||
CompletableFuture<Void> future = dataLimitRateAsync.lineDataRate(
|
List<String> list = pendingIds.get(i);
|
||||||
calculatedParam.getDataDate(),
|
// 获取Future
|
||||||
Arrays.asList(s),
|
CompletableFuture<Void> future = dataLimitRateAsync.lineDataRate(
|
||||||
phase,
|
calculatedParam.getDataDate(),
|
||||||
overLimitMap,
|
list,
|
||||||
pendingId.size(),
|
phase,
|
||||||
pendingId.size(),
|
overLimitMap,
|
||||||
lineParam.getType()
|
pendingIds.size(),
|
||||||
);
|
(i + 1),
|
||||||
futures.add(future);
|
lineParam.getType()
|
||||||
}
|
);
|
||||||
CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join();
|
|
||||||
|
futures.add(future);
|
||||||
}
|
}
|
||||||
// 等待所有任务完成
|
// 等待所有任务完成
|
||||||
System.err.println("limitRate表转r_stat_limit_rate_d算法开始,执行日期为{},执行完成=====》"+calculatedParam.getDataDate());
|
CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join();
|
||||||
System.gc();
|
System.gc();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -166,8 +169,7 @@ public class IDataCrossingServiceImpl implements IDataCrossingService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void limitQualifiedDayHandler(CalculatedParam calculatedParam) {
|
public void limitQualifiedDayHandler(CalculatedParam calculatedParam) {
|
||||||
MemorySizeUtil.getNowMemory();
|
logger.info("{},r_stat_limit_qualified_d算法开始=====》", LocalDateTime.now());
|
||||||
logger.info("{},{}r_stat_limit_qualified_d算法开始=====》", LocalDateTime.now(),calculatedParam.getDataDate());
|
|
||||||
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
||||||
lineParam.setStartTime(TimeUtils.getBeginOfDay(calculatedParam.getDataDate()));
|
lineParam.setStartTime(TimeUtils.getBeginOfDay(calculatedParam.getDataDate()));
|
||||||
lineParam.setEndTime(TimeUtils.getEndOfDay(calculatedParam.getDataDate()));
|
lineParam.setEndTime(TimeUtils.getEndOfDay(calculatedParam.getDataDate()));
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import cn.hutool.core.date.DatePattern;
|
|||||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||||
import com.njcn.algorithm.pojo.bo.CalculatedParam;
|
import com.njcn.algorithm.pojo.bo.CalculatedParam;
|
||||||
import com.njcn.algorithm.service.line.IDataIntegrityService;
|
import com.njcn.algorithm.service.line.IDataIntegrityService;
|
||||||
import com.njcn.algorithm.utils.MemorySizeUtil;
|
|
||||||
import com.njcn.dataProcess.api.DataIntegrityFeignClient;
|
import com.njcn.dataProcess.api.DataIntegrityFeignClient;
|
||||||
import com.njcn.dataProcess.api.DataVFeignClient;
|
import com.njcn.dataProcess.api.DataVFeignClient;
|
||||||
import com.njcn.dataProcess.dto.MeasurementCountDTO;
|
import com.njcn.dataProcess.dto.MeasurementCountDTO;
|
||||||
@@ -43,8 +42,8 @@ public class IDataIntegrityServiceImpl implements IDataIntegrityService {
|
|||||||
|
|
||||||
private static final Logger logger = LoggerFactory.getLogger(IDataIntegrityServiceImpl.class);
|
private static final Logger logger = LoggerFactory.getLogger(IDataIntegrityServiceImpl.class);
|
||||||
|
|
||||||
@Value("${line.num:10}")
|
@Value("${line.num}")
|
||||||
private Integer NUM;
|
private Integer NUM = 100;
|
||||||
@Resource
|
@Resource
|
||||||
private CommTerminalGeneralClient commTerminalGeneralClient;
|
private CommTerminalGeneralClient commTerminalGeneralClient;
|
||||||
@Resource
|
@Resource
|
||||||
@@ -55,8 +54,7 @@ public class IDataIntegrityServiceImpl implements IDataIntegrityService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dataIntegrity(CalculatedParam<String> calculatedParam) {
|
public void dataIntegrity(CalculatedParam<String> calculatedParam) {
|
||||||
MemorySizeUtil.getNowMemory();
|
logger.info("{},integrity表转r_stat_integrity_d算法开始=====》", LocalDateTime.now());
|
||||||
logger.info("{},{}integrity表转r_stat_integrity_d算法开始=====》", LocalDateTime.now(),calculatedParam.getDataDate());
|
|
||||||
List<DataIntegrityDto> poList = new ArrayList<>();
|
List<DataIntegrityDto> poList = new ArrayList<>();
|
||||||
List<String> lineIds = calculatedParam.getIdList();
|
List<String> lineIds = calculatedParam.getIdList();
|
||||||
String beginDay = LocalDateTimeUtil.format(
|
String beginDay = LocalDateTimeUtil.format(
|
||||||
|
|||||||
@@ -294,11 +294,11 @@ public class IDataLimitRateAsyncImpl implements IDataLimitRateAsync {
|
|||||||
dataLimitRateDetailFeignClient.batchInsertion(detail);
|
dataLimitRateDetailFeignClient.batchInsertion(detail);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// logger.info(dataDate + " 总分区数据:" + size + "=====》当前第" + i + "小分区已完成!");
|
logger.info(dataDate + " 总分区数据:" + size + "=====》当前第" + i + "小分区已完成!");
|
||||||
result = null;
|
result = null;
|
||||||
// if(i==size){
|
if(i==size){
|
||||||
// MemorySizeUtil.getNowMemory();
|
MemorySizeUtil.getNowMemory();
|
||||||
// }
|
}
|
||||||
System.gc();
|
System.gc();
|
||||||
|
|
||||||
return CompletableFuture.completedFuture(null);
|
return CompletableFuture.completedFuture(null);
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import cn.hutool.core.util.NumberUtil;
|
|||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.njcn.algorithm.pojo.bo.CalculatedParam;
|
import com.njcn.algorithm.pojo.bo.CalculatedParam;
|
||||||
import com.njcn.algorithm.service.line.IDataOnlineRateService;
|
import com.njcn.algorithm.service.line.IDataOnlineRateService;
|
||||||
import com.njcn.algorithm.utils.MemorySizeUtil;
|
|
||||||
import com.njcn.dataProcess.api.DataIntegrityFeignClient;
|
import com.njcn.dataProcess.api.DataIntegrityFeignClient;
|
||||||
import com.njcn.dataProcess.api.DataOnlineRateFeignClient;
|
import com.njcn.dataProcess.api.DataOnlineRateFeignClient;
|
||||||
import com.njcn.dataProcess.api.DataVFeignClient;
|
import com.njcn.dataProcess.api.DataVFeignClient;
|
||||||
@@ -49,8 +48,8 @@ public class IDataOnlineRateServiceImpl implements IDataOnlineRateService {
|
|||||||
|
|
||||||
private static final Logger logger = LoggerFactory.getLogger(IDataOnlineRateServiceImpl.class);
|
private static final Logger logger = LoggerFactory.getLogger(IDataOnlineRateServiceImpl.class);
|
||||||
|
|
||||||
@Value("${line.num:10}")
|
@Value("${line.num}")
|
||||||
private Integer NUM;
|
private Integer NUM = 100;
|
||||||
|
|
||||||
private final Integer online = 1;
|
private final Integer online = 1;
|
||||||
private final Integer offline = 0;
|
private final Integer offline = 0;
|
||||||
@@ -70,8 +69,7 @@ public class IDataOnlineRateServiceImpl implements IDataOnlineRateService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dataOnlineRate(CalculatedParam calculatedParam) {
|
public void dataOnlineRate(CalculatedParam calculatedParam) {
|
||||||
MemorySizeUtil.getNowMemory();
|
logger.info("{},onlineRate表转r_stat_onlinerate_d算法开始=====》", LocalDateTime.now());
|
||||||
logger.info("{},{}onlineRate表转r_stat_onlinerate_d算法开始=====》", LocalDateTime.now(),calculatedParam.getDataDate());
|
|
||||||
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
||||||
lineParam.setStartTime(TimeUtils.getBeginOfDay(calculatedParam.getDataDate()));
|
lineParam.setStartTime(TimeUtils.getBeginOfDay(calculatedParam.getDataDate()));
|
||||||
lineParam.setEndTime(TimeUtils.getEndOfDay(calculatedParam.getDataDate()));
|
lineParam.setEndTime(TimeUtils.getEndOfDay(calculatedParam.getDataDate()));
|
||||||
@@ -87,7 +85,7 @@ public class IDataOnlineRateServiceImpl implements IDataOnlineRateService {
|
|||||||
Map<String, List<LineDevGetDTO>> LineDevGetMap = devList.stream()
|
Map<String, List<LineDevGetDTO>> LineDevGetMap = devList.stream()
|
||||||
.filter(x -> devIdList.contains(x.getDevId()))
|
.filter(x -> devIdList.contains(x.getDevId()))
|
||||||
.collect(Collectors.groupingBy(LineDevGetDTO::getDevId));
|
.collect(Collectors.groupingBy(LineDevGetDTO::getDevId));
|
||||||
if (ObjectUtil.isNotNull(calculatedParam.getType())&&calculatedParam.getType() == 1) {
|
if (ObjectUtil.isNotNull(calculatedParam.getType()) && calculatedParam.getType() == 1) {
|
||||||
LineDevGetMap.forEach((key, value) -> {
|
LineDevGetMap.forEach((key, value) -> {
|
||||||
DataOnlineRateDto.Detail onlineRateDpo = new DataOnlineRateDto.Detail();
|
DataOnlineRateDto.Detail onlineRateDpo = new DataOnlineRateDto.Detail();
|
||||||
List<String> collect = value.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
List<String> collect = value.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||||
@@ -132,9 +130,9 @@ public class IDataOnlineRateServiceImpl implements IDataOnlineRateService {
|
|||||||
List<String> lineIds = value.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
List<String> lineIds = value.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||||
lineParam.setLineId(lineIds);
|
lineParam.setLineId(lineIds);
|
||||||
List<DataIntegrityDto> integrityDS = dataIntegrityFeignClient.getRawData(lineParam).getData();
|
List<DataIntegrityDto> integrityDS = dataIntegrityFeignClient.getRawData(lineParam).getData();
|
||||||
Double max=0.0;
|
Double max = 0.0;
|
||||||
if(CollUtil.isNotEmpty(integrityDS)){
|
if (CollUtil.isNotEmpty(integrityDS)) {
|
||||||
List<Double> info=new ArrayList<>();
|
List<Double> info = new ArrayList<>();
|
||||||
for (DataIntegrityDto integrityD : integrityDS) {
|
for (DataIntegrityDto integrityD : integrityDS) {
|
||||||
double realTime = integrityD.getRealTime();
|
double realTime = integrityD.getRealTime();
|
||||||
double dueTime = integrityD.getDueTime();
|
double dueTime = integrityD.getDueTime();
|
||||||
@@ -146,7 +144,7 @@ public class IDataOnlineRateServiceImpl implements IDataOnlineRateService {
|
|||||||
}
|
}
|
||||||
max = info.stream().max(Comparator.naturalOrder()).orElse(0.0);
|
max = info.stream().max(Comparator.naturalOrder()).orElse(0.0);
|
||||||
}
|
}
|
||||||
int v = (int)Math.ceil(InfluxDBPublicParam.DAY_MINUTE * max);
|
int v = (int) Math.ceil(InfluxDBPublicParam.DAY_MINUTE * max);
|
||||||
onlineRateDpo.setOnlineMin(v);
|
onlineRateDpo.setOnlineMin(v);
|
||||||
onlineRateDpo.setOfflineMin(InfluxDBPublicParam.DAY_MINUTE - v);
|
onlineRateDpo.setOfflineMin(InfluxDBPublicParam.DAY_MINUTE - v);
|
||||||
list.add(onlineRateDpo);
|
list.add(onlineRateDpo);
|
||||||
@@ -249,7 +247,7 @@ public class IDataOnlineRateServiceImpl implements IDataOnlineRateService {
|
|||||||
long differ = DateUtil.between(date, newDate, DateUnit.MINUTE);
|
long differ = DateUtil.between(date, newDate, DateUnit.MINUTE);
|
||||||
if (online.equals(type)) {
|
if (online.equals(type)) {
|
||||||
minute = InfluxDBPublicParam.DAY_MINUTE - (int) differ;
|
minute = InfluxDBPublicParam.DAY_MINUTE - (int) differ;
|
||||||
}else{
|
} else {
|
||||||
minute = (int) differ;
|
minute = (int) differ;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import cn.hutool.core.date.LocalDateTimeUtil;
|
|||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.njcn.algorithm.pojo.bo.CalculatedParam;
|
import com.njcn.algorithm.pojo.bo.CalculatedParam;
|
||||||
import com.njcn.algorithm.service.line.IEventDetailService;
|
import com.njcn.algorithm.service.line.IEventDetailService;
|
||||||
import com.njcn.algorithm.utils.MemorySizeUtil;
|
|
||||||
import com.njcn.dataProcess.api.EventDetailFeignClient;
|
import com.njcn.dataProcess.api.EventDetailFeignClient;
|
||||||
import com.njcn.dataProcess.api.RmpEventDetailFeignClient;
|
import com.njcn.dataProcess.api.RmpEventDetailFeignClient;
|
||||||
import com.njcn.dataProcess.dto.RmpEventDetailDTO;
|
import com.njcn.dataProcess.dto.RmpEventDetailDTO;
|
||||||
@@ -45,8 +44,8 @@ import java.util.stream.Collectors;
|
|||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class IEventDetailServiceImpl implements IEventDetailService {
|
public class IEventDetailServiceImpl implements IEventDetailService {
|
||||||
private static final Logger logger = LoggerFactory.getLogger(IDataOnlineRateServiceImpl.class);
|
private static final Logger logger = LoggerFactory.getLogger(IDataOnlineRateServiceImpl.class);
|
||||||
@Value("${line.num:10}")
|
@Value("${line.num}")
|
||||||
private Integer NUM;
|
private Integer NUM = 10;
|
||||||
@Resource
|
@Resource
|
||||||
private RmpEventDetailFeignClient eventDetailFeignClient;
|
private RmpEventDetailFeignClient eventDetailFeignClient;
|
||||||
@Resource
|
@Resource
|
||||||
@@ -56,8 +55,7 @@ public class IEventDetailServiceImpl implements IEventDetailService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dataDayHandle(CalculatedParam<String> calculatedParam) {
|
public void dataDayHandle(CalculatedParam<String> calculatedParam) {
|
||||||
MemorySizeUtil.getNowMemory();
|
logger.info("{},r_mp_event_detail_d算法开始=====》", LocalDateTime.now());
|
||||||
logger.info("{},{}r_mp_event_detail_d算法开始=====》", LocalDateTime.now(),calculatedParam.getDataDate());
|
|
||||||
List<DataEventDetailDto> result = new ArrayList<>();
|
List<DataEventDetailDto> result = new ArrayList<>();
|
||||||
//远程接口获取分钟数据
|
//远程接口获取分钟数据
|
||||||
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
||||||
@@ -108,8 +106,7 @@ public class IEventDetailServiceImpl implements IEventDetailService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dataMonthHandle(CalculatedParam<String> calculatedParam) {
|
public void dataMonthHandle(CalculatedParam<String> calculatedParam) {
|
||||||
MemorySizeUtil.getNowMemory();
|
logger.info("{},r_mp_event_detail_m算法开始=====》", LocalDateTime.now());
|
||||||
logger.info("{},{}r_mp_event_detail_m算法开始=====》", LocalDateTime.now(),calculatedParam.getDataDate());
|
|
||||||
List<DataEventDetailDto> result = new ArrayList<>();
|
List<DataEventDetailDto> result = new ArrayList<>();
|
||||||
//远程接口获取分钟数据
|
//远程接口获取分钟数据
|
||||||
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
||||||
@@ -142,8 +139,7 @@ public class IEventDetailServiceImpl implements IEventDetailService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dataQuarterHandle(CalculatedParam<String> calculatedParam) {
|
public void dataQuarterHandle(CalculatedParam<String> calculatedParam) {
|
||||||
MemorySizeUtil.getNowMemory();
|
logger.info("{},r_mp_event_detail_q算法开始=====》", LocalDateTime.now());
|
||||||
logger.info("{},{}r_mp_event_detail_q算法开始=====》", LocalDateTime.now(),calculatedParam.getDataDate());
|
|
||||||
List<DataEventDetailDto> result = new ArrayList<>();
|
List<DataEventDetailDto> result = new ArrayList<>();
|
||||||
//远程接口获取分钟数据
|
//远程接口获取分钟数据
|
||||||
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
||||||
@@ -176,8 +172,7 @@ public class IEventDetailServiceImpl implements IEventDetailService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dataYearHandle(CalculatedParam<String> calculatedParam) {
|
public void dataYearHandle(CalculatedParam<String> calculatedParam) {
|
||||||
MemorySizeUtil.getNowMemory();
|
logger.info("{},r_mp_event_detail_y算法开始=====》", LocalDateTime.now());
|
||||||
logger.info("{},{}r_mp_event_detail_y算法开始=====》", LocalDateTime.now(),calculatedParam.getDataDate());
|
|
||||||
List<DataEventDetailDto> result = new ArrayList<>();
|
List<DataEventDetailDto> result = new ArrayList<>();
|
||||||
//远程接口获取分钟数据
|
//远程接口获取分钟数据
|
||||||
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
LineCountEvaluateParam lineParam = new LineCountEvaluateParam();
|
||||||
|
|||||||
@@ -49,8 +49,8 @@ import java.util.stream.Stream;
|
|||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class PollutionServiceImpl implements IPollutionService {
|
public class PollutionServiceImpl implements IPollutionService {
|
||||||
|
|
||||||
@Value("${line.num:10}")
|
@Value("${line.num}")
|
||||||
private Integer NUM;
|
private Integer NUM = 100;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private PqDataVerifyFeignClient pqDataVerifyFeignClient;
|
private PqDataVerifyFeignClient pqDataVerifyFeignClient;
|
||||||
@@ -101,7 +101,7 @@ public class PollutionServiceImpl implements IPollutionService {
|
|||||||
Map<String, DataPollutionD> interHarmonicVoltageList = getInterharmonicVoltage(lineCountEvaluateParam, limitMap);
|
Map<String, DataPollutionD> interHarmonicVoltageList = getInterharmonicVoltage(lineCountEvaluateParam, limitMap);
|
||||||
Map<String, DataPollutionD> voltageFlickerList = getVoltageFlicker(lineCountEvaluateParam, limitMap);
|
Map<String, DataPollutionD> voltageFlickerList = getVoltageFlicker(lineCountEvaluateParam, limitMap);
|
||||||
|
|
||||||
List<DataPollutionD> pollutionList = processPollutionList(local, list, dictData, harmonicVoltageList, harmonicCurrentList, frequencyDeviationList, voltageDeviationList,
|
List<DataPollutionD> pollutionList = processPollutionList(local, idList, dictData, harmonicVoltageList, harmonicCurrentList, frequencyDeviationList, voltageDeviationList,
|
||||||
threePhaseVoltageList, negativeSequenceList, interHarmonicVoltageList, voltageFlickerList);
|
threePhaseVoltageList, negativeSequenceList, interHarmonicVoltageList, voltageFlickerList);
|
||||||
|
|
||||||
if (CollUtil.isNotEmpty(pollutionList)) {
|
if (CollUtil.isNotEmpty(pollutionList)) {
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ import com.njcn.device.biz.commApi.CommLineClient;
|
|||||||
import com.njcn.device.biz.pojo.dto.LineDTO;
|
import com.njcn.device.biz.pojo.dto.LineDTO;
|
||||||
import com.njcn.device.pms.pojo.param.MonitorTerminalParam;
|
import com.njcn.device.pms.pojo.param.MonitorTerminalParam;
|
||||||
import com.njcn.device.pq.api.LineFeignClient;
|
import com.njcn.device.pq.api.LineFeignClient;
|
||||||
import com.njcn.device.pq.api.UserLedgerFeignClient;
|
|
||||||
import com.njcn.device.pq.pojo.vo.LineDetailDataVO;
|
import com.njcn.device.pq.pojo.vo.LineDetailDataVO;
|
||||||
import com.njcn.event.api.EventDetailFeignClient;
|
import com.njcn.event.api.EventDetailFeignClient;
|
||||||
import com.njcn.event.api.TransientFeignClient;
|
import com.njcn.event.api.TransientFeignClient;
|
||||||
@@ -66,8 +65,8 @@ import java.util.stream.Collectors;
|
|||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class SpecialAnalysisServiceImpl implements ISpecialAnalysisService {
|
public class SpecialAnalysisServiceImpl implements ISpecialAnalysisService {
|
||||||
|
|
||||||
@Value("${line.num:10}")
|
|
||||||
private Integer NUM;
|
private Integer NUM=10;
|
||||||
@Resource
|
@Resource
|
||||||
private EventDetailFeignClient eventDetailFeignClient;
|
private EventDetailFeignClient eventDetailFeignClient;
|
||||||
@Resource
|
@Resource
|
||||||
@@ -85,7 +84,7 @@ public class SpecialAnalysisServiceImpl implements ISpecialAnalysisService {
|
|||||||
@Resource
|
@Resource
|
||||||
private CommLineClient commLineClient;
|
private CommLineClient commLineClient;
|
||||||
@Resource
|
@Resource
|
||||||
private UserLedgerFeignClient userLedgerFeignClient;
|
private UserLedgerOldFeignClient userLedgerFeignClient;
|
||||||
@Resource
|
@Resource
|
||||||
private DataLimitRateDetailFeignClient dataLimitRateDetailFeignClient;
|
private DataLimitRateDetailFeignClient dataLimitRateDetailFeignClient;
|
||||||
|
|
||||||
|
|||||||
@@ -1,18 +1,10 @@
|
|||||||
package com.njcn.algorithm.pojo.api;
|
package com.njcn.dataProcess.api;
|
||||||
|
|
||||||
/**
|
|
||||||
* Description:
|
|
||||||
* Date: 2026/05/21 下午 2:41【需求编号】
|
|
||||||
*
|
|
||||||
* @author clam
|
|
||||||
* @version V1.0.0
|
|
||||||
*/
|
|
||||||
|
|
||||||
import com.njcn.algorithm.pojo.api.fallback.PqReasonableRangeFeignClientFallbackFactory;
|
|
||||||
import com.njcn.algorithm.pojo.dto.PqReasonableRangeDto;
|
|
||||||
import com.njcn.algorithm.pojo.param.DataCleanParam;
|
|
||||||
import com.njcn.common.pojo.constant.ServerInfo;
|
import com.njcn.common.pojo.constant.ServerInfo;
|
||||||
import com.njcn.common.pojo.response.HttpResult;
|
import com.njcn.common.pojo.response.HttpResult;
|
||||||
|
import com.njcn.dataProcess.api.fallback.PqReasonableRangeFeignClientFallbackFactory;
|
||||||
|
import com.njcn.dataProcess.param.DataCleanParam;
|
||||||
|
import com.njcn.dataProcess.pojo.dto.PqReasonableRangeDto;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import org.springframework.cloud.openfeign.FeignClient;
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
@@ -25,7 +17,7 @@ import java.util.List;
|
|||||||
* @version 1.0.0
|
* @version 1.0.0
|
||||||
* @date 2025年02月13日 20:11
|
* @date 2025年02月13日 20:11
|
||||||
*/
|
*/
|
||||||
@FeignClient(value = ServerInfo.ALGORITHM_BOOT, path = "/pqReasonableRange", fallbackFactory = PqReasonableRangeFeignClientFallbackFactory.class, contextId = "pqReasonableRange")
|
@FeignClient(value = ServerInfo.PLATFORM_DATA_PROCESSING_BOOT, path = "/pqReasonableRange", fallbackFactory = PqReasonableRangeFeignClientFallbackFactory.class, contextId = "pqReasonableRange")
|
||||||
public interface PqReasonableRangeFeignClient {
|
public interface PqReasonableRangeFeignClient {
|
||||||
|
|
||||||
@PostMapping("/getData")
|
@PostMapping("/getData")
|
||||||
@@ -33,4 +25,3 @@ public interface PqReasonableRangeFeignClient {
|
|||||||
HttpResult<List<PqReasonableRangeDto>> getData(@RequestBody DataCleanParam param);
|
HttpResult<List<PqReasonableRangeDto>> getData(@RequestBody DataCleanParam param);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2,7 +2,10 @@ package com.njcn.dataProcess.api;
|
|||||||
|
|
||||||
import com.njcn.common.pojo.constant.ServerInfo;
|
import com.njcn.common.pojo.constant.ServerInfo;
|
||||||
import com.njcn.common.pojo.response.HttpResult;
|
import com.njcn.common.pojo.response.HttpResult;
|
||||||
|
import com.njcn.dataProcess.api.fallback.RmpEventFeignClientFallbackFactory;
|
||||||
import com.njcn.dataProcess.api.fallback.SpThroughFeignClientFallbackFactory;
|
import com.njcn.dataProcess.api.fallback.SpThroughFeignClientFallbackFactory;
|
||||||
|
import com.njcn.dataProcess.dto.RmpEventDetailDTO;
|
||||||
|
import com.njcn.dataProcess.param.LineCountEvaluateParam;
|
||||||
import com.njcn.dataProcess.pojo.dto.RActivePowerRangeDto;
|
import com.njcn.dataProcess.pojo.dto.RActivePowerRangeDto;
|
||||||
import com.njcn.dataProcess.pojo.dto.SpThroughDto;
|
import com.njcn.dataProcess.pojo.dto.SpThroughDto;
|
||||||
import org.springframework.cloud.openfeign.FeignClient;
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
package com.njcn.algorithm.pojo.api.fallback;
|
package com.njcn.dataProcess.api.fallback;
|
||||||
|
|
||||||
import com.njcn.algorithm.pojo.api.PqReasonableRangeFeignClient;
|
|
||||||
import com.njcn.algorithm.pojo.dto.PqReasonableRangeDto;
|
|
||||||
import com.njcn.algorithm.pojo.param.DataCleanParam;
|
|
||||||
import com.njcn.algorithm.pojo.util.PrepareEnumUtil;
|
|
||||||
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||||
import com.njcn.common.pojo.exception.BusinessException;
|
import com.njcn.common.pojo.exception.BusinessException;
|
||||||
import com.njcn.common.pojo.response.HttpResult;
|
import com.njcn.common.pojo.response.HttpResult;
|
||||||
|
import com.njcn.dataProcess.api.PqReasonableRangeFeignClient;
|
||||||
|
import com.njcn.dataProcess.param.DataCleanParam;
|
||||||
|
import com.njcn.dataProcess.pojo.dto.PqReasonableRangeDto;
|
||||||
|
import com.njcn.dataProcess.util.DataProcessingEnumUtil;
|
||||||
import feign.hystrix.FallbackFactory;
|
import feign.hystrix.FallbackFactory;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
@@ -14,11 +14,9 @@ import org.springframework.stereotype.Component;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Description:
|
* @author xy
|
||||||
* Date: 2026/05/21 下午 2:42【需求编号】
|
* @version 1.0.0
|
||||||
*
|
* @date 2025年02月13日 20:13
|
||||||
* @author clam
|
|
||||||
* @version V1.0.0
|
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Component
|
@Component
|
||||||
@@ -34,7 +32,7 @@ public class PqReasonableRangeFeignClientFallbackFactory implements FallbackFact
|
|||||||
Enum<?> exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK;
|
Enum<?> exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK;
|
||||||
if(cause.getCause() instanceof BusinessException){
|
if(cause.getCause() instanceof BusinessException){
|
||||||
BusinessException businessException = (BusinessException) cause.getCause();
|
BusinessException businessException = (BusinessException) cause.getCause();
|
||||||
exceptionEnum = PrepareEnumUtil.getExceptionEnum(businessException.getResult());
|
exceptionEnum = DataProcessingEnumUtil.getExceptionEnum(businessException.getResult());
|
||||||
}
|
}
|
||||||
Enum<?> finalExceptionEnum = exceptionEnum;
|
Enum<?> finalExceptionEnum = exceptionEnum;
|
||||||
return new PqReasonableRangeFeignClient() {
|
return new PqReasonableRangeFeignClient() {
|
||||||
@@ -47,4 +45,3 @@ public class PqReasonableRangeFeignClientFallbackFactory implements FallbackFact
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -196,8 +196,5 @@ public interface InfluxDBTableConstant {
|
|||||||
String NORMAL = "0";
|
String NORMAL = "0";
|
||||||
String UN_NORMAL = "1";
|
String UN_NORMAL = "1";
|
||||||
|
|
||||||
/**
|
|
||||||
* 数据清洗标志 0:正常 1:异常
|
|
||||||
*/
|
|
||||||
String ABNORMAL_FLAG = "abnormal_flag";
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.njcn.algorithm.pojo.param;
|
package com.njcn.dataProcess.param;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@@ -214,111 +214,111 @@ public class DataHarmpowerP {
|
|||||||
private Double p50;
|
private Double p50;
|
||||||
|
|
||||||
//在线监测添加的字段
|
//在线监测添加的字段
|
||||||
@Column(name = "tot_p")
|
@Column(name = "totPf")
|
||||||
private Double totP;
|
|
||||||
@Column(name = "tot_df")
|
|
||||||
private Double totDf;
|
|
||||||
@Column(name = "tot_pf")
|
|
||||||
private Double totPf;
|
private Double totPf;
|
||||||
@Column(name = "tot_tp_1")
|
@Column(name = "totDf")
|
||||||
|
private Double totDf;
|
||||||
|
@Column(name = "totP")
|
||||||
|
private Double totP;
|
||||||
|
@Column(name = "totP1")
|
||||||
private Double totP1;
|
private Double totP1;
|
||||||
@Column(name = "tot_tp_2")
|
@Column(name = "totP2")
|
||||||
private Double totP2;
|
private Double totP2;
|
||||||
@Column(name = "tot_tp_3")
|
@Column(name = "totP3")
|
||||||
private Double totP3;
|
private Double totP3;
|
||||||
@Column(name = "tot_tp_4")
|
@Column(name = "totP4")
|
||||||
private Double totP4;
|
private Double totP4;
|
||||||
@Column(name = "tot_tp_5")
|
@Column(name = "totP5")
|
||||||
private Double totP5;
|
private Double totP5;
|
||||||
@Column(name = "tot_tp_6")
|
@Column(name = "totP6")
|
||||||
private Double totP6;
|
private Double totP6;
|
||||||
@Column(name = "tot_tp_7")
|
@Column(name = "totP7")
|
||||||
private Double totP7;
|
private Double totP7;
|
||||||
@Column(name = "tot_tp_8")
|
@Column(name = "totP8")
|
||||||
private Double totP8;
|
private Double totP8;
|
||||||
@Column(name = "tot_tp_9")
|
@Column(name = "totP9")
|
||||||
private Double totP9;
|
private Double totP9;
|
||||||
@Column(name = "tot_tp_10")
|
@Column(name = "totP10")
|
||||||
private Double totP10;
|
private Double totP10;
|
||||||
@Column(name = "tot_tp_11")
|
@Column(name = "totP11")
|
||||||
private Double totP11;
|
private Double totP11;
|
||||||
@Column(name = "tot_tp_12")
|
@Column(name = "totP12")
|
||||||
private Double totP12;
|
private Double totP12;
|
||||||
@Column(name = "tot_tp_13")
|
@Column(name = "totP13")
|
||||||
private Double totP13;
|
private Double totP13;
|
||||||
@Column(name = "tot_tp_14")
|
@Column(name = "totP14")
|
||||||
private Double totP14;
|
private Double totP14;
|
||||||
@Column(name = "tot_tp_15")
|
@Column(name = "totP15")
|
||||||
private Double totP15;
|
private Double totP15;
|
||||||
@Column(name = "tot_tp_16")
|
@Column(name = "totP16")
|
||||||
private Double totP16;
|
private Double totP16;
|
||||||
@Column(name = "tot_tp_17")
|
@Column(name = "totP17")
|
||||||
private Double totP17;
|
private Double totP17;
|
||||||
@Column(name = "tot_tp_18")
|
@Column(name = "totP18")
|
||||||
private Double totP18;
|
private Double totP18;
|
||||||
@Column(name = "tot_tp_19")
|
@Column(name = "totP19")
|
||||||
private Double totP19;
|
private Double totP19;
|
||||||
@Column(name = "tot_tp_20")
|
@Column(name = "totP20")
|
||||||
private Double totP20;
|
private Double totP20;
|
||||||
@Column(name = "tot_tp_21")
|
@Column(name = "totP21")
|
||||||
private Double totP21;
|
private Double totP21;
|
||||||
@Column(name = "tot_tp_22")
|
@Column(name = "totP22")
|
||||||
private Double totP22;
|
private Double totP22;
|
||||||
@Column(name = "tot_tp_23")
|
@Column(name = "totP23")
|
||||||
private Double totP23;
|
private Double totP23;
|
||||||
@Column(name = "tot_tp_24")
|
@Column(name = "totP24")
|
||||||
private Double totP24;
|
private Double totP24;
|
||||||
@Column(name = "tot_tp_25")
|
@Column(name = "totP25")
|
||||||
private Double totP25;
|
private Double totP25;
|
||||||
@Column(name = "tot_tp_26")
|
@Column(name = "totP26")
|
||||||
private Double totP26;
|
private Double totP26;
|
||||||
@Column(name = "tot_tp_27")
|
@Column(name = "totP27")
|
||||||
private Double totP27;
|
private Double totP27;
|
||||||
@Column(name = "tot_tp_28")
|
@Column(name = "totP28")
|
||||||
private Double totP28;
|
private Double totP28;
|
||||||
@Column(name = "tot_tp_29")
|
@Column(name = "totP29")
|
||||||
private Double totP29;
|
private Double totP29;
|
||||||
@Column(name = "tot_tp_30")
|
@Column(name = "totP30")
|
||||||
private Double totP30;
|
private Double totP30;
|
||||||
@Column(name = "tot_tp_31")
|
@Column(name = "totP31")
|
||||||
private Double totP31;
|
private Double totP31;
|
||||||
@Column(name = "tot_tp_32")
|
@Column(name = "totP32")
|
||||||
private Double totP32;
|
private Double totP32;
|
||||||
@Column(name = "tot_tp_33")
|
@Column(name = "totP33")
|
||||||
private Double totP33;
|
private Double totP33;
|
||||||
@Column(name = "tot_tp_34")
|
@Column(name = "totP34")
|
||||||
private Double totP34;
|
private Double totP34;
|
||||||
@Column(name = "tot_tp_35")
|
@Column(name = "totP35")
|
||||||
private Double totP35;
|
private Double totP35;
|
||||||
@Column(name = "tot_tp_36")
|
@Column(name = "totP36")
|
||||||
private Double totP36;
|
private Double totP36;
|
||||||
@Column(name = "tot_tp_37")
|
@Column(name = "totP37")
|
||||||
private Double totP37;
|
private Double totP37;
|
||||||
@Column(name = "tot_tp_38")
|
@Column(name = "totP38")
|
||||||
private Double totP38;
|
private Double totP38;
|
||||||
@Column(name = "tot_tp_39")
|
@Column(name = "totP39")
|
||||||
private Double totP39;
|
private Double totP39;
|
||||||
@Column(name = "tot_tp_40")
|
@Column(name = "totP40")
|
||||||
private Double totP40;
|
private Double totP40;
|
||||||
@Column(name = "tot_tp_41")
|
@Column(name = "totP41")
|
||||||
private Double totP41;
|
private Double totP41;
|
||||||
@Column(name = "tot_tp_42")
|
@Column(name = "totP42")
|
||||||
private Double totP42;
|
private Double totP42;
|
||||||
@Column(name = "tot_tp_43")
|
@Column(name = "totP43")
|
||||||
private Double totP43;
|
private Double totP43;
|
||||||
@Column(name = "tot_tp_44")
|
@Column(name = "totP44")
|
||||||
private Double totP44;
|
private Double totP44;
|
||||||
@Column(name = "tot_tp_45")
|
@Column(name = "totP45")
|
||||||
private Double totP45;
|
private Double totP45;
|
||||||
@Column(name = "tot_tp_46")
|
@Column(name = "totP46")
|
||||||
private Double totP46;
|
private Double totP46;
|
||||||
@Column(name = "tot_tp_47")
|
@Column(name = "totP47")
|
||||||
private Double totP47;
|
private Double totP47;
|
||||||
@Column(name = "tot_tp_49")
|
@Column(name = "totP49")
|
||||||
private Double totP48;
|
private Double totP48;
|
||||||
@Column(name = "tot_tp_49")
|
@Column(name = "totP49")
|
||||||
private Double totP49;
|
private Double totP49;
|
||||||
@Column(name = "tot_tp_50")
|
@Column(name = "totP50")
|
||||||
private Double totP50;
|
private Double totP50;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -208,107 +208,107 @@ public class DataHarmpowerQ {
|
|||||||
private Double q50;
|
private Double q50;
|
||||||
|
|
||||||
//在线监测添加的字段
|
//在线监测添加的字段
|
||||||
@Column(name = "tot_q")
|
@Column(name = "totQ")
|
||||||
private Double totQ;
|
private Double totQ;
|
||||||
@Column(name = "tot_tq_1")
|
@Column(name = "totQ1")
|
||||||
private Double totQ1;
|
private Double totQ1;
|
||||||
@Column(name = "tot_tq_2")
|
@Column(name = "totQ2")
|
||||||
private Double totQ2;
|
private Double totQ2;
|
||||||
@Column(name = "tot_tq_3")
|
@Column(name = "totQ3")
|
||||||
private Double totQ3;
|
private Double totQ3;
|
||||||
@Column(name = "tot_tq_4")
|
@Column(name = "totQ4")
|
||||||
private Double totQ4;
|
private Double totQ4;
|
||||||
@Column(name = "tot_tq_5")
|
@Column(name = "totQ5")
|
||||||
private Double totQ5;
|
private Double totQ5;
|
||||||
@Column(name = "tot_tq_6")
|
@Column(name = "totQ6")
|
||||||
private Double totQ6;
|
private Double totQ6;
|
||||||
@Column(name = "tot_tq_7")
|
@Column(name = "totQ7")
|
||||||
private Double totQ7;
|
private Double totQ7;
|
||||||
@Column(name = "tot_tq_8")
|
@Column(name = "totQ8")
|
||||||
private Double totQ8;
|
private Double totQ8;
|
||||||
@Column(name = "tot_tq_9")
|
@Column(name = "totQ9")
|
||||||
private Double totQ9;
|
private Double totQ9;
|
||||||
@Column(name = "tot_tq_10")
|
@Column(name = "totQ10")
|
||||||
private Double totQ10;
|
private Double totQ10;
|
||||||
@Column(name = "tot_tq_11")
|
@Column(name = "totQ11")
|
||||||
private Double totQ11;
|
private Double totQ11;
|
||||||
@Column(name = "tot_tq_12")
|
@Column(name = "totQ12")
|
||||||
private Double totQ12;
|
private Double totQ12;
|
||||||
@Column(name = "tot_tq_13")
|
@Column(name = "totQ13")
|
||||||
private Double totQ13;
|
private Double totQ13;
|
||||||
@Column(name = "tot_tq_14")
|
@Column(name = "totQ14")
|
||||||
private Double totQ14;
|
private Double totQ14;
|
||||||
@Column(name = "tot_tq_15")
|
@Column(name = "totQ15")
|
||||||
private Double totQ15;
|
private Double totQ15;
|
||||||
@Column(name = "tot_tq_16")
|
@Column(name = "totQ16")
|
||||||
private Double totQ16;
|
private Double totQ16;
|
||||||
@Column(name = "tot_tq_17")
|
@Column(name = "totQ17")
|
||||||
private Double totQ17;
|
private Double totQ17;
|
||||||
@Column(name = "tot_tq_18")
|
@Column(name = "totQ18")
|
||||||
private Double totQ18;
|
private Double totQ18;
|
||||||
@Column(name = "tot_tq_19")
|
@Column(name = "totQ19")
|
||||||
private Double totQ19;
|
private Double totQ19;
|
||||||
@Column(name = "tot_tq_20")
|
@Column(name = "totQ20")
|
||||||
private Double totQ20;
|
private Double totQ20;
|
||||||
@Column(name = "tot_tq_21")
|
@Column(name = "totQ21")
|
||||||
private Double totQ21;
|
private Double totQ21;
|
||||||
@Column(name = "tot_tq_22")
|
@Column(name = "totQ22")
|
||||||
private Double totQ22;
|
private Double totQ22;
|
||||||
@Column(name = "tot_tq_23")
|
@Column(name = "totQ23")
|
||||||
private Double totQ23;
|
private Double totQ23;
|
||||||
@Column(name = "tot_tq_24")
|
@Column(name = "totQ24")
|
||||||
private Double totQ24;
|
private Double totQ24;
|
||||||
@Column(name = "tot_tq_25")
|
@Column(name = "totQ25")
|
||||||
private Double totQ25;
|
private Double totQ25;
|
||||||
@Column(name = "tot_tq_26")
|
@Column(name = "totQ26")
|
||||||
private Double totQ26;
|
private Double totQ26;
|
||||||
@Column(name = "tot_tq_27")
|
@Column(name = "totQ27")
|
||||||
private Double totQ27;
|
private Double totQ27;
|
||||||
@Column(name = "tot_tq_28")
|
@Column(name = "totQ28")
|
||||||
private Double totQ28;
|
private Double totQ28;
|
||||||
@Column(name = "tot_tq_29")
|
@Column(name = "totQ29")
|
||||||
private Double totQ29;
|
private Double totQ29;
|
||||||
@Column(name = "tot_tq_30")
|
@Column(name = "totQ30")
|
||||||
private Double totQ30;
|
private Double totQ30;
|
||||||
@Column(name = "tot_tq_31")
|
@Column(name = "totQ31")
|
||||||
private Double totQ31;
|
private Double totQ31;
|
||||||
@Column(name = "tot_tq_32")
|
@Column(name = "totQ32")
|
||||||
private Double totQ32;
|
private Double totQ32;
|
||||||
@Column(name = "tot_tq_33")
|
@Column(name = "totQ33")
|
||||||
private Double totQ33;
|
private Double totQ33;
|
||||||
@Column(name = "tot_tq_34")
|
@Column(name = "totQ34")
|
||||||
private Double totQ34;
|
private Double totQ34;
|
||||||
@Column(name = "tot_tq_35")
|
@Column(name = "totQ35")
|
||||||
private Double totQ35;
|
private Double totQ35;
|
||||||
@Column(name = "tot_tq_36")
|
@Column(name = "totQ36")
|
||||||
private Double totQ36;
|
private Double totQ36;
|
||||||
@Column(name = "tot_tq_37")
|
@Column(name = "totQ37")
|
||||||
private Double totQ37;
|
private Double totQ37;
|
||||||
@Column(name = "tot_tq_38")
|
@Column(name = "totQ38")
|
||||||
private Double totQ38;
|
private Double totQ38;
|
||||||
@Column(name = "tot_tq_39")
|
@Column(name = "totQ39")
|
||||||
private Double totQ39;
|
private Double totQ39;
|
||||||
@Column(name = "tot_tq_40")
|
@Column(name = "totQ40")
|
||||||
private Double totQ40;
|
private Double totQ40;
|
||||||
@Column(name = "tot_tq_41")
|
@Column(name = "totQ41")
|
||||||
private Double totQ41;
|
private Double totQ41;
|
||||||
@Column(name = "tot_tq_42")
|
@Column(name = "totQ42")
|
||||||
private Double totQ42;
|
private Double totQ42;
|
||||||
@Column(name = "tot_tq_43")
|
@Column(name = "totQ43")
|
||||||
private Double totQ43;
|
private Double totQ43;
|
||||||
@Column(name = "tot_tq_44")
|
@Column(name = "totQ44")
|
||||||
private Double totQ44;
|
private Double totQ44;
|
||||||
@Column(name = "tot_tq_45")
|
@Column(name = "totQ45")
|
||||||
private Double totQ45;
|
private Double totQ45;
|
||||||
@Column(name = "tot_tq_46")
|
@Column(name = "totQ46")
|
||||||
private Double totQ46;
|
private Double totQ46;
|
||||||
@Column(name = "tot_tq_47")
|
@Column(name = "totQ47")
|
||||||
private Double totQ47;
|
private Double totQ47;
|
||||||
@Column(name = "tot_tq_49")
|
@Column(name = "totQ49")
|
||||||
private Double totQ48;
|
private Double totQ48;
|
||||||
@Column(name = "tot_tq_49")
|
@Column(name = "totQ49")
|
||||||
private Double totQ49;
|
private Double totQ49;
|
||||||
@Column(name = "tot_tq_50")
|
@Column(name = "totQ50")
|
||||||
private Double totQ50;
|
private Double totQ50;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -208,107 +208,107 @@ public class DataHarmpowerS {
|
|||||||
private Double s50;
|
private Double s50;
|
||||||
|
|
||||||
//在线监测添加的字段
|
//在线监测添加的字段
|
||||||
@Column(name = "tot_s")
|
@Column(name = "totS")
|
||||||
private Double totS;
|
private Double totS;
|
||||||
@Column(name = "tot_ts_1")
|
@Column(name = "totS1")
|
||||||
private Double totS1;
|
private Double totS1;
|
||||||
@Column(name = "tot_ts_2")
|
@Column(name = "totS2")
|
||||||
private Double totS2;
|
private Double totS2;
|
||||||
@Column(name = "tot_ts_3")
|
@Column(name = "totS3")
|
||||||
private Double totS3;
|
private Double totS3;
|
||||||
@Column(name = "tot_ts_4")
|
@Column(name = "totS4")
|
||||||
private Double totS4;
|
private Double totS4;
|
||||||
@Column(name = "tot_ts_5")
|
@Column(name = "totS5")
|
||||||
private Double totS5;
|
private Double totS5;
|
||||||
@Column(name = "tot_ts_6")
|
@Column(name = "totS6")
|
||||||
private Double totS6;
|
private Double totS6;
|
||||||
@Column(name = "tot_ts_7")
|
@Column(name = "totS7")
|
||||||
private Double totS7;
|
private Double totS7;
|
||||||
@Column(name = "tot_ts_8")
|
@Column(name = "totS8")
|
||||||
private Double totS8;
|
private Double totS8;
|
||||||
@Column(name = "tot_ts_9")
|
@Column(name = "totS9")
|
||||||
private Double totS9;
|
private Double totS9;
|
||||||
@Column(name = "tot_ts_10")
|
@Column(name = "totS10")
|
||||||
private Double totS10;
|
private Double totS10;
|
||||||
@Column(name = "tot_ts_11")
|
@Column(name = "totS11")
|
||||||
private Double totS11;
|
private Double totS11;
|
||||||
@Column(name = "tot_ts_12")
|
@Column(name = "totS12")
|
||||||
private Double totS12;
|
private Double totS12;
|
||||||
@Column(name = "tot_ts_13")
|
@Column(name = "totS13")
|
||||||
private Double totS13;
|
private Double totS13;
|
||||||
@Column(name = "tot_ts_14")
|
@Column(name = "totS14")
|
||||||
private Double totS14;
|
private Double totS14;
|
||||||
@Column(name = "tot_ts_15")
|
@Column(name = "totS15")
|
||||||
private Double totS15;
|
private Double totS15;
|
||||||
@Column(name = "tot_ts_16")
|
@Column(name = "totS16")
|
||||||
private Double totS16;
|
private Double totS16;
|
||||||
@Column(name = "tot_ts_17")
|
@Column(name = "totS17")
|
||||||
private Double totS17;
|
private Double totS17;
|
||||||
@Column(name = "tot_ts_18")
|
@Column(name = "totS18")
|
||||||
private Double totS18;
|
private Double totS18;
|
||||||
@Column(name = "tot_ts_19")
|
@Column(name = "totS19")
|
||||||
private Double totS19;
|
private Double totS19;
|
||||||
@Column(name = "tot_ts_20")
|
@Column(name = "totS20")
|
||||||
private Double totS20;
|
private Double totS20;
|
||||||
@Column(name = "tot_ts_21")
|
@Column(name = "totS21")
|
||||||
private Double totS21;
|
private Double totS21;
|
||||||
@Column(name = "tot_ts_22")
|
@Column(name = "totS22")
|
||||||
private Double totS22;
|
private Double totS22;
|
||||||
@Column(name = "tot_ts_23")
|
@Column(name = "totS23")
|
||||||
private Double totS23;
|
private Double totS23;
|
||||||
@Column(name = "tot_ts_24")
|
@Column(name = "totS24")
|
||||||
private Double totS24;
|
private Double totS24;
|
||||||
@Column(name = "tot_ts_25")
|
@Column(name = "totS25")
|
||||||
private Double totS25;
|
private Double totS25;
|
||||||
@Column(name = "tot_ts_26")
|
@Column(name = "totS26")
|
||||||
private Double totS26;
|
private Double totS26;
|
||||||
@Column(name = "tot_ts_27")
|
@Column(name = "totS27")
|
||||||
private Double totS27;
|
private Double totS27;
|
||||||
@Column(name = "tot_ts_28")
|
@Column(name = "totS28")
|
||||||
private Double totS28;
|
private Double totS28;
|
||||||
@Column(name = "tot_ts_29")
|
@Column(name = "totS29")
|
||||||
private Double totS29;
|
private Double totS29;
|
||||||
@Column(name = "tot_ts_30")
|
@Column(name = "totS30")
|
||||||
private Double totS30;
|
private Double totS30;
|
||||||
@Column(name = "tot_ts_31")
|
@Column(name = "totS31")
|
||||||
private Double totS31;
|
private Double totS31;
|
||||||
@Column(name = "tot_ts_32")
|
@Column(name = "totS32")
|
||||||
private Double totS32;
|
private Double totS32;
|
||||||
@Column(name = "tot_ts_33")
|
@Column(name = "totS33")
|
||||||
private Double totS33;
|
private Double totS33;
|
||||||
@Column(name = "tot_ts_34")
|
@Column(name = "totS34")
|
||||||
private Double totS34;
|
private Double totS34;
|
||||||
@Column(name = "tot_ts_35")
|
@Column(name = "totS35")
|
||||||
private Double totS35;
|
private Double totS35;
|
||||||
@Column(name = "tot_ts_36")
|
@Column(name = "totS36")
|
||||||
private Double totS36;
|
private Double totS36;
|
||||||
@Column(name = "tot_ts_37")
|
@Column(name = "totS37")
|
||||||
private Double totS37;
|
private Double totS37;
|
||||||
@Column(name = "tot_ts_38")
|
@Column(name = "totS38")
|
||||||
private Double totS38;
|
private Double totS38;
|
||||||
@Column(name = "tot_ts_39")
|
@Column(name = "totS39")
|
||||||
private Double totS39;
|
private Double totS39;
|
||||||
@Column(name = "tot_ts_40")
|
@Column(name = "totS40")
|
||||||
private Double totS40;
|
private Double totS40;
|
||||||
@Column(name = "tot_ts_41")
|
@Column(name = "totS41")
|
||||||
private Double totS41;
|
private Double totS41;
|
||||||
@Column(name = "tot_ts_42")
|
@Column(name = "totS42")
|
||||||
private Double totS42;
|
private Double totS42;
|
||||||
@Column(name = "tot_ts_43")
|
@Column(name = "totS43")
|
||||||
private Double totS43;
|
private Double totS43;
|
||||||
@Column(name = "tot_ts_44")
|
@Column(name = "totS44")
|
||||||
private Double totS44;
|
private Double totS44;
|
||||||
@Column(name = "tot_ts_45")
|
@Column(name = "totS45")
|
||||||
private Double totS45;
|
private Double totS45;
|
||||||
@Column(name = "tot_ts_46")
|
@Column(name = "totS46")
|
||||||
private Double totS46;
|
private Double totS46;
|
||||||
@Column(name = "tot_ts_47")
|
@Column(name = "totS47")
|
||||||
private Double totS47;
|
private Double totS47;
|
||||||
@Column(name = "tot_ts_49")
|
@Column(name = "totS49")
|
||||||
private Double totS48;
|
private Double totS48;
|
||||||
@Column(name = "tot_ts_49")
|
@Column(name = "totS49")
|
||||||
private Double totS49;
|
private Double totS49;
|
||||||
@Column(name = "tot_ts_50")
|
@Column(name = "totS50")
|
||||||
private Double totS50;
|
private Double totS50;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.njcn.algorithm.pojo.dto;
|
package com.njcn.dataProcess.pojo.dto;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@@ -17,12 +17,10 @@ public class PqsCommunicateDto {
|
|||||||
|
|
||||||
private String description;
|
private String description;
|
||||||
|
|
||||||
|
//1是在线 0是离线
|
||||||
private Integer type;
|
private Integer type;
|
||||||
//是否更新updateTime标志;数据上送更新1,状态翻转不更新0
|
//是否更新updateTime标志;数据上送更新1,状态翻转不更新0
|
||||||
private Integer flag=0;
|
private Integer flag=0;
|
||||||
//是否更新、pqs_communicate标志,0更新,1不更新
|
|
||||||
|
|
||||||
private Integer updateCommunicateFlag=0;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.njcn.algorithm.pojo.po;
|
package com.njcn.dataProcess.pojo.po;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import com.njcn.db.bo.BaseEntity;
|
import com.njcn.db.bo.BaseEntity;
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
package com.njcn.dataProcess.controller;
|
||||||
|
|
||||||
|
|
||||||
|
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.dataProcess.param.DataCleanParam;
|
||||||
|
import com.njcn.dataProcess.pojo.dto.PqReasonableRangeDto;
|
||||||
|
import com.njcn.dataProcess.service.IPqReasonableRangeService;
|
||||||
|
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.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@@ -1,7 +1,10 @@
|
|||||||
package com.njcn.algorithm.mapper;
|
package com.njcn.dataProcess.dao.relation.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.njcn.algorithm.pojo.po.PqReasonableRange;
|
import com.njcn.dataProcess.pojo.dto.PqReasonableRangeDto;
|
||||||
|
import com.njcn.dataProcess.pojo.po.PqReasonableRange;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
package com.njcn.algorithm.service.line;
|
package com.njcn.dataProcess.service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.njcn.algorithm.pojo.dto.PqReasonableRangeDto;
|
import com.njcn.dataProcess.param.DataCleanParam;
|
||||||
import com.njcn.algorithm.pojo.param.DataCleanParam;
|
import com.njcn.dataProcess.pojo.dto.PqReasonableRangeDto;
|
||||||
import com.njcn.algorithm.pojo.po.PqReasonableRange;
|
import com.njcn.dataProcess.pojo.po.PqReasonableRange;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -24,10 +24,4 @@ public interface IPqReasonableRangeService extends IService<PqReasonableRange> {
|
|||||||
*/
|
*/
|
||||||
List<PqReasonableRangeDto> getReasonableRangeList(DataCleanParam param);
|
List<PqReasonableRangeDto> getReasonableRangeList(DataCleanParam param);
|
||||||
|
|
||||||
boolean savePqReasonableRange(PqReasonableRangeDto dto);
|
|
||||||
|
|
||||||
boolean updatePqReasonableRange(PqReasonableRangeDto dto);
|
|
||||||
|
|
||||||
boolean deletePqReasonableRange(String id);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -12,16 +12,14 @@ import com.njcn.device.pq.api.DeviceFeignClient;
|
|||||||
import com.njcn.device.pq.api.LineFeignClient;
|
import com.njcn.device.pq.api.LineFeignClient;
|
||||||
import com.njcn.device.pq.pojo.dto.DevComFlagDTO;
|
import com.njcn.device.pq.pojo.dto.DevComFlagDTO;
|
||||||
import com.njcn.device.pq.pojo.vo.LineDeviceStateVO;
|
import com.njcn.device.pq.pojo.vo.LineDeviceStateVO;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.*;
|
import java.util.Comparator;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.List;
|
||||||
import java.util.concurrent.Executor;
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -32,7 +30,6 @@ import java.util.stream.Collectors;
|
|||||||
* @version V1.0.0
|
* @version V1.0.0
|
||||||
*/
|
*/
|
||||||
@Service("RelationLnDataDealServiceImpl")
|
@Service("RelationLnDataDealServiceImpl")
|
||||||
@Slf4j
|
|
||||||
public class LnDataDealServiceImpl implements LnDataDealService {
|
public class LnDataDealServiceImpl implements LnDataDealService {
|
||||||
@QueryBean
|
@QueryBean
|
||||||
private IDataFlicker dataFlickerQuery;
|
private IDataFlicker dataFlickerQuery;
|
||||||
@@ -69,61 +66,33 @@ public class LnDataDealServiceImpl implements LnDataDealService {
|
|||||||
private LineFeignClient lineFeignClient;
|
private LineFeignClient lineFeignClient;
|
||||||
@QueryBean
|
@QueryBean
|
||||||
private IPqsCommunicate iPqsCommunicate;
|
private IPqsCommunicate iPqsCommunicate;
|
||||||
@Resource(name="asyncExecutor")
|
|
||||||
private Executor executor;
|
|
||||||
@Override
|
@Override
|
||||||
public void batchInsertion(LnDataDTO lnDataDTO) {
|
public void batchInsertion(LnDataDTO lnDataDTO) {
|
||||||
|
dataVService.batchInsertion(lnDataDTO.getDataVList());
|
||||||
|
dataHarmrateVQuery.batchInsertion(lnDataDTO.getDataHarmrateVDTOList());
|
||||||
List<CompletableFuture<Void>> futures = new ArrayList<>();
|
dataFlickerQuery.batchInsertion(lnDataDTO.getDataFlickerDTOList());
|
||||||
// 提交每个批量插入任务
|
dataFlucQuery.batchInsertion(lnDataDTO.getDataFlucDTOList());
|
||||||
futures.add(CompletableFuture.runAsync(() -> dataVService.batchInsertion(lnDataDTO.getDataVList()), executor));
|
dataHarmphasicIQuery.batchInsertion(lnDataDTO.getDataHarmphasicIDTOList());
|
||||||
futures.add(CompletableFuture.runAsync(() -> dataHarmrateVQuery.batchInsertion(lnDataDTO.getDataHarmrateVDTOList()), executor));
|
dataHarmphasicVQuery.batchInsertion(lnDataDTO.getDataHarmphasicVDTOList());
|
||||||
futures.add(CompletableFuture.runAsync(() -> dataFlickerQuery.batchInsertion(lnDataDTO.getDataFlickerDTOList()), executor));
|
dataHarmpowerPService.batchInsertion(lnDataDTO.getDataHarmpowerPDTOList());
|
||||||
futures.add(CompletableFuture.runAsync(() -> dataFlucQuery.batchInsertion(lnDataDTO.getDataFlucDTOList()), executor));
|
dataHarmpowerQService.batchInsertion(lnDataDTO.getDataHarmpowerQDTOList());
|
||||||
futures.add(CompletableFuture.runAsync(() -> dataHarmphasicIQuery.batchInsertion(lnDataDTO.getDataHarmphasicIDTOList()), executor));
|
dataHarmpowerSService.batchInsertion(lnDataDTO.getDataHarmpowerSDTOList());
|
||||||
futures.add(CompletableFuture.runAsync(() -> dataHarmphasicVQuery.batchInsertion(lnDataDTO.getDataHarmphasicVDTOList()), executor));
|
dataIService.batchInsertion(lnDataDTO.getDataIDTOList());
|
||||||
futures.add(CompletableFuture.runAsync(() -> dataHarmpowerPService.batchInsertion(lnDataDTO.getDataHarmpowerPDTOList()), executor));
|
dataInharmIService.batchInsertion(lnDataDTO.getDataInharmIDTOList());
|
||||||
futures.add(CompletableFuture.runAsync(() -> dataHarmpowerQService.batchInsertion(lnDataDTO.getDataHarmpowerQDTOList()), executor));
|
dataInharmVService.batchInsertion(lnDataDTO.getDataInharmVDTOList());
|
||||||
futures.add(CompletableFuture.runAsync(() -> dataHarmpowerSService.batchInsertion(lnDataDTO.getDataHarmpowerSDTOList()), executor));
|
dataPltService.batchInsertion(lnDataDTO.getDataPltDTOList());
|
||||||
futures.add(CompletableFuture.runAsync(() -> dataIService.batchInsertion(lnDataDTO.getDataIDTOList()), executor));
|
|
||||||
futures.add(CompletableFuture.runAsync(() -> dataInharmIService.batchInsertion(lnDataDTO.getDataInharmIDTOList()), executor));
|
|
||||||
futures.add(CompletableFuture.runAsync(() -> dataInharmVService.batchInsertion(lnDataDTO.getDataInharmVDTOList()), executor));
|
|
||||||
futures.add(CompletableFuture.runAsync(() -> dataPltService.batchInsertion(lnDataDTO.getDataPltDTOList()), executor));
|
|
||||||
|
|
||||||
// 等待所有任务完成,如果任一任务抛出异常,这里会重新抛出
|
|
||||||
CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// dataVService.batchInsertion(lnDataDTO.getDataVList());
|
|
||||||
// dataHarmrateVQuery.batchInsertion(lnDataDTO.getDataHarmrateVDTOList());
|
|
||||||
// dataFlickerQuery.batchInsertion(lnDataDTO.getDataFlickerDTOList());
|
|
||||||
// dataFlucQuery.batchInsertion(lnDataDTO.getDataFlucDTOList());
|
|
||||||
// dataHarmphasicIQuery.batchInsertion(lnDataDTO.getDataHarmphasicIDTOList());
|
|
||||||
// dataHarmphasicVQuery.batchInsertion(lnDataDTO.getDataHarmphasicVDTOList());
|
|
||||||
// dataHarmpowerPService.batchInsertion(lnDataDTO.getDataHarmpowerPDTOList());
|
|
||||||
// dataHarmpowerQService.batchInsertion(lnDataDTO.getDataHarmpowerQDTOList());
|
|
||||||
// dataHarmpowerSService.batchInsertion(lnDataDTO.getDataHarmpowerSDTOList());
|
|
||||||
// dataIService.batchInsertion(lnDataDTO.getDataIDTOList());
|
|
||||||
// dataInharmIService.batchInsertion(lnDataDTO.getDataInharmIDTOList());
|
|
||||||
// dataInharmVService.batchInsertion(lnDataDTO.getDataInharmVDTOList());
|
|
||||||
// dataPltService.batchInsertion(lnDataDTO.getDataPltDTOList());
|
|
||||||
//更新mysqldevice表最新数据时间
|
//更新mysqldevice表最新数据时间
|
||||||
|
|
||||||
if(!CollectionUtils.isEmpty(lnDataDTO.getDataVList())){
|
if(!CollectionUtils.isEmpty(lnDataDTO.getDataVList())){
|
||||||
|
|
||||||
List<String> lineIdList = lnDataDTO.getDataVList().stream().map(DataVDTO::getLineid).distinct().collect(Collectors.toList());
|
List<String> lineIdList = lnDataDTO.getDataVList().stream().map(DataVDTO::getLineid).distinct().collect(Collectors.toList());
|
||||||
List<LineDeviceStateVO> data = lineFeignClient.getAllLine(lineIdList).getData();
|
List<LineDeviceStateVO> data = lineFeignClient.getAllLine(lineIdList).getData();
|
||||||
|
|
||||||
|
|
||||||
Map<String, String> map = data.stream().collect(Collectors.toMap(LineDeviceStateVO::getId, temp -> temp.getPids().split(",")[4]));
|
Map<String, String> map = data.stream().collect(Collectors.toMap(LineDeviceStateVO::getId, temp -> temp.getPids().split(",")[4]));
|
||||||
lnDataDTO.getDataVList().forEach(temp->{
|
lnDataDTO.getDataVList().forEach(temp->{
|
||||||
temp.setDevId(map.get(temp.getLineid()));
|
temp.setDevId(map.get(temp.getLineid()));
|
||||||
});
|
});
|
||||||
Map<String, List<DataVDTO>> collect = lnDataDTO.getDataVList().stream().collect(Collectors.groupingBy(DataVDTO::getDevId));
|
Map<String, List<DataVDTO>> collect = lnDataDTO.getDataVList().stream().collect(Collectors.groupingBy(DataVDTO::getDevId));
|
||||||
List<CompletableFuture<Void>> updatefutures = new ArrayList<>();
|
|
||||||
|
|
||||||
collect.forEach((temp,dataVDTOList)->{
|
collect.forEach((temp,dataVDTOList)->{
|
||||||
PqsCommunicateDto pqsCommunicateDto = new PqsCommunicateDto();
|
PqsCommunicateDto pqsCommunicateDto = new PqsCommunicateDto();
|
||||||
DataVDTO dataVDTO =dataVDTOList.stream().max(Comparator.comparing(DataVDTO::getTimeid)).get();
|
DataVDTO dataVDTO =dataVDTOList.stream().max(Comparator.comparing(DataVDTO::getTimeid)).get();
|
||||||
@@ -132,12 +101,10 @@ public class LnDataDealServiceImpl implements LnDataDealService {
|
|||||||
pqsCommunicateDto.setDevId(temp);
|
pqsCommunicateDto.setDevId(temp);
|
||||||
pqsCommunicateDto.setType(1);
|
pqsCommunicateDto.setType(1);
|
||||||
pqsCommunicateDto.setFlag(1);
|
pqsCommunicateDto.setFlag(1);
|
||||||
pqsCommunicateDto.setUpdateCommunicateFlag(1);
|
|
||||||
updatefutures.add(CompletableFuture.runAsync(() -> iPqsCommunicate.insertion(pqsCommunicateDto), executor));
|
|
||||||
|
|
||||||
|
|
||||||
|
iPqsCommunicate.insertion(pqsCommunicateDto);
|
||||||
});
|
});
|
||||||
CompletableFuture.allOf(updatefutures.toArray(new CompletableFuture[0])).join();
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,9 +3,11 @@ package com.njcn.dataProcess.service.impl.influxdb;
|
|||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.alibaba.nacos.shaded.com.google.common.reflect.TypeToken;
|
|
||||||
import com.alibaba.nacos.shaded.com.google.gson.Gson;
|
|
||||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||||
|
import com.njcn.csdevice.api.CsLineFeignClient;
|
||||||
|
import com.njcn.csdevice.api.EquipmentFeignClient;
|
||||||
|
import com.njcn.csdevice.pojo.dto.CsEquipmentDeliveryDTO;
|
||||||
|
import com.njcn.csdevice.pojo.po.CsLinePO;
|
||||||
import com.njcn.dataProcess.dao.imapper.DataFlickerMapper;
|
import com.njcn.dataProcess.dao.imapper.DataFlickerMapper;
|
||||||
import com.njcn.dataProcess.dao.relation.mapper.RStatDataFlickerRelationMapper;
|
import com.njcn.dataProcess.dao.relation.mapper.RStatDataFlickerRelationMapper;
|
||||||
import com.njcn.dataProcess.dto.DataFlickerDTO;
|
import com.njcn.dataProcess.dto.DataFlickerDTO;
|
||||||
@@ -17,18 +19,17 @@ import com.njcn.dataProcess.pojo.po.RStatDataFlickerD;
|
|||||||
import com.njcn.dataProcess.service.IDataFlicker;
|
import com.njcn.dataProcess.service.IDataFlicker;
|
||||||
import com.njcn.dataProcess.util.TimeUtils;
|
import com.njcn.dataProcess.util.TimeUtils;
|
||||||
import com.njcn.influx.query.InfluxQueryWrapper;
|
import com.njcn.influx.query.InfluxQueryWrapper;
|
||||||
import com.njcn.redis.utils.RedisUtil;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.apache.commons.collections4.ListUtils;
|
import org.apache.commons.collections4.ListUtils;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.lang.reflect.Type;
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -43,19 +44,19 @@ import java.util.stream.Collectors;
|
|||||||
public class InfluxdbDataFlickerImpl extends MppServiceImpl<RStatDataFlickerRelationMapper, RStatDataFlickerD> implements IDataFlicker {
|
public class InfluxdbDataFlickerImpl extends MppServiceImpl<RStatDataFlickerRelationMapper, RStatDataFlickerD> implements IDataFlicker {
|
||||||
|
|
||||||
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
|
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
|
||||||
|
|
||||||
private final DataFlickerMapper dataFlickerMapper;
|
private final DataFlickerMapper dataFlickerMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private CsLineFeignClient csLineFeignClient;
|
||||||
|
@Resource
|
||||||
|
private EquipmentFeignClient equipmentFeignClient;
|
||||||
private static final Map<String, String> PHASE_MAPPING = new HashMap<String, String>() {{
|
private static final Map<String, String> PHASE_MAPPING = new HashMap<String, String>() {{
|
||||||
put("AB", "A");
|
put("AB", "A");
|
||||||
put("BC", "B");
|
put("BC", "B");
|
||||||
put("CA", "C");
|
put("CA", "C");
|
||||||
put("M", "T");
|
put("M", "T");
|
||||||
}};
|
}};
|
||||||
@Resource
|
|
||||||
private RedisUtil redisUtil;
|
|
||||||
private static final Set<String> LINE_VOLTAGE_TYPES =
|
|
||||||
Collections.unmodifiableSet(new HashSet<>(Arrays.asList("AB", "BC", "CA", "T")));
|
|
||||||
private static final Set<String> PHASE_VOLTAGE_TYPES =
|
|
||||||
Collections.unmodifiableSet(new HashSet<>(Arrays.asList("A", "B", "C", "T")));
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -79,7 +80,12 @@ public class InfluxdbDataFlickerImpl extends MppServiceImpl<RStatDataFlickerRela
|
|||||||
@Override
|
@Override
|
||||||
public List<DataFlickerDto> getRawData(LineCountEvaluateParam lineParam) {
|
public List<DataFlickerDto> getRawData(LineCountEvaluateParam lineParam) {
|
||||||
List<DataFlickerDto> result = new ArrayList<>();
|
List<DataFlickerDto> result = new ArrayList<>();
|
||||||
List<DataFlicker> list = getMinuteData(lineParam);
|
List<DataFlicker> list;
|
||||||
|
if (Objects.equals(lineParam.getType(), 2)) {
|
||||||
|
list = getWlMinuteData(lineParam);
|
||||||
|
} else {
|
||||||
|
list = getMinuteData(lineParam);
|
||||||
|
}
|
||||||
list.forEach(item -> {
|
list.forEach(item -> {
|
||||||
DataFlickerDto dto = new DataFlickerDto();
|
DataFlickerDto dto = new DataFlickerDto();
|
||||||
BeanUtils.copyProperties(item, dto);
|
BeanUtils.copyProperties(item, dto);
|
||||||
@@ -92,7 +98,12 @@ public class InfluxdbDataFlickerImpl extends MppServiceImpl<RStatDataFlickerRela
|
|||||||
@Override
|
@Override
|
||||||
public List<CommonMinuteDto> getBaseData(LineCountEvaluateParam lineParam) {
|
public List<CommonMinuteDto> getBaseData(LineCountEvaluateParam lineParam) {
|
||||||
List<CommonMinuteDto> result = new ArrayList<>();
|
List<CommonMinuteDto> result = new ArrayList<>();
|
||||||
List<DataFlicker> dataIList = getMinuteData(lineParam);
|
List<DataFlicker> dataIList;
|
||||||
|
if (Objects.equals(lineParam.getType(), 2)) {
|
||||||
|
dataIList = getWlMinuteData(lineParam);
|
||||||
|
} else {
|
||||||
|
dataIList = getMinuteData(lineParam);
|
||||||
|
}
|
||||||
if (CollectionUtil.isNotEmpty(dataIList)) {
|
if (CollectionUtil.isNotEmpty(dataIList)) {
|
||||||
String time = TimeUtils.StringTimeToString(lineParam.getStartTime());
|
String time = TimeUtils.StringTimeToString(lineParam.getStartTime());
|
||||||
//以监测点分组
|
//以监测点分组
|
||||||
@@ -238,13 +249,6 @@ public class InfluxdbDataFlickerImpl extends MppServiceImpl<RStatDataFlickerRela
|
|||||||
*/
|
*/
|
||||||
public List<DataFlicker> getMinuteData(LineCountEvaluateParam lineParam) {
|
public List<DataFlicker> getMinuteData(LineCountEvaluateParam lineParam) {
|
||||||
List<DataFlicker> result = new ArrayList<>();
|
List<DataFlicker> result = new ArrayList<>();
|
||||||
List<DataFlicker> data = new ArrayList<>();
|
|
||||||
//获取监测点、接线方式数据
|
|
||||||
Type type = new TypeToken<Map<String, Integer>>(){}.getType();
|
|
||||||
Map<String, Integer> map = new Gson().fromJson(
|
|
||||||
String.valueOf(redisUtil.getObjectByKey("wlLineDetail")),
|
|
||||||
type
|
|
||||||
);
|
|
||||||
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataFlicker.class);
|
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataFlicker.class);
|
||||||
influxQueryWrapper.regular(DataFlicker::getLineId, lineParam.getLineId())
|
influxQueryWrapper.regular(DataFlicker::getLineId, lineParam.getLineId())
|
||||||
.select(DataFlicker::getLineId)
|
.select(DataFlicker::getLineId)
|
||||||
@@ -257,24 +261,58 @@ public class InfluxdbDataFlickerImpl extends MppServiceImpl<RStatDataFlickerRela
|
|||||||
.between(DataFlicker::getTime, lineParam.getStartTime(), lineParam.getEndTime())
|
.between(DataFlicker::getTime, lineParam.getStartTime(), lineParam.getEndTime())
|
||||||
.eq(DataFlicker::getQualityFlag, "0");
|
.eq(DataFlicker::getQualityFlag, "0");
|
||||||
quality(result, influxQueryWrapper, lineParam);
|
quality(result, influxQueryWrapper, lineParam);
|
||||||
if (CollectionUtil.isNotEmpty(result)) {
|
return result;
|
||||||
if (!Objects.isNull(map)) {
|
}
|
||||||
//现根据监测点分组,然后根据接线方式排除多于数据,在修改相别
|
|
||||||
Map<String, List<DataFlicker>> lineMap = result.stream().collect(Collectors.groupingBy(DataFlicker::getLineId));
|
public List<DataFlicker> getWlMinuteData(LineCountEvaluateParam lineParam) {
|
||||||
lineMap.forEach((k,v)->{
|
List<DataFlicker> result = new ArrayList<>();
|
||||||
if (Objects.isNull(map.get(k))) {
|
if (CollectionUtil.isNotEmpty(lineParam.getLineId())) {
|
||||||
return;
|
//获取监测点信息
|
||||||
}
|
List<CsLinePO> line = csLineFeignClient.queryLineById(lineParam.getLineId()).getData();
|
||||||
Integer conType = map.get(k);
|
Map<String, CsLinePO> lineMap = line.stream().collect(Collectors.toMap(CsLinePO::getLineId, Function.identity()));
|
||||||
Set<String> validPhasicTypes = (conType != 0) ? LINE_VOLTAGE_TYPES : PHASE_VOLTAGE_TYPES;
|
//获取设备信息
|
||||||
List<DataFlicker> result2 = v.stream().filter(item -> validPhasicTypes.contains(item.getPhasicType())).collect(Collectors.toList());
|
List<String> devList = line.stream().map(CsLinePO::getDeviceId).distinct().collect(Collectors.toList());
|
||||||
data.addAll(result2);
|
List<CsEquipmentDeliveryDTO> dev = equipmentFeignClient.queryDeviceById(devList).getData();
|
||||||
});
|
Map<String, CsEquipmentDeliveryDTO> devsMap = dev.stream().collect(Collectors.toMap(CsEquipmentDeliveryDTO::getId, Function.identity()));
|
||||||
} else {
|
|
||||||
data.addAll(result);
|
lineParam.getLineId().forEach(lineId -> {
|
||||||
}
|
String devId = lineMap.get(lineId).getDeviceId();
|
||||||
if (CollectionUtil.isNotEmpty(data)) {
|
CsLinePO po = lineMap.get(lineId);
|
||||||
data.forEach(item -> {
|
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataFlicker.class);
|
||||||
|
influxQueryWrapper.eq(DataFlicker::getLineId, lineId)
|
||||||
|
.eq(DataFlicker::getProcess,Integer.toString(devsMap.get(devId).getProcess()))
|
||||||
|
.select(DataFlicker::getLineId)
|
||||||
|
.select(DataFlicker::getPhasicType)
|
||||||
|
.between(DataFlicker::getTime, lineParam.getStartTime(), lineParam.getEndTime())
|
||||||
|
.eq(DataFlicker::getQualityFlag, "0");
|
||||||
|
if (CollUtil.isNotEmpty(lineParam.getPhasicType())) {
|
||||||
|
influxQueryWrapper.regular(DataFlicker::getPhasicType, lineParam.getPhasicType());
|
||||||
|
}
|
||||||
|
if (Objects.isNull(po.getLineNo())) {
|
||||||
|
influxQueryWrapper.eq(DataFlicker::getCldid,Integer.toString(po.getClDid()));
|
||||||
|
} else {
|
||||||
|
influxQueryWrapper.eq(DataFlicker::getCldid,Integer.toString(po.getLineNo()));
|
||||||
|
}
|
||||||
|
//判断接线方式 (0-星型 1-角型 2-V型) 星型是相电压 角型或者v型是线电压
|
||||||
|
if (Objects.equals(po.getConType(),0)) {
|
||||||
|
//相电压电压变动幅度
|
||||||
|
influxQueryWrapper.select("Pq_Fluct","fluc");
|
||||||
|
//相电压长时闪变
|
||||||
|
influxQueryWrapper.select("Pq_Plt","plt");
|
||||||
|
//相电压短时闪变
|
||||||
|
influxQueryWrapper.select("Pq_Pst","pst");
|
||||||
|
} else {
|
||||||
|
//线电压电压变动幅度
|
||||||
|
influxQueryWrapper.select("Pq_LFluct","fluc");
|
||||||
|
//相电压长时闪变
|
||||||
|
influxQueryWrapper.select("Pq_LPlt","plt");
|
||||||
|
//相电压短时闪变
|
||||||
|
influxQueryWrapper.select("Pq_LPst","pst");
|
||||||
|
}
|
||||||
|
result.addAll(dataFlickerMapper.selectByQueryWrapper(influxQueryWrapper));
|
||||||
|
});
|
||||||
|
if (CollectionUtil.isNotEmpty(result)) {
|
||||||
|
result.forEach(item -> {
|
||||||
String newType = PHASE_MAPPING.get(item.getPhasicType());
|
String newType = PHASE_MAPPING.get(item.getPhasicType());
|
||||||
if (newType != null) {
|
if (newType != null) {
|
||||||
item.setPhasicType(newType);
|
item.setPhasicType(newType);
|
||||||
@@ -282,6 +320,6 @@ public class InfluxdbDataFlickerImpl extends MppServiceImpl<RStatDataFlickerRela
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return data;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
package com.njcn.dataProcess.service.impl.influxdb;
|
package com.njcn.dataProcess.service.impl.influxdb;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import com.alibaba.nacos.shaded.com.google.common.reflect.TypeToken;
|
|
||||||
import com.alibaba.nacos.shaded.com.google.gson.Gson;
|
|
||||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||||
|
import com.njcn.csdevice.api.CsLineFeignClient;
|
||||||
|
import com.njcn.csdevice.api.EquipmentFeignClient;
|
||||||
|
import com.njcn.csdevice.pojo.dto.CsEquipmentDeliveryDTO;
|
||||||
|
import com.njcn.csdevice.pojo.po.CsLinePO;
|
||||||
import com.njcn.dataProcess.dao.imapper.DataFlucMapper;
|
import com.njcn.dataProcess.dao.imapper.DataFlucMapper;
|
||||||
import com.njcn.dataProcess.dao.relation.mapper.RStatDataFlucRelationMapper;
|
import com.njcn.dataProcess.dao.relation.mapper.RStatDataFlucRelationMapper;
|
||||||
import com.njcn.dataProcess.dto.DataFlucDTO;
|
import com.njcn.dataProcess.dto.DataFlucDTO;
|
||||||
@@ -15,18 +17,17 @@ import com.njcn.dataProcess.pojo.po.RStatDataFlucD;
|
|||||||
import com.njcn.dataProcess.service.IDataFluc;
|
import com.njcn.dataProcess.service.IDataFluc;
|
||||||
import com.njcn.dataProcess.util.TimeUtils;
|
import com.njcn.dataProcess.util.TimeUtils;
|
||||||
import com.njcn.influx.query.InfluxQueryWrapper;
|
import com.njcn.influx.query.InfluxQueryWrapper;
|
||||||
import com.njcn.redis.utils.RedisUtil;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.apache.commons.collections4.ListUtils;
|
import org.apache.commons.collections4.ListUtils;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.lang.reflect.Type;
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -41,19 +42,20 @@ import java.util.stream.Collectors;
|
|||||||
public class InfluxdbDataFlucImpl extends MppServiceImpl<RStatDataFlucRelationMapper, RStatDataFlucD> implements IDataFluc {
|
public class InfluxdbDataFlucImpl extends MppServiceImpl<RStatDataFlucRelationMapper, RStatDataFlucD> implements IDataFluc {
|
||||||
|
|
||||||
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
|
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
|
||||||
|
|
||||||
private final DataFlucMapper dataFlucMapper;
|
private final DataFlucMapper dataFlucMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private CsLineFeignClient csLineFeignClient;
|
||||||
|
@Resource
|
||||||
|
private EquipmentFeignClient equipmentFeignClient;
|
||||||
|
|
||||||
private static final Map<String, String> PHASE_MAPPING = new HashMap<String, String>() {{
|
private static final Map<String, String> PHASE_MAPPING = new HashMap<String, String>() {{
|
||||||
put("AB", "A");
|
put("AB", "A");
|
||||||
put("BC", "B");
|
put("BC", "B");
|
||||||
put("CA", "C");
|
put("CA", "C");
|
||||||
put("M", "T");
|
put("M", "T");
|
||||||
}};
|
}};
|
||||||
@Resource
|
|
||||||
private RedisUtil redisUtil;
|
|
||||||
private static final Set<String> LINE_VOLTAGE_TYPES =
|
|
||||||
Collections.unmodifiableSet(new HashSet<>(Arrays.asList("AB", "BC", "CA", "T")));
|
|
||||||
private static final Set<String> PHASE_VOLTAGE_TYPES =
|
|
||||||
Collections.unmodifiableSet(new HashSet<>(Arrays.asList("A", "B", "C", "T")));
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void batchInsertion(List<DataFlucDTO> dataFlucDTOList) {
|
public void batchInsertion(List<DataFlucDTO> dataFlucDTOList) {
|
||||||
@@ -76,7 +78,12 @@ public class InfluxdbDataFlucImpl extends MppServiceImpl<RStatDataFlucRelationMa
|
|||||||
@Override
|
@Override
|
||||||
public List<DataFlucDto> getRawData(LineCountEvaluateParam lineParam) {
|
public List<DataFlucDto> getRawData(LineCountEvaluateParam lineParam) {
|
||||||
List<DataFlucDto> result = new ArrayList<>();
|
List<DataFlucDto> result = new ArrayList<>();
|
||||||
List<DataFluc> list = getMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
List<DataFluc> list;
|
||||||
|
if (Objects.equals(lineParam.getType(), 2)) {
|
||||||
|
list = getWlMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
||||||
|
} else {
|
||||||
|
list = getMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
||||||
|
}
|
||||||
list.forEach(item->{
|
list.forEach(item->{
|
||||||
DataFlucDto dto = new DataFlucDto();
|
DataFlucDto dto = new DataFlucDto();
|
||||||
BeanUtils.copyProperties(item,dto);
|
BeanUtils.copyProperties(item,dto);
|
||||||
@@ -89,7 +96,12 @@ public class InfluxdbDataFlucImpl extends MppServiceImpl<RStatDataFlucRelationMa
|
|||||||
@Override
|
@Override
|
||||||
public List<CommonMinuteDto> getBaseData(LineCountEvaluateParam lineParam) {
|
public List<CommonMinuteDto> getBaseData(LineCountEvaluateParam lineParam) {
|
||||||
List<CommonMinuteDto> result = new ArrayList<>();
|
List<CommonMinuteDto> result = new ArrayList<>();
|
||||||
List<DataFluc> dataIList = getMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
List<DataFluc> dataIList;
|
||||||
|
if (Objects.equals(lineParam.getType(), 2)) {
|
||||||
|
dataIList = getWlMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
||||||
|
} else {
|
||||||
|
dataIList = getMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
||||||
|
}
|
||||||
if (CollectionUtil.isNotEmpty(dataIList)) {
|
if (CollectionUtil.isNotEmpty(dataIList)) {
|
||||||
String time = TimeUtils.StringTimeToString(lineParam.getStartTime());
|
String time = TimeUtils.StringTimeToString(lineParam.getStartTime());
|
||||||
//以监测点分组
|
//以监测点分组
|
||||||
@@ -156,13 +168,6 @@ public class InfluxdbDataFlucImpl extends MppServiceImpl<RStatDataFlucRelationMa
|
|||||||
public List<DataFluc> getMinuteData(List<String> lineList, String startTime, String endTime, Map<String,List<String>> timeMap, Boolean dataType) {
|
public List<DataFluc> getMinuteData(List<String> lineList, String startTime, String endTime, Map<String,List<String>> timeMap, Boolean dataType) {
|
||||||
List<DataFluc> dataList;
|
List<DataFluc> dataList;
|
||||||
List<DataFluc> result = new ArrayList<>();
|
List<DataFluc> result = new ArrayList<>();
|
||||||
List<DataFluc> data = new ArrayList<>();
|
|
||||||
//获取监测点、接线方式数据
|
|
||||||
Type type = new TypeToken<Map<String, Integer>>(){}.getType();
|
|
||||||
Map<String, Integer> map = new Gson().fromJson(
|
|
||||||
String.valueOf(redisUtil.getObjectByKey("wlLineDetail")),
|
|
||||||
type
|
|
||||||
);
|
|
||||||
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataFluc.class);
|
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataFluc.class);
|
||||||
influxQueryWrapper.regular(DataFluc::getLineId, lineList)
|
influxQueryWrapper.regular(DataFluc::getLineId, lineList)
|
||||||
.select(DataFluc::getLineId)
|
.select(DataFluc::getLineId)
|
||||||
@@ -210,24 +215,47 @@ public class InfluxdbDataFlucImpl extends MppServiceImpl<RStatDataFlucRelationMa
|
|||||||
result.addAll(dataList);
|
result.addAll(dataList);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (CollectionUtil.isNotEmpty(result)) {
|
return result;
|
||||||
if (!Objects.isNull(map)) {
|
}
|
||||||
//现根据监测点分组,然后根据接线方式排除多于数据,在修改相别
|
|
||||||
Map<String, List<DataFluc>> lineMap = result.stream().collect(Collectors.groupingBy(DataFluc::getLineId));
|
public List<DataFluc> getWlMinuteData(List<String> lineList, String startTime, String endTime, Map<String,List<String>> timeMap, Boolean dataType) {
|
||||||
lineMap.forEach((k,v)->{
|
//todo FLUCCF电压波动频度原先oracle表存储的是0,写死的,这边暂不取值
|
||||||
if (Objects.isNull(map.get(k))) {
|
List<DataFluc> result = new ArrayList<>();
|
||||||
return;
|
if (CollectionUtil.isNotEmpty(lineList)) {
|
||||||
}
|
//获取监测点信息
|
||||||
Integer conType = map.get(k);
|
List<CsLinePO> line = csLineFeignClient.queryLineById(lineList).getData();
|
||||||
Set<String> validPhasicTypes = (conType != 0) ? LINE_VOLTAGE_TYPES : PHASE_VOLTAGE_TYPES;
|
Map<String, CsLinePO> lineMap = line.stream().collect(Collectors.toMap(CsLinePO::getLineId, Function.identity()));
|
||||||
List<DataFluc> result2 = v.stream().filter(item -> validPhasicTypes.contains(item.getPhasicType())).collect(Collectors.toList());
|
//获取设备信息
|
||||||
data.addAll(result2);
|
List<String> devList = line.stream().map(CsLinePO::getDeviceId).distinct().collect(Collectors.toList());
|
||||||
});
|
List<CsEquipmentDeliveryDTO> dev = equipmentFeignClient.queryDeviceById(devList).getData();
|
||||||
} else {
|
Map<String, CsEquipmentDeliveryDTO> devsMap = dev.stream().collect(Collectors.toMap(CsEquipmentDeliveryDTO::getId, Function.identity()));
|
||||||
data.addAll(result);
|
lineList.forEach(lineId -> {
|
||||||
}
|
String devId = lineMap.get(lineId).getDeviceId();
|
||||||
if (CollectionUtil.isNotEmpty(data)) {
|
CsLinePO po = lineMap.get(lineId);
|
||||||
data.forEach(item -> {
|
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataFluc.class);
|
||||||
|
influxQueryWrapper.eq(DataFluc::getLineId, lineId)
|
||||||
|
.eq(DataFluc::getProcess,Integer.toString(devsMap.get(devId).getProcess()))
|
||||||
|
.select(DataFluc::getLineId)
|
||||||
|
.select(DataFluc::getPhasicType)
|
||||||
|
.between(DataFluc::getTime, startTime, endTime)
|
||||||
|
.eq(DataFluc::getQualityFlag, "0");
|
||||||
|
if (Objects.isNull(po.getLineNo())) {
|
||||||
|
influxQueryWrapper.eq(DataFluc::getCldid,Integer.toString(po.getClDid()));
|
||||||
|
} else {
|
||||||
|
influxQueryWrapper.eq(DataFluc::getCldid,Integer.toString(po.getLineNo()));
|
||||||
|
}
|
||||||
|
//判断接线方式 (0-星型 1-角型 2-V型) 星型是相电压 角型或者v型是线电压
|
||||||
|
if (Objects.equals(po.getConType(),0)) {
|
||||||
|
//相电压电压变动幅度
|
||||||
|
influxQueryWrapper.select("Pq_Fluct","fluc");
|
||||||
|
} else {
|
||||||
|
//线电压电压变动幅度
|
||||||
|
influxQueryWrapper.select("Pq_LFluct","fluc");
|
||||||
|
}
|
||||||
|
result.addAll(dataFlucMapper.selectByQueryWrapper(influxQueryWrapper));
|
||||||
|
});
|
||||||
|
if (CollectionUtil.isNotEmpty(result)) {
|
||||||
|
result.forEach(item -> {
|
||||||
String newType = PHASE_MAPPING.get(item.getPhasicType());
|
String newType = PHASE_MAPPING.get(item.getPhasicType());
|
||||||
if (newType != null) {
|
if (newType != null) {
|
||||||
item.setPhasicType(newType);
|
item.setPhasicType(newType);
|
||||||
@@ -235,7 +263,7 @@ public class InfluxdbDataFlucImpl extends MppServiceImpl<RStatDataFlucRelationMa
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return data;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,10 @@ import cn.hutool.core.collection.CollUtil;
|
|||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||||
import com.njcn.common.utils.HarmonicTimesUtil;
|
import com.njcn.common.utils.HarmonicTimesUtil;
|
||||||
|
import com.njcn.csdevice.api.CsLineFeignClient;
|
||||||
|
import com.njcn.csdevice.api.EquipmentFeignClient;
|
||||||
|
import com.njcn.csdevice.pojo.dto.CsEquipmentDeliveryDTO;
|
||||||
|
import com.njcn.csdevice.pojo.po.CsLinePO;
|
||||||
import com.njcn.dataProcess.dao.imapper.DataHarmRateIMapper;
|
import com.njcn.dataProcess.dao.imapper.DataHarmRateIMapper;
|
||||||
import com.njcn.dataProcess.dao.relation.mapper.RStatDataHarmRateIRelationMapper;
|
import com.njcn.dataProcess.dao.relation.mapper.RStatDataHarmRateIRelationMapper;
|
||||||
import com.njcn.dataProcess.param.LineCountEvaluateParam;
|
import com.njcn.dataProcess.param.LineCountEvaluateParam;
|
||||||
@@ -24,6 +28,7 @@ import java.time.LocalDateTime;
|
|||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -35,6 +40,10 @@ public class InfluxdbDataHarmRateIImpl extends MppServiceImpl<RStatDataHarmRateI
|
|||||||
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
|
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
|
||||||
@Resource
|
@Resource
|
||||||
private DataHarmRateIMapper dataHarmRateIMapper;
|
private DataHarmRateIMapper dataHarmRateIMapper;
|
||||||
|
@Resource
|
||||||
|
private CsLineFeignClient csLineFeignClient;
|
||||||
|
@Resource
|
||||||
|
private EquipmentFeignClient equipmentFeignClient;
|
||||||
|
|
||||||
private static final Map<String, String> PHASE_MAPPING = new HashMap<String, String>() {{
|
private static final Map<String, String> PHASE_MAPPING = new HashMap<String, String>() {{
|
||||||
put("AB", "A");
|
put("AB", "A");
|
||||||
@@ -46,7 +55,12 @@ public class InfluxdbDataHarmRateIImpl extends MppServiceImpl<RStatDataHarmRateI
|
|||||||
@Override
|
@Override
|
||||||
public List<DataHarmRateIDto> getRawData(LineCountEvaluateParam lineParam) {
|
public List<DataHarmRateIDto> getRawData(LineCountEvaluateParam lineParam) {
|
||||||
List<DataHarmRateIDto> result = new ArrayList<>();
|
List<DataHarmRateIDto> result = new ArrayList<>();
|
||||||
List<DataHarmrateI> list = getMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
List<DataHarmrateI> list;
|
||||||
|
if (Objects.equals(lineParam.getType(), 2)) {
|
||||||
|
list = getWlMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
||||||
|
} else {
|
||||||
|
list = getMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
||||||
|
}
|
||||||
list.forEach(item->{
|
list.forEach(item->{
|
||||||
DataHarmRateIDto dto = new DataHarmRateIDto();
|
DataHarmRateIDto dto = new DataHarmRateIDto();
|
||||||
BeanUtils.copyProperties(item,dto);
|
BeanUtils.copyProperties(item,dto);
|
||||||
@@ -59,7 +73,12 @@ public class InfluxdbDataHarmRateIImpl extends MppServiceImpl<RStatDataHarmRateI
|
|||||||
@Override
|
@Override
|
||||||
public List<CommonMinuteDto> getBaseData(LineCountEvaluateParam lineParam) {
|
public List<CommonMinuteDto> getBaseData(LineCountEvaluateParam lineParam) {
|
||||||
List<CommonMinuteDto> result = new ArrayList<>();
|
List<CommonMinuteDto> result = new ArrayList<>();
|
||||||
List<DataHarmrateI> data = getMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
List<DataHarmrateI> data;
|
||||||
|
if (Objects.equals(lineParam.getType(), 2)) {
|
||||||
|
data = getWlMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
||||||
|
} else {
|
||||||
|
data = getMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
||||||
|
}
|
||||||
if (CollectionUtil.isNotEmpty(data)) {
|
if (CollectionUtil.isNotEmpty(data)) {
|
||||||
String time = TimeUtils.StringTimeToString(lineParam.getStartTime());
|
String time = TimeUtils.StringTimeToString(lineParam.getStartTime());
|
||||||
//以监测点分组
|
//以监测点分组
|
||||||
@@ -227,13 +246,48 @@ public class InfluxdbDataHarmRateIImpl extends MppServiceImpl<RStatDataHarmRateI
|
|||||||
result.addAll(dataList);
|
result.addAll(dataList);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (CollectionUtil.isNotEmpty(result)) {
|
return result;
|
||||||
result.forEach(item -> {
|
}
|
||||||
String newType = PHASE_MAPPING.get(item.getPhasicType());
|
|
||||||
if (newType != null) {
|
public List<DataHarmrateI> getWlMinuteData(List<String> lineList, String startTime, String endTime, Map<String,List<String>> timeMap, Boolean dataType) {
|
||||||
item.setPhasicType(newType);
|
List<DataHarmrateI> result = new ArrayList<>();
|
||||||
|
if (CollectionUtil.isNotEmpty(lineList)) {
|
||||||
|
//获取监测点信息
|
||||||
|
List<CsLinePO> line = csLineFeignClient.queryLineById(lineList).getData();
|
||||||
|
Map<String, CsLinePO> lineMap = line.stream().collect(Collectors.toMap(CsLinePO::getLineId, Function.identity()));
|
||||||
|
//获取设备信息
|
||||||
|
List<String> devList = line.stream().map(CsLinePO::getDeviceId).distinct().collect(Collectors.toList());
|
||||||
|
List<CsEquipmentDeliveryDTO> dev = equipmentFeignClient.queryDeviceById(devList).getData();
|
||||||
|
Map<String, CsEquipmentDeliveryDTO> devsMap = dev.stream().collect(Collectors.toMap(CsEquipmentDeliveryDTO::getId, Function.identity()));
|
||||||
|
lineList.forEach(lineId -> {
|
||||||
|
String devId = lineMap.get(lineId).getDeviceId();
|
||||||
|
CsLinePO po = lineMap.get(lineId);
|
||||||
|
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataHarmrateI.class);
|
||||||
|
influxQueryWrapper.samePrefixAndSuffix("Pq_HarmRI_", "i_", HarmonicTimesUtil.harmonicTimesList(2, 50, 1));
|
||||||
|
influxQueryWrapper.eq(DataHarmrateI::getLineId, lineId)
|
||||||
|
.eq(DataHarmrateI::getProcess,Integer.toString(devsMap.get(devId).getProcess()))
|
||||||
|
.select(DataHarmrateI::getLineId)
|
||||||
|
.select(DataHarmrateI::getPhasicType)
|
||||||
|
.select(DataHarmrateI::getValueType)
|
||||||
|
//电流基波有效值
|
||||||
|
.select("Pq_RmsFundI_","i_1")
|
||||||
|
.between(DataHarmrateI::getTime, startTime, endTime)
|
||||||
|
.eq(DataHarmrateI::getQualityFlag, "0");
|
||||||
|
if (Objects.isNull(po.getLineNo())) {
|
||||||
|
influxQueryWrapper.eq(DataHarmrateI::getCldid,Integer.toString(po.getClDid()));
|
||||||
|
} else {
|
||||||
|
influxQueryWrapper.eq(DataHarmrateI::getCldid,Integer.toString(po.getLineNo()));
|
||||||
}
|
}
|
||||||
|
result.addAll(dataHarmRateIMapper.selectByQueryWrapper(influxQueryWrapper));
|
||||||
});
|
});
|
||||||
|
if (CollectionUtil.isNotEmpty(result)) {
|
||||||
|
result.forEach(item -> {
|
||||||
|
String newType = PHASE_MAPPING.get(item.getPhasicType());
|
||||||
|
if (newType != null) {
|
||||||
|
item.setPhasicType(newType);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,16 +2,17 @@ package com.njcn.dataProcess.service.impl.influxdb;
|
|||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import com.alibaba.nacos.shaded.com.google.common.reflect.TypeToken;
|
|
||||||
import com.alibaba.nacos.shaded.com.google.gson.Gson;
|
|
||||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||||
import com.njcn.common.utils.HarmonicTimesUtil;
|
import com.njcn.common.utils.HarmonicTimesUtil;
|
||||||
|
import com.njcn.csdevice.api.CsLineFeignClient;
|
||||||
|
import com.njcn.csdevice.api.EquipmentFeignClient;
|
||||||
|
import com.njcn.csdevice.pojo.dto.CsEquipmentDeliveryDTO;
|
||||||
|
import com.njcn.csdevice.pojo.po.CsLinePO;
|
||||||
import com.njcn.dataProcess.constant.InfluxDBTableConstant;
|
import com.njcn.dataProcess.constant.InfluxDBTableConstant;
|
||||||
import com.njcn.dataProcess.dao.imapper.DataHarmRateVMapper;
|
import com.njcn.dataProcess.dao.imapper.DataHarmRateVMapper;
|
||||||
import com.njcn.dataProcess.dao.relation.mapper.RStatDataHarmRateVRelationMapper;
|
import com.njcn.dataProcess.dao.relation.mapper.RStatDataHarmRateVRelationMapper;
|
||||||
import com.njcn.dataProcess.dto.DataHarmrateVDTO;
|
import com.njcn.dataProcess.dto.DataHarmrateVDTO;
|
||||||
import com.njcn.dataProcess.param.LineCountEvaluateParam;
|
import com.njcn.dataProcess.param.LineCountEvaluateParam;
|
||||||
import com.njcn.dataProcess.po.influx.DataFlicker;
|
|
||||||
import com.njcn.dataProcess.po.influx.DataHarmrateV;
|
import com.njcn.dataProcess.po.influx.DataHarmrateV;
|
||||||
import com.njcn.dataProcess.po.influx.DataV;
|
import com.njcn.dataProcess.po.influx.DataV;
|
||||||
import com.njcn.dataProcess.pojo.dto.CommonMinuteDto;
|
import com.njcn.dataProcess.pojo.dto.CommonMinuteDto;
|
||||||
@@ -22,18 +23,17 @@ import com.njcn.dataProcess.service.IDataHarmRateV;
|
|||||||
import com.njcn.dataProcess.util.TimeUtils;
|
import com.njcn.dataProcess.util.TimeUtils;
|
||||||
import com.njcn.influx.constant.InfluxDbSqlConstant;
|
import com.njcn.influx.constant.InfluxDbSqlConstant;
|
||||||
import com.njcn.influx.query.InfluxQueryWrapper;
|
import com.njcn.influx.query.InfluxQueryWrapper;
|
||||||
import com.njcn.redis.utils.RedisUtil;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.apache.commons.collections4.ListUtils;
|
import org.apache.commons.collections4.ListUtils;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.lang.reflect.Type;
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -42,25 +42,31 @@ import java.util.stream.Collectors;
|
|||||||
@Service("InfluxdbDataHarmRateVImpl")
|
@Service("InfluxdbDataHarmRateVImpl")
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class InfluxdbDataHarmRateVImpl extends MppServiceImpl<RStatDataHarmRateVRelationMapper, RStatDataHarmRateVD> implements IDataHarmRateV {
|
public class InfluxdbDataHarmRateVImpl extends MppServiceImpl<RStatDataHarmRateVRelationMapper, RStatDataHarmRateVD> implements IDataHarmRateV {
|
||||||
|
|
||||||
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
|
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
|
||||||
|
|
||||||
private final DataHarmRateVMapper dataHarmRateVMapper;
|
private final DataHarmRateVMapper dataHarmRateVMapper;
|
||||||
|
@Resource
|
||||||
|
private CsLineFeignClient csLineFeignClient;
|
||||||
|
@Resource
|
||||||
|
private EquipmentFeignClient equipmentFeignClient;
|
||||||
|
|
||||||
private static final Map<String, String> PHASE_MAPPING = new HashMap<String, String>() {{
|
private static final Map<String, String> PHASE_MAPPING = new HashMap<String, String>() {{
|
||||||
put("AB", "A");
|
put("AB", "A");
|
||||||
put("BC", "B");
|
put("BC", "B");
|
||||||
put("CA", "C");
|
put("CA", "C");
|
||||||
put("M", "T");
|
put("M", "T");
|
||||||
}};
|
}};
|
||||||
@Resource
|
|
||||||
private RedisUtil redisUtil;
|
|
||||||
private static final Set<String> LINE_VOLTAGE_TYPES =
|
|
||||||
Collections.unmodifiableSet(new HashSet<>(Arrays.asList("AB", "BC", "CA", "T")));
|
|
||||||
private static final Set<String> PHASE_VOLTAGE_TYPES =
|
|
||||||
Collections.unmodifiableSet(new HashSet<>(Arrays.asList("A", "B", "C", "T")));
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<DataHarmDto> getRawData(LineCountEvaluateParam lineParam) {
|
public List<DataHarmDto> getRawData(LineCountEvaluateParam lineParam) {
|
||||||
List<DataHarmDto> result = new ArrayList<>();
|
List<DataHarmDto> result = new ArrayList<>();
|
||||||
List<DataHarmrateV> list = getMinuteData(lineParam);
|
List<DataHarmrateV> list;
|
||||||
|
if (Objects.equals(lineParam.getType(), 2)) {
|
||||||
|
list = getWlMinuteData(lineParam);
|
||||||
|
} else {
|
||||||
|
list = getMinuteData(lineParam);;
|
||||||
|
}
|
||||||
list.forEach(item->{
|
list.forEach(item->{
|
||||||
DataHarmDto dto = new DataHarmDto();
|
DataHarmDto dto = new DataHarmDto();
|
||||||
BeanUtils.copyProperties(item,dto);
|
BeanUtils.copyProperties(item,dto);
|
||||||
@@ -91,7 +97,12 @@ public class InfluxdbDataHarmRateVImpl extends MppServiceImpl<RStatDataHarmRateV
|
|||||||
@Override
|
@Override
|
||||||
public List<CommonMinuteDto> getBaseData(LineCountEvaluateParam lineParam) {
|
public List<CommonMinuteDto> getBaseData(LineCountEvaluateParam lineParam) {
|
||||||
List<CommonMinuteDto> result = new ArrayList<>();
|
List<CommonMinuteDto> result = new ArrayList<>();
|
||||||
List<DataHarmrateV> data = getMinuteData(lineParam);
|
List<DataHarmrateV> data;
|
||||||
|
if (Objects.equals(lineParam.getType(), 2)) {
|
||||||
|
data = getWlMinuteData(lineParam);
|
||||||
|
} else {
|
||||||
|
data = getMinuteData(lineParam);;
|
||||||
|
}
|
||||||
if (CollectionUtil.isNotEmpty(data)) {
|
if (CollectionUtil.isNotEmpty(data)) {
|
||||||
String time = TimeUtils.StringTimeToString(lineParam.getStartTime());
|
String time = TimeUtils.StringTimeToString(lineParam.getStartTime());
|
||||||
//以监测点分组
|
//以监测点分组
|
||||||
@@ -253,13 +264,6 @@ public class InfluxdbDataHarmRateVImpl extends MppServiceImpl<RStatDataHarmRateV
|
|||||||
public List<DataHarmrateV> getMinuteData(LineCountEvaluateParam lineParam) {
|
public List<DataHarmrateV> getMinuteData(LineCountEvaluateParam lineParam) {
|
||||||
List<DataHarmrateV> dataList;
|
List<DataHarmrateV> dataList;
|
||||||
List<DataHarmrateV> result = new ArrayList<>();
|
List<DataHarmrateV> result = new ArrayList<>();
|
||||||
List<DataHarmrateV> data = new ArrayList<>();
|
|
||||||
//获取监测点、接线方式数据
|
|
||||||
Type type = new TypeToken<Map<String, Integer>>(){}.getType();
|
|
||||||
Map<String, Integer> map = new Gson().fromJson(
|
|
||||||
String.valueOf(redisUtil.getObjectByKey("wlLineDetail")),
|
|
||||||
type
|
|
||||||
);
|
|
||||||
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataHarmrateV.class);
|
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataHarmrateV.class);
|
||||||
influxQueryWrapper.samePrefixAndSuffix(InfluxDbSqlConstant.V, InfluxDbSqlConstant.V, HarmonicTimesUtil.harmonicTimesList(1, 50, 1));
|
influxQueryWrapper.samePrefixAndSuffix(InfluxDbSqlConstant.V, InfluxDbSqlConstant.V, HarmonicTimesUtil.harmonicTimesList(1, 50, 1));
|
||||||
influxQueryWrapper.regular(DataHarmrateV::getLineId, lineParam.getLineId())
|
influxQueryWrapper.regular(DataHarmrateV::getLineId, lineParam.getLineId())
|
||||||
@@ -310,24 +314,51 @@ public class InfluxdbDataHarmRateVImpl extends MppServiceImpl<RStatDataHarmRateV
|
|||||||
result.addAll(dataList);
|
result.addAll(dataList);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (CollectionUtil.isNotEmpty(result)) {
|
return result;
|
||||||
if (!Objects.isNull(map)) {
|
}
|
||||||
//现根据监测点分组,然后根据接线方式排除多于数据,在修改相别
|
|
||||||
Map<String, List<DataHarmrateV>> lineMap = result.stream().collect(Collectors.groupingBy(DataHarmrateV::getLineId));
|
public List<DataHarmrateV> getWlMinuteData(LineCountEvaluateParam lineParam) {
|
||||||
lineMap.forEach((k,v)->{
|
List<DataHarmrateV> result = new ArrayList<>();
|
||||||
if (Objects.isNull(map.get(k))) {
|
if (CollectionUtil.isNotEmpty(lineParam.getLineId())) {
|
||||||
return;
|
//获取监测点信息
|
||||||
}
|
List<CsLinePO> line = csLineFeignClient.queryLineById(lineParam.getLineId()).getData();
|
||||||
Integer conType = map.get(k);
|
Map<String, CsLinePO> lineMap = line.stream().collect(Collectors.toMap(CsLinePO::getLineId, Function.identity()));
|
||||||
Set<String> validPhasicTypes = (conType != 0) ? LINE_VOLTAGE_TYPES : PHASE_VOLTAGE_TYPES;
|
//获取设备信息
|
||||||
List<DataHarmrateV> result2 = v.stream().filter(item -> validPhasicTypes.contains(item.getPhasicType())).collect(Collectors.toList());
|
List<String> devList = line.stream().map(CsLinePO::getDeviceId).distinct().collect(Collectors.toList());
|
||||||
data.addAll(result2);
|
List<CsEquipmentDeliveryDTO> dev = equipmentFeignClient.queryDeviceById(devList).getData();
|
||||||
});
|
Map<String, CsEquipmentDeliveryDTO> devsMap = dev.stream().collect(Collectors.toMap(CsEquipmentDeliveryDTO::getId, Function.identity()));
|
||||||
} else {
|
lineParam.getLineId().forEach(lineId -> {
|
||||||
data.addAll(result);
|
String devId = lineMap.get(lineId).getDeviceId();
|
||||||
}
|
CsLinePO po = lineMap.get(lineId);
|
||||||
if (CollectionUtil.isNotEmpty(data)) {
|
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataHarmrateV.class);
|
||||||
data.forEach(item -> {
|
influxQueryWrapper.eq(DataHarmrateV::getLineId, lineId)
|
||||||
|
.eq(DataHarmrateV::getProcess,Integer.toString(devsMap.get(devId).getProcess()))
|
||||||
|
.select(DataHarmrateV::getLineId)
|
||||||
|
.select(DataHarmrateV::getPhasicType)
|
||||||
|
.select(DataHarmrateV::getValueType)
|
||||||
|
.between(DataHarmrateV::getTime, lineParam.getStartTime(), lineParam.getEndTime())
|
||||||
|
.eq(DataHarmrateV::getQualityFlag, "0");
|
||||||
|
if (Objects.isNull(po.getLineNo())) {
|
||||||
|
influxQueryWrapper.eq(DataHarmrateV::getCldid,Integer.toString(po.getClDid()));
|
||||||
|
} else {
|
||||||
|
influxQueryWrapper.eq(DataHarmrateV::getCldid,Integer.toString(po.getLineNo()));
|
||||||
|
}
|
||||||
|
//判断接线方式 (0-星型 1-角型 2-V型) 星型是相电压 角型或者v型是线电压
|
||||||
|
if (Objects.equals(po.getConType(),0)) {
|
||||||
|
//相电压基波有效值
|
||||||
|
influxQueryWrapper.select("Pq_RmsFundU_","v_1");
|
||||||
|
//2-50次 相电压谐波含有率
|
||||||
|
influxQueryWrapper.samePrefixAndSuffix("Pq_HarmU_", "v_", HarmonicTimesUtil.harmonicTimesList(2, 50, 1));
|
||||||
|
} else {
|
||||||
|
//线电压基波有效值
|
||||||
|
influxQueryWrapper.select("Pq_RmsFundLU_","v_1");
|
||||||
|
//2-50次 线电压谐波含有率
|
||||||
|
influxQueryWrapper.samePrefixAndSuffix("Pq_HarmLU_", "v_", HarmonicTimesUtil.harmonicTimesList(2, 50, 1));
|
||||||
|
}
|
||||||
|
result.addAll(dataHarmRateVMapper.selectByQueryWrapper(influxQueryWrapper));
|
||||||
|
});
|
||||||
|
if (CollectionUtil.isNotEmpty(result)) {
|
||||||
|
result.forEach(item -> {
|
||||||
String newType = PHASE_MAPPING.get(item.getPhasicType());
|
String newType = PHASE_MAPPING.get(item.getPhasicType());
|
||||||
if (newType != null) {
|
if (newType != null) {
|
||||||
item.setPhasicType(newType);
|
item.setPhasicType(newType);
|
||||||
@@ -335,6 +366,7 @@ public class InfluxdbDataHarmRateVImpl extends MppServiceImpl<RStatDataHarmRateV
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return data;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,10 @@ import cn.hutool.core.collection.CollUtil;
|
|||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||||
import com.njcn.common.utils.HarmonicTimesUtil;
|
import com.njcn.common.utils.HarmonicTimesUtil;
|
||||||
|
import com.njcn.csdevice.api.CsLineFeignClient;
|
||||||
|
import com.njcn.csdevice.api.EquipmentFeignClient;
|
||||||
|
import com.njcn.csdevice.pojo.dto.CsEquipmentDeliveryDTO;
|
||||||
|
import com.njcn.csdevice.pojo.po.CsLinePO;
|
||||||
import com.njcn.dataProcess.dao.imapper.DataHarmphasicIMapper;
|
import com.njcn.dataProcess.dao.imapper.DataHarmphasicIMapper;
|
||||||
import com.njcn.dataProcess.dao.relation.mapper.RStatDataHarmPhasicIRelationMapper;
|
import com.njcn.dataProcess.dao.relation.mapper.RStatDataHarmPhasicIRelationMapper;
|
||||||
import com.njcn.dataProcess.dto.DataHarmphasicIDTO;
|
import com.njcn.dataProcess.dto.DataHarmphasicIDTO;
|
||||||
@@ -21,10 +25,12 @@ import org.apache.commons.collections4.ListUtils;
|
|||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -40,6 +46,10 @@ public class InfluxdbDataHarmphasicIImpl extends MppServiceImpl<RStatDataHarmPha
|
|||||||
|
|
||||||
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
|
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
|
||||||
private final DataHarmphasicIMapper dataHarmphasicIMapper;
|
private final DataHarmphasicIMapper dataHarmphasicIMapper;
|
||||||
|
@Resource
|
||||||
|
private CsLineFeignClient csLineFeignClient;
|
||||||
|
@Resource
|
||||||
|
private EquipmentFeignClient equipmentFeignClient;
|
||||||
|
|
||||||
private static final Map<String, String> PHASE_MAPPING = new HashMap<String, String>() {{
|
private static final Map<String, String> PHASE_MAPPING = new HashMap<String, String>() {{
|
||||||
put("AB", "A");
|
put("AB", "A");
|
||||||
@@ -68,7 +78,12 @@ public class InfluxdbDataHarmphasicIImpl extends MppServiceImpl<RStatDataHarmPha
|
|||||||
@Override
|
@Override
|
||||||
public List<DataHarmPhasicIDto> getRawData(LineCountEvaluateParam lineParam) {
|
public List<DataHarmPhasicIDto> getRawData(LineCountEvaluateParam lineParam) {
|
||||||
List<DataHarmPhasicIDto> result = new ArrayList<>();
|
List<DataHarmPhasicIDto> result = new ArrayList<>();
|
||||||
List<DataHarmphasicI> list = getMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
List<DataHarmphasicI> list;
|
||||||
|
if (Objects.equals(lineParam.getType(), 2)) {
|
||||||
|
list = getWlMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
||||||
|
} else {
|
||||||
|
list = getMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
||||||
|
}
|
||||||
list.forEach(item->{
|
list.forEach(item->{
|
||||||
DataHarmPhasicIDto dto = new DataHarmPhasicIDto();
|
DataHarmPhasicIDto dto = new DataHarmPhasicIDto();
|
||||||
BeanUtils.copyProperties(item,dto);
|
BeanUtils.copyProperties(item,dto);
|
||||||
@@ -81,7 +96,12 @@ public class InfluxdbDataHarmphasicIImpl extends MppServiceImpl<RStatDataHarmPha
|
|||||||
@Override
|
@Override
|
||||||
public List<CommonMinuteDto> getBaseData(LineCountEvaluateParam lineParam) {
|
public List<CommonMinuteDto> getBaseData(LineCountEvaluateParam lineParam) {
|
||||||
List<CommonMinuteDto> result = new ArrayList<>();
|
List<CommonMinuteDto> result = new ArrayList<>();
|
||||||
List<DataHarmphasicI> data = getMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
List<DataHarmphasicI> data;
|
||||||
|
if (Objects.equals(lineParam.getType(), 2)) {
|
||||||
|
data = getWlMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
||||||
|
} else {
|
||||||
|
data = getMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
||||||
|
}
|
||||||
if (CollectionUtil.isNotEmpty(data)) {
|
if (CollectionUtil.isNotEmpty(data)) {
|
||||||
String time = TimeUtils.StringTimeToString(lineParam.getStartTime());
|
String time = TimeUtils.StringTimeToString(lineParam.getStartTime());
|
||||||
//以监测点分组
|
//以监测点分组
|
||||||
@@ -249,15 +269,50 @@ public class InfluxdbDataHarmphasicIImpl extends MppServiceImpl<RStatDataHarmPha
|
|||||||
result.addAll(dataList);
|
result.addAll(dataList);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (CollectionUtil.isNotEmpty(result)) {
|
|
||||||
result.forEach(item -> {
|
|
||||||
String newType = PHASE_MAPPING.get(item.getPhasicType());
|
|
||||||
if (newType != null) {
|
|
||||||
item.setPhasicType(newType);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<DataHarmphasicI> getWlMinuteData(List<String> lineList, String startTime, String endTime, Map<String,List<String>> timeMap,Boolean dataType) {
|
||||||
|
List<DataHarmphasicI> result = new ArrayList<>();
|
||||||
|
if (CollectionUtil.isNotEmpty(lineList)) {
|
||||||
|
//获取监测点信息
|
||||||
|
List<CsLinePO> line = csLineFeignClient.queryLineById(lineList).getData();
|
||||||
|
Map<String, CsLinePO> lineMap = line.stream().collect(Collectors.toMap(CsLinePO::getLineId, Function.identity()));
|
||||||
|
//获取设备信息
|
||||||
|
List<String> devList = line.stream().map(CsLinePO::getDeviceId).distinct().collect(Collectors.toList());
|
||||||
|
List<CsEquipmentDeliveryDTO> dev = equipmentFeignClient.queryDeviceById(devList).getData();
|
||||||
|
Map<String, CsEquipmentDeliveryDTO> devsMap = dev.stream().collect(Collectors.toMap(CsEquipmentDeliveryDTO::getId, Function.identity()));
|
||||||
|
lineList.forEach(lineId -> {
|
||||||
|
String devId = lineMap.get(lineId).getDeviceId();
|
||||||
|
CsLinePO po = lineMap.get(lineId);
|
||||||
|
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataHarmphasicI.class);
|
||||||
|
//谐波电流幅值相角
|
||||||
|
influxQueryWrapper.samePrefixAndSuffix("Pq_HarmIAng_", "i_", HarmonicTimesUtil.harmonicTimesList(2, 50, 1));
|
||||||
|
influxQueryWrapper.eq(DataHarmphasicI::getLineId, lineId)
|
||||||
|
.eq(DataHarmphasicI::getProcess,Integer.toString(devsMap.get(devId).getProcess()))
|
||||||
|
.select(DataHarmphasicI::getLineId)
|
||||||
|
.select(DataHarmphasicI::getPhasicType)
|
||||||
|
.select(DataHarmphasicI::getValueType)
|
||||||
|
//基波电流相角
|
||||||
|
.select("Pq_FundIAng","i_1")
|
||||||
|
.between(DataHarmphasicI::getTime, startTime, endTime)
|
||||||
|
.eq(DataHarmphasicI::getQualityFlag, "0");
|
||||||
|
if (Objects.isNull(po.getLineNo())) {
|
||||||
|
influxQueryWrapper.eq(DataHarmphasicI::getCldid,Integer.toString(po.getClDid()));
|
||||||
|
} else {
|
||||||
|
influxQueryWrapper.eq(DataHarmphasicI::getCldid,Integer.toString(po.getLineNo()));
|
||||||
|
}
|
||||||
|
result.addAll(dataHarmphasicIMapper.selectByQueryWrapper(influxQueryWrapper));
|
||||||
|
});
|
||||||
|
if (CollectionUtil.isNotEmpty(result)) {
|
||||||
|
result.forEach(item -> {
|
||||||
|
String newType = PHASE_MAPPING.get(item.getPhasicType());
|
||||||
|
if (newType != null) {
|
||||||
|
item.setPhasicType(newType);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,14 +2,17 @@ package com.njcn.dataProcess.service.impl.influxdb;
|
|||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import com.alibaba.nacos.shaded.com.google.common.reflect.TypeToken;
|
|
||||||
import com.alibaba.nacos.shaded.com.google.gson.Gson;
|
|
||||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||||
import com.njcn.common.utils.HarmonicTimesUtil;
|
import com.njcn.common.utils.HarmonicTimesUtil;
|
||||||
|
import com.njcn.csdevice.api.CsLineFeignClient;
|
||||||
|
import com.njcn.csdevice.api.EquipmentFeignClient;
|
||||||
|
import com.njcn.csdevice.pojo.dto.CsEquipmentDeliveryDTO;
|
||||||
|
import com.njcn.csdevice.pojo.po.CsLinePO;
|
||||||
import com.njcn.dataProcess.dao.imapper.DataHarmphasicVMapper;
|
import com.njcn.dataProcess.dao.imapper.DataHarmphasicVMapper;
|
||||||
import com.njcn.dataProcess.dao.relation.mapper.RStatDataHarmPhasicVRelationMapper;
|
import com.njcn.dataProcess.dao.relation.mapper.RStatDataHarmPhasicVRelationMapper;
|
||||||
import com.njcn.dataProcess.dto.DataHarmphasicVDTO;
|
import com.njcn.dataProcess.dto.DataHarmphasicVDTO;
|
||||||
import com.njcn.dataProcess.param.LineCountEvaluateParam;
|
import com.njcn.dataProcess.param.LineCountEvaluateParam;
|
||||||
|
import com.njcn.dataProcess.po.influx.DataHarmphasicI;
|
||||||
import com.njcn.dataProcess.po.influx.DataHarmphasicV;
|
import com.njcn.dataProcess.po.influx.DataHarmphasicV;
|
||||||
import com.njcn.dataProcess.pojo.dto.CommonMinuteDto;
|
import com.njcn.dataProcess.pojo.dto.CommonMinuteDto;
|
||||||
import com.njcn.dataProcess.pojo.dto.DataHarmDto;
|
import com.njcn.dataProcess.pojo.dto.DataHarmDto;
|
||||||
@@ -19,18 +22,17 @@ import com.njcn.dataProcess.service.IDataHarmphasicV;
|
|||||||
import com.njcn.dataProcess.util.TimeUtils;
|
import com.njcn.dataProcess.util.TimeUtils;
|
||||||
import com.njcn.influx.constant.InfluxDbSqlConstant;
|
import com.njcn.influx.constant.InfluxDbSqlConstant;
|
||||||
import com.njcn.influx.query.InfluxQueryWrapper;
|
import com.njcn.influx.query.InfluxQueryWrapper;
|
||||||
import com.njcn.redis.utils.RedisUtil;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.apache.commons.collections4.ListUtils;
|
import org.apache.commons.collections4.ListUtils;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.lang.reflect.Type;
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -45,19 +47,19 @@ import java.util.stream.Collectors;
|
|||||||
public class InfluxdbDataHarmphasicVImpl extends MppServiceImpl<RStatDataHarmPhasicVRelationMapper, RStatDataHarmPhasicVD> implements IDataHarmphasicV {
|
public class InfluxdbDataHarmphasicVImpl extends MppServiceImpl<RStatDataHarmPhasicVRelationMapper, RStatDataHarmPhasicVD> implements IDataHarmphasicV {
|
||||||
|
|
||||||
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
|
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
|
||||||
|
|
||||||
private final DataHarmphasicVMapper dataHarmphasicVMapper;
|
private final DataHarmphasicVMapper dataHarmphasicVMapper;
|
||||||
|
@Resource
|
||||||
|
private CsLineFeignClient csLineFeignClient;
|
||||||
|
@Resource
|
||||||
|
private EquipmentFeignClient equipmentFeignClient;
|
||||||
|
|
||||||
private static final Map<String, String> PHASE_MAPPING = new HashMap<String, String>() {{
|
private static final Map<String, String> PHASE_MAPPING = new HashMap<String, String>() {{
|
||||||
put("AB", "A");
|
put("AB", "A");
|
||||||
put("BC", "B");
|
put("BC", "B");
|
||||||
put("CA", "C");
|
put("CA", "C");
|
||||||
put("M", "T");
|
put("M", "T");
|
||||||
}};
|
}};
|
||||||
@Resource
|
|
||||||
private RedisUtil redisUtil;
|
|
||||||
private static final Set<String> LINE_VOLTAGE_TYPES =
|
|
||||||
Collections.unmodifiableSet(new HashSet<>(Arrays.asList("AB", "BC", "CA", "T")));
|
|
||||||
private static final Set<String> PHASE_VOLTAGE_TYPES =
|
|
||||||
Collections.unmodifiableSet(new HashSet<>(Arrays.asList("A", "B", "C", "T")));
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -81,7 +83,12 @@ public class InfluxdbDataHarmphasicVImpl extends MppServiceImpl<RStatDataHarmPha
|
|||||||
@Override
|
@Override
|
||||||
public List<DataHarmDto> getRawData(LineCountEvaluateParam lineParam) {
|
public List<DataHarmDto> getRawData(LineCountEvaluateParam lineParam) {
|
||||||
List<DataHarmDto> result = new ArrayList<>();
|
List<DataHarmDto> result = new ArrayList<>();
|
||||||
List<DataHarmphasicV> list = getMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
List<DataHarmphasicV> list;
|
||||||
|
if (Objects.equals(lineParam.getType(), 2)) {
|
||||||
|
list = getWlMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
||||||
|
} else {
|
||||||
|
list = getMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
||||||
|
}
|
||||||
list.forEach(item->{
|
list.forEach(item->{
|
||||||
DataHarmDto dto = new DataHarmDto();
|
DataHarmDto dto = new DataHarmDto();
|
||||||
BeanUtils.copyProperties(item,dto);
|
BeanUtils.copyProperties(item,dto);
|
||||||
@@ -94,7 +101,12 @@ public class InfluxdbDataHarmphasicVImpl extends MppServiceImpl<RStatDataHarmPha
|
|||||||
@Override
|
@Override
|
||||||
public List<CommonMinuteDto> getBaseData(LineCountEvaluateParam lineParam) {
|
public List<CommonMinuteDto> getBaseData(LineCountEvaluateParam lineParam) {
|
||||||
List<CommonMinuteDto> result = new ArrayList<>();
|
List<CommonMinuteDto> result = new ArrayList<>();
|
||||||
List<DataHarmphasicV> data = getMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
List<DataHarmphasicV> data;
|
||||||
|
if (Objects.equals(lineParam.getType(), 2)) {
|
||||||
|
data = getWlMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
||||||
|
} else {
|
||||||
|
data = getMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
||||||
|
}
|
||||||
if (CollectionUtil.isNotEmpty(data)) {
|
if (CollectionUtil.isNotEmpty(data)) {
|
||||||
String time = TimeUtils.StringTimeToString(lineParam.getStartTime());
|
String time = TimeUtils.StringTimeToString(lineParam.getStartTime());
|
||||||
//以监测点分组
|
//以监测点分组
|
||||||
@@ -215,13 +227,6 @@ public class InfluxdbDataHarmphasicVImpl extends MppServiceImpl<RStatDataHarmPha
|
|||||||
public List<DataHarmphasicV> getMinuteData(List<String> lineList, String startTime, String endTime, Map<String,List<String>> timeMap, Boolean dataType) {
|
public List<DataHarmphasicV> getMinuteData(List<String> lineList, String startTime, String endTime, Map<String,List<String>> timeMap, Boolean dataType) {
|
||||||
List<DataHarmphasicV> dataList;
|
List<DataHarmphasicV> dataList;
|
||||||
List<DataHarmphasicV> result = new ArrayList<>();
|
List<DataHarmphasicV> result = new ArrayList<>();
|
||||||
List<DataHarmphasicV> data = new ArrayList<>();
|
|
||||||
//获取监测点、接线方式数据
|
|
||||||
Type type = new TypeToken<Map<String, Integer>>(){}.getType();
|
|
||||||
Map<String, Integer> map = new Gson().fromJson(
|
|
||||||
String.valueOf(redisUtil.getObjectByKey("wlLineDetail")),
|
|
||||||
type
|
|
||||||
);
|
|
||||||
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataHarmphasicV.class);
|
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataHarmphasicV.class);
|
||||||
influxQueryWrapper.samePrefixAndSuffix(InfluxDbSqlConstant.V, InfluxDbSqlConstant.V, HarmonicTimesUtil.harmonicTimesList(1, 50, 1));
|
influxQueryWrapper.samePrefixAndSuffix(InfluxDbSqlConstant.V, InfluxDbSqlConstant.V, HarmonicTimesUtil.harmonicTimesList(1, 50, 1));
|
||||||
influxQueryWrapper.regular(DataHarmphasicV::getLineId, lineList)
|
influxQueryWrapper.regular(DataHarmphasicV::getLineId, lineList)
|
||||||
@@ -269,24 +274,52 @@ public class InfluxdbDataHarmphasicVImpl extends MppServiceImpl<RStatDataHarmPha
|
|||||||
result.addAll(dataList);
|
result.addAll(dataList);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (CollectionUtil.isNotEmpty(result)) {
|
return result;
|
||||||
if (!Objects.isNull(map)) {
|
}
|
||||||
//现根据监测点分组,然后根据接线方式排除多于数据,在修改相别
|
|
||||||
Map<String, List<DataHarmphasicV>> lineMap = result.stream().collect(Collectors.groupingBy(DataHarmphasicV::getLineId));
|
|
||||||
lineMap.forEach((k,v)->{
|
public List<DataHarmphasicV> getWlMinuteData(List<String> lineList, String startTime, String endTime, Map<String,List<String>> timeMap, Boolean dataType) {
|
||||||
if (Objects.isNull(map.get(k))) {
|
List<DataHarmphasicV> result = new ArrayList<>();
|
||||||
return;
|
if (CollectionUtil.isNotEmpty(lineList)) {
|
||||||
}
|
//获取监测点信息
|
||||||
Integer conType = map.get(k);
|
List<CsLinePO> line = csLineFeignClient.queryLineById(lineList).getData();
|
||||||
Set<String> validPhasicTypes = (conType != 0) ? LINE_VOLTAGE_TYPES : PHASE_VOLTAGE_TYPES;
|
Map<String, CsLinePO> lineMap = line.stream().collect(Collectors.toMap(CsLinePO::getLineId, Function.identity()));
|
||||||
List<DataHarmphasicV> result2 = v.stream().filter(item -> validPhasicTypes.contains(item.getPhasicType())).collect(Collectors.toList());
|
//获取设备信息
|
||||||
data.addAll(result2);
|
List<String> devList = line.stream().map(CsLinePO::getDeviceId).distinct().collect(Collectors.toList());
|
||||||
});
|
List<CsEquipmentDeliveryDTO> dev = equipmentFeignClient.queryDeviceById(devList).getData();
|
||||||
} else {
|
Map<String, CsEquipmentDeliveryDTO> devsMap = dev.stream().collect(Collectors.toMap(CsEquipmentDeliveryDTO::getId, Function.identity()));
|
||||||
data.addAll(result);
|
lineList.forEach(lineId -> {
|
||||||
}
|
String devId = lineMap.get(lineId).getDeviceId();
|
||||||
if (CollectionUtil.isNotEmpty(data)) {
|
CsLinePO po = lineMap.get(lineId);
|
||||||
data.forEach(item -> {
|
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataHarmphasicV.class);
|
||||||
|
influxQueryWrapper.eq(DataHarmphasicV::getLineId, lineId)
|
||||||
|
.eq(DataHarmphasicV::getProcess,Integer.toString(devsMap.get(devId).getProcess()))
|
||||||
|
.select(DataHarmphasicV::getLineId)
|
||||||
|
.select(DataHarmphasicV::getPhasicType)
|
||||||
|
.select(DataHarmphasicV::getValueType)
|
||||||
|
.between(DataHarmphasicV::getTime, startTime, endTime)
|
||||||
|
.eq(DataHarmphasicV::getQualityFlag, "0");
|
||||||
|
if (Objects.isNull(po.getLineNo())) {
|
||||||
|
influxQueryWrapper.eq(DataHarmphasicV::getCldid,Integer.toString(po.getClDid()));
|
||||||
|
} else {
|
||||||
|
influxQueryWrapper.eq(DataHarmphasicV::getCldid,Integer.toString(po.getLineNo()));
|
||||||
|
}
|
||||||
|
//判断接线方式 (0-星型 1-角型 2-V型) 星型是相电压 角型或者v型是线电压
|
||||||
|
if (Objects.equals(po.getConType(),0)) {
|
||||||
|
//相电压基波有效值相角
|
||||||
|
influxQueryWrapper.select("Pq_FundUAng","v_1");
|
||||||
|
//2-50次 相电压谐波相角
|
||||||
|
influxQueryWrapper.samePrefixAndSuffix("Pq_HarmUAng_", "v_", HarmonicTimesUtil.harmonicTimesList(2, 50, 1));
|
||||||
|
} else {
|
||||||
|
//线电压基波有效值相角
|
||||||
|
influxQueryWrapper.select("Pq_FundLUAng","v_1");
|
||||||
|
//2-50次 线电压谐波相角
|
||||||
|
influxQueryWrapper.samePrefixAndSuffix("Pq_HarmLUAng_", "v_", HarmonicTimesUtil.harmonicTimesList(2, 50, 1));
|
||||||
|
}
|
||||||
|
result.addAll(dataHarmphasicVMapper.selectByQueryWrapper(influxQueryWrapper));
|
||||||
|
});
|
||||||
|
if (CollectionUtil.isNotEmpty(result)) {
|
||||||
|
result.forEach(item -> {
|
||||||
String newType = PHASE_MAPPING.get(item.getPhasicType());
|
String newType = PHASE_MAPPING.get(item.getPhasicType());
|
||||||
if (newType != null) {
|
if (newType != null) {
|
||||||
item.setPhasicType(newType);
|
item.setPhasicType(newType);
|
||||||
@@ -294,6 +327,6 @@ public class InfluxdbDataHarmphasicVImpl extends MppServiceImpl<RStatDataHarmPha
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return data;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,10 @@ import cn.hutool.core.collection.CollUtil;
|
|||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||||
import com.njcn.common.utils.HarmonicTimesUtil;
|
import com.njcn.common.utils.HarmonicTimesUtil;
|
||||||
|
import com.njcn.csdevice.api.CsLineFeignClient;
|
||||||
|
import com.njcn.csdevice.api.EquipmentFeignClient;
|
||||||
|
import com.njcn.csdevice.pojo.dto.CsEquipmentDeliveryDTO;
|
||||||
|
import com.njcn.csdevice.pojo.po.CsLinePO;
|
||||||
import com.njcn.dataProcess.dao.imapper.DataHarmpowerPMapper;
|
import com.njcn.dataProcess.dao.imapper.DataHarmpowerPMapper;
|
||||||
import com.njcn.dataProcess.dao.relation.mapper.RStatDataHarmPowerPRelationMapper;
|
import com.njcn.dataProcess.dao.relation.mapper.RStatDataHarmPowerPRelationMapper;
|
||||||
import com.njcn.dataProcess.dto.DataHarmpowerPDTO;
|
import com.njcn.dataProcess.dto.DataHarmpowerPDTO;
|
||||||
@@ -22,11 +26,13 @@ import org.apache.commons.collections4.ListUtils;
|
|||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -41,7 +47,12 @@ import java.util.stream.Collectors;
|
|||||||
public class InfluxdbDataHarmpowerPImpl extends MppServiceImpl<RStatDataHarmPowerPRelationMapper, RStatDataHarmPowerPD> implements IDataHarmpowerP {
|
public class InfluxdbDataHarmpowerPImpl extends MppServiceImpl<RStatDataHarmPowerPRelationMapper, RStatDataHarmPowerPD> implements IDataHarmpowerP {
|
||||||
|
|
||||||
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
|
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
|
||||||
|
|
||||||
private final DataHarmpowerPMapper dataHarmpowerPMapper;
|
private final DataHarmpowerPMapper dataHarmpowerPMapper;
|
||||||
|
@Resource
|
||||||
|
private CsLineFeignClient csLineFeignClient;
|
||||||
|
@Resource
|
||||||
|
private EquipmentFeignClient equipmentFeignClient;
|
||||||
|
|
||||||
private static final Map<String, String> PHASE_MAPPING = new HashMap<String, String>() {{
|
private static final Map<String, String> PHASE_MAPPING = new HashMap<String, String>() {{
|
||||||
put("AB", "A");
|
put("AB", "A");
|
||||||
@@ -71,7 +82,12 @@ public class InfluxdbDataHarmpowerPImpl extends MppServiceImpl<RStatDataHarmPowe
|
|||||||
@Override
|
@Override
|
||||||
public List<DataPowerPDto> getRawData(LineCountEvaluateParam lineParam) {
|
public List<DataPowerPDto> getRawData(LineCountEvaluateParam lineParam) {
|
||||||
List<DataPowerPDto> result = new ArrayList<>();
|
List<DataPowerPDto> result = new ArrayList<>();
|
||||||
List<DataHarmpowerP> list = getMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
List<DataHarmpowerP> list;
|
||||||
|
if (Objects.equals(lineParam.getType(), 2)) {
|
||||||
|
list = getWlMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
||||||
|
} else {
|
||||||
|
list = getMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
||||||
|
}
|
||||||
list.forEach(item->{
|
list.forEach(item->{
|
||||||
DataPowerPDto dto = new DataPowerPDto();
|
DataPowerPDto dto = new DataPowerPDto();
|
||||||
BeanUtils.copyProperties(item,dto);
|
BeanUtils.copyProperties(item,dto);
|
||||||
@@ -84,7 +100,12 @@ public class InfluxdbDataHarmpowerPImpl extends MppServiceImpl<RStatDataHarmPowe
|
|||||||
@Override
|
@Override
|
||||||
public List<CommonMinuteDto> getBaseData(LineCountEvaluateParam lineParam) {
|
public List<CommonMinuteDto> getBaseData(LineCountEvaluateParam lineParam) {
|
||||||
List<CommonMinuteDto> result = new ArrayList<>();
|
List<CommonMinuteDto> result = new ArrayList<>();
|
||||||
List<DataHarmpowerP> data = getMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
List<DataHarmpowerP> data;
|
||||||
|
if (Objects.equals(lineParam.getType(), 2)) {
|
||||||
|
data = getWlMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
||||||
|
} else {
|
||||||
|
data = getMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
||||||
|
}
|
||||||
if (CollectionUtil.isNotEmpty(data)) {
|
if (CollectionUtil.isNotEmpty(data)) {
|
||||||
String time = TimeUtils.StringTimeToString(lineParam.getStartTime());
|
String time = TimeUtils.StringTimeToString(lineParam.getStartTime());
|
||||||
//以监测点分组
|
//以监测点分组
|
||||||
@@ -192,7 +213,6 @@ public class InfluxdbDataHarmpowerPImpl extends MppServiceImpl<RStatDataHarmPowe
|
|||||||
List<DataHarmpowerP> result = new ArrayList<>();
|
List<DataHarmpowerP> result = new ArrayList<>();
|
||||||
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataHarmpowerP.class);
|
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataHarmpowerP.class);
|
||||||
influxQueryWrapper.samePrefixAndSuffix(InfluxDbSqlConstant.P, InfluxDbSqlConstant.P, HarmonicTimesUtil.harmonicTimesList(1, 50, 1));
|
influxQueryWrapper.samePrefixAndSuffix(InfluxDbSqlConstant.P, InfluxDbSqlConstant.P, HarmonicTimesUtil.harmonicTimesList(1, 50, 1));
|
||||||
influxQueryWrapper.samePrefixAndSuffix("tot_tp_", "tot_tp_", HarmonicTimesUtil.harmonicTimesList(1, 50, 1));
|
|
||||||
influxQueryWrapper.regular(DataHarmpowerP::getLineId, lineList)
|
influxQueryWrapper.regular(DataHarmpowerP::getLineId, lineList)
|
||||||
.select(DataHarmpowerP::getLineId)
|
.select(DataHarmpowerP::getLineId)
|
||||||
.select(DataHarmpowerP::getPhasicType)
|
.select(DataHarmpowerP::getPhasicType)
|
||||||
@@ -200,9 +220,6 @@ public class InfluxdbDataHarmpowerPImpl extends MppServiceImpl<RStatDataHarmPowe
|
|||||||
.select(DataHarmpowerP::getP)
|
.select(DataHarmpowerP::getP)
|
||||||
.select(DataHarmpowerP::getDf)
|
.select(DataHarmpowerP::getDf)
|
||||||
.select(DataHarmpowerP::getPf)
|
.select(DataHarmpowerP::getPf)
|
||||||
.select(DataHarmpowerP::getTotP)
|
|
||||||
.select(DataHarmpowerP::getTotDf)
|
|
||||||
.select(DataHarmpowerP::getTotPf)
|
|
||||||
.select(DataHarmpowerP::getQualityFlag)
|
.select(DataHarmpowerP::getQualityFlag)
|
||||||
.select(DataHarmpowerP::getAbnormalFlag)
|
.select(DataHarmpowerP::getAbnormalFlag)
|
||||||
.between(DataHarmpowerP::getTime, startTime, endTime)
|
.between(DataHarmpowerP::getTime, startTime, endTime)
|
||||||
@@ -244,13 +261,65 @@ public class InfluxdbDataHarmpowerPImpl extends MppServiceImpl<RStatDataHarmPowe
|
|||||||
result.addAll(dataList);
|
result.addAll(dataList);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (CollectionUtil.isNotEmpty(result)) {
|
return result;
|
||||||
result.forEach(item -> {
|
}
|
||||||
String newType = PHASE_MAPPING.get(item.getPhasicType());
|
|
||||||
if (newType != null) {
|
public List<DataHarmpowerP> getWlMinuteData(List<String> lineList, String startTime, String endTime, Map<String,List<String>> timeMap, Boolean dataType) {
|
||||||
item.setPhasicType(newType);
|
List<DataHarmpowerP> result = new ArrayList<>();
|
||||||
|
if (CollectionUtil.isNotEmpty(lineList)) {
|
||||||
|
//获取监测点信息
|
||||||
|
List<CsLinePO> line = csLineFeignClient.queryLineById(lineList).getData();
|
||||||
|
Map<String, CsLinePO> lineMap = line.stream().collect(Collectors.toMap(CsLinePO::getLineId, Function.identity()));
|
||||||
|
//获取设备信息
|
||||||
|
List<String> devList = line.stream().map(CsLinePO::getDeviceId).distinct().collect(Collectors.toList());
|
||||||
|
List<CsEquipmentDeliveryDTO> dev = equipmentFeignClient.queryDeviceById(devList).getData();
|
||||||
|
Map<String, CsEquipmentDeliveryDTO> devsMap = dev.stream().collect(Collectors.toMap(CsEquipmentDeliveryDTO::getId, Function.identity()));
|
||||||
|
lineList.forEach(lineId -> {
|
||||||
|
String devId = lineMap.get(lineId).getDeviceId();
|
||||||
|
CsLinePO po = lineMap.get(lineId);
|
||||||
|
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataHarmpowerP.class);
|
||||||
|
//A、B、C谐波有功功率有效值
|
||||||
|
influxQueryWrapper.samePrefixAndSuffix("Pq_HarmP_", "p_", HarmonicTimesUtil.harmonicTimesList(2, 50, 1));
|
||||||
|
//三相总 谐波有功功率有效值
|
||||||
|
influxQueryWrapper.samePrefixAndSuffix("Pq_HarmTP_", "totP_", HarmonicTimesUtil.harmonicTimesList(2, 50, 1));
|
||||||
|
InfluxQueryWrapper eq = influxQueryWrapper.eq(DataHarmpowerP::getLineId, lineId)
|
||||||
|
.eq(DataHarmpowerP::getProcess, Integer.toString(devsMap.get(devId).getProcess()))
|
||||||
|
.select(DataHarmpowerP::getLineId)
|
||||||
|
.select(DataHarmpowerP::getPhasicType)
|
||||||
|
.select(DataHarmpowerP::getValueType)
|
||||||
|
//位移功率因数
|
||||||
|
.select("Pq_DF", "df")
|
||||||
|
//视在功率因素
|
||||||
|
.select("Pq_PF", "pf")
|
||||||
|
//A、B、C三相有功功率
|
||||||
|
.select("Pq_P", "p")
|
||||||
|
//基波有功功率
|
||||||
|
.select("Pq_FundP", "p_1")
|
||||||
|
//三相总视在功率因数
|
||||||
|
.select("Pq_TotPF", "totPf")
|
||||||
|
//三相总位移功率因数
|
||||||
|
.select("Pq_TotDF", "totDf")
|
||||||
|
//三相总功率因数
|
||||||
|
.select("Pq_TotP", "totP")
|
||||||
|
//三相总基波有功功率
|
||||||
|
.select("Pq_TotHarmP", "totP1")
|
||||||
|
.between(DataHarmpowerP::getTime, startTime, endTime)
|
||||||
|
.eq(DataHarmpowerP::getQualityFlag, "0");
|
||||||
|
if (Objects.isNull(po.getLineNo())) {
|
||||||
|
influxQueryWrapper.eq(DataHarmpowerP::getCldid,Integer.toString(po.getClDid()));
|
||||||
|
} else {
|
||||||
|
influxQueryWrapper.eq(DataHarmpowerP::getCldid,Integer.toString(po.getLineNo()));
|
||||||
}
|
}
|
||||||
|
result.addAll(dataHarmpowerPMapper.selectByQueryWrapper(influxQueryWrapper));
|
||||||
});
|
});
|
||||||
|
if (CollectionUtil.isNotEmpty(result)) {
|
||||||
|
result.forEach(item -> {
|
||||||
|
String newType = PHASE_MAPPING.get(item.getPhasicType());
|
||||||
|
if (newType != null) {
|
||||||
|
item.setPhasicType(newType);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,10 @@ import cn.hutool.core.collection.CollUtil;
|
|||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||||
import com.njcn.common.utils.HarmonicTimesUtil;
|
import com.njcn.common.utils.HarmonicTimesUtil;
|
||||||
|
import com.njcn.csdevice.api.CsLineFeignClient;
|
||||||
|
import com.njcn.csdevice.api.EquipmentFeignClient;
|
||||||
|
import com.njcn.csdevice.pojo.dto.CsEquipmentDeliveryDTO;
|
||||||
|
import com.njcn.csdevice.pojo.po.CsLinePO;
|
||||||
import com.njcn.dataProcess.dao.imapper.DataHarmpowerQMapper;
|
import com.njcn.dataProcess.dao.imapper.DataHarmpowerQMapper;
|
||||||
import com.njcn.dataProcess.dao.relation.mapper.RStatDataHarmPowerQRelationMapper;
|
import com.njcn.dataProcess.dao.relation.mapper.RStatDataHarmPowerQRelationMapper;
|
||||||
import com.njcn.dataProcess.dto.DataHarmpowerQDTO;
|
import com.njcn.dataProcess.dto.DataHarmpowerQDTO;
|
||||||
@@ -21,11 +25,13 @@ import org.apache.commons.collections4.ListUtils;
|
|||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -41,6 +47,10 @@ public class InfluxdbDataHarmpowerQImpl extends MppServiceImpl<RStatDataHarmPowe
|
|||||||
|
|
||||||
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
|
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
|
||||||
private final DataHarmpowerQMapper dataHarmpowerQMapper;
|
private final DataHarmpowerQMapper dataHarmpowerQMapper;
|
||||||
|
@Resource
|
||||||
|
private CsLineFeignClient csLineFeignClient;
|
||||||
|
@Resource
|
||||||
|
private EquipmentFeignClient equipmentFeignClient;
|
||||||
|
|
||||||
private static final Map<String, String> PHASE_MAPPING = new HashMap<String, String>() {{
|
private static final Map<String, String> PHASE_MAPPING = new HashMap<String, String>() {{
|
||||||
put("AB", "A");
|
put("AB", "A");
|
||||||
@@ -70,7 +80,12 @@ public class InfluxdbDataHarmpowerQImpl extends MppServiceImpl<RStatDataHarmPowe
|
|||||||
@Override
|
@Override
|
||||||
public List<DataHarmPowerQDto> getRawData(LineCountEvaluateParam lineParam) {
|
public List<DataHarmPowerQDto> getRawData(LineCountEvaluateParam lineParam) {
|
||||||
List<DataHarmPowerQDto> result = new ArrayList<>();
|
List<DataHarmPowerQDto> result = new ArrayList<>();
|
||||||
List<DataHarmpowerQ> list = getMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
List<DataHarmpowerQ> list;
|
||||||
|
if (Objects.equals(lineParam.getType(), 2)) {
|
||||||
|
list = getWlMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
||||||
|
} else {
|
||||||
|
list = getMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
||||||
|
}
|
||||||
list.forEach(item->{
|
list.forEach(item->{
|
||||||
DataHarmPowerQDto dto = new DataHarmPowerQDto();
|
DataHarmPowerQDto dto = new DataHarmPowerQDto();
|
||||||
BeanUtils.copyProperties(item,dto);
|
BeanUtils.copyProperties(item,dto);
|
||||||
@@ -83,7 +98,12 @@ public class InfluxdbDataHarmpowerQImpl extends MppServiceImpl<RStatDataHarmPowe
|
|||||||
@Override
|
@Override
|
||||||
public List<CommonMinuteDto> getBaseData(LineCountEvaluateParam lineParam) {
|
public List<CommonMinuteDto> getBaseData(LineCountEvaluateParam lineParam) {
|
||||||
List<CommonMinuteDto> result = new ArrayList<>();
|
List<CommonMinuteDto> result = new ArrayList<>();
|
||||||
List<DataHarmpowerQ> data = getMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
List<DataHarmpowerQ> data;
|
||||||
|
if (Objects.equals(lineParam.getType(), 2)) {
|
||||||
|
data = getWlMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
||||||
|
} else {
|
||||||
|
data = getMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
||||||
|
}
|
||||||
if (CollectionUtil.isNotEmpty(data)) {
|
if (CollectionUtil.isNotEmpty(data)) {
|
||||||
String time = TimeUtils.StringTimeToString(lineParam.getStartTime());
|
String time = TimeUtils.StringTimeToString(lineParam.getStartTime());
|
||||||
//以监测点分组
|
//以监测点分组
|
||||||
@@ -105,6 +125,7 @@ public class InfluxdbDataHarmpowerQImpl extends MppServiceImpl<RStatDataHarmPowe
|
|||||||
valueTypeMap.forEach((valueType,valueTypeList)->{
|
valueTypeMap.forEach((valueType,valueTypeList)->{
|
||||||
CommonMinuteDto.ValueType value = new CommonMinuteDto.ValueType();
|
CommonMinuteDto.ValueType value = new CommonMinuteDto.ValueType();
|
||||||
value.setValueType(valueType);
|
value.setValueType(valueType);
|
||||||
|
|
||||||
List<List<Double>> lists;
|
List<List<Double>> lists;
|
||||||
if (Objects.equals(phasicType, "T") && Objects.equals(lineParam.getType(), 2)) {
|
if (Objects.equals(phasicType, "T") && Objects.equals(lineParam.getType(), 2)) {
|
||||||
lists = extractDataLists(valueTypeList, "Tot");
|
lists = extractDataLists(valueTypeList, "Tot");
|
||||||
@@ -187,13 +208,11 @@ public class InfluxdbDataHarmpowerQImpl extends MppServiceImpl<RStatDataHarmPowe
|
|||||||
List<DataHarmpowerQ> result = new ArrayList<>();
|
List<DataHarmpowerQ> result = new ArrayList<>();
|
||||||
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataHarmpowerQ.class);
|
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataHarmpowerQ.class);
|
||||||
influxQueryWrapper.samePrefixAndSuffix(InfluxDbSqlConstant.Q, InfluxDbSqlConstant.Q, HarmonicTimesUtil.harmonicTimesList(1, 50, 1));
|
influxQueryWrapper.samePrefixAndSuffix(InfluxDbSqlConstant.Q, InfluxDbSqlConstant.Q, HarmonicTimesUtil.harmonicTimesList(1, 50, 1));
|
||||||
influxQueryWrapper.samePrefixAndSuffix("tot_tq_", "tot_tq_", HarmonicTimesUtil.harmonicTimesList(1, 50, 1));
|
|
||||||
influxQueryWrapper.regular(DataHarmpowerQ::getLineId, lineList)
|
influxQueryWrapper.regular(DataHarmpowerQ::getLineId, lineList)
|
||||||
.select(DataHarmpowerQ::getLineId)
|
.select(DataHarmpowerQ::getLineId)
|
||||||
.select(DataHarmpowerQ::getPhasicType)
|
.select(DataHarmpowerQ::getPhasicType)
|
||||||
.select(DataHarmpowerQ::getValueType)
|
.select(DataHarmpowerQ::getValueType)
|
||||||
.select(DataHarmpowerQ::getQ)
|
.select(DataHarmpowerQ::getQ)
|
||||||
.select(DataHarmpowerQ::getTotQ)
|
|
||||||
.select(DataHarmpowerQ::getQualityFlag)
|
.select(DataHarmpowerQ::getQualityFlag)
|
||||||
.select(DataHarmpowerQ::getAbnormalFlag)
|
.select(DataHarmpowerQ::getAbnormalFlag)
|
||||||
.between(DataHarmpowerQ::getTime, startTime, endTime)
|
.between(DataHarmpowerQ::getTime, startTime, endTime)
|
||||||
@@ -235,13 +254,57 @@ public class InfluxdbDataHarmpowerQImpl extends MppServiceImpl<RStatDataHarmPowe
|
|||||||
result.addAll(dataList);
|
result.addAll(dataList);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (CollectionUtil.isNotEmpty(result)) {
|
return result;
|
||||||
result.forEach(item -> {
|
}
|
||||||
String newType = PHASE_MAPPING.get(item.getPhasicType());
|
|
||||||
if (newType != null) {
|
public List<DataHarmpowerQ> getWlMinuteData(List<String> lineList, String startTime, String endTime, Map<String,List<String>> timeMap, Boolean dataType) {
|
||||||
item.setPhasicType(newType);
|
List<DataHarmpowerQ> result = new ArrayList<>();
|
||||||
|
if (CollectionUtil.isNotEmpty(lineList)) {
|
||||||
|
//获取监测点信息
|
||||||
|
List<CsLinePO> line = csLineFeignClient.queryLineById(lineList).getData();
|
||||||
|
Map<String, CsLinePO> lineMap = line.stream().collect(Collectors.toMap(CsLinePO::getLineId, Function.identity()));
|
||||||
|
//获取设备信息
|
||||||
|
List<String> devList = line.stream().map(CsLinePO::getDeviceId).distinct().collect(Collectors.toList());
|
||||||
|
List<CsEquipmentDeliveryDTO> dev = equipmentFeignClient.queryDeviceById(devList).getData();
|
||||||
|
Map<String, CsEquipmentDeliveryDTO> devsMap = dev.stream().collect(Collectors.toMap(CsEquipmentDeliveryDTO::getId, Function.identity()));
|
||||||
|
lineList.forEach(lineId -> {
|
||||||
|
String devId = lineMap.get(lineId).getDeviceId();
|
||||||
|
CsLinePO po = lineMap.get(lineId);
|
||||||
|
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataHarmpowerQ.class);
|
||||||
|
//A、B、C谐波无功功率有效值
|
||||||
|
influxQueryWrapper.samePrefixAndSuffix("Pq_HarmQ_", "q_", HarmonicTimesUtil.harmonicTimesList(2, 50, 1));
|
||||||
|
//三相总 谐波有功功率有效值
|
||||||
|
influxQueryWrapper.samePrefixAndSuffix("Pq_HarmTQ_", "totQ_", HarmonicTimesUtil.harmonicTimesList(2, 50, 1));
|
||||||
|
influxQueryWrapper.eq(DataHarmpowerQ::getLineId, lineId)
|
||||||
|
.eq(DataHarmpowerQ::getProcess,Integer.toString(devsMap.get(devId).getProcess()))
|
||||||
|
.select(DataHarmpowerQ::getLineId)
|
||||||
|
.select(DataHarmpowerQ::getPhasicType)
|
||||||
|
.select(DataHarmpowerQ::getValueType)
|
||||||
|
//A、B、C三相无功功率
|
||||||
|
.select("Pq_Q", "q")
|
||||||
|
//基波无功功率
|
||||||
|
.select("Pq_FundQ","q_1")
|
||||||
|
//总无功功率
|
||||||
|
.select("Pq_TotQ","totQ")
|
||||||
|
//基波无功功率(T)
|
||||||
|
.select("Pq_TotHarmQ","totQ1")
|
||||||
|
.between(DataHarmpowerQ::getTime, startTime, endTime)
|
||||||
|
.eq(DataHarmpowerQ::getQualityFlag, "0");
|
||||||
|
if (Objects.isNull(po.getLineNo())) {
|
||||||
|
influxQueryWrapper.eq(DataHarmpowerQ::getCldid,Integer.toString(po.getClDid()));
|
||||||
|
} else {
|
||||||
|
influxQueryWrapper.eq(DataHarmpowerQ::getCldid,Integer.toString(po.getLineNo()));
|
||||||
}
|
}
|
||||||
|
result.addAll(dataHarmpowerQMapper.selectByQueryWrapper(influxQueryWrapper));
|
||||||
});
|
});
|
||||||
|
if (CollectionUtil.isNotEmpty(result)) {
|
||||||
|
result.forEach(item -> {
|
||||||
|
String newType = PHASE_MAPPING.get(item.getPhasicType());
|
||||||
|
if (newType != null) {
|
||||||
|
item.setPhasicType(newType);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,10 @@ import cn.hutool.core.collection.CollUtil;
|
|||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||||
import com.njcn.common.utils.HarmonicTimesUtil;
|
import com.njcn.common.utils.HarmonicTimesUtil;
|
||||||
|
import com.njcn.csdevice.api.CsLineFeignClient;
|
||||||
|
import com.njcn.csdevice.api.EquipmentFeignClient;
|
||||||
|
import com.njcn.csdevice.pojo.dto.CsEquipmentDeliveryDTO;
|
||||||
|
import com.njcn.csdevice.pojo.po.CsLinePO;
|
||||||
import com.njcn.dataProcess.dao.imapper.DataHarmpowerSMapper;
|
import com.njcn.dataProcess.dao.imapper.DataHarmpowerSMapper;
|
||||||
import com.njcn.dataProcess.dao.relation.mapper.RStatDataHarmPowerSRelationMapper;
|
import com.njcn.dataProcess.dao.relation.mapper.RStatDataHarmPowerSRelationMapper;
|
||||||
import com.njcn.dataProcess.dto.DataHarmpowerSDTO;
|
import com.njcn.dataProcess.dto.DataHarmpowerSDTO;
|
||||||
@@ -21,11 +25,13 @@ import org.apache.commons.collections4.ListUtils;
|
|||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -41,6 +47,10 @@ public class InfluxdbDataHarmpowerSImpl extends MppServiceImpl<RStatDataHarmPowe
|
|||||||
|
|
||||||
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
|
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
|
||||||
private final DataHarmpowerSMapper dataHarmpowerSMapper;
|
private final DataHarmpowerSMapper dataHarmpowerSMapper;
|
||||||
|
@Resource
|
||||||
|
private CsLineFeignClient csLineFeignClient;
|
||||||
|
@Resource
|
||||||
|
private EquipmentFeignClient equipmentFeignClient;
|
||||||
|
|
||||||
private static final Map<String, String> PHASE_MAPPING = new HashMap<String, String>() {{
|
private static final Map<String, String> PHASE_MAPPING = new HashMap<String, String>() {{
|
||||||
put("AB", "A");
|
put("AB", "A");
|
||||||
@@ -70,7 +80,12 @@ public class InfluxdbDataHarmpowerSImpl extends MppServiceImpl<RStatDataHarmPowe
|
|||||||
@Override
|
@Override
|
||||||
public List<DataHarmPowerSDto> getRawData(LineCountEvaluateParam lineParam) {
|
public List<DataHarmPowerSDto> getRawData(LineCountEvaluateParam lineParam) {
|
||||||
List<DataHarmPowerSDto> result = new ArrayList<>();
|
List<DataHarmPowerSDto> result = new ArrayList<>();
|
||||||
List<DataHarmpowerS> list = getMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
List<DataHarmpowerS> list;
|
||||||
|
if (Objects.equals(lineParam.getType(), 2)) {
|
||||||
|
list = getWlMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
||||||
|
} else {
|
||||||
|
list = getMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
||||||
|
}
|
||||||
list.forEach(item->{
|
list.forEach(item->{
|
||||||
DataHarmPowerSDto dto = new DataHarmPowerSDto();
|
DataHarmPowerSDto dto = new DataHarmPowerSDto();
|
||||||
BeanUtils.copyProperties(item,dto);
|
BeanUtils.copyProperties(item,dto);
|
||||||
@@ -83,7 +98,12 @@ public class InfluxdbDataHarmpowerSImpl extends MppServiceImpl<RStatDataHarmPowe
|
|||||||
@Override
|
@Override
|
||||||
public List<CommonMinuteDto> getBaseData(LineCountEvaluateParam lineParam) {
|
public List<CommonMinuteDto> getBaseData(LineCountEvaluateParam lineParam) {
|
||||||
List<CommonMinuteDto> result = new ArrayList<>();
|
List<CommonMinuteDto> result = new ArrayList<>();
|
||||||
List<DataHarmpowerS> data = getMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
List<DataHarmpowerS> data;
|
||||||
|
if (Objects.equals(lineParam.getType(), 2)) {
|
||||||
|
data = getWlMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
||||||
|
} else {
|
||||||
|
data = getMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(), lineParam.getAbnormalTime(),lineParam.getDataType());
|
||||||
|
}
|
||||||
if (CollectionUtil.isNotEmpty(data)) {
|
if (CollectionUtil.isNotEmpty(data)) {
|
||||||
String time = TimeUtils.StringTimeToString(lineParam.getStartTime());
|
String time = TimeUtils.StringTimeToString(lineParam.getStartTime());
|
||||||
//以监测点分组
|
//以监测点分组
|
||||||
@@ -187,13 +207,11 @@ public class InfluxdbDataHarmpowerSImpl extends MppServiceImpl<RStatDataHarmPowe
|
|||||||
List<DataHarmpowerS> result = new ArrayList<>();
|
List<DataHarmpowerS> result = new ArrayList<>();
|
||||||
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataHarmpowerS.class);
|
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataHarmpowerS.class);
|
||||||
influxQueryWrapper.samePrefixAndSuffix(InfluxDbSqlConstant.S, InfluxDbSqlConstant.S, HarmonicTimesUtil.harmonicTimesList(1, 50, 1));
|
influxQueryWrapper.samePrefixAndSuffix(InfluxDbSqlConstant.S, InfluxDbSqlConstant.S, HarmonicTimesUtil.harmonicTimesList(1, 50, 1));
|
||||||
influxQueryWrapper.samePrefixAndSuffix("tot_ts_", "tot_ts_", HarmonicTimesUtil.harmonicTimesList(1, 50, 1));
|
|
||||||
influxQueryWrapper.regular(DataHarmpowerS::getLineId, lineList)
|
influxQueryWrapper.regular(DataHarmpowerS::getLineId, lineList)
|
||||||
.select(DataHarmpowerS::getLineId)
|
.select(DataHarmpowerS::getLineId)
|
||||||
.select(DataHarmpowerS::getPhasicType)
|
.select(DataHarmpowerS::getPhasicType)
|
||||||
.select(DataHarmpowerS::getValueType)
|
.select(DataHarmpowerS::getValueType)
|
||||||
.select(DataHarmpowerS::getS)
|
.select(DataHarmpowerS::getS)
|
||||||
.select(DataHarmpowerS::getTotS)
|
|
||||||
.select(DataHarmpowerS::getQualityFlag)
|
.select(DataHarmpowerS::getQualityFlag)
|
||||||
.select(DataHarmpowerS::getAbnormalFlag)
|
.select(DataHarmpowerS::getAbnormalFlag)
|
||||||
.between(DataHarmpowerS::getTime, startTime, endTime)
|
.between(DataHarmpowerS::getTime, startTime, endTime)
|
||||||
@@ -235,14 +253,59 @@ public class InfluxdbDataHarmpowerSImpl extends MppServiceImpl<RStatDataHarmPowe
|
|||||||
result.addAll(dataList);
|
result.addAll(dataList);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (CollectionUtil.isNotEmpty(result)) {
|
return result;
|
||||||
result.forEach(item -> {
|
}
|
||||||
String newType = PHASE_MAPPING.get(item.getPhasicType());
|
|
||||||
if (newType != null) {
|
public List<DataHarmpowerS> getWlMinuteData(List<String> lineList, String startTime, String endTime, Map<String,List<String>> timeMap,Boolean dataType) {
|
||||||
item.setPhasicType(newType);
|
List<DataHarmpowerS> result = new ArrayList<>();
|
||||||
|
if (CollectionUtil.isNotEmpty(lineList)) {
|
||||||
|
//获取监测点信息
|
||||||
|
List<CsLinePO> line = csLineFeignClient.queryLineById(lineList).getData();
|
||||||
|
Map<String, CsLinePO> lineMap = line.stream().collect(Collectors.toMap(CsLinePO::getLineId, Function.identity()));
|
||||||
|
//获取设备信息
|
||||||
|
List<String> devList = line.stream().map(CsLinePO::getDeviceId).distinct().collect(Collectors.toList());
|
||||||
|
List<CsEquipmentDeliveryDTO> dev = equipmentFeignClient.queryDeviceById(devList).getData();
|
||||||
|
Map<String, CsEquipmentDeliveryDTO> devsMap = dev.stream().collect(Collectors.toMap(CsEquipmentDeliveryDTO::getId, Function.identity()));
|
||||||
|
lineList.forEach(lineId -> {
|
||||||
|
String devId = lineMap.get(lineId).getDeviceId();
|
||||||
|
CsLinePO po = lineMap.get(lineId);
|
||||||
|
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataHarmpowerS.class);
|
||||||
|
//A、B、C谐波视在功率有效值
|
||||||
|
influxQueryWrapper.samePrefixAndSuffix("Pq_HarmS_", "s_", HarmonicTimesUtil.harmonicTimesList(2, 50, 1));
|
||||||
|
//三相总 谐波视在功率有效值
|
||||||
|
influxQueryWrapper.samePrefixAndSuffix("Pq_HarmTS_", "totS_", HarmonicTimesUtil.harmonicTimesList(2, 50, 1));
|
||||||
|
influxQueryWrapper.eq(DataHarmpowerS::getLineId, lineId)
|
||||||
|
.eq(DataHarmpowerS::getProcess,Integer.toString(devsMap.get(devId).getProcess()))
|
||||||
|
.select(DataHarmpowerS::getLineId)
|
||||||
|
.select(DataHarmpowerS::getPhasicType)
|
||||||
|
.select(DataHarmpowerS::getValueType)
|
||||||
|
//A、B、C视在功率
|
||||||
|
.select("Pq_S","s")
|
||||||
|
//基波视在功率
|
||||||
|
.select("Pq_FundS","s_1")
|
||||||
|
//总视在功率
|
||||||
|
.select("Pq_TotS","totS")
|
||||||
|
//基波视在功率(T)
|
||||||
|
.select("Pq_TotHarmS","totS1")
|
||||||
|
.between(DataHarmpowerS::getTime, startTime, endTime)
|
||||||
|
.eq(DataHarmpowerS::getQualityFlag, "0");
|
||||||
|
if (Objects.isNull(po.getLineNo())) {
|
||||||
|
influxQueryWrapper.eq(DataHarmpowerS::getCldid,Integer.toString(po.getClDid()));
|
||||||
|
} else {
|
||||||
|
influxQueryWrapper.eq(DataHarmpowerS::getCldid,Integer.toString(po.getLineNo()));
|
||||||
}
|
}
|
||||||
|
result.addAll(dataHarmpowerSMapper.selectByQueryWrapper(influxQueryWrapper));
|
||||||
});
|
});
|
||||||
|
if (CollectionUtil.isNotEmpty(result)) {
|
||||||
|
result.forEach(item -> {
|
||||||
|
String newType = PHASE_MAPPING.get(item.getPhasicType());
|
||||||
|
if (newType != null) {
|
||||||
|
item.setPhasicType(newType);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,10 @@ import cn.hutool.core.collection.CollUtil;
|
|||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||||
import com.njcn.common.utils.HarmonicTimesUtil;
|
import com.njcn.common.utils.HarmonicTimesUtil;
|
||||||
|
import com.njcn.csdevice.api.CsLineFeignClient;
|
||||||
|
import com.njcn.csdevice.api.EquipmentFeignClient;
|
||||||
|
import com.njcn.csdevice.pojo.dto.CsEquipmentDeliveryDTO;
|
||||||
|
import com.njcn.csdevice.pojo.po.CsLinePO;
|
||||||
import com.njcn.dataProcess.constant.InfluxDBTableConstant;
|
import com.njcn.dataProcess.constant.InfluxDBTableConstant;
|
||||||
import com.njcn.dataProcess.dao.imapper.DataIMapper;
|
import com.njcn.dataProcess.dao.imapper.DataIMapper;
|
||||||
import com.njcn.dataProcess.dao.relation.mapper.RStatDataIRelationMapper;
|
import com.njcn.dataProcess.dao.relation.mapper.RStatDataIRelationMapper;
|
||||||
@@ -22,10 +26,12 @@ import org.apache.commons.collections4.ListUtils;
|
|||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -43,6 +49,11 @@ public class InfluxdbDataIImpl extends MppServiceImpl<RStatDataIRelationMapper,
|
|||||||
|
|
||||||
private final DataIMapper dataIMapper;
|
private final DataIMapper dataIMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private CsLineFeignClient csLineFeignClient;
|
||||||
|
@Resource
|
||||||
|
private EquipmentFeignClient equipmentFeignClient;
|
||||||
|
|
||||||
private static final Map<String, String> PHASE_MAPPING = new HashMap<String, String>() {{
|
private static final Map<String, String> PHASE_MAPPING = new HashMap<String, String>() {{
|
||||||
put("AB", "A");
|
put("AB", "A");
|
||||||
put("BC", "B");
|
put("BC", "B");
|
||||||
@@ -71,7 +82,12 @@ public class InfluxdbDataIImpl extends MppServiceImpl<RStatDataIRelationMapper,
|
|||||||
@Override
|
@Override
|
||||||
public List<DataIDto> getRawData(LineCountEvaluateParam lineParam) {
|
public List<DataIDto> getRawData(LineCountEvaluateParam lineParam) {
|
||||||
List<DataIDto> result = new ArrayList<>();
|
List<DataIDto> result = new ArrayList<>();
|
||||||
List<DataI> list = getMinuteDataI(lineParam);;
|
List<DataI> list;
|
||||||
|
if (Objects.equals(lineParam.getType(), 2)) {
|
||||||
|
list = getWlMinuteDataI(lineParam);
|
||||||
|
} else {
|
||||||
|
list = getMinuteDataI(lineParam);
|
||||||
|
}
|
||||||
list.forEach(item->{
|
list.forEach(item->{
|
||||||
DataIDto dto = new DataIDto();
|
DataIDto dto = new DataIDto();
|
||||||
BeanUtils.copyProperties(item,dto);
|
BeanUtils.copyProperties(item,dto);
|
||||||
@@ -84,7 +100,12 @@ public class InfluxdbDataIImpl extends MppServiceImpl<RStatDataIRelationMapper,
|
|||||||
@Override
|
@Override
|
||||||
public List<CommonMinuteDto> getBaseData(LineCountEvaluateParam lineParam) {
|
public List<CommonMinuteDto> getBaseData(LineCountEvaluateParam lineParam) {
|
||||||
List<CommonMinuteDto> result = new ArrayList<>();
|
List<CommonMinuteDto> result = new ArrayList<>();
|
||||||
List<DataI> dataIList = getMinuteDataI(lineParam);
|
List<DataI> dataIList;
|
||||||
|
if (Objects.equals(lineParam.getType(), 2)) {
|
||||||
|
dataIList = getWlMinuteDataI(lineParam);
|
||||||
|
} else {
|
||||||
|
dataIList = getMinuteDataI(lineParam);
|
||||||
|
}
|
||||||
if (CollectionUtil.isNotEmpty(dataIList)) {
|
if (CollectionUtil.isNotEmpty(dataIList)) {
|
||||||
String time = TimeUtils.StringTimeToString(lineParam.getStartTime());
|
String time = TimeUtils.StringTimeToString(lineParam.getStartTime());
|
||||||
//以监测点分组
|
//以监测点分组
|
||||||
@@ -293,13 +314,65 @@ public class InfluxdbDataIImpl extends MppServiceImpl<RStatDataIRelationMapper,
|
|||||||
result.addAll(dataList);
|
result.addAll(dataList);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (CollectionUtil.isNotEmpty(result)) {
|
return result;
|
||||||
result.forEach(item -> {
|
}
|
||||||
String newType = PHASE_MAPPING.get(item.getPhasicType());
|
|
||||||
if (newType != null) {
|
public List<DataI> getWlMinuteDataI(LineCountEvaluateParam lineParam) {
|
||||||
item.setPhasicType(newType);
|
List<DataI> result = new ArrayList<>();
|
||||||
|
if (CollectionUtil.isNotEmpty(lineParam.getLineId())) {
|
||||||
|
//获取监测点信息
|
||||||
|
List<CsLinePO> line = csLineFeignClient.queryLineById(lineParam.getLineId()).getData();
|
||||||
|
Map<String, CsLinePO> lineMap = line.stream().collect(Collectors.toMap(CsLinePO::getLineId, Function.identity()));
|
||||||
|
//获取设备信息
|
||||||
|
List<String> devList = line.stream().map(CsLinePO::getDeviceId).distinct().collect(Collectors.toList());
|
||||||
|
List<CsEquipmentDeliveryDTO> dev = equipmentFeignClient.queryDeviceById(devList).getData();
|
||||||
|
Map<String, CsEquipmentDeliveryDTO> devsMap = dev.stream().collect(Collectors.toMap(CsEquipmentDeliveryDTO::getId, Function.identity()));
|
||||||
|
|
||||||
|
lineParam.getLineId().forEach(lineId -> {
|
||||||
|
String devId = lineMap.get(lineId).getDeviceId();
|
||||||
|
CsLinePO po = lineMap.get(lineId);
|
||||||
|
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataI.class);
|
||||||
|
//2-50次 谐波电流有效值
|
||||||
|
influxQueryWrapper.samePrefixAndSuffix("Pq_HarmI_", "i_", HarmonicTimesUtil.harmonicTimesList(2, 50, 1));
|
||||||
|
influxQueryWrapper.eq(DataI::getLineId, lineId)
|
||||||
|
.eq(DataI::getProcess,Integer.toString(devsMap.get(devId).getProcess()))
|
||||||
|
.select(DataI::getLineId)
|
||||||
|
.select(DataI::getPhasicType)
|
||||||
|
.select(DataI::getValueType)
|
||||||
|
//电流负序
|
||||||
|
.select("Pq_SeqNegI","i_neg")
|
||||||
|
//电流正序
|
||||||
|
.select("Pq_SeqPosI","i_pos")
|
||||||
|
//电流总谐波畸变率
|
||||||
|
.select("Pq_ThdI","i_thd")
|
||||||
|
//电流负序不平衡度
|
||||||
|
.select("Pq_UnbalNegI","i_unbalance")
|
||||||
|
//电流零序
|
||||||
|
.select("Pq_SeqZeroI","i_zero")
|
||||||
|
//电流总有效值
|
||||||
|
.select("Pq_RmsI","rms")
|
||||||
|
//电流基波有效值
|
||||||
|
.select("Pq_RmsFundI","i_1")
|
||||||
|
.between(DataI::getTime, lineParam.getStartTime(), lineParam.getEndTime())
|
||||||
|
.eq(DataI::getQualityFlag, "0");
|
||||||
|
if (CollUtil.isNotEmpty(lineParam.getPhasicType())) {
|
||||||
|
influxQueryWrapper.regular(DataI::getPhasicType, lineParam.getPhasicType());
|
||||||
}
|
}
|
||||||
|
if (Objects.isNull(po.getLineNo())) {
|
||||||
|
influxQueryWrapper.eq(DataI::getCldid,Integer.toString(po.getClDid()));
|
||||||
|
} else {
|
||||||
|
influxQueryWrapper.eq(DataI::getCldid,Integer.toString(po.getLineNo()));
|
||||||
|
}
|
||||||
|
result.addAll(dataIMapper.selectByQueryWrapper(influxQueryWrapper));
|
||||||
});
|
});
|
||||||
|
if (CollectionUtil.isNotEmpty(result)) {
|
||||||
|
result.forEach(item -> {
|
||||||
|
String newType = PHASE_MAPPING.get(item.getPhasicType());
|
||||||
|
if (newType != null) {
|
||||||
|
item.setPhasicType(newType);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,10 @@ import cn.hutool.core.collection.CollUtil;
|
|||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||||
import com.njcn.common.utils.HarmonicTimesUtil;
|
import com.njcn.common.utils.HarmonicTimesUtil;
|
||||||
|
import com.njcn.csdevice.api.CsLineFeignClient;
|
||||||
|
import com.njcn.csdevice.api.EquipmentFeignClient;
|
||||||
|
import com.njcn.csdevice.pojo.dto.CsEquipmentDeliveryDTO;
|
||||||
|
import com.njcn.csdevice.pojo.po.CsLinePO;
|
||||||
import com.njcn.dataProcess.dao.imapper.DataInharmIMapper;
|
import com.njcn.dataProcess.dao.imapper.DataInharmIMapper;
|
||||||
import com.njcn.dataProcess.dao.relation.mapper.RStatDataInHarmIRelationMapper;
|
import com.njcn.dataProcess.dao.relation.mapper.RStatDataInHarmIRelationMapper;
|
||||||
import com.njcn.dataProcess.dto.DataInharmIDTO;
|
import com.njcn.dataProcess.dto.DataInharmIDTO;
|
||||||
@@ -21,10 +25,12 @@ import org.apache.commons.collections4.ListUtils;
|
|||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -40,6 +46,10 @@ public class InfluxdbDataInharmIImpl extends MppServiceImpl<RStatDataInHarmIRela
|
|||||||
|
|
||||||
private final DataInharmIMapper dataInharmIMapper;
|
private final DataInharmIMapper dataInharmIMapper;
|
||||||
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
|
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
|
||||||
|
@Resource
|
||||||
|
private CsLineFeignClient csLineFeignClient;
|
||||||
|
@Resource
|
||||||
|
private EquipmentFeignClient equipmentFeignClient;
|
||||||
|
|
||||||
private static final Map<String, String> PHASE_MAPPING = new HashMap<String, String>() {{
|
private static final Map<String, String> PHASE_MAPPING = new HashMap<String, String>() {{
|
||||||
put("AB", "A");
|
put("AB", "A");
|
||||||
@@ -69,7 +79,12 @@ public class InfluxdbDataInharmIImpl extends MppServiceImpl<RStatDataInHarmIRela
|
|||||||
@Override
|
@Override
|
||||||
public List<DataInHarmIDto> getRawData(LineCountEvaluateParam lineParam) {
|
public List<DataInHarmIDto> getRawData(LineCountEvaluateParam lineParam) {
|
||||||
List<DataInHarmIDto> result = new ArrayList<>();
|
List<DataInHarmIDto> result = new ArrayList<>();
|
||||||
List<DataInharmI> list = getMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(),lineParam.getAbnormalTime(),lineParam.getDataType());
|
List<DataInharmI> list;
|
||||||
|
if (Objects.equals(lineParam.getType(), 2)) {
|
||||||
|
list = getWlMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(),lineParam.getAbnormalTime(),lineParam.getDataType());
|
||||||
|
} else {
|
||||||
|
list = getMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(),lineParam.getAbnormalTime(),lineParam.getDataType());
|
||||||
|
}
|
||||||
list.forEach(item->{
|
list.forEach(item->{
|
||||||
DataInHarmIDto dto = new DataInHarmIDto();
|
DataInHarmIDto dto = new DataInHarmIDto();
|
||||||
BeanUtils.copyProperties(item,dto);
|
BeanUtils.copyProperties(item,dto);
|
||||||
@@ -82,7 +97,12 @@ public class InfluxdbDataInharmIImpl extends MppServiceImpl<RStatDataInHarmIRela
|
|||||||
@Override
|
@Override
|
||||||
public List<CommonMinuteDto> getBaseData(LineCountEvaluateParam lineParam) {
|
public List<CommonMinuteDto> getBaseData(LineCountEvaluateParam lineParam) {
|
||||||
List<CommonMinuteDto> result = new ArrayList<>();
|
List<CommonMinuteDto> result = new ArrayList<>();
|
||||||
List<DataInharmI> data = getMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(),lineParam.getAbnormalTime(),lineParam.getDataType());
|
List<DataInharmI> data;
|
||||||
|
if (Objects.equals(lineParam.getType(), 2)) {
|
||||||
|
data = getWlMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(),lineParam.getAbnormalTime(),lineParam.getDataType());
|
||||||
|
} else {
|
||||||
|
data = getMinuteData(lineParam.getLineId(), lineParam.getStartTime(), lineParam.getEndTime(),lineParam.getAbnormalTime(),lineParam.getDataType());
|
||||||
|
}
|
||||||
if (CollectionUtil.isNotEmpty(data)) {
|
if (CollectionUtil.isNotEmpty(data)) {
|
||||||
String time = TimeUtils.StringTimeToString(lineParam.getStartTime());
|
String time = TimeUtils.StringTimeToString(lineParam.getStartTime());
|
||||||
//以监测点分组
|
//以监测点分组
|
||||||
@@ -250,14 +270,49 @@ public class InfluxdbDataInharmIImpl extends MppServiceImpl<RStatDataInHarmIRela
|
|||||||
result.addAll(dataList);
|
result.addAll(dataList);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (CollectionUtil.isNotEmpty(result)) {
|
return result;
|
||||||
result.forEach(item -> {
|
}
|
||||||
String newType = PHASE_MAPPING.get(item.getPhasicType());
|
|
||||||
if (newType != null) {
|
public List<DataInharmI> getWlMinuteData(List<String> lineList, String startTime, String endTime, Map<String,List<String>> timeMap, Boolean dataType) {
|
||||||
item.setPhasicType(newType);
|
List<DataInharmI> result = new ArrayList<>();
|
||||||
|
if (CollectionUtil.isNotEmpty(lineList)) {
|
||||||
|
//获取监测点信息
|
||||||
|
List<CsLinePO> line = csLineFeignClient.queryLineById(lineList).getData();
|
||||||
|
Map<String, CsLinePO> lineMap = line.stream().collect(Collectors.toMap(CsLinePO::getLineId, Function.identity()));
|
||||||
|
//获取设备信息
|
||||||
|
List<String> devList = line.stream().map(CsLinePO::getDeviceId).distinct().collect(Collectors.toList());
|
||||||
|
List<CsEquipmentDeliveryDTO> dev = equipmentFeignClient.queryDeviceById(devList).getData();
|
||||||
|
Map<String, CsEquipmentDeliveryDTO> devsMap = dev.stream().collect(Collectors.toMap(CsEquipmentDeliveryDTO::getId, Function.identity()));
|
||||||
|
lineList.forEach(lineId -> {
|
||||||
|
String devId = lineMap.get(lineId).getDeviceId();
|
||||||
|
CsLinePO po = lineMap.get(lineId);
|
||||||
|
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataInharmI.class);
|
||||||
|
//2-50次 间谐波电流有效值
|
||||||
|
influxQueryWrapper.samePrefixAndSuffix("Pq_InHarmIAmp_", "i_", HarmonicTimesUtil.harmonicTimesList(1, 50, 1));
|
||||||
|
influxQueryWrapper.eq(DataInharmI::getLineId, lineId)
|
||||||
|
.eq(DataInharmI::getProcess,Integer.toString(devsMap.get(devId).getProcess()))
|
||||||
|
.select(DataInharmI::getLineId)
|
||||||
|
.select(DataInharmI::getPhasicType)
|
||||||
|
.select(DataInharmI::getValueType)
|
||||||
|
.between(DataInharmI::getTime, startTime, endTime)
|
||||||
|
.eq(DataInharmI::getQualityFlag, "0");
|
||||||
|
if (Objects.isNull(po.getLineNo())) {
|
||||||
|
influxQueryWrapper.eq(DataInharmI::getCldid,Integer.toString(po.getClDid()));
|
||||||
|
} else {
|
||||||
|
influxQueryWrapper.eq(DataInharmI::getCldid,Integer.toString(po.getLineNo()));
|
||||||
}
|
}
|
||||||
|
result.addAll(dataInharmIMapper.selectByQueryWrapper(influxQueryWrapper));
|
||||||
});
|
});
|
||||||
|
if (CollectionUtil.isNotEmpty(result)) {
|
||||||
|
result.forEach(item -> {
|
||||||
|
String newType = PHASE_MAPPING.get(item.getPhasicType());
|
||||||
|
if (newType != null) {
|
||||||
|
item.setPhasicType(newType);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,10 @@ import cn.hutool.core.collection.CollUtil;
|
|||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||||
import com.njcn.common.utils.HarmonicTimesUtil;
|
import com.njcn.common.utils.HarmonicTimesUtil;
|
||||||
|
import com.njcn.csdevice.api.CsLineFeignClient;
|
||||||
|
import com.njcn.csdevice.api.EquipmentFeignClient;
|
||||||
|
import com.njcn.csdevice.pojo.dto.CsEquipmentDeliveryDTO;
|
||||||
|
import com.njcn.csdevice.pojo.po.CsLinePO;
|
||||||
import com.njcn.dataProcess.dao.imapper.DataInharmVMapper;
|
import com.njcn.dataProcess.dao.imapper.DataInharmVMapper;
|
||||||
import com.njcn.dataProcess.dao.relation.mapper.RStatDataInHarmVRelationMapper;
|
import com.njcn.dataProcess.dao.relation.mapper.RStatDataInHarmVRelationMapper;
|
||||||
import com.njcn.dataProcess.dto.DataInharmVDTO;
|
import com.njcn.dataProcess.dto.DataInharmVDTO;
|
||||||
@@ -22,10 +26,12 @@ import org.apache.commons.collections4.ListUtils;
|
|||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
|
||||||
@@ -41,7 +47,12 @@ import java.util.stream.Collectors;
|
|||||||
public class InfluxdbDataInharmVImpl extends MppServiceImpl<RStatDataInHarmVRelationMapper, RStatDataInHarmVD> implements IDataInharmV {
|
public class InfluxdbDataInharmVImpl extends MppServiceImpl<RStatDataInHarmVRelationMapper, RStatDataInHarmVD> implements IDataInharmV {
|
||||||
|
|
||||||
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
|
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
|
||||||
|
|
||||||
private final DataInharmVMapper dataInharmVMapper;
|
private final DataInharmVMapper dataInharmVMapper;
|
||||||
|
@Resource
|
||||||
|
private CsLineFeignClient csLineFeignClient;
|
||||||
|
@Resource
|
||||||
|
private EquipmentFeignClient equipmentFeignClient;
|
||||||
|
|
||||||
private static final Map<String, String> PHASE_MAPPING = new HashMap<String, String>() {{
|
private static final Map<String, String> PHASE_MAPPING = new HashMap<String, String>() {{
|
||||||
put("AB", "A");
|
put("AB", "A");
|
||||||
@@ -70,7 +81,12 @@ public class InfluxdbDataInharmVImpl extends MppServiceImpl<RStatDataInHarmVRela
|
|||||||
@Override
|
@Override
|
||||||
public List<DataHarmDto> getRawData(LineCountEvaluateParam lineParam) {
|
public List<DataHarmDto> getRawData(LineCountEvaluateParam lineParam) {
|
||||||
List<DataHarmDto> result = new ArrayList<>();
|
List<DataHarmDto> result = new ArrayList<>();
|
||||||
List<DataInharmV> list = getMinuteData(lineParam);
|
List<DataInharmV> list;
|
||||||
|
if (Objects.equals(lineParam.getType(), 2)) {
|
||||||
|
list = getWlMinuteData(lineParam);
|
||||||
|
} else {
|
||||||
|
list = getMinuteData(lineParam);
|
||||||
|
}
|
||||||
list.forEach(item->{
|
list.forEach(item->{
|
||||||
DataHarmDto dto = new DataHarmDto();
|
DataHarmDto dto = new DataHarmDto();
|
||||||
BeanUtils.copyProperties(item,dto);
|
BeanUtils.copyProperties(item,dto);
|
||||||
@@ -83,7 +99,12 @@ public class InfluxdbDataInharmVImpl extends MppServiceImpl<RStatDataInHarmVRela
|
|||||||
@Override
|
@Override
|
||||||
public List<CommonMinuteDto> getBaseData(LineCountEvaluateParam lineParam) {
|
public List<CommonMinuteDto> getBaseData(LineCountEvaluateParam lineParam) {
|
||||||
List<CommonMinuteDto> result = new ArrayList<>();
|
List<CommonMinuteDto> result = new ArrayList<>();
|
||||||
List<DataInharmV> data = getMinuteData(lineParam);
|
List<DataInharmV> data;
|
||||||
|
if (Objects.equals(lineParam.getType(), 2)) {
|
||||||
|
data = getWlMinuteData(lineParam);
|
||||||
|
} else {
|
||||||
|
data = getMinuteData(lineParam);
|
||||||
|
}
|
||||||
if (CollectionUtil.isNotEmpty(data)) {
|
if (CollectionUtil.isNotEmpty(data)) {
|
||||||
String time = TimeUtils.StringTimeToString(lineParam.getStartTime());
|
String time = TimeUtils.StringTimeToString(lineParam.getStartTime());
|
||||||
//以监测点分组
|
//以监测点分组
|
||||||
@@ -254,14 +275,56 @@ public class InfluxdbDataInharmVImpl extends MppServiceImpl<RStatDataInHarmVRela
|
|||||||
result.addAll(dataList);
|
result.addAll(dataList);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (CollectionUtil.isNotEmpty(result)) {
|
return result;
|
||||||
result.forEach(item -> {
|
}
|
||||||
String newType = PHASE_MAPPING.get(item.getPhasicType());
|
|
||||||
if (newType != null) {
|
public List<DataInharmV> getWlMinuteData(LineCountEvaluateParam lineParam) {
|
||||||
item.setPhasicType(newType);
|
List<DataInharmV> result = new ArrayList<>();
|
||||||
|
if (CollectionUtil.isNotEmpty(lineParam.getLineId())) {
|
||||||
|
//获取监测点信息
|
||||||
|
List<CsLinePO> line = csLineFeignClient.queryLineById(lineParam.getLineId()).getData();
|
||||||
|
Map<String, CsLinePO> lineMap = line.stream().collect(Collectors.toMap(CsLinePO::getLineId, Function.identity()));
|
||||||
|
//获取设备信息
|
||||||
|
List<String> devList = line.stream().map(CsLinePO::getDeviceId).distinct().collect(Collectors.toList());
|
||||||
|
List<CsEquipmentDeliveryDTO> dev = equipmentFeignClient.queryDeviceById(devList).getData();
|
||||||
|
Map<String, CsEquipmentDeliveryDTO> devsMap = dev.stream().collect(Collectors.toMap(CsEquipmentDeliveryDTO::getId, Function.identity()));
|
||||||
|
lineParam.getLineId().forEach(lineId -> {
|
||||||
|
String devId = lineMap.get(lineId).getDeviceId();
|
||||||
|
CsLinePO po = lineMap.get(lineId);
|
||||||
|
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataInharmV.class);
|
||||||
|
//2-50次 间谐波电流有效值
|
||||||
|
influxQueryWrapper.eq(DataInharmV::getLineId, lineId)
|
||||||
|
.eq(DataInharmV::getProcess,Integer.toString(devsMap.get(devId).getProcess()))
|
||||||
|
.select(DataInharmV::getLineId)
|
||||||
|
.select(DataInharmV::getPhasicType)
|
||||||
|
.select(DataInharmV::getValueType)
|
||||||
|
.between(DataInharmV::getTime, lineParam.getStartTime(), lineParam.getEndTime())
|
||||||
|
.eq(DataInharmV::getQualityFlag, "0");
|
||||||
|
if (Objects.isNull(po.getLineNo())) {
|
||||||
|
influxQueryWrapper.eq(DataInharmV::getCldid,Integer.toString(po.getClDid()));
|
||||||
|
} else {
|
||||||
|
influxQueryWrapper.eq(DataInharmV::getCldid,Integer.toString(po.getLineNo()));
|
||||||
}
|
}
|
||||||
|
//判断接线方式 (0-星型 1-角型 2-V型) 星型是相电压 角型或者v型是线电压
|
||||||
|
if (Objects.equals(po.getConType(),0)) {
|
||||||
|
//0.5-49.5次 间谐波相电压有效值
|
||||||
|
influxQueryWrapper.samePrefixAndSuffix("Pq_InHarmURV_", "v_", HarmonicTimesUtil.harmonicTimesList(1, 50, 1));
|
||||||
|
} else {
|
||||||
|
//0.5-49.5次 间谐波线电压有效值
|
||||||
|
influxQueryWrapper.samePrefixAndSuffix("Pq_InHarmLURV_", "v_", HarmonicTimesUtil.harmonicTimesList(1, 50, 1));
|
||||||
|
}
|
||||||
|
result.addAll(dataInharmVMapper.selectByQueryWrapper(influxQueryWrapper));
|
||||||
});
|
});
|
||||||
|
if (CollectionUtil.isNotEmpty(result)) {
|
||||||
|
result.forEach(item -> {
|
||||||
|
String newType = PHASE_MAPPING.get(item.getPhasicType());
|
||||||
|
if (newType != null) {
|
||||||
|
item.setPhasicType(newType);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,9 +2,11 @@ package com.njcn.dataProcess.service.impl.influxdb;
|
|||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import com.alibaba.nacos.shaded.com.google.common.reflect.TypeToken;
|
|
||||||
import com.alibaba.nacos.shaded.com.google.gson.Gson;
|
|
||||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||||
|
import com.njcn.csdevice.api.CsLineFeignClient;
|
||||||
|
import com.njcn.csdevice.api.EquipmentFeignClient;
|
||||||
|
import com.njcn.csdevice.pojo.dto.CsEquipmentDeliveryDTO;
|
||||||
|
import com.njcn.csdevice.pojo.po.CsLinePO;
|
||||||
import com.njcn.dataProcess.dao.imapper.DataPltMapper;
|
import com.njcn.dataProcess.dao.imapper.DataPltMapper;
|
||||||
import com.njcn.dataProcess.dao.relation.mapper.RStatDataPltRelationMapper;
|
import com.njcn.dataProcess.dao.relation.mapper.RStatDataPltRelationMapper;
|
||||||
import com.njcn.dataProcess.dto.DataPltDTO;
|
import com.njcn.dataProcess.dto.DataPltDTO;
|
||||||
@@ -17,18 +19,17 @@ import com.njcn.dataProcess.pojo.po.RStatDataPltD;
|
|||||||
import com.njcn.dataProcess.service.IDataPlt;
|
import com.njcn.dataProcess.service.IDataPlt;
|
||||||
import com.njcn.dataProcess.util.TimeUtils;
|
import com.njcn.dataProcess.util.TimeUtils;
|
||||||
import com.njcn.influx.query.InfluxQueryWrapper;
|
import com.njcn.influx.query.InfluxQueryWrapper;
|
||||||
import com.njcn.redis.utils.RedisUtil;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.apache.commons.collections4.ListUtils;
|
import org.apache.commons.collections4.ListUtils;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.lang.reflect.Type;
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -43,19 +44,19 @@ import java.util.stream.Collectors;
|
|||||||
public class InfluxdbDataPltImpl extends MppServiceImpl<RStatDataPltRelationMapper, RStatDataPltD> implements IDataPlt {
|
public class InfluxdbDataPltImpl extends MppServiceImpl<RStatDataPltRelationMapper, RStatDataPltD> implements IDataPlt {
|
||||||
|
|
||||||
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
|
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
|
||||||
|
|
||||||
private final DataPltMapper dataPltMapper;
|
private final DataPltMapper dataPltMapper;
|
||||||
|
@Resource
|
||||||
|
private CsLineFeignClient csLineFeignClient;
|
||||||
|
@Resource
|
||||||
|
private EquipmentFeignClient equipmentFeignClient;
|
||||||
|
|
||||||
private static final Map<String, String> PHASE_MAPPING = new HashMap<String, String>() {{
|
private static final Map<String, String> PHASE_MAPPING = new HashMap<String, String>() {{
|
||||||
put("AB", "A");
|
put("AB", "A");
|
||||||
put("BC", "B");
|
put("BC", "B");
|
||||||
put("CA", "C");
|
put("CA", "C");
|
||||||
put("M", "T");
|
put("M", "T");
|
||||||
}};
|
}};
|
||||||
@Resource
|
|
||||||
private RedisUtil redisUtil;
|
|
||||||
private static final Set<String> LINE_VOLTAGE_TYPES =
|
|
||||||
Collections.unmodifiableSet(new HashSet<>(Arrays.asList("AB", "BC", "CA", "T")));
|
|
||||||
private static final Set<String> PHASE_VOLTAGE_TYPES =
|
|
||||||
Collections.unmodifiableSet(new HashSet<>(Arrays.asList("A", "B", "C", "T")));
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void batchInsertion(List<DataPltDTO> dataPltDTOList) {
|
public void batchInsertion(List<DataPltDTO> dataPltDTOList) {
|
||||||
@@ -78,7 +79,12 @@ public class InfluxdbDataPltImpl extends MppServiceImpl<RStatDataPltRelationMapp
|
|||||||
@Override
|
@Override
|
||||||
public List<DataPltDto> getRawData(LineCountEvaluateParam lineParam) {
|
public List<DataPltDto> getRawData(LineCountEvaluateParam lineParam) {
|
||||||
List<DataPltDto> result = new ArrayList<>();
|
List<DataPltDto> result = new ArrayList<>();
|
||||||
List<DataPlt> list = getMinuteDataPlt(lineParam);
|
List<DataPlt> list;
|
||||||
|
if (Objects.equals(lineParam.getType(), 2)) {
|
||||||
|
list = getWlMinuteDataPlt(lineParam);
|
||||||
|
} else {
|
||||||
|
list = getMinuteDataPlt(lineParam);
|
||||||
|
}
|
||||||
list.forEach(item->{
|
list.forEach(item->{
|
||||||
DataPltDto dto = new DataPltDto();
|
DataPltDto dto = new DataPltDto();
|
||||||
BeanUtils.copyProperties(item,dto);
|
BeanUtils.copyProperties(item,dto);
|
||||||
@@ -91,7 +97,12 @@ public class InfluxdbDataPltImpl extends MppServiceImpl<RStatDataPltRelationMapp
|
|||||||
@Override
|
@Override
|
||||||
public List<CommonMinuteDto> getBaseData(LineCountEvaluateParam lineParam) {
|
public List<CommonMinuteDto> getBaseData(LineCountEvaluateParam lineParam) {
|
||||||
List<CommonMinuteDto> result = new ArrayList<>();
|
List<CommonMinuteDto> result = new ArrayList<>();
|
||||||
List<DataPlt> data = getMinuteDataPlt(lineParam);
|
List<DataPlt> data;
|
||||||
|
if (Objects.equals(lineParam.getType(), 2)) {
|
||||||
|
data = getWlMinuteDataPlt(lineParam);
|
||||||
|
} else {
|
||||||
|
data = getMinuteDataPlt(lineParam);
|
||||||
|
}
|
||||||
if (CollectionUtil.isNotEmpty(data)) {
|
if (CollectionUtil.isNotEmpty(data)) {
|
||||||
String time = TimeUtils.StringTimeToString(lineParam.getStartTime());
|
String time = TimeUtils.StringTimeToString(lineParam.getStartTime());
|
||||||
//以监测点分组
|
//以监测点分组
|
||||||
@@ -162,13 +173,6 @@ public class InfluxdbDataPltImpl extends MppServiceImpl<RStatDataPltRelationMapp
|
|||||||
public List<DataPlt> getMinuteDataPlt(LineCountEvaluateParam lineParam) {
|
public List<DataPlt> getMinuteDataPlt(LineCountEvaluateParam lineParam) {
|
||||||
List<DataPlt> dataList;
|
List<DataPlt> dataList;
|
||||||
List<DataPlt> result = new ArrayList<>();
|
List<DataPlt> result = new ArrayList<>();
|
||||||
List<DataPlt> data = new ArrayList<>();
|
|
||||||
//获取监测点、接线方式数据
|
|
||||||
Type type = new TypeToken<Map<String, Integer>>(){}.getType();
|
|
||||||
Map<String, Integer> map = new Gson().fromJson(
|
|
||||||
String.valueOf(redisUtil.getObjectByKey("wlLineDetail")),
|
|
||||||
type
|
|
||||||
);
|
|
||||||
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataPlt.class);
|
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataPlt.class);
|
||||||
influxQueryWrapper.regular(DataPlt::getLineId, lineParam.getLineId())
|
influxQueryWrapper.regular(DataPlt::getLineId, lineParam.getLineId())
|
||||||
.select(DataPlt::getLineId)
|
.select(DataPlt::getLineId)
|
||||||
@@ -218,24 +222,51 @@ public class InfluxdbDataPltImpl extends MppServiceImpl<RStatDataPltRelationMapp
|
|||||||
result.addAll(dataList);
|
result.addAll(dataList);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (CollectionUtil.isNotEmpty(result)) {
|
return result;
|
||||||
if (!Objects.isNull(map)) {
|
}
|
||||||
//现根据监测点分组,然后根据接线方式排除多于数据,在修改相别
|
|
||||||
Map<String, List<DataPlt>> lineMap = result.stream().collect(Collectors.groupingBy(DataPlt::getLineId));
|
public List<DataPlt> getWlMinuteDataPlt(LineCountEvaluateParam lineParam) {
|
||||||
lineMap.forEach((k,v)->{
|
List<DataPlt> result = new ArrayList<>();
|
||||||
if (Objects.isNull(map.get(k))) {
|
if (CollectionUtil.isNotEmpty(lineParam.getLineId())) {
|
||||||
return;
|
//获取监测点信息
|
||||||
}
|
List<CsLinePO> line = csLineFeignClient.queryLineById(lineParam.getLineId()).getData();
|
||||||
Integer conType = map.get(k);
|
Map<String, CsLinePO> lineMap = line.stream().collect(Collectors.toMap(CsLinePO::getLineId, Function.identity()));
|
||||||
Set<String> validPhasicTypes = (conType != 0) ? LINE_VOLTAGE_TYPES : PHASE_VOLTAGE_TYPES;
|
//获取设备信息
|
||||||
List<DataPlt> result2 = v.stream().filter(item -> validPhasicTypes.contains(item.getPhasicType())).collect(Collectors.toList());
|
List<String> devList = line.stream().map(CsLinePO::getDeviceId).distinct().collect(Collectors.toList());
|
||||||
data.addAll(result2);
|
List<CsEquipmentDeliveryDTO> dev = equipmentFeignClient.queryDeviceById(devList).getData();
|
||||||
});
|
Map<String, CsEquipmentDeliveryDTO> devsMap = dev.stream().collect(Collectors.toMap(CsEquipmentDeliveryDTO::getId, Function.identity()));
|
||||||
} else {
|
|
||||||
data.addAll(result);
|
lineParam.getLineId().forEach(lineId -> {
|
||||||
}
|
String devId = lineMap.get(lineId).getDeviceId();
|
||||||
if (CollectionUtil.isNotEmpty(data)) {
|
CsLinePO po = lineMap.get(lineId);
|
||||||
data.forEach(item -> {
|
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataPlt.class);
|
||||||
|
influxQueryWrapper.eq(DataPlt::getLineId, lineId)
|
||||||
|
.eq(DataPlt::getProcess,Integer.toString(devsMap.get(devId).getProcess()))
|
||||||
|
.select(DataPlt::getLineId)
|
||||||
|
.select(DataPlt::getPhasicType)
|
||||||
|
.select(DataPlt::getValueType)
|
||||||
|
.between(DataPlt::getTime, lineParam.getStartTime(), lineParam.getEndTime())
|
||||||
|
.eq(DataPlt::getQualityFlag, "0");
|
||||||
|
if (CollUtil.isNotEmpty(lineParam.getPhasicType())) {
|
||||||
|
influxQueryWrapper.regular(DataPlt::getPhasicType, lineParam.getPhasicType());
|
||||||
|
}
|
||||||
|
if (Objects.isNull(po.getLineNo())) {
|
||||||
|
influxQueryWrapper.eq(DataPlt::getCldid,Integer.toString(po.getClDid()));
|
||||||
|
} else {
|
||||||
|
influxQueryWrapper.eq(DataPlt::getCldid,Integer.toString(po.getLineNo()));
|
||||||
|
}
|
||||||
|
//判断接线方式 (0-星型 1-角型 2-V型) 星型是相电压 角型或者v型是线电压
|
||||||
|
if (Objects.equals(po.getConType(),0)) {
|
||||||
|
//相电压长时闪变
|
||||||
|
influxQueryWrapper.select("Pq_Plt","plt");
|
||||||
|
} else {
|
||||||
|
//线电压长时闪变
|
||||||
|
influxQueryWrapper.select("Pq_LPlt","plt");
|
||||||
|
}
|
||||||
|
result.addAll(dataPltMapper.selectByQueryWrapper(influxQueryWrapper));
|
||||||
|
});
|
||||||
|
if (CollectionUtil.isNotEmpty(result)) {
|
||||||
|
result.forEach(item -> {
|
||||||
String newType = PHASE_MAPPING.get(item.getPhasicType());
|
String newType = PHASE_MAPPING.get(item.getPhasicType());
|
||||||
if (newType != null) {
|
if (newType != null) {
|
||||||
item.setPhasicType(newType);
|
item.setPhasicType(newType);
|
||||||
@@ -243,6 +274,7 @@ public class InfluxdbDataPltImpl extends MppServiceImpl<RStatDataPltRelationMapp
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return data;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,10 +4,12 @@ import cn.hutool.core.collection.CollUtil;
|
|||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.core.collection.ListUtil;
|
import cn.hutool.core.collection.ListUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.alibaba.nacos.shaded.com.google.common.reflect.TypeToken;
|
|
||||||
import com.alibaba.nacos.shaded.com.google.gson.Gson;
|
|
||||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||||
import com.njcn.common.utils.HarmonicTimesUtil;
|
import com.njcn.common.utils.HarmonicTimesUtil;
|
||||||
|
import com.njcn.csdevice.api.CsLineFeignClient;
|
||||||
|
import com.njcn.csdevice.api.EquipmentFeignClient;
|
||||||
|
import com.njcn.csdevice.pojo.dto.CsEquipmentDeliveryDTO;
|
||||||
|
import com.njcn.csdevice.pojo.po.CsLinePO;
|
||||||
import com.njcn.dataProcess.constant.InfluxDBTableConstant;
|
import com.njcn.dataProcess.constant.InfluxDBTableConstant;
|
||||||
import com.njcn.dataProcess.constant.PhaseType;
|
import com.njcn.dataProcess.constant.PhaseType;
|
||||||
import com.njcn.dataProcess.dao.imapper.DataVMapper;
|
import com.njcn.dataProcess.dao.imapper.DataVMapper;
|
||||||
@@ -26,14 +28,12 @@ import com.njcn.dataProcess.service.IDataV;
|
|||||||
import com.njcn.dataProcess.util.TimeUtils;
|
import com.njcn.dataProcess.util.TimeUtils;
|
||||||
import com.njcn.influx.constant.InfluxDbSqlConstant;
|
import com.njcn.influx.constant.InfluxDbSqlConstant;
|
||||||
import com.njcn.influx.query.InfluxQueryWrapper;
|
import com.njcn.influx.query.InfluxQueryWrapper;
|
||||||
import com.njcn.redis.utils.RedisUtil;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.collections4.ListUtils;
|
import org.apache.commons.collections4.ListUtils;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.lang.reflect.Type;
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
@@ -51,20 +51,20 @@ import java.util.stream.Collectors;
|
|||||||
public class InfluxdbDataVImpl extends MppServiceImpl<RStatDataVRelationMapper, RStatDataVD> implements IDataV {
|
public class InfluxdbDataVImpl extends MppServiceImpl<RStatDataVRelationMapper, RStatDataVD> implements IDataV {
|
||||||
|
|
||||||
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
|
private final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
|
||||||
|
@Resource
|
||||||
|
private CsLineFeignClient csLineFeignClient;
|
||||||
|
@Resource
|
||||||
|
private EquipmentFeignClient equipmentFeignClient;
|
||||||
|
|
||||||
private static final Map<String, String> PHASE_MAPPING = new HashMap<String, String>() {{
|
private static final Map<String, String> PHASE_MAPPING = new HashMap<String, String>() {{
|
||||||
put("AB", "A");
|
put("AB", "A");
|
||||||
put("BC", "B");
|
put("BC", "B");
|
||||||
put("CA", "C");
|
put("CA", "C");
|
||||||
put("M", "T");
|
put("M", "T");
|
||||||
}};
|
}};
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private DataVMapper dataVMapper;
|
private DataVMapper dataVMapper;
|
||||||
@Resource
|
|
||||||
private RedisUtil redisUtil;
|
|
||||||
private static final Set<String> LINE_VOLTAGE_TYPES =
|
|
||||||
Collections.unmodifiableSet(new HashSet<>(Arrays.asList("AB", "BC", "CA", "T")));
|
|
||||||
private static final Set<String> PHASE_VOLTAGE_TYPES =
|
|
||||||
Collections.unmodifiableSet(new HashSet<>(Arrays.asList("A", "B", "C", "T")));
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 注意:influxdb不推荐采用in函数的方式批量查询监测点的数据,效率很低,容易造成崩溃,故每次单测点查询
|
* 注意:influxdb不推荐采用in函数的方式批量查询监测点的数据,效率很低,容易造成崩溃,故每次单测点查询
|
||||||
@@ -137,7 +137,12 @@ public class InfluxdbDataVImpl extends MppServiceImpl<RStatDataVRelationMapper,
|
|||||||
@Override
|
@Override
|
||||||
public List<DataVDto> getRawData(LineCountEvaluateParam lineParam) {
|
public List<DataVDto> getRawData(LineCountEvaluateParam lineParam) {
|
||||||
List<DataVDto> result = new ArrayList<>();
|
List<DataVDto> result = new ArrayList<>();
|
||||||
List<DataV> list = getMinuteDataV(lineParam);
|
List<DataV> list;
|
||||||
|
if (Objects.equals(lineParam.getType(), 2)) {
|
||||||
|
list = getWlMinuteDataV(lineParam);
|
||||||
|
} else {
|
||||||
|
list = getMinuteDataV(lineParam);
|
||||||
|
}
|
||||||
if (CollectionUtil.isNotEmpty(list)) {
|
if (CollectionUtil.isNotEmpty(list)) {
|
||||||
list.forEach(item -> {
|
list.forEach(item -> {
|
||||||
DataVDto dto = new DataVDto();
|
DataVDto dto = new DataVDto();
|
||||||
@@ -221,7 +226,12 @@ public class InfluxdbDataVImpl extends MppServiceImpl<RStatDataVRelationMapper,
|
|||||||
@Override
|
@Override
|
||||||
public List<CommonMinuteDto> getBaseData(LineCountEvaluateParam lineParam) {
|
public List<CommonMinuteDto> getBaseData(LineCountEvaluateParam lineParam) {
|
||||||
List<CommonMinuteDto> result = new ArrayList<>();
|
List<CommonMinuteDto> result = new ArrayList<>();
|
||||||
List<DataV> dataVList = getMinuteDataV(lineParam);
|
List<DataV> dataVList;
|
||||||
|
if (Objects.equals(lineParam.getType(), 2)) {
|
||||||
|
dataVList = getWlMinuteDataV(lineParam);
|
||||||
|
} else {
|
||||||
|
dataVList = getMinuteDataV(lineParam);
|
||||||
|
}
|
||||||
if (CollectionUtil.isNotEmpty(dataVList)) {
|
if (CollectionUtil.isNotEmpty(dataVList)) {
|
||||||
String time = TimeUtils.StringTimeToString(lineParam.getStartTime());
|
String time = TimeUtils.StringTimeToString(lineParam.getStartTime());
|
||||||
//以监测点分组
|
//以监测点分组
|
||||||
@@ -446,13 +456,6 @@ public class InfluxdbDataVImpl extends MppServiceImpl<RStatDataVRelationMapper,
|
|||||||
*/
|
*/
|
||||||
public List<DataV> getMinuteDataV(LineCountEvaluateParam lineParam) {
|
public List<DataV> getMinuteDataV(LineCountEvaluateParam lineParam) {
|
||||||
List<DataV> result = new ArrayList<>();
|
List<DataV> result = new ArrayList<>();
|
||||||
List<DataV> data = new ArrayList<>();
|
|
||||||
//获取监测点、接线方式数据
|
|
||||||
Type type = new TypeToken<Map<String, Integer>>(){}.getType();
|
|
||||||
Map<String, Integer> map = new Gson().fromJson(
|
|
||||||
String.valueOf(redisUtil.getObjectByKey("wlLineDetail")),
|
|
||||||
type
|
|
||||||
);
|
|
||||||
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataV.class);
|
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataV.class);
|
||||||
influxQueryWrapper.samePrefixAndSuffix(InfluxDbSqlConstant.V, InfluxDbSqlConstant.V, HarmonicTimesUtil.harmonicTimesList(1, 50, 1));
|
influxQueryWrapper.samePrefixAndSuffix(InfluxDbSqlConstant.V, InfluxDbSqlConstant.V, HarmonicTimesUtil.harmonicTimesList(1, 50, 1));
|
||||||
influxQueryWrapper.regular(DataV::getLineId, lineParam.getLineId())
|
influxQueryWrapper.regular(DataV::getLineId, lineParam.getLineId())
|
||||||
@@ -478,47 +481,83 @@ public class InfluxdbDataVImpl extends MppServiceImpl<RStatDataVRelationMapper,
|
|||||||
influxQueryWrapper.regular(DataV::getPhasicType, lineParam.getPhasicType());
|
influxQueryWrapper.regular(DataV::getPhasicType, lineParam.getPhasicType());
|
||||||
}
|
}
|
||||||
quality(result, influxQueryWrapper, lineParam);
|
quality(result, influxQueryWrapper, lineParam);
|
||||||
if (CollectionUtil.isNotEmpty(result)) {
|
return result;
|
||||||
if (!Objects.isNull(map)) {
|
}
|
||||||
//现根据监测点分组,然后根据接线方式排除多于数据,在修改相别
|
|
||||||
Map<String, List<DataV>> lineMap = result.stream().collect(Collectors.groupingBy(DataV::getLineId));
|
/**
|
||||||
lineMap.forEach((k,v)->{
|
* 按监测点集合、时间条件获取dataV分钟数据
|
||||||
if (Objects.isNull(map.get(k))) {
|
* timeMap参数来判断是否进行数据处理 timeMap为空则不进行数据处理
|
||||||
return;
|
*/
|
||||||
}
|
public List<DataV> getWlMinuteDataV(LineCountEvaluateParam lineParam) {
|
||||||
//这边需要特殊处理下,将线电压数据赋值
|
List<DataV> result = new ArrayList<>();
|
||||||
Map<String, DataV> lineVoltageIndex = v.stream()
|
if (CollectionUtil.isNotEmpty(lineParam.getLineId())) {
|
||||||
.filter(d -> PHASE_MAPPING.containsKey(d.getPhasicType()))
|
//fixme 这边查询的数据可以缓存起来,因为日表计算时可以使用
|
||||||
.filter(d -> d.getRmsLvr() != null)
|
//获取监测点信息
|
||||||
.collect(Collectors.toMap(
|
List<CsLinePO> line = csLineFeignClient.queryLineById(lineParam.getLineId()).getData();
|
||||||
d -> buildKey(d.getTime(), d.getValueType(), d.getPhasicType()),
|
Map<String, CsLinePO> lineMap = line.stream().collect(Collectors.toMap(CsLinePO::getLineId, Function.identity()));
|
||||||
Function.identity(),
|
//获取设备信息
|
||||||
(existing, replacement) -> existing
|
List<String> devList = line.stream().map(CsLinePO::getDeviceId).distinct().collect(Collectors.toList());
|
||||||
));
|
List<CsEquipmentDeliveryDTO> dev = equipmentFeignClient.queryDeviceById(devList).getData();
|
||||||
v.stream()
|
Map<String, CsEquipmentDeliveryDTO> devsMap = dev.stream().collect(Collectors.toMap(CsEquipmentDeliveryDTO::getId, Function.identity()));
|
||||||
.filter(d -> PHASE_VOLTAGE_TYPES.contains(d.getPhasicType()))
|
lineParam.getLineId().forEach(lineId -> {
|
||||||
.forEach(phaseData -> {
|
String devId = lineMap.get(lineId).getDeviceId();
|
||||||
// 根据当前相电压反查对应的线电压相别
|
CsLinePO po = lineMap.get(lineId);
|
||||||
String targetLinePhasic = getReverseLinePhasic(phaseData.getPhasicType());
|
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataV.class);
|
||||||
if (targetLinePhasic == null) {
|
influxQueryWrapper.eq(DataV::getLineId, lineId)
|
||||||
return;
|
.eq(DataV::getProcess, Integer.toString(devsMap.get(devId).getProcess()))
|
||||||
}
|
.select(DataV::getLineId)
|
||||||
String key = buildKey(phaseData.getTime(), phaseData.getValueType(), targetLinePhasic);
|
.select(DataV::getPhasicType)
|
||||||
DataV matchedLineData = lineVoltageIndex.get(key);
|
.select(DataV::getValueType)
|
||||||
if (matchedLineData != null && matchedLineData.getRmsLvr() != null) {
|
//频率
|
||||||
phaseData.setRmsLvr(matchedLineData.getRmsLvr());
|
.select("Pq_Freq", "freq")
|
||||||
}
|
//频率偏差
|
||||||
});
|
.select("Pq_FreqDev", "freq_dev")
|
||||||
Integer conType = map.get(k);
|
//相电压有效值
|
||||||
Set<String> validPhasicTypes = (conType != 0) ? LINE_VOLTAGE_TYPES : PHASE_VOLTAGE_TYPES;
|
.select("Pq_RmsU", "rms")
|
||||||
List<DataV> result2 = v.stream().filter(item -> validPhasicTypes.contains(item.getPhasicType())).collect(Collectors.toList());
|
//线电压有效值
|
||||||
data.addAll(result2);
|
.select("Pq_RmsLU", "rms_lvr")
|
||||||
});
|
//电压负序
|
||||||
} else {
|
.select("Pq_SeqNegU", "v_neg")
|
||||||
data.addAll(result);
|
//电压正序
|
||||||
}
|
.select("Pq_SeqPosU", "v_pos")
|
||||||
if (CollectionUtil.isNotEmpty(data)) {
|
//电压零序
|
||||||
data.forEach(item -> {
|
.select("Pq_SeqZeroU", "v_zero")
|
||||||
|
//电压负序不平衡度
|
||||||
|
.select("Pq_UnbalNegU", "v_unbalance")
|
||||||
|
.between(DataV::getTime, lineParam.getStartTime(), lineParam.getEndTime())
|
||||||
|
.eq(DataV::getQualityFlag, "0");
|
||||||
|
if (CollUtil.isNotEmpty(lineParam.getPhasicType())) {
|
||||||
|
influxQueryWrapper.regular(DataV::getPhasicType, lineParam.getPhasicType());
|
||||||
|
}
|
||||||
|
if (Objects.isNull(po.getLineNo())) {
|
||||||
|
influxQueryWrapper.eq(DataV::getCldid, Integer.toString(po.getClDid()));
|
||||||
|
} else {
|
||||||
|
influxQueryWrapper.eq(DataV::getCldid, Integer.toString(po.getLineNo()));
|
||||||
|
}
|
||||||
|
//判断接线方式 (0-星型 1-角型 2-V型) 星型是相电压 角型或者v型是线电压
|
||||||
|
if (Objects.equals(po.getConType(), 0)) {
|
||||||
|
//相电压偏差
|
||||||
|
influxQueryWrapper.select("Pq_UDev", "vu_dev");
|
||||||
|
//相电压谐波总畸变率
|
||||||
|
influxQueryWrapper.select("Pq_ThdU", "v_thd");
|
||||||
|
//相电压基波有效值
|
||||||
|
influxQueryWrapper.select("Pq_RmsFundU", "v_1");
|
||||||
|
//2-50次 相电压谐波有效值
|
||||||
|
influxQueryWrapper.samePrefixAndSuffix("Pq_HarmUV_", "v_", HarmonicTimesUtil.harmonicTimesList(2, 50, 1));
|
||||||
|
} else {
|
||||||
|
//线电压偏差
|
||||||
|
influxQueryWrapper.select("Pq_LUDev", "vu_dev");
|
||||||
|
//线电压谐波总畸变率
|
||||||
|
influxQueryWrapper.select("Pq_ThdLU", "v_thd");
|
||||||
|
//线电压基波有效值
|
||||||
|
influxQueryWrapper.select("Pq_RmsFundLU", "v_1");
|
||||||
|
//2-50次 线电压谐波有效值
|
||||||
|
influxQueryWrapper.samePrefixAndSuffix("Pq_HarmLUV_", "v_", HarmonicTimesUtil.harmonicTimesList(2, 50, 1));
|
||||||
|
}
|
||||||
|
result.addAll(dataVMapper.selectByQueryWrapper(influxQueryWrapper));
|
||||||
|
});
|
||||||
|
if (CollectionUtil.isNotEmpty(result)) {
|
||||||
|
result.forEach(item -> {
|
||||||
String newType = PHASE_MAPPING.get(item.getPhasicType());
|
String newType = PHASE_MAPPING.get(item.getPhasicType());
|
||||||
if (newType != null) {
|
if (newType != null) {
|
||||||
item.setPhasicType(newType);
|
item.setPhasicType(newType);
|
||||||
@@ -526,27 +565,7 @@ public class InfluxdbDataVImpl extends MppServiceImpl<RStatDataVRelationMapper,
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return data;
|
return result;
|
||||||
}
|
|
||||||
|
|
||||||
private static String buildKey(Object time, Object valueType, Object phasicType) {
|
|
||||||
return time + "|" + valueType + "|" + phasicType;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String getReverseLinePhasic(String phaseType) {
|
|
||||||
if (phaseType == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
switch (phaseType) {
|
|
||||||
case "A":
|
|
||||||
return "AB";
|
|
||||||
case "B":
|
|
||||||
return "BC";
|
|
||||||
case "C":
|
|
||||||
return "CA";
|
|
||||||
default:
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void quality(List<DataV> result, InfluxQueryWrapper influxQueryWrapper, LineCountEvaluateParam lineParam) {
|
private void quality(List<DataV> result, InfluxQueryWrapper influxQueryWrapper, LineCountEvaluateParam lineParam) {
|
||||||
|
|||||||
@@ -110,32 +110,23 @@ public class InfluxdbPqsCommunicateImpl implements IPqsCommunicate {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void insertion(PqsCommunicateDto pqsCommunicateDto) {
|
public void insertion(PqsCommunicateDto pqsCommunicateDto) {
|
||||||
|
// log.info("进出Influxdb实现类");
|
||||||
//获取最新一条数据
|
//获取最新一条数据
|
||||||
if(Objects.equals(pqsCommunicateDto.getUpdateCommunicateFlag(),0)){
|
PqsCommunicate dto = new PqsCommunicate();
|
||||||
|
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(PqsCommunicate.class);
|
||||||
|
influxQueryWrapper.eq(PqsCommunicate::getDevId,pqsCommunicateDto.getDevId()).timeDesc().limit(1);
|
||||||
PqsCommunicate dto = new PqsCommunicate();
|
List<PqsCommunicate> pqsCommunicates = pqsCommunicateMapper.selectByQueryWrapper(influxQueryWrapper);
|
||||||
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(PqsCommunicate.class);
|
|
||||||
influxQueryWrapper.eq(PqsCommunicate::getDevId,pqsCommunicateDto.getDevId()).timeDesc().limit(1);
|
|
||||||
List<PqsCommunicate> pqsCommunicates = pqsCommunicateMapper.selectByQueryWrapper(influxQueryWrapper);
|
|
||||||
|
|
||||||
PqsCommunicate pqsCommunicate = new PqsCommunicate();
|
|
||||||
pqsCommunicate.setTime(LocalDateTime.parse(pqsCommunicateDto.getTime(), DATE_TIME_FORMATTER).atZone(ZoneId.systemDefault()).toInstant());
|
|
||||||
pqsCommunicate.setDevId(pqsCommunicateDto.getDevId());
|
|
||||||
pqsCommunicate.setType(pqsCommunicateDto.getType());
|
|
||||||
//如果不存数据或者状态不一样则插入数据
|
|
||||||
//可能存在掉线后最后一组数据还未入库,添加时间判断
|
|
||||||
if(CollectionUtils.isEmpty(pqsCommunicates)|| (!Objects.equals( pqsCommunicates.get(0).getType(),pqsCommunicateDto.getType())&&pqsCommunicates.get(0).getTime().isBefore(pqsCommunicate.getTime()))){
|
|
||||||
pqsCommunicateMapper.insertOne(pqsCommunicate);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PqsCommunicate pqsCommunicate = new PqsCommunicate();
|
||||||
|
pqsCommunicate.setTime(LocalDateTime.parse(pqsCommunicateDto.getTime(), DATE_TIME_FORMATTER).atZone(ZoneId.systemDefault()).toInstant());
|
||||||
|
pqsCommunicate.setDevId(pqsCommunicateDto.getDevId());
|
||||||
|
pqsCommunicate.setType(pqsCommunicateDto.getType());
|
||||||
|
//如果不存数据或者状态不一样则插入数据
|
||||||
|
//可能存在掉线后最后一组数据还未入库,添加时间判断
|
||||||
|
if(CollectionUtils.isEmpty(pqsCommunicates)|| (!Objects.equals( pqsCommunicates.get(0).getType(),pqsCommunicateDto.getType())&&pqsCommunicates.get(0).getTime().isBefore(pqsCommunicate.getTime()))){
|
||||||
|
pqsCommunicateMapper.insertOne(pqsCommunicate);
|
||||||
|
|
||||||
|
}
|
||||||
//更新mysql数据
|
//更新mysql数据
|
||||||
DevComFlagDTO devComFlagDTO = new DevComFlagDTO();
|
DevComFlagDTO devComFlagDTO = new DevComFlagDTO();
|
||||||
devComFlagDTO.setId(pqsCommunicateDto.getDevId());
|
devComFlagDTO.setId(pqsCommunicateDto.getDevId());
|
||||||
@@ -145,8 +136,6 @@ public class InfluxdbPqsCommunicateImpl implements IPqsCommunicate {
|
|||||||
devComFlagDTO.setStatus(pqsCommunicateDto.getType());
|
devComFlagDTO.setStatus(pqsCommunicateDto.getType());
|
||||||
|
|
||||||
deviceFeignClient.updateDevComFlag(devComFlagDTO);
|
deviceFeignClient.updateDevComFlag(devComFlagDTO);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,16 +1,14 @@
|
|||||||
package com.njcn.algorithm.serviceimpl.line;
|
package com.njcn.dataProcess.service.impl.relation;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.njcn.algorithm.mapper.PqReasonableRangeMapper;
|
import com.njcn.dataProcess.dao.relation.mapper.PqReasonableRangeMapper;
|
||||||
import com.njcn.algorithm.pojo.dto.PqReasonableRangeDto;
|
import com.njcn.dataProcess.param.DataCleanParam;
|
||||||
import com.njcn.algorithm.pojo.param.DataCleanParam;
|
import com.njcn.dataProcess.pojo.dto.PqReasonableRangeDto;
|
||||||
import com.njcn.algorithm.pojo.po.PqReasonableRange;
|
import com.njcn.dataProcess.pojo.po.PqReasonableRange;
|
||||||
import com.njcn.algorithm.service.line.IPqReasonableRangeService;
|
import com.njcn.dataProcess.service.IPqReasonableRangeService;
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@@ -25,18 +23,14 @@ import java.util.List;
|
|||||||
* @author xy
|
* @author xy
|
||||||
* @since 2025-02-13
|
* @since 2025-02-13
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
|
||||||
@Service
|
@Service
|
||||||
@RequiredArgsConstructor
|
|
||||||
public class PqReasonableRangeServiceImpl extends ServiceImpl<PqReasonableRangeMapper, PqReasonableRange> implements IPqReasonableRangeService {
|
public class PqReasonableRangeServiceImpl extends ServiceImpl<PqReasonableRangeMapper, PqReasonableRange> implements IPqReasonableRangeService {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<PqReasonableRangeDto> getReasonableRangeList(DataCleanParam param) {
|
public List<PqReasonableRangeDto> getReasonableRangeList(DataCleanParam param) {
|
||||||
List<PqReasonableRangeDto> result = new ArrayList<>();
|
List<PqReasonableRangeDto> result = new ArrayList<>();
|
||||||
LambdaQueryWrapper<PqReasonableRange> queryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<PqReasonableRange> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
if (StrUtil.isNotBlank(param.getSystemType())) {
|
queryWrapper.eq(PqReasonableRange::getBelongingSystem,param.getSystemType());
|
||||||
queryWrapper.eq(PqReasonableRange::getBelongingSystem,param.getSystemType());
|
|
||||||
}
|
|
||||||
if(StrUtil.isNotBlank(param.getDataSource())){
|
if(StrUtil.isNotBlank(param.getDataSource())){
|
||||||
queryWrapper.eq(PqReasonableRange::getDataSource,param.getDataSource());
|
queryWrapper.eq(PqReasonableRange::getDataSource,param.getDataSource());
|
||||||
}
|
}
|
||||||
@@ -54,29 +48,4 @@ public class PqReasonableRangeServiceImpl extends ServiceImpl<PqReasonableRangeM
|
|||||||
}
|
}
|
||||||
return result;
|
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -100,34 +100,12 @@
|
|||||||
<artifactId>spring-boot-starter-websocket</artifactId>
|
<artifactId>spring-boot-starter-websocket</artifactId>
|
||||||
<version>2.7.12</version>
|
<version>2.7.12</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>com.njcn</groupId>
|
|
||||||
<artifactId>mq-spring-boot-starter</artifactId>
|
|
||||||
<version>1.0.0-SNAPSHOT</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-starter-test</artifactId>
|
|
||||||
<version>2.7.12</version>
|
|
||||||
<scope>test</scope>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>junit</groupId>
|
|
||||||
<artifactId>junit</artifactId>
|
|
||||||
<version>4.13.2</version>
|
|
||||||
<scope>test</scope>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
<finalName>messageboot</finalName>
|
<finalName>messageboot</finalName>
|
||||||
<plugins>
|
<plugins>
|
||||||
<plugin>
|
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
|
||||||
<artifactId>maven-surefire-plugin</artifactId>
|
|
||||||
<version>2.22.2</version>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-compiler-plugin</artifactId>
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ import java.util.Objects;
|
|||||||
@RocketMQMessageListener(
|
@RocketMQMessageListener(
|
||||||
topic = "Device_Run_Flag_Topic",
|
topic = "Device_Run_Flag_Topic",
|
||||||
consumerGroup = "Device_Run_Flag_Consumer",
|
consumerGroup = "Device_Run_Flag_Consumer",
|
||||||
selectorExpression = "Test_Tag||Test_Keys",
|
selectorExpression = "*",
|
||||||
consumeThreadNumber = 10,
|
consumeThreadNumber = 10,
|
||||||
enableMsgTrace = true
|
enableMsgTrace = true
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -39,12 +39,10 @@ import java.util.concurrent.TimeUnit;
|
|||||||
* @createTime 2023/8/11 15:32
|
* @createTime 2023/8/11 15:32
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
@org.springframework.boot.autoconfigure.condition.ConditionalOnProperty(
|
|
||||||
name = "mq.type", havingValue = "rocketmq", matchIfMissing = true)
|
|
||||||
@RocketMQMessageListener(
|
@RocketMQMessageListener(
|
||||||
topic = "LN_Topic",
|
topic = "LN_Topic",
|
||||||
consumerGroup = "ln_consumer",
|
consumerGroup = "ln_consumer",
|
||||||
selectorExpression = "Test_Tag||Test_Keys",
|
selectorExpression = "*",
|
||||||
consumeThreadNumber = 10,
|
consumeThreadNumber = 10,
|
||||||
enableMsgTrace = true
|
enableMsgTrace = true
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ import java.util.Objects;
|
|||||||
@RocketMQMessageListener(
|
@RocketMQMessageListener(
|
||||||
topic = "Heart_Beat_Topic",
|
topic = "Heart_Beat_Topic",
|
||||||
consumerGroup = "Heartb_Beat_Topic_Consumer",
|
consumerGroup = "Heartb_Beat_Topic_Consumer",
|
||||||
selectorExpression = "Test_Tag||Test_Keys",
|
selectorExpression = "*",
|
||||||
consumeThreadNumber = 10,
|
consumeThreadNumber = 10,
|
||||||
enableMsgTrace = true
|
enableMsgTrace = true
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ import java.util.Objects;
|
|||||||
@RocketMQMessageListener(
|
@RocketMQMessageListener(
|
||||||
topic = "Real_Time_Data_Topic",
|
topic = "Real_Time_Data_Topic",
|
||||||
consumerGroup = "real_time_consumer",
|
consumerGroup = "real_time_consumer",
|
||||||
selectorExpression = "Test_Tag||Test_Keys",
|
selectorExpression = "*",
|
||||||
consumeThreadNumber = 10,
|
consumeThreadNumber = 10,
|
||||||
enableMsgTrace = true
|
enableMsgTrace = true
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ import java.util.Objects;
|
|||||||
@RocketMQMessageListener(
|
@RocketMQMessageListener(
|
||||||
topic = "log_Topic",
|
topic = "log_Topic",
|
||||||
consumerGroup = "Log_Topic_Consumer",
|
consumerGroup = "Log_Topic_Consumer",
|
||||||
selectorExpression = "Test_Tag||Test_Keys",
|
selectorExpression = "*",
|
||||||
consumeThreadNumber = 10,
|
consumeThreadNumber = 10,
|
||||||
enableMsgTrace = true
|
enableMsgTrace = true
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ import java.util.Objects;
|
|||||||
@RocketMQMessageListener(
|
@RocketMQMessageListener(
|
||||||
topic = "Topic_Reply_Topic",
|
topic = "Topic_Reply_Topic",
|
||||||
consumerGroup = "Topic_Reply_Topic_Consumer",
|
consumerGroup = "Topic_Reply_Topic_Consumer",
|
||||||
selectorExpression = "Test_Tag||Test_Keys",
|
selectorExpression = "*",
|
||||||
consumeThreadNumber = 10,
|
consumeThreadNumber = 10,
|
||||||
enableMsgTrace = true
|
enableMsgTrace = true
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
package com.njcn.message.mq;
|
|
||||||
|
|
||||||
import com.njcn.message.messagedto.MessageDataDTO;
|
|
||||||
import com.njcn.mq.annotation.MqListener;
|
|
||||||
import com.njcn.stat.api.MessAnalysisFeignClient;
|
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
import java.util.Collections;
|
|
||||||
|
|
||||||
@Component
|
|
||||||
@ConditionalOnProperty(name = "mq.type", havingValue = "redis-stream")
|
|
||||||
public class FrontDataMqListener {
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private MessAnalysisFeignClient messAnalysisFeignClient;
|
|
||||||
|
|
||||||
@MqListener(topic = "LN_Topic", group = "ln_consumer")
|
|
||||||
public void onFrontData(MessageDataDTO msg) {
|
|
||||||
messAnalysisFeignClient.analysis(Collections.singletonList(msg));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
package com.njcn.message.mq;
|
|
||||||
|
|
||||||
import com.njcn.message.constant.BusinessTopic;
|
|
||||||
import com.njcn.message.message.RecallMessage;
|
|
||||||
import com.njcn.mq.core.MqTemplate;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
|
|
||||||
@Component
|
|
||||||
public class RecallMqSender {
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private MqTemplate mqTemplate;
|
|
||||||
|
|
||||||
public void send(RecallMessage message, String nodeId) {
|
|
||||||
mqTemplate.send(nodeId + "_" + BusinessTopic.RECALL_TOPIC, message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,8 +1,10 @@
|
|||||||
package com.njcn.message.produce.template;
|
package com.njcn.message.produce.template;
|
||||||
|
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.njcn.message.constant.BusinessResource;
|
import com.njcn.message.constant.BusinessResource;
|
||||||
import com.njcn.message.constant.BusinessTopic;
|
import com.njcn.message.constant.BusinessTopic;
|
||||||
|
import com.njcn.message.message.AskRealDataMessage;
|
||||||
import com.njcn.middle.rocket.domain.BaseMessage;
|
import com.njcn.middle.rocket.domain.BaseMessage;
|
||||||
import com.njcn.middle.rocket.template.RocketMQEnhanceTemplate;
|
import com.njcn.middle.rocket.template.RocketMQEnhanceTemplate;
|
||||||
import org.apache.rocketmq.client.producer.SendResult;
|
import org.apache.rocketmq.client.producer.SendResult;
|
||||||
@@ -24,7 +26,8 @@ public class AskRealDataMessaggeTemplate extends RocketMQEnhanceTemplate {
|
|||||||
|
|
||||||
public SendResult sendMember(BaseMessage askRealDataMessage,String nodeId) {
|
public SendResult sendMember(BaseMessage askRealDataMessage,String nodeId) {
|
||||||
askRealDataMessage.setSource(BusinessResource.WEB_RESOURCE);
|
askRealDataMessage.setSource(BusinessResource.WEB_RESOURCE);
|
||||||
askRealDataMessage.setKey("Test_Keys");
|
AskRealDataMessage dto = JSON.parseObject(askRealDataMessage.getMessageBody(), AskRealDataMessage.class);
|
||||||
return send(nodeId+"_"+BusinessTopic.ASK_REAL_DATA_TOPIC,"Test_Tag" , askRealDataMessage);
|
askRealDataMessage.setKey(dto.getLine());
|
||||||
|
return send(BusinessTopic.ASK_REAL_DATA_TOPIC,nodeId , askRealDataMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
package com.njcn.message.produce.template;
|
package com.njcn.message.produce.template;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.njcn.message.constant.BusinessResource;
|
import com.njcn.message.constant.BusinessResource;
|
||||||
import com.njcn.message.constant.BusinessTopic;
|
import com.njcn.message.constant.BusinessTopic;
|
||||||
|
import com.njcn.message.message.AskRealDataMessage;
|
||||||
|
import com.njcn.message.message.DeviceRebootMessage;
|
||||||
import com.njcn.middle.rocket.domain.BaseMessage;
|
import com.njcn.middle.rocket.domain.BaseMessage;
|
||||||
import com.njcn.middle.rocket.template.RocketMQEnhanceTemplate;
|
import com.njcn.middle.rocket.template.RocketMQEnhanceTemplate;
|
||||||
import org.apache.rocketmq.client.producer.SendResult;
|
import org.apache.rocketmq.client.producer.SendResult;
|
||||||
@@ -24,7 +27,6 @@ public class DeviceRebootMessageTemplate extends RocketMQEnhanceTemplate {
|
|||||||
|
|
||||||
public SendResult sendMember(BaseMessage baseMessage,String nodeId) {
|
public SendResult sendMember(BaseMessage baseMessage,String nodeId) {
|
||||||
baseMessage.setSource(BusinessResource.WEB_RESOURCE);
|
baseMessage.setSource(BusinessResource.WEB_RESOURCE);
|
||||||
baseMessage.setKey("Test_Keys");
|
return send(BusinessTopic.CONTROL_TOPIC,nodeId, baseMessage);
|
||||||
return send(nodeId+"_"+BusinessTopic.CONTROL_TOPIC,"Test_Tag", baseMessage);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
package com.njcn.message.produce.template;
|
package com.njcn.message.produce.template;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.njcn.message.constant.BusinessResource;
|
import com.njcn.message.constant.BusinessResource;
|
||||||
import com.njcn.message.constant.BusinessTopic;
|
import com.njcn.message.constant.BusinessTopic;
|
||||||
|
import com.njcn.message.message.AskRealDataMessage;
|
||||||
|
import com.njcn.message.message.ProcessRebootMessage;
|
||||||
import com.njcn.middle.rocket.domain.BaseMessage;
|
import com.njcn.middle.rocket.domain.BaseMessage;
|
||||||
import com.njcn.middle.rocket.template.RocketMQEnhanceTemplate;
|
import com.njcn.middle.rocket.template.RocketMQEnhanceTemplate;
|
||||||
import org.apache.rocketmq.client.producer.SendResult;
|
import org.apache.rocketmq.client.producer.SendResult;
|
||||||
@@ -24,7 +27,8 @@ public class ProcessRebootMessageTemplate extends RocketMQEnhanceTemplate {
|
|||||||
|
|
||||||
public SendResult sendMember(BaseMessage baseMessage,String nodeId) {
|
public SendResult sendMember(BaseMessage baseMessage,String nodeId) {
|
||||||
baseMessage.setSource(BusinessResource.WEB_RESOURCE);
|
baseMessage.setSource(BusinessResource.WEB_RESOURCE);
|
||||||
baseMessage.setKey("Test_Keys");
|
ProcessRebootMessage dto = JSON.parseObject(baseMessage.getMessageBody(), ProcessRebootMessage.class);
|
||||||
return send(nodeId+"_"+BusinessTopic.PROCESS_TOPIC,"Test_Tag", baseMessage);
|
baseMessage.setKey(dto.getIndex()+"");
|
||||||
|
return send(BusinessTopic.PROCESS_TOPIC,nodeId, baseMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ public class RecallMessaggeTemplate extends RocketMQEnhanceTemplate {
|
|||||||
|
|
||||||
public SendResult sendMember(BaseMessage recallMessage,String nodeId) {
|
public SendResult sendMember(BaseMessage recallMessage,String nodeId) {
|
||||||
recallMessage.setSource(BusinessResource.WEB_RESOURCE);
|
recallMessage.setSource(BusinessResource.WEB_RESOURCE);
|
||||||
recallMessage.setKey("Test_Keys");
|
return send(BusinessTopic.RECALL_TOPIC,nodeId , recallMessage);
|
||||||
return send(nodeId+"_"+BusinessTopic.RECALL_TOPIC,"Test_Tag" , recallMessage);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,16 +19,13 @@ spring:
|
|||||||
cloud:
|
cloud:
|
||||||
nacos:
|
nacos:
|
||||||
discovery:
|
discovery:
|
||||||
ip: @service.server.url@
|
|
||||||
server-addr: @nacos.url@
|
server-addr: @nacos.url@
|
||||||
namespace: @nacos.namespace@
|
namespace: @nacos.namespace@
|
||||||
username: @nacos.username@
|
|
||||||
password: @nacos.password@
|
|
||||||
config:
|
config:
|
||||||
server-addr: @nacos.url@
|
|
||||||
namespace: @nacos.namespace@
|
|
||||||
username: @nacos.username@
|
username: @nacos.username@
|
||||||
password: @nacos.password@
|
password: @nacos.password@
|
||||||
|
server-addr: @nacos.url@
|
||||||
|
namespace: @nacos.namespace@
|
||||||
file-extension: yaml
|
file-extension: yaml
|
||||||
shared-configs:
|
shared-configs:
|
||||||
- data-id: share-config.yaml
|
- data-id: share-config.yaml
|
||||||
|
|||||||
@@ -1,210 +0,0 @@
|
|||||||
package com.njcn.message.mq;
|
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
|
||||||
import com.njcn.message.message.RecallMessage;
|
|
||||||
import com.njcn.message.messagedto.MessageDataDTO;
|
|
||||||
import com.njcn.middle.stream.autoconfig.RedisStreamAutoConfiguration;
|
|
||||||
import com.njcn.mq.autoconfig.MqCoreAutoConfiguration;
|
|
||||||
import com.njcn.mq.container.MqListenerRegistry;
|
|
||||||
import com.njcn.mq.core.MqTemplate;
|
|
||||||
import com.njcn.mq.driver.redis.RedisStreamMqDriver;
|
|
||||||
import com.njcn.mq.driver.redis.RedisStreamMqDriverAutoConfiguration;
|
|
||||||
import com.njcn.mq.driver.rocketmq.RocketMqDriver;
|
|
||||||
import com.njcn.mq.driver.rocketmq.RocketMqDriverAutoConfiguration;
|
|
||||||
import com.njcn.mq.spi.MqDriver;
|
|
||||||
import com.njcn.stat.api.MessAnalysisFeignClient;
|
|
||||||
import org.apache.rocketmq.spring.autoconfigure.RocketMQProperties;
|
|
||||||
import org.apache.rocketmq.spring.core.RocketMQTemplate;
|
|
||||||
import org.junit.jupiter.api.Assumptions;
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
|
||||||
import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
|
|
||||||
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
|
||||||
import org.springframework.data.redis.connection.stream.MapRecord;
|
|
||||||
import org.springframework.data.redis.connection.stream.ReadOffset;
|
|
||||||
import org.springframework.data.redis.connection.stream.StreamOffset;
|
|
||||||
import org.springframework.data.redis.connection.stream.StreamReadOptions;
|
|
||||||
import org.springframework.data.redis.connection.stream.StreamRecords;
|
|
||||||
import org.springframework.data.redis.core.StringRedisTemplate;
|
|
||||||
|
|
||||||
import java.net.InetSocketAddress;
|
|
||||||
import java.net.Socket;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
|
||||||
import static org.mockito.ArgumentMatchers.anyList;
|
|
||||||
import static org.mockito.Mockito.mock;
|
|
||||||
import static org.mockito.Mockito.timeout;
|
|
||||||
import static org.mockito.Mockito.verify;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* MQ starter 切片接入验证测试(ApplicationContextRunner,不启动全应用)。
|
|
||||||
* 真实 Redis 要求:localhost:6379(docker redis-stream-it);仅上/下行收发用例需要,
|
|
||||||
* 纯装配用例不需要(Lettuce 懒连接,不触发实际连接)。
|
|
||||||
*
|
|
||||||
* <p>装配一律用 {@code withConfiguration(AutoConfigurations.of(...))},让 Spring 按
|
|
||||||
* <b>真实 autoconfig 顺序</b>(AutoConfigurationSorter)处理,与生产环境一致。以此
|
|
||||||
* 验证 {@link MqCoreAutoConfiguration} 的 {@code @ConditionalOnBean(MqDriver)} 能在
|
|
||||||
* 真实顺序下拿到 driver bean —— 这依赖 driver autoconfig 上的
|
|
||||||
* {@code @AutoConfigureBefore(MqCoreAutoConfiguration.class)}。若缺该保障,按类名字母序
|
|
||||||
* {@code com.njcn.mq.autoconfig.*} 先于 {@code com.njcn.mq.driver.*},core 会在 driver
|
|
||||||
* bean 注册前求值条件失败,导致 MqTemplate / MqListenerRegistry 不装配。
|
|
||||||
*/
|
|
||||||
public class MqSliceWiringTest {
|
|
||||||
|
|
||||||
private static boolean redisAvailable() {
|
|
||||||
try {
|
|
||||||
Socket s = new Socket();
|
|
||||||
s.connect(new InetSocketAddress("localhost", 6379), 500);
|
|
||||||
s.close();
|
|
||||||
return true;
|
|
||||||
} catch (Exception e) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** redis-stream 模式:真实 autoconfig 顺序装 5 个 autoconfig + 业务 bean(上/下行用)。 */
|
|
||||||
private ApplicationContextRunner redisStreamRunner() {
|
|
||||||
return new ApplicationContextRunner()
|
|
||||||
.withConfiguration(AutoConfigurations.of(
|
|
||||||
RedisAutoConfiguration.class,
|
|
||||||
RedisStreamAutoConfiguration.class,
|
|
||||||
RedisStreamMqDriverAutoConfiguration.class,
|
|
||||||
RocketMqDriverAutoConfiguration.class,
|
|
||||||
MqCoreAutoConfiguration.class))
|
|
||||||
.withUserConfiguration(FrontDataMqListener.class, RecallMqSender.class)
|
|
||||||
.withBean(MessAnalysisFeignClient.class,
|
|
||||||
() -> mock(MessAnalysisFeignClient.class))
|
|
||||||
.withPropertyValues(
|
|
||||||
"mq.type=redis-stream",
|
|
||||||
"spring.redis.host=localhost",
|
|
||||||
"spring.redis.port=6379");
|
|
||||||
}
|
|
||||||
|
|
||||||
// ------------------------------------------------------------------
|
|
||||||
// 1. 装配:mq.type 二选一 + core bean 在真实 autoconfig 顺序下装配
|
|
||||||
// ------------------------------------------------------------------
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void testRedisStreamDriverSelected() {
|
|
||||||
// 纯装配检查,不依赖真实 Redis(Lettuce 懒连接)。
|
|
||||||
new ApplicationContextRunner()
|
|
||||||
.withConfiguration(AutoConfigurations.of(
|
|
||||||
RedisAutoConfiguration.class,
|
|
||||||
RedisStreamAutoConfiguration.class,
|
|
||||||
RedisStreamMqDriverAutoConfiguration.class,
|
|
||||||
RocketMqDriverAutoConfiguration.class,
|
|
||||||
MqCoreAutoConfiguration.class))
|
|
||||||
.withPropertyValues(
|
|
||||||
"mq.type=redis-stream",
|
|
||||||
"spring.redis.host=localhost",
|
|
||||||
"spring.redis.port=6379")
|
|
||||||
.run(ctx -> {
|
|
||||||
assertThat(ctx).hasSingleBean(MqDriver.class);
|
|
||||||
assertThat(ctx.getBean(MqDriver.class)).isInstanceOf(RedisStreamMqDriver.class);
|
|
||||||
// 真实顺序下 core 的 @ConditionalOnBean(MqDriver) 必须命中
|
|
||||||
assertThat(ctx).hasSingleBean(MqTemplate.class);
|
|
||||||
assertThat(ctx).hasSingleBean(MqListenerRegistry.class);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void testRocketMqDriverSelected() {
|
|
||||||
// rocket 测试不依赖真实 Redis;不装 RedisAutoConfiguration,redis driver 因 mq.type 不匹配而 inactive。
|
|
||||||
new ApplicationContextRunner()
|
|
||||||
.withConfiguration(AutoConfigurations.of(
|
|
||||||
RedisStreamMqDriverAutoConfiguration.class,
|
|
||||||
RocketMqDriverAutoConfiguration.class,
|
|
||||||
MqCoreAutoConfiguration.class))
|
|
||||||
.withBean(RocketMQTemplate.class, () -> mock(RocketMQTemplate.class))
|
|
||||||
.withBean(RocketMQProperties.class, RocketMQProperties::new)
|
|
||||||
.withPropertyValues("mq.type=rocketmq")
|
|
||||||
.run(ctx -> {
|
|
||||||
assertThat(ctx).hasSingleBean(MqDriver.class);
|
|
||||||
assertThat(ctx.getBean(MqDriver.class)).isInstanceOf(RocketMqDriver.class);
|
|
||||||
assertThat(ctx).hasSingleBean(MqTemplate.class);
|
|
||||||
assertThat(ctx).hasSingleBean(MqListenerRegistry.class);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// ------------------------------------------------------------------
|
|
||||||
// 2. 上行(需要真实 Redis)
|
|
||||||
// 向 LN_Topic stream XADD 一条消息,验证 FrontDataMqListener 触发了
|
|
||||||
// messAnalysisFeignClient.analysis(...)
|
|
||||||
// ------------------------------------------------------------------
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void testUpstreamFrontData() {
|
|
||||||
Assumptions.assumeTrue(redisAvailable(), "Redis not available at localhost:6379, skipping");
|
|
||||||
redisStreamRunner().run(ctx -> {
|
|
||||||
StringRedisTemplate redis = ctx.getBean(StringRedisTemplate.class);
|
|
||||||
MessAnalysisFeignClient mockClient = ctx.getBean(MessAnalysisFeignClient.class);
|
|
||||||
|
|
||||||
// 构造 RedisStreamMqDriver 消费时期望的字段格式
|
|
||||||
// enc=plain → body 即为原始 JSON(参见 MessageCodec.encodeBody(json, false))
|
|
||||||
// stream key = StreamKeyBuilder.buildStream("LN_Topic") = "LN_Topic"
|
|
||||||
// (默认 envIsolation=false,无 env 前缀)
|
|
||||||
MessageDataDTO dto = new MessageDataDTO();
|
|
||||||
dto.setDataType(1);
|
|
||||||
String json = JSON.toJSONString(dto);
|
|
||||||
|
|
||||||
Map<String, String> fields = new HashMap<String, String>();
|
|
||||||
fields.put("key", "test-key-upstream-1");
|
|
||||||
fields.put("tag", "");
|
|
||||||
fields.put("enc", "plain");
|
|
||||||
fields.put("body", json);
|
|
||||||
fields.put("ts", String.valueOf(System.currentTimeMillis()));
|
|
||||||
|
|
||||||
// XADD 到 LN_Topic(MqListenerRegistry.start() 已在 context 启动时订阅该 stream)
|
|
||||||
redis.opsForStream().add(
|
|
||||||
StreamRecords.newRecord().in("LN_Topic").ofMap(fields)
|
|
||||||
);
|
|
||||||
|
|
||||||
// 等待消费线程处理(blockMs 默认 2000ms,timeout=5000ms 足够)
|
|
||||||
verify(mockClient, timeout(5000)).analysis(anyList());
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// ------------------------------------------------------------------
|
|
||||||
// 3. 下行(需要真实 Redis)
|
|
||||||
// 通过 RecallMqSender 发送 RecallMessage,验证 stream 内容正确
|
|
||||||
// ------------------------------------------------------------------
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void testDownstreamRecall() {
|
|
||||||
Assumptions.assumeTrue(redisAvailable(), "Redis not available at localhost:6379, skipping");
|
|
||||||
redisStreamRunner().run(ctx -> {
|
|
||||||
StringRedisTemplate redis = ctx.getBean(StringRedisTemplate.class);
|
|
||||||
RecallMqSender sender = ctx.getBean(RecallMqSender.class);
|
|
||||||
|
|
||||||
// 清理,确保只有本次发送的消息
|
|
||||||
redis.delete("n1_recall_Topic");
|
|
||||||
|
|
||||||
RecallMessage msg = new RecallMessage();
|
|
||||||
msg.setGuid("g1");
|
|
||||||
// MqTemplate.send("n1_recall_Topic", msg) → RedisStreamMqDriver XADD
|
|
||||||
// stream key = StreamKeyBuilder.buildStream("n1_recall_Topic") = "n1_recall_Topic"
|
|
||||||
sender.send(msg, "n1");
|
|
||||||
|
|
||||||
Long size = redis.opsForStream().size("n1_recall_Topic");
|
|
||||||
assertThat(size).isGreaterThanOrEqualTo(1L);
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
List<MapRecord<String, Object, Object>> records =
|
|
||||||
redis.opsForStream().read(
|
|
||||||
StreamReadOptions.empty().count(1L),
|
|
||||||
StreamOffset.create("n1_recall_Topic", ReadOffset.from("0-0"))
|
|
||||||
);
|
|
||||||
assertThat(records).isNotEmpty();
|
|
||||||
|
|
||||||
Map<Object, Object> firstFields = records.get(0).getValue();
|
|
||||||
// DefaultMqTemplate.send(topic, payload) 使用 encodeBody(json, false) → enc="plain"
|
|
||||||
// 因此 body 即为原始 JSON,无需 gzip 解压
|
|
||||||
String body = (String) firstFields.get("body");
|
|
||||||
RecallMessage result = JSON.parseObject(body, RecallMessage.class);
|
|
||||||
assertThat(result.getGuid()).isEqualTo("g1");
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user