代码提交
This commit is contained in:
@@ -1,9 +0,0 @@
|
||||
package com.njcn.device.pq.controller;
|
||||
|
||||
/**
|
||||
* @Author: cdf
|
||||
* @CreateTime: 2025-03-26
|
||||
* @Description: 异常数据清洗
|
||||
*/
|
||||
public class AbnormalDataController {
|
||||
}
|
||||
@@ -8,6 +8,7 @@ import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.common.utils.HttpResultUtil;
|
||||
import com.njcn.device.pq.pojo.param.dataClean.MonitorBaseParam;
|
||||
import com.njcn.device.pq.pojo.vo.AlarmStrategyVO;
|
||||
import com.njcn.device.pq.pojo.vo.dataClean.PowerQualityIndicatorsVO;
|
||||
import com.njcn.device.pq.pojo.vo.dataClean.VerifyMonitorVO;
|
||||
import com.njcn.device.pq.service.IDataVerifyService;
|
||||
import io.swagger.annotations.Api;
|
||||
@@ -53,17 +54,18 @@ public class DataVerifyController extends BaseController {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取时间范围异常测点数量
|
||||
*/
|
||||
/* *//**
|
||||
* 异常指标统计
|
||||
*//*
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/getRangeAbnormalMonitor")
|
||||
@PostMapping("/getAbnormalTarget")
|
||||
@ApiOperation("获取异常监测点相关信息")
|
||||
public HttpResult<List<Map<String,Object>>> getRangeAbnormalMonitor(@RequestBody MonitorBaseParam monitorBaseParam){
|
||||
String methodDescribe = getMethodDescribe("getRangeAbnormalMonitor");
|
||||
List<Map<String,Object>> verifyMonitorVO = iDataVerifyService.getRangeAbnormalMonitor(monitorBaseParam);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, verifyMonitorVO, methodDescribe);
|
||||
}
|
||||
public HttpResult<PowerQualityIndicatorsVO> getAbnormalTarget(@RequestBody MonitorBaseParam monitorBaseParam){
|
||||
String methodDescribe = getMethodDescribe("getAbnormalTarget");
|
||||
PowerQualityIndicatorsVO powerQualityIndicatorsVO = iDataVerifyService.getAbnormalTarget(monitorBaseParam);
|
||||
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, powerQualityIndicatorsVO, methodDescribe);
|
||||
}*/
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -78,7 +78,7 @@ public interface DeptLineMapper extends BaseMapper<DeptLine> {
|
||||
|
||||
List<TerminalGetBase.Extend> orgSubStationInfoGet(@Param("list")List<Integer> devType,@Param("powerFlag")Integer powerFlag,@Param("lineRunFlag") Integer lineRunFlag);
|
||||
|
||||
List<String> getLineIdByDeptIds(@Param("deptIds")List<String> deptIds,@Param("runFlag")List<Integer> runFlag,@Param("dataType")List<Integer> dataType);
|
||||
List<String> getLineIdByDeptIds(@Param("deptIds")List<String> deptIds,@Param("runFlag")List<Integer> runFlag,@Param("dataType")List<Integer> dataType,@Param("objType")String objType);
|
||||
|
||||
|
||||
List<SubGetBase> selectSubStationList(@Param("param") SubstationParam substationParam);
|
||||
|
||||
@@ -145,6 +145,9 @@
|
||||
<foreach collection="runFlag" item="item" open="(" close=")" separator=",">
|
||||
#{item}
|
||||
</foreach>
|
||||
<if test="objType!=null and objType!=''">
|
||||
and lineDetail.big_obj_type = #{objType}
|
||||
</if>
|
||||
and pq_dept_line.id in
|
||||
<foreach collection="deptIds" item="item" open="(" close=")" separator=",">
|
||||
#{item}
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.njcn.device.pq.service;
|
||||
import com.njcn.device.biz.pojo.dto.*;
|
||||
import com.njcn.device.biz.pojo.param.DeptGetLineParam;
|
||||
import com.njcn.device.biz.pojo.param.SubstationParam;
|
||||
import com.njcn.device.pq.pojo.param.dataClean.MonitorBaseParam;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
import java.util.List;
|
||||
@@ -88,7 +89,7 @@ public interface CommTerminalService {
|
||||
List<SubGetBase> tagOrIdGetSub(SubstationParam substationParam);
|
||||
|
||||
/**
|
||||
* 通过部门id获取在运测点
|
||||
* 通过部门id,对象类型,返回在运,实际装置,双系统测点
|
||||
*/
|
||||
List<String> getRunMonitorByDept(String deptId);
|
||||
List<String> getRunMonitorByDept(MonitorBaseParam monitorBaseParam);
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ public interface DeptLineService extends IService<DeptLine> {
|
||||
* @param ids 部门ids
|
||||
* @return 查询结果
|
||||
*/
|
||||
List<String> getLineByDeptIds(List<String> ids,List<Integer> runFlag,List<Integer> dataType);
|
||||
List<String> getLineByDeptIds(List<String> ids,List<Integer> runFlag,List<Integer> dataType,String objType);
|
||||
|
||||
/**
|
||||
* 部门解除绑定监测点
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.njcn.device.pq.service;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.njcn.device.pq.pojo.param.dataClean.MonitorBaseParam;
|
||||
import com.njcn.device.pq.pojo.po.DataVerify;
|
||||
import com.njcn.device.pq.pojo.vo.dataClean.PowerQualityIndicatorsVO;
|
||||
import com.njcn.device.pq.pojo.vo.dataClean.VerifyMonitorVO;
|
||||
|
||||
import java.util.List;
|
||||
@@ -22,6 +23,8 @@ public interface IDataVerifyService extends IService<DataVerify> {
|
||||
VerifyMonitorVO getMonitorVerifyData(MonitorBaseParam monitorBaseParam);
|
||||
|
||||
|
||||
List<Map<String,Object>> getRangeAbnormalMonitor(MonitorBaseParam monitorBaseParam);
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -10,8 +10,10 @@ import com.njcn.device.biz.pojo.dto.*;
|
||||
import com.njcn.device.biz.pojo.param.DeptGetLineParam;
|
||||
import com.njcn.device.biz.pojo.param.SubstationParam;
|
||||
import com.njcn.device.pq.enums.LineBaseEnum;
|
||||
import com.njcn.device.pq.enums.RunFlagEnum;
|
||||
import com.njcn.device.pq.mapper.LineMapper;
|
||||
import com.njcn.device.pq.mapper.OverlimitMapper;
|
||||
import com.njcn.device.pq.pojo.param.dataClean.MonitorBaseParam;
|
||||
import com.njcn.device.pq.service.CommTerminalService;
|
||||
import com.njcn.device.pq.service.DeptLineService;
|
||||
import com.njcn.redis.utils.RedisUtil;
|
||||
@@ -292,9 +294,9 @@ public class CommTerminalServiceImpl implements CommTerminalService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getRunMonitorByDept(String deptId) {
|
||||
List<String> ids = deptFeignClient.getDepSonIdtByDeptId(deptId).getData();
|
||||
List<String> monitorIds = deptLineService.getLineByDeptIds(ids,Stream.of(LineBaseEnum.RUN.getCode()).collect(Collectors.toList()),Stream.of(0,1,2).collect(Collectors.toList()));
|
||||
public List<String> getRunMonitorByDept(MonitorBaseParam monitorBaseParam) {
|
||||
List<String> ids = deptFeignClient.getDepSonIdtByDeptId(monitorBaseParam.getDeptId()).getData();
|
||||
List<String> monitorIds = deptLineService.getLineByDeptIds(ids,Stream.of(RunFlagEnum.RUNNING.getStatus()).collect(Collectors.toList()),Stream.of(0,1,2).collect(Collectors.toList()),monitorBaseParam.getObjType());
|
||||
return monitorIds;
|
||||
}
|
||||
|
||||
|
||||
@@ -5,10 +5,13 @@ import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.*;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.njcn.dataProcess.enums.DataCleanEnum;
|
||||
import com.njcn.device.pq.constant.Param;
|
||||
import com.njcn.device.pq.mapper.DataVerifyMapper;
|
||||
import com.njcn.device.pq.mapper.LineMapper;
|
||||
import com.njcn.device.pq.pojo.param.dataClean.MonitorBaseParam;
|
||||
import com.njcn.device.pq.pojo.po.DataVerify;
|
||||
import com.njcn.device.pq.pojo.vo.dataClean.PowerQualityIndicatorsVO;
|
||||
import com.njcn.device.pq.pojo.vo.dataClean.VerifyMonitorVO;
|
||||
import com.njcn.device.pq.service.CommTerminalService;
|
||||
import com.njcn.device.pq.service.IDataVerifyService;
|
||||
@@ -19,8 +22,11 @@ import org.springframework.stereotype.Service;
|
||||
import java.text.DateFormat;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.*;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.njcn.device.pq.constant.Param.freq;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 服务实现类
|
||||
@@ -37,32 +43,31 @@ public class DataVerifyServiceImpl extends ServiceImpl<DataVerifyMapper, DataVer
|
||||
|
||||
@Override
|
||||
public VerifyMonitorVO getMonitorVerifyData(MonitorBaseParam monitorBaseParam) {
|
||||
List<String> monitorIds = commTerminalService.getRunMonitorByDept(monitorBaseParam.getDeptId());
|
||||
LambdaQueryWrapper<DataVerify> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper.select(DataVerify::getLineId).between(DataVerify::getTime, DateUtil.beginOfDay(DateUtil.parse(monitorBaseParam.getSearchBeginTime())),DateUtil.endOfDay(DateUtil.parse(monitorBaseParam.getSearchEndTime())))
|
||||
.in(DataVerify::getLineId,monitorIds).groupBy(DataVerify::getLineId);
|
||||
List<DataVerify> list = this.list(lambdaQueryWrapper);
|
||||
VerifyMonitorVO verifyMonitorVO = new VerifyMonitorVO();
|
||||
verifyMonitorVO.setRunNum(monitorIds.size());
|
||||
verifyMonitorVO.setAbnormalNum(list.size());
|
||||
return verifyMonitorVO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map<String, Object>> getRangeAbnormalMonitor(MonitorBaseParam monitorBaseParam) {
|
||||
List<Map<String, Object>> result = new ArrayList<>();
|
||||
|
||||
List<String> monitorIds = commTerminalService.getRunMonitorByDept(monitorBaseParam.getDeptId());
|
||||
List<String> monitorIds = commTerminalService.getRunMonitorByDept(monitorBaseParam);
|
||||
LambdaQueryWrapper<DataVerify> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper.between(DataVerify::getTime, DateUtil.beginOfDay(DateUtil.parse(monitorBaseParam.getSearchBeginTime())),DateUtil.endOfDay(DateUtil.parse(monitorBaseParam.getSearchEndTime())))
|
||||
.in(DataVerify::getLineId,monitorIds);
|
||||
List<DataVerify> dataVerifyList = this.list(lambdaQueryWrapper);
|
||||
VerifyMonitorVO verifyMonitorVO = new VerifyMonitorVO();
|
||||
verifyMonitorVO.setRunNum(monitorIds.size());
|
||||
int count = dataVerifyList.stream().collect(Collectors.groupingBy(DataVerify::getLineId)).size();
|
||||
verifyMonitorVO.setAbnormalNum(count);
|
||||
|
||||
List<Map<String, Object>> mapList = getRangeAbnormalMonitor(monitorBaseParam,dataVerifyList);
|
||||
verifyMonitorVO.setMapList(mapList);
|
||||
getAbnormalTarget(dataVerifyList,verifyMonitorVO);
|
||||
return verifyMonitorVO;
|
||||
}
|
||||
|
||||
/**
|
||||
* 时间范围异常测点数量
|
||||
*/
|
||||
private List<Map<String, Object>> getRangeAbnormalMonitor(MonitorBaseParam monitorBaseParam,List<DataVerify> dataVerifyList) {
|
||||
List<Map<String, Object>> result = new ArrayList<>();
|
||||
DateTime startTime = DateUtil.parse(monitorBaseParam.getSearchBeginTime());
|
||||
DateTime endTime = DateUtil.parse(monitorBaseParam.getSearchEndTime());
|
||||
if(startTime.year() == endTime.year() && startTime.month() == endTime.month()){
|
||||
DateRange ranged = DateUtil.range(DateUtil.parse(monitorBaseParam.getSearchBeginTime()),DateUtil.parse(monitorBaseParam.getSearchEndTime()), DateField.DAY_OF_MONTH);
|
||||
|
||||
Map<String,Integer> map = dataVerifyList.stream().collect(Collectors.groupingBy(it->it.getTime().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)),
|
||||
Collectors.mapping(DataVerify::getLineId, Collectors.collectingAndThen(Collectors.toSet(), Set::size))));
|
||||
for (DateTime dateTime : ranged) {
|
||||
@@ -72,7 +77,6 @@ public class DataVerifyServiceImpl extends ServiceImpl<DataVerifyMapper, DataVer
|
||||
rangeMap.put("val", map.getOrDefault(time, 0));
|
||||
result.add(rangeMap);
|
||||
}
|
||||
|
||||
}else {
|
||||
//不在一个月则展示月数据
|
||||
DateRange ranged = DateUtil.range(DateUtil.parse(monitorBaseParam.getSearchBeginTime()),DateUtil.parse(monitorBaseParam.getSearchEndTime()), DateField.MONTH);
|
||||
@@ -88,8 +92,98 @@ public class DataVerifyServiceImpl extends ServiceImpl<DataVerifyMapper, DataVer
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 指标异常测点数量
|
||||
*/
|
||||
public void getAbnormalTarget(List<DataVerify> dataVerifyList,VerifyMonitorVO powerQualityIndicatorsVO) {
|
||||
Map<String,Set<String>> map = dataVerifyList.stream().collect(Collectors.groupingBy(it->it.getIndexCode()+"$"+it.getIndexTable(),Collectors.mapping(DataVerify::getLineId, Collectors.toSet())));
|
||||
Pattern patternPhasic = Pattern.compile("v_(2|[3-9]|[1-4][0-9]|50)\\$data_harmphasic_v");
|
||||
Pattern patternRate = Pattern.compile("v_(2|[3-9]|[1-4][0-9]|50)\\$data_harmrate_v");
|
||||
Pattern patternInRate = Pattern.compile("v_(2|[3-9]|[1-4][0-9]|50)\\$data_inharmrate_v");
|
||||
|
||||
Set<String> harmPhasicSet = new HashSet<>();
|
||||
Set<String> harmVSet = new HashSet<>();
|
||||
Set<String> inHarmVSet = new HashSet<>();
|
||||
|
||||
//正序、负序和零序电压
|
||||
Set<String> posVSet = new HashSet<>();
|
||||
map.forEach((key,num)->{
|
||||
if(patternPhasic.matcher(key).matches()){
|
||||
key = Param.phasic_rate_$;
|
||||
}else if(patternRate.matcher(key).matches()){
|
||||
key = Param.v_rate;
|
||||
}else if(patternInRate.matcher(key).matches()){
|
||||
key = Param.in_v_rate;
|
||||
}
|
||||
|
||||
switch (key){
|
||||
case freq:
|
||||
powerQualityIndicatorsVO.setFrequency(num.size());
|
||||
break;
|
||||
case Param.freq_dev:
|
||||
powerQualityIndicatorsVO.setFrequencyDeviation(num.size());
|
||||
break;
|
||||
case Param.rms_v:
|
||||
powerQualityIndicatorsVO.setPhaseOrLineVoltageRms(powerQualityIndicatorsVO.getPhaseOrLineVoltageRms()+num.size());
|
||||
break;
|
||||
case Param.rms_lvr:
|
||||
powerQualityIndicatorsVO.setPhaseOrLineVoltageRms(powerQualityIndicatorsVO.getPhaseOrLineVoltageRms()+num.size());
|
||||
break;
|
||||
case Param.vu_dev:
|
||||
powerQualityIndicatorsVO.setVoltageDeviation(num.size());
|
||||
break;
|
||||
case Param.rms_i:
|
||||
powerQualityIndicatorsVO.setCurrentRms(num.size());
|
||||
break;
|
||||
case Param.v_thd:
|
||||
powerQualityIndicatorsVO.setVoltageTotalHarmonicDistortion(num.size());
|
||||
break;
|
||||
case Param.v_1_v:
|
||||
powerQualityIndicatorsVO.setPhaseOrLineVoltageFundamentalRms(num.size());
|
||||
break;
|
||||
case Param.phasic_v_1:
|
||||
powerQualityIndicatorsVO.setPhaseOrLineVoltageFundamentalPhaseAngle(num.size());
|
||||
break;
|
||||
case Param.phasic_rate_$:
|
||||
harmPhasicSet.addAll(num);
|
||||
break;
|
||||
case Param.v_rate:
|
||||
harmVSet.addAll(num);
|
||||
break;
|
||||
case Param.in_v_rate:
|
||||
inHarmVSet.addAll(num);
|
||||
break;
|
||||
case Param.v_zero:
|
||||
case Param.v_neg:
|
||||
case Param.v_pos:
|
||||
posVSet.addAll(num);
|
||||
break;
|
||||
case Param.v_unbalance:
|
||||
powerQualityIndicatorsVO.setBalanceV(num.size());
|
||||
break;
|
||||
case Param.fluc:
|
||||
powerQualityIndicatorsVO.setVoltageFluctuation(num.size());
|
||||
break;
|
||||
case Param.plt:
|
||||
powerQualityIndicatorsVO.setShortTermFlickerValue(num.size());
|
||||
break;
|
||||
case Param.pst:
|
||||
powerQualityIndicatorsVO.setLongTermFlickerValue(num.size());
|
||||
break;
|
||||
default:
|
||||
System.out.println("存在未知指标:"+key);
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
powerQualityIndicatorsVO.setHarmonicVoltagePhaseAngle(harmPhasicSet.size());
|
||||
powerQualityIndicatorsVO.setHarmonicVoltageContentRate(harmVSet.size());
|
||||
powerQualityIndicatorsVO.setInterHarmonicVoltageContentRate(inHarmVSet.size());
|
||||
powerQualityIndicatorsVO.setPositiveNegativeZeroSequenceVoltage(posVSet.size());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -80,8 +80,8 @@ public class DeptLineServiceImpl extends ServiceImpl<DeptLineMapper, DeptLine> i
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getLineByDeptIds(List<String> ids,List<Integer> runFlag,List<Integer> dataType) {
|
||||
return this.baseMapper.getLineIdByDeptIds(ids,runFlag,dataType);
|
||||
public List<String> getLineByDeptIds(List<String> ids,List<Integer> runFlag,List<Integer> dataType,String objType) {
|
||||
return this.baseMapper.getLineIdByDeptIds(ids,runFlag,dataType,objType);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -767,8 +767,7 @@ public class GeneralDeviceService {
|
||||
List<DeptDTO> deptDTOList = deptFeignClient.getDeptDescendantIndexes(deptId, Stream.of(0, 1).collect(Collectors.toList())).getData();
|
||||
if (CollUtil.isNotEmpty(deptDTOList)) {
|
||||
List<String> deptIds = deptDTOList.stream().map(DeptDTO::getId).distinct().collect(Collectors.toList());
|
||||
|
||||
return deptLineService.getLineByDeptIds(deptIds,runFlag,dataType);
|
||||
return deptLineService.getLineByDeptIds(deptIds,runFlag,dataType,null);
|
||||
}
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user