1.全景增加技术监督计划调整

2.增加暂态列表信息和监测点评估信息
This commit is contained in:
wr
2025-12-12 15:01:29 +08:00
parent 601a78246e
commit a6d2d6ed47
18 changed files with 273 additions and 51 deletions

View File

@@ -99,4 +99,9 @@ public class PollutionLineInfoDTO {
* 监测点名称
*/
private String lineName;
/**
* 实际安装位置
*/
private String actualArea;
}

View File

@@ -77,4 +77,7 @@ public class RunManageParam extends BaseParam implements Serializable {
@ApiModelProperty(name = "evaluate", value = "评价")
private String evaluate;
@ApiModelProperty(name = "ids", value = "监测点id集合")
private List<String> ids;
}

View File

@@ -36,6 +36,9 @@ public class GridDiagramProVO {
@ApiModelProperty(name = "integrityRate", value = "数据完整率")
private Float integrityRate;
@ApiModelProperty(name = "onLineRate", value = "数据在线率")
private Float onLineRate;
}
}

View File

@@ -1,7 +1,10 @@
package com.njcn.device.pq.pojo.vo.dataClean;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @Author: cdf
* @CreateTime: 2025-03-31
@@ -78,4 +81,71 @@ public class DetailAbnormalVO {
//限值
private float overLimitValue;
}
@Data
public static class Assess {
/**
* 频率偏差
*/
@ApiModelProperty("频率偏差")
private Double freqData = 3.14159;
@ApiModelProperty("频率偏差限值")
private Float freqLimit = 3.14159F;
@ApiModelProperty("频率偏差信息")
private List<DetailLimitInnerVO> freqDataList;
/**
* 电压偏差上
*/
@ApiModelProperty("电压上偏差")
private Double vDevData = 3.14159;
@ApiModelProperty("电压上偏差限值")
private Float vDevLimit = 3.14159F;
@ApiModelProperty("频率偏差信息")
private List<DetailLimitInnerVO> vDevDataList;
/**
* 电压偏差下
*/
@ApiModelProperty("电压下偏差")
private Double uDevData = 3.14159;
@ApiModelProperty("电压下偏差限值")
private Float uDevLimit = 3.14159F;
@ApiModelProperty("频率偏差信息")
private List<DetailLimitInnerVO> uDevDataList;
/**
* 总谐波畸变率
*/
@ApiModelProperty("总谐波畸变率")
private Double uaberranceData = 3.14159;
@ApiModelProperty("总谐波畸变率限值")
private Float uaberranceLimit = 3.14159F;
@ApiModelProperty("频率偏差信息")
private List<DetailLimitInnerVO> uaberranceDataList;
/**
* 三相电压不平衡度
*/
@ApiModelProperty("三相电压不平衡度")
private Double unbalanceData = 3.14159;
@ApiModelProperty("三相电压不平衡度限值")
private Float unbalanceLimit = 3.14159F;
@ApiModelProperty("频率偏差信息")
private List<DetailLimitInnerVO> unbalanceDataList;
/**
* 电压闪变
*/
@ApiModelProperty("电压闪变")
private Double flickerData = 3.14159;
@ApiModelProperty("电压闪变限值")
private Float flickerLimit = 3.14159F;
@ApiModelProperty("频率偏差信息")
private List<DetailLimitInnerVO> flickerDataList;
}
}

View File

@@ -141,5 +141,14 @@ public class DataVerifyController extends BaseController {
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/limitTableDetail")
@ApiOperation("监测点评价")
public HttpResult<DetailAbnormalVO.Assess> limitTableDetail(@RequestBody MonitorBaseParam monitorBaseParam) {
String methodDescribe = getMethodDescribe("limitTableDetail");
DetailAbnormalVO.Assess list = iDataVerifyService.limitTableDetail(monitorBaseParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
}

View File

@@ -44,4 +44,5 @@ public interface IDataVerifyService extends IService<DataVerify> {
List<DetailAbnormalVO.DetailLimitInnerVO> monitorLimitTableDetail(MonitorBaseParam monitorBaseParam);
DetailAbnormalVO.Assess limitTableDetail(MonitorBaseParam monitorBaseParam);
}

View File

@@ -2,6 +2,7 @@ package com.njcn.device.pq.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.njcn.common.pojo.enums.common.ServerEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
@@ -331,7 +332,9 @@ public class CommTerminalServiceImpl implements CommTerminalService {
@Override
public List<String> getRunMonitorByDept(MonitorBaseParam monitorBaseParam) {
List<String> ids = deptFeignClient.getDepSonIdtByDeptId(monitorBaseParam.getDeptId()).getData();
List<String> monitorIds = deptLineService.getLineByDeptIds(ids, monitorBaseParam.getManufacturer(), Arrays.asList(monitorBaseParam.getLineRunFlag()), Stream.of(0, 1, 2).collect(Collectors.toList()), monitorBaseParam.getObjType());
List<String> monitorIds = deptLineService.getLineByDeptIds(ids, monitorBaseParam.getManufacturer(),
ObjectUtil.isNotNull(monitorBaseParam.getLineRunFlag())? Arrays.asList(monitorBaseParam.getLineRunFlag()):null,
Stream.of(0, 1, 2).collect(Collectors.toList()), monitorBaseParam.getObjType());
return monitorIds;
}

View File

@@ -19,9 +19,12 @@ import com.njcn.dataProcess.param.LineCountEvaluateParam;
import com.njcn.dataProcess.pojo.dto.DataLimitRateDetailDto;
import com.njcn.dataProcess.pojo.dto.DataLimitTargetDto;
import com.njcn.dataProcess.pojo.dto.PqReasonableRangeDto;
import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
import com.njcn.device.biz.enums.DeviceResponseEnum;
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
import com.njcn.device.biz.pojo.po.Overlimit;
import com.njcn.device.line.mapper.LineMapper;
import com.njcn.device.overlimit.service.IOverLimitService;
import com.njcn.device.pq.mapper.DataVerifyMapper;
import com.njcn.device.pq.mapper.PqDataVerifyBakMapper;
import com.njcn.device.pq.pojo.param.dataClean.MonitorBaseParam;
@@ -45,6 +48,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
@@ -87,8 +91,7 @@ public class DataVerifyServiceImpl extends ServiceImpl<DataVerifyMapper, DataVer
private final DataLimitRateDetailFeignClient dataLimitRateDetailFeignClient;
private final DicDataFeignClient dicDataFeignClient;
private final PqDataVerifyBakMapper pqDataVerifyBakMapper;
private final IOverLimitService overLimitService;
@Override
public VerifyMonitorVO getMonitorVerifyData(MonitorBaseParam monitorBaseParam) {
@@ -394,6 +397,88 @@ public class DataVerifyServiceImpl extends ServiceImpl<DataVerifyMapper, DataVer
return result;
}
@Override
public DetailAbnormalVO.Assess limitTableDetail(MonitorBaseParam monitorBaseParam) {
DetailAbnormalVO.Assess assess = new DetailAbnormalVO.Assess();
LineCountEvaluateParam lineCountEvaluateParam = new LineCountEvaluateParam();
lineCountEvaluateParam.setLineId(Collections.singletonList(monitorBaseParam.getMonitorIds().get(0)));
lineCountEvaluateParam.setStartTime(monitorBaseParam.getSearchBeginTime());
lineCountEvaluateParam.setEndTime(monitorBaseParam.getSearchBeginTime());
List<DataLimitRateDetailDto> dtoList = dataLimitRateDetailFeignClient.getRawData(lineCountEvaluateParam).getData();
Overlimit overLimitDataById = overLimitService.getOverLimitDataById(monitorBaseParam.getMonitorIds().get(0));
List<DetailAbnormalVO.DetailLimitInnerVO> freq = new ArrayList<>();
List<DetailAbnormalVO.DetailLimitInnerVO> voltage = new ArrayList<>();
List<DetailAbnormalVO.DetailLimitInnerVO> uaberrance = new ArrayList<>();
List<DetailAbnormalVO.DetailLimitInnerVO> ubalance = new ArrayList<>();
List<DetailAbnormalVO.DetailLimitInnerVO> flicker = new ArrayList<>();
for (DataLimitRateDetailDto dto : dtoList) {
dealJsonArr(new JSONArray(dto.getFreqDevOvertime()), freq, DicDataEnum.FREQUENCY_DEV.getCode(), null);
dealJsonArr(new JSONArray(dto.getVoltageDevOvertime()), voltage, DicDataEnum.VOLTAGE_DEV.getCode(), null);
dealJsonArr(new JSONArray(dto.getUaberranceOvertime()), uaberrance, DicDataEnum.THD_V.getCode(), null);
dealJsonArr(new JSONArray(dto.getUbalanceOvertime()), ubalance, DicDataEnum.phase_Voltage.getCode(), null);
dealJsonArr(new JSONArray(dto.getFlickerOvertime()), flicker, DicDataEnum.FLICKER.getCode(), null);
}
if (CollUtil.isNotEmpty(freq)) {
List<DetailAbnormalVO.DetailLimitInnerVO> collect = freq.stream().sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()).collect(Collectors.toList());
DetailAbnormalVO.DetailLimitInnerVO val = collect.get(0);
assess.setFreqData(Double.valueOf(val.getVal()));
assess.setFreqLimit(val.getOverLimitValue());
assess.setFreqDataList(collect);
} else {
assess.setFreqLimit(overLimitDataById.getFreqDev());
}
if (CollUtil.isNotEmpty(voltage)) {
List<DetailAbnormalVO.DetailLimitInnerVO> collect = voltage.stream().filter(x->Double.valueOf(x.getVal()) > 0).sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()).collect(Collectors.toList());
if(CollUtil.isNotEmpty(collect)){
DetailAbnormalVO.DetailLimitInnerVO val = collect.get(0);
assess.setVDevData(Double.valueOf(val.getVal()));
assess.setVDevLimit(val.getOverLimitValue());
assess.setVDevDataList(collect);
}
List<DetailAbnormalVO.DetailLimitInnerVO> collect2 = voltage.stream().filter(x->Double.valueOf(x.getVal()) < 0).sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal)).collect(Collectors.toList());
if(CollUtil.isNotEmpty(collect2)){
DetailAbnormalVO.DetailLimitInnerVO val2 = collect2.get(0);
assess.setUDevData(Double.valueOf(val2.getVal()));
assess.setUDevLimit(val2.getOverLimitValue());
assess.setUDevDataList(collect2);
}
}else{
assess.setVDevLimit(overLimitDataById.getVoltageDev());
assess.setUDevLimit(overLimitDataById.getUvoltageDev());
}
if (CollUtil.isNotEmpty(uaberrance)) {
List<DetailAbnormalVO.DetailLimitInnerVO> collect = uaberrance.stream().sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()).collect(Collectors.toList());
DetailAbnormalVO.DetailLimitInnerVO val = collect.get(0);
assess.setUaberranceData(Double.valueOf(val.getVal()));
assess.setUaberranceLimit(val.getOverLimitValue());
assess.setUaberranceDataList(collect);
}else {
assess.setUaberranceLimit(overLimitDataById.getUaberrance());
}
if (CollUtil.isNotEmpty(ubalance)) {
List<DetailAbnormalVO.DetailLimitInnerVO> collect = ubalance.stream().sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()).collect(Collectors.toList());
DetailAbnormalVO.DetailLimitInnerVO val = collect.get(0);
assess.setUnbalanceData(Double.valueOf(val.getVal()));
assess.setUnbalanceLimit(val.getOverLimitValue());
assess.setUnbalanceDataList(collect);
}else{
assess.setUnbalanceLimit(overLimitDataById.getUbalance());
}
if (CollUtil.isNotEmpty(flicker)) {
List<DetailAbnormalVO.DetailLimitInnerVO> collect = flicker.stream().sorted(Comparator.comparing(DetailAbnormalVO.DetailLimitInnerVO::getVal).reversed()).collect(Collectors.toList());
DetailAbnormalVO.DetailLimitInnerVO val = collect.get(0);
assess.setFlickerData(Double.valueOf(val.getVal()));
assess.setFlickerLimit(val.getOverLimitValue());
assess.setFlickerDataList(collect);
}else {
assess.setFlickerLimit(overLimitDataById.getFlicker());
}
return assess;
}
private Map<String, DictData> getTargetMap() {
List<DictData> dictDataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
return dictDataList.stream().collect(Collectors.toMap(DictData::getCode, Function.identity()));
@@ -572,8 +657,6 @@ public class DataVerifyServiceImpl extends ServiceImpl<DataVerifyMapper, DataVer
}
}
});
//谐波电压指标包含 各次谐波电压含有率 + 电压总谐波畸变率
HARMONIC_VOLTAGE.addAll(THD_V);
Map<String, Set<String>> overLimitCount = new HashMap<>();
overLimitCount.put(DicDataEnum.FLICKER.getCode() + SEPARATOR + DicDataEnum.FLICKER.getName(), FLICKER);

View File

@@ -472,7 +472,7 @@ public class DeviceRunEvaluateServiceImpl implements DeviceRunEvaluateService {
if (CollUtil.isNotEmpty(onlineRateDS)) {
double onlineTime = onlineRateDS.stream().mapToDouble(RStatOnlineRateVO::getOnlineMin).sum();
double offlineTime = onlineRateDS.stream().mapToDouble(RStatOnlineRateVO::getOfflineMin).sum();
if (offlineTime == 0) {
if ((onlineTime + offlineTime) == 0) {
return new BigDecimal(0);
}
return NumberUtil.round(Math.min(onlineTime * 100.0 / (onlineTime + offlineTime), 100), 2);

View File

@@ -13,6 +13,7 @@ import com.njcn.common.pojo.param.StatisticsBizBaseParam;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
import com.njcn.device.biz.pojo.param.DeptGetLineParam;
import com.njcn.device.common.mapper.onlinerate.OnLineRateMapper;
import com.njcn.device.common.service.GeneralDeviceService;
import com.njcn.device.device.service.IDeviceService;
import com.njcn.device.line.mapper.LineDetailMapper;
@@ -26,6 +27,7 @@ import com.njcn.device.pq.pojo.param.OnlineRateParam;
import com.njcn.device.pq.pojo.po.*;
import com.njcn.device.pq.pojo.vo.GridDiagramProVO;
import com.njcn.device.pq.pojo.vo.GridDiagramVO;
import com.njcn.device.pq.pojo.vo.RStatOnlineRateVO;
import com.njcn.device.pq.service.*;
import com.njcn.device.rstatintegrity.mapper.RStatIntegrityDMapper;
import com.njcn.system.api.DicDataFeignClient;
@@ -66,6 +68,7 @@ public class GridDiagramServiceImpl implements GridDiagramService {
private final LineService lineService;
private final DeptLineService deptLineService;
private final LineDetailMapper lineDetailMapper;
private final OnLineRateMapper onLineRateMapper;
@Override
public GridDiagramVO getGridDiagramMonitor(GridDiagramParam param) {
@@ -472,13 +475,16 @@ public class GridDiagramServiceImpl implements GridDiagramService {
GridDiagramProVO.Details details = new GridDiagramProVO.Details();
Stream<LineDetail> stream = lines.stream();
Stream<LineDetail> stream2 = lines.stream();
Stream<LineDetail> stream3 = lines.stream();
if (gwType != null) {
stream = stream.filter(x -> x.getMonitorFlag() == gwType);
stream2 = stream2.filter(x -> x.getMonitorFlag() == gwType);
stream3 = stream3.filter(x -> x.getMonitorFlag() == gwType);
}
if (powerFlag != null) {
stream = stream.filter(x -> x.getPowerFlag() == powerFlag);
stream2 = stream2.filter(x -> x.getPowerFlag() == powerFlag);
stream3 = stream3.filter(x -> x.getPowerFlag() == powerFlag);
}
//总监测点
List<String> ids = stream.map(LineDetail::getId).collect(Collectors.toList());
@@ -496,6 +502,23 @@ public class GridDiagramServiceImpl implements GridDiagramService {
} else {
details.setIntegrityRate(0.0f);
}
List<String> devIds = stream3.map(LineDetail::getMonitorName).collect(Collectors.toList());
if (CollUtil.isNotEmpty(devIds)) {
OnlineRateParam onlineRateParam = new OnlineRateParam();
onlineRateParam.setIds(devIds);
onlineRateParam.setStartTime(baseQueryParam.getStartTime());
onlineRateParam.setEndTime(baseQueryParam.getEndTime());
//获取所有终端在线率
List<RStatOnlineRateVO> onlineRateByDev = onLineRateMapper.getOnlineRateByDevIds(onlineRateParam);
if(CollUtil.isNotEmpty(onlineRateByDev)){
details.setOnLineRate(onlineRateByDev.get(0).getOnlineRate().floatValue());
}else{
details.setOnLineRate(0.0f);
}
} else {
details.setOnLineRate(0.0f);
}
return details;
}

View File

@@ -75,11 +75,16 @@ public class RunManageServiceImpl implements RunManageService {
@Override
public List<RunManageVO> getLineLedger(RunManageParam runManageParam) {
List<RunManageVO> resultList = new ArrayList<>();
DeviceInfoParam deviceInfoParam = new DeviceInfoParam();
BeanUtil.copyProperties(runManageParam, deviceInfoParam);
deviceInfoParam.setServerName("pqs-common");
List<GeneralDeviceDTO> generalDeviceDTOList = generalDeviceService.getDeviceInfo(deviceInfoParam, Stream.of(0,1,2).collect(Collectors.toList()), Stream.of(1).collect(Collectors.toList()));
List<String> lineIndexes = generalDeviceDTOList.stream().flatMap(list -> list.getLineIndexes().stream()).collect(Collectors.toList());
List<String> lineIndexes ;
if(CollUtil.isNotEmpty(runManageParam.getIds())){
lineIndexes =runManageParam.getIds();
}else{
DeviceInfoParam deviceInfoParam = new DeviceInfoParam();
BeanUtil.copyProperties(runManageParam, deviceInfoParam);
deviceInfoParam.setServerName("pqs-common");
List<GeneralDeviceDTO> generalDeviceDTOList = generalDeviceService.getDeviceInfo(deviceInfoParam, Stream.of(0,1,2).collect(Collectors.toList()), Stream.of(1).collect(Collectors.toList()));
lineIndexes = generalDeviceDTOList.stream().flatMap(list -> list.getLineIndexes().stream()).collect(Collectors.toList());
}
if (!CollectionUtils.isEmpty(lineIndexes)) {
resultList = deviceMapper.getRunManageList(lineIndexes, runManageParam.getComFlag(),runManageParam.getRunFlag(), Objects.isNull(runManageParam.getSearchValue())?null:runManageParam.getSearchValue());
if(CollUtil.isNotEmpty(resultList)){

View File

@@ -371,7 +371,8 @@
deviceDetail.id deviceId,
pv.scale lineVoltage,
pqsub.scale subVoltage,
lineDetail.monitor_id monitorId
lineDetail.monitor_id monitorId,
lineDetail.Actual_Area actualArea
FROM
pq_line line,
pq_line_detail lineDetail,

View File

@@ -68,7 +68,8 @@
SELECT
DISTINCT
detail.*,
pqd.Com_Flag as comFlag
pqd.Com_Flag as comFlag,
pqd.id as monitorName
FROM
pq_line line,
pq_line_detail detail,