电能质量问题监测点超标新增需求

This commit is contained in:
hzj
2024-04-08 15:12:24 +08:00
parent 2512a861bb
commit 3e8b420db8
14 changed files with 558 additions and 8 deletions

View File

@@ -3,7 +3,7 @@ package com.njcn.device.biz.commApi;
import com.njcn.common.pojo.constant.ServerInfo;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.device.biz.commApi.fallback.CommLineClientFallbackFactory;
import com.njcn.device.biz.commApi.fallback.CommTerminalGeneralClientFallbackFactory;
import com.njcn.device.biz.pojo.dto.LineALLInfoDTO;
import com.njcn.device.biz.pojo.dto.LineDTO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
@@ -42,4 +42,9 @@ public interface CommLineClient {
*/
@PostMapping("/getLineDetailBatch")
HttpResult<List<LineDTO>> getLineDetailBatch(@RequestParam("ids") List<String> ids);
@GetMapping("/getLineAllDetail")
LineALLInfoDTO getLineAllDetail(@RequestParam("id") String id);
}

View File

@@ -4,6 +4,7 @@ import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.device.biz.commApi.CommLineClient;
import com.njcn.device.biz.pojo.dto.LineALLInfoDTO;
import com.njcn.device.biz.pojo.dto.LineDTO;
import com.njcn.device.biz.utils.DeviceEnumUtil;
import feign.hystrix.FallbackFactory;
@@ -43,6 +44,12 @@ public class CommLineClientFallbackFactory implements FallbackFactory<CommLineCl
throw new BusinessException(finalExceptionEnum);
}
@Override
public LineALLInfoDTO getLineAllDetail(String id) {
log.error("{}异常,降级处理,异常为:{}", "获取监测点信息", throwable.toString());
throw new BusinessException(finalExceptionEnum);
}
};
}
}

View File

@@ -0,0 +1,85 @@
package com.njcn.device.biz.pojo.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* Description:
* Date: 2024/4/7 16:41【需求编号】
*超标监测点详情(本次用于超标监测点后续接口需要其他字段,自行修改)
* @author clam
* @version V1.0.0
*/
@Data
public class LineALLInfoDTO {
//监测点本身信息
@ApiModelProperty(value = "监测点本身信息",name = "lineDTO")
private LineLineDTO lineLineDTO;
@ApiModelProperty(value = "监测点母线信息",name = "lineBusbarDTO")
private LineBusbarDTO lineBusbarDTO;
@ApiModelProperty(value = "监测点设备信息",name = "lineDeviceDTO")
private LineDeviceDTO lineDeviceDTO;
@ApiModelProperty(value = "监测点电站信息",name = "lineSubStationDTO")
private LineSubStationDTO lineSubStationDTO;
@ApiModelProperty(value = "监测点部门信息",name = "lineDeptDTO")
private LineDeptDTO lineDeptDTO;
@Data
public static class LineLineDTO {
@ApiModelProperty(name = "lineId",value = "监测点id")
private String lineId;
@ApiModelProperty(name = "linename",value = "监测点名称")
private String linename;
@ApiModelProperty(name = "num",value = "线路号")
private Integer num;
@ApiModelProperty(name = "objName",value = "监测点对象名称")
private String objName;
@ApiModelProperty(name = "loadType",value = "监测对象类型")
private String loadType;
@ApiModelProperty(name = "voltageLevel",value = "电压等级")
private String voltageLevel;
}
@Data
public static class LineBusbarDTO {
@ApiModelProperty(name = "lineId",value = "母线id")
private String busBarId;
@ApiModelProperty(name = "linename",value = "母线名称")
private String busBarName;
}
@Data
public static class LineDeviceDTO {
@ApiModelProperty(name = "deviceId",value = "设备id")
private String deviceId;
@ApiModelProperty(name = "deviceName",value = "设备名称")
private String deviceName;
}
@Data
public static class LineSubStationDTO {
@ApiModelProperty(name = "subStationId",value = "电站id")
private String subStationId;
@ApiModelProperty(name = "subStationName",value = "电站名称")
private String subStationName;
}
@Data
public static class LineDeptDTO {
}
}

View File

@@ -1,12 +1,11 @@
package com.njcn.device.pms.controller.ledgerManger;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.constant.ServerInfo;
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.device.biz.commApi.fallback.CommTerminalGeneralClientFallbackFactory;
import com.njcn.device.biz.pojo.dto.LineALLInfoDTO;
import com.njcn.device.biz.pojo.dto.LineDTO;
import com.njcn.device.pms.service.majornetwork.IMonitorService;
import com.njcn.web.controller.BaseController;
@@ -14,7 +13,6 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@@ -43,6 +41,15 @@ public class CommLineController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@GetMapping("/getLineAllDetail")
@ApiOperation("获取监测点id取超标监测点信息")
public HttpResult<LineALLInfoDTO> getLineAllDetail(@RequestParam("id") String id) {
String methodDescribe = getMethodDescribe("getLineAllDetail");
LineALLInfoDTO result = monitorService.getLineAllDetail(id);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getLineDetailBatch")
@ApiOperation("批量获取监测点信息")

View File

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.common.pojo.dto.SimpleDTO;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenDTO;
import com.njcn.device.biz.pojo.dto.LineALLInfoDTO;
import com.njcn.device.biz.pojo.dto.LineDTO;
import com.njcn.device.biz.pojo.param.DeptGetLineParam;
import com.njcn.device.pms.pojo.dto.PmsMonitorBaseDTO;
@@ -197,4 +198,6 @@ public interface IMonitorService extends IService<Monitor> {
* @date 2024/2/26
*/
List<Dept> existMonitorDeptTree();
LineALLInfoDTO getLineAllDetail(String id);
}

View File

@@ -19,6 +19,7 @@ import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.device.biz.enums.DeviceResponseEnum;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenDTO;
import com.njcn.device.biz.pojo.dto.LineALLInfoDTO;
import com.njcn.device.biz.pojo.dto.LineDTO;
import com.njcn.device.biz.pojo.param.DeptGetLineParam;
import com.njcn.device.biz.pojo.po.DeviceBak;
@@ -612,6 +613,43 @@ public class MonitorServiceImpl extends ServiceImpl<MonitorMapper, Monitor> impl
return deptList.stream().filter(it->monitorList.contains(it.getCode())).collect(Collectors.toList());
}
@Override
public LineALLInfoDTO getLineAllDetail(String id) {
LineALLInfoDTO lineALLInfoDTO = new LineALLInfoDTO();
Monitor monitor = this.getBaseMapper().selectById(id);
PmsTerminal pmsTerminal = terminalMapper.selectById(monitor.getTerminalId());
//处理监测点信息
LineALLInfoDTO.LineLineDTO lineLineDTO = new LineALLInfoDTO.LineLineDTO();
lineLineDTO.setLineId(monitor.getId());
lineLineDTO.setLinename(monitor.getLineName());
lineLineDTO.setObjName(monitor.getMonitorObjectName());
lineLineDTO.setLoadType(dicDataFeignClient.getDicDataById(monitor.getMonitorTag()).getData().getName());
//电压使用母线电压
lineLineDTO.setVoltageLevel(dicDataFeignClient.getDicDataById(monitor.getVoltageLevel()).getData().getName());
lineALLInfoDTO.setLineLineDTO(lineLineDTO);
//处理母线信息
LineALLInfoDTO.LineBusbarDTO lineBusbarDTO = new LineALLInfoDTO.LineBusbarDTO();
lineBusbarDTO.setBusBarId(monitor.getLineId());
lineBusbarDTO.setBusBarName(monitor.getLineName());
lineALLInfoDTO.setLineBusbarDTO(lineBusbarDTO);
//处理设备信息
LineALLInfoDTO.LineDeviceDTO lineDeviceDTO = new LineALLInfoDTO.LineDeviceDTO();
lineDeviceDTO.setDeviceId(monitor.getTerminalId());
lineDeviceDTO.setDeviceName(pmsTerminal.getName());
lineALLInfoDTO.setLineDeviceDTO(lineDeviceDTO);
//处理电站信息
LineALLInfoDTO.LineSubStationDTO lineSubStationDTO = new LineALLInfoDTO.LineSubStationDTO();
lineSubStationDTO.setSubStationId(monitor.getPowerrId());
lineSubStationDTO.setSubStationName(monitor.getPowerrName());
lineALLInfoDTO.setLineSubStationDTO(lineSubStationDTO);
//todo 处理部门信息后续需要部门信息在添加
return lineALLInfoDTO;
}
private String dealDataBatchUpdate(List<PmsLedgerExcel> pmsLedgerExcelList) {
List<PmsLedgerExcel> oracleTerminalExcelMsg = new ArrayList<>();

View File

@@ -6,6 +6,7 @@ import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.device.biz.pojo.dto.LineDTO;
import com.njcn.device.biz.pojo.dto.LineALLInfoDTO;
import com.njcn.device.pq.service.LineService;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
@@ -40,6 +41,15 @@ public class CommLineController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@GetMapping("/getLineAllDetail")
@ApiOperation("获取监测点id取超标监测点信息")
public HttpResult<LineALLInfoDTO> getLineAllDetail(@RequestParam("id") String id) {
String methodDescribe = getMethodDescribe("getLineAllDetail");
LineALLInfoDTO result = lineService.getLineAllDetail(id);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getLineDetailBatch")

View File

@@ -2,6 +2,7 @@ package com.njcn.device.pq.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.device.biz.pojo.dto.LineDTO;
import com.njcn.device.biz.pojo.dto.LineALLInfoDTO;
import com.njcn.device.pq.pojo.dto.PollutionLineDTO;
import com.njcn.device.pq.pojo.dto.PollutionParamDTO;
import com.njcn.device.pq.pojo.dto.PollutionSubstationDTO;
@@ -205,4 +206,6 @@ public interface LineService {
* @Date: 2023/11/8 15:46
*/
List<LineDetailVO.Detail> getLineDetailByIds(List<String> ids);
LineALLInfoDTO getLineAllDetail(String id);
}

View File

@@ -17,6 +17,7 @@ import com.njcn.common.utils.EnumUtils;
import com.njcn.common.utils.PubUtils;
import com.njcn.device.biz.enums.DeviceResponseEnum;
import com.njcn.device.biz.pojo.dto.LineDTO;
import com.njcn.device.biz.pojo.dto.LineALLInfoDTO;
import com.njcn.device.biz.pojo.po.Overlimit;
import com.njcn.device.pq.enums.LineBaseEnum;
import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO;
@@ -552,6 +553,84 @@ public class LineServiceImpl extends ServiceImpl<LineMapper, Line> implements Li
return details;
}
@Override
public LineALLInfoDTO getLineAllDetail(String id) {
LineALLInfoDTO lineALLInfoDTO = new LineALLInfoDTO();
//根据id查询当前信息的pids
List<String> pids = Arrays.asList(this.baseMapper.selectById(id).getPids().split(","));
List<String> list = new ArrayList(pids);
list.add(id);
List<LineDataVO> lineDataVOList = this.baseMapper.getLineDetail(list);
LineDetailDataVO lineDetailDataVO = new LineDetailDataVO();
String areaId = "",gdId="",subStationId = "", devId = "", voId = "",lineId="",
areaName = "",gdName="",subStationName = "", devName = "", voName = "",lineName="";
for (LineDataVO lineDataVO : lineDataVOList) {
switch (lineDataVO.getLevel()) {
case 1:
areaId = lineDataVO.getId();
areaName = lineDataVO.getName();
break;
case 2:
gdId = lineDataVO.getId();
gdName = lineDataVO.getName();
break;
case 3:
subStationId = lineDataVO.getId();
subStationName = lineDataVO.getName();
break;
case 4:
devId = lineDataVO.getId();
devName = lineDataVO.getName();
break;
case 5:
voId = lineDataVO.getId();
voName = lineDataVO.getName();
break;
case 6:
lineId = lineDataVO.getId();
lineName = lineDataVO.getName();
break;
default:
break;
}
}
LineDetail lineDetail = lineDetailMapper.selectById(id);
Voltage voltage = voltageMapper.selectById(voId);
Device device = deviceMapper.selectById(devId);
Substation substation = substationMapper.selectById(subStationId);
//处理监测点信息
LineALLInfoDTO.LineLineDTO lineLineDTO = new LineALLInfoDTO.LineLineDTO();
lineLineDTO.setLineId(lineId);
lineLineDTO.setLinename(lineName);
lineLineDTO.setNum(lineDetail.getNum());
lineLineDTO.setObjName(lineDetail.getObjName());
lineLineDTO.setLoadType(dicDataFeignClient.getDicDataById(lineDetail.getLoadType()).getData().getName());
//电压使用母线电压
lineLineDTO.setVoltageLevel(dicDataFeignClient.getDicDataById(voltage.getScale()).getData().getName());
lineALLInfoDTO.setLineLineDTO(lineLineDTO);
//处理母线信息
LineALLInfoDTO.LineBusbarDTO lineBusbarDTO = new LineALLInfoDTO.LineBusbarDTO();
lineBusbarDTO.setBusBarId(voId);
lineBusbarDTO.setBusBarName(voName);
lineALLInfoDTO.setLineBusbarDTO(lineBusbarDTO);
//处理设备信息
LineALLInfoDTO.LineDeviceDTO lineDeviceDTO = new LineALLInfoDTO.LineDeviceDTO();
lineDeviceDTO.setDeviceId(devId);
lineDeviceDTO.setDeviceName(devName);
lineALLInfoDTO.setLineDeviceDTO(lineDeviceDTO);
//处理电站信息
LineALLInfoDTO.LineSubStationDTO lineSubStationDTO = new LineALLInfoDTO.LineSubStationDTO();
lineSubStationDTO.setSubStationId(subStationId);
lineSubStationDTO.setSubStationName(subStationName);
lineALLInfoDTO.setLineSubStationDTO(lineSubStationDTO);
//todo 处理部门信息后续需要部门信息在添加
return lineALLInfoDTO;
}
@Override
public List<Overlimit> getOverLimitByList(PollutionParamDTO pollutionParamDTO) {
return overlimitMapper.selectBatchIds(pollutionParamDTO.getLineList());

View File

@@ -0,0 +1,55 @@
package com.njcn.harmonic.pojo.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDate;
import java.util.List;
/**
* Description:
* Date: 2024/4/3 16:13【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Data
public class RMpPartHarmonicDetailDTO {
/**
* 监测点ID
*/
private String measurementPointId;
private String measurementPointName;
//告警指标
private String harmonicType;
//母线id
private String barId;
private String barName;
//电站id
private String sustationId;
private String sustationName;
@ApiModelProperty(name = "objName",value = "监测点对象名称")
private String objName;
@ApiModelProperty(name = "loadType",value = "监测对象类型")
private String loadType;
@ApiModelProperty(name = "voltageLevel",value = "电压等级")
private String voltageLevel;
//超标天数
private Double overLimitrate;
/*当月超标日期
* */
private List<LocalDate> dateList;
}

View File

@@ -0,0 +1,33 @@
package com.njcn.harmonic.pojo.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* Description:
* Date: 2024/4/3 16:16【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Data
public class RMpPartHarmonicDetailQueryParam {
/**
* 统计起始日期
*/
@ApiModelProperty(name="startTime",value="统计起始日期yyyy-MM-dd")
private String startTime;
/**
* 统计截止日期
*/
@ApiModelProperty(name="endTime",value="统计截止日期yyyy-MM-dd")
private String endTime;
@ApiModelProperty(name="harmonicTypes",value="稳态指标id集合")
private List<String> harmonicTypes;
@ApiModelProperty(name="harmonicTypes",value="越线天数占比(一个月)")
private Double rate;
}

View File

@@ -0,0 +1,50 @@
package com.njcn.harmonic.controller.dataquality;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.harmonic.pojo.dto.RMpPartHarmonicDetailDTO;
import com.njcn.harmonic.pojo.param.RMpPartHarmonicDetailQueryParam;
import com.njcn.harmonic.service.majornetwork.RMpPartHarmonicDetailDService;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
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 java.util.List;
/**
* Description:
* Date: 2024/4/3 15:58【需求编号】
*
* @author clam
* @version V1.0.0
*/
@RestController
@RequiredArgsConstructor
@Api(tags = "稳态指标超标警告统计")
@RequestMapping("/rmppartharmonicdetail")
public class RMpPartHarmonicDetailController extends BaseController {
private final RMpPartHarmonicDetailDService rMpPartHarmonicDetailDService;
/**
* 稳态指标超标明细表-月表统计
*
* @param param
* @return
*/
@PostMapping("/getRMpPartHarmonicDetail")
@ApiOperation("稳态指标超标在线监测超标问题详情")
@ApiImplicitParam(name = "param", value = "参数", required = true)
public HttpResult<List<RMpPartHarmonicDetailDTO>> getRMpPartHarmonicDetail(@RequestBody RMpPartHarmonicDetailQueryParam param) {
String methodDescribe = getMethodDescribe("getRMpPartHarmonicDetail");
List<RMpPartHarmonicDetailDTO> list = rMpPartHarmonicDetailDService.getRMpPartHarmonicDetail(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
}

View File

@@ -1,6 +1,8 @@
package com.njcn.harmonic.service.majornetwork;
import com.njcn.common.pojo.param.StatisticsBizBaseParam;
import com.njcn.harmonic.pojo.dto.RMpPartHarmonicDetailDTO;
import com.njcn.harmonic.pojo.param.RMpPartHarmonicDetailQueryParam;
import com.njcn.harmonic.pojo.po.RMpPartHarmonicDetailD;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.harmonic.pojo.vo.RMpPartHarmonicDetailIconVO;
@@ -24,4 +26,6 @@ public interface RMpPartHarmonicDetailDService extends IService<RMpPartHarmonicD
* @return
*/
List<RMpPartHarmonicDetailIconVO> getRMpPartHarmonicDetailIcon(StatisticsBizBaseParam param);
List<RMpPartHarmonicDetailDTO> getRMpPartHarmonicDetail(RMpPartHarmonicDetailQueryParam param);
}

View File

@@ -1,15 +1,31 @@
package com.njcn.harmonic.service.majornetwork.impl;
import com.njcn.common.pojo.param.StatisticsBizBaseParam;
import com.njcn.harmonic.pojo.po.RMpPartHarmonicDetailD;
import com.njcn.harmonic.mapper.majornetwork.RMpPartHarmonicDetailDMapper;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.common.pojo.param.StatisticsBizBaseParam;
import com.njcn.device.biz.commApi.CommLineClient;
import com.njcn.device.biz.pojo.dto.LineALLInfoDTO;
import com.njcn.harmonic.mapper.majornetwork.RMpPartHarmonicDetailDMapper;
import com.njcn.harmonic.pojo.dto.RMpPartHarmonicDetailDTO;
import com.njcn.harmonic.pojo.param.RMpPartHarmonicDetailQueryParam;
import com.njcn.harmonic.pojo.po.RMpPartHarmonicDetailD;
import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO;
import com.njcn.harmonic.pojo.vo.RMpPartHarmonicDetailIconVO;
import com.njcn.harmonic.service.IRStatLimitRateDService;
import com.njcn.harmonic.service.majornetwork.RMpPartHarmonicDetailDService;
import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.enums.DicDataEnum;
import com.njcn.system.enums.DicDataTypeEnum;
import com.njcn.system.pojo.po.DictData;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.time.YearMonth;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* <p>
@@ -24,10 +40,165 @@ import java.util.List;
public class RMpPartHarmonicDetailDServiceImpl extends ServiceImpl<RMpPartHarmonicDetailDMapper, RMpPartHarmonicDetailD> implements RMpPartHarmonicDetailDService {
private final RMpPartHarmonicDetailDMapper rMpPartHarmonicDetailDMapper;
private final DicDataFeignClient dicDataFeignClient;
private final IRStatLimitRateDService irStatLimitRateDService;
private final CommLineClient commLineClient;
@Override
public List<RMpPartHarmonicDetailIconVO> getRMpPartHarmonicDetailIcon(StatisticsBizBaseParam param) {
return rMpPartHarmonicDetailDMapper.getRMpPartHarmonicDetailIcon(param);
}
@Override
public List<RMpPartHarmonicDetailDTO> getRMpPartHarmonicDetail(RMpPartHarmonicDetailQueryParam param) {
List<RStatLimitRateDPO> rStatLimitRateDPOs = irStatLimitRateDService.lambdaQuery().between(RStatLimitRateDPO::getTime, param.getStartTime()+" 00:00:00", param.getEndTime()+" 23:59:59").list();
List<RMpPartHarmonicDetailDTO> rMpPartHarmonicDetailDTOS = new ArrayList<>();
LocalDate date = LocalDate.parse(param.getStartTime());
YearMonth yearMonth = YearMonth.from(date);
int daysInMonth = yearMonth.lengthOfMonth();
/*获取稳态统计指标*/
List<DictData> steadyStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
rStatLimitRateDPOs.stream().collect(Collectors.groupingBy(RStatLimitRateDPO::getLineId)).forEach((k, v) -> {
LineALLInfoDTO lineALLInfoDTO = commLineClient.getLineAllDetail(k);
steadyStatis.forEach(dictData -> {
if(Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATOR.getCode())||
Objects.equals(dictData.getCode(), DicDataEnum.phase_Voltage.getCode())){
return;
}
RMpPartHarmonicDetailDTO rMpPartHarmonicDetailDTO = new RMpPartHarmonicDetailDTO();
rMpPartHarmonicDetailDTO.setHarmonicType(dictData.getId());
List<LocalDate> localDates = overLimitCount(dictData, v);
rMpPartHarmonicDetailDTO.setDateList(localDates);
rMpPartHarmonicDetailDTO.setOverLimitrate(Double.parseDouble(localDates.size()+"")/daysInMonth);
rMpPartHarmonicDetailDTO.setMeasurementPointId(k);
rMpPartHarmonicDetailDTO.setMeasurementPointName(lineALLInfoDTO.getLineLineDTO().getLinename());
rMpPartHarmonicDetailDTO.setBarId(lineALLInfoDTO.getLineBusbarDTO().getBusBarId());
rMpPartHarmonicDetailDTO.setBarName(lineALLInfoDTO.getLineBusbarDTO().getBusBarName());
rMpPartHarmonicDetailDTO.setSustationId(lineALLInfoDTO.getLineSubStationDTO().getSubStationId());
rMpPartHarmonicDetailDTO.setSustationName(lineALLInfoDTO.getLineSubStationDTO().getSubStationName());
rMpPartHarmonicDetailDTO.setObjName(lineALLInfoDTO.getLineLineDTO().getObjName());
rMpPartHarmonicDetailDTO.setLoadType(lineALLInfoDTO.getLineLineDTO().getLoadType());
rMpPartHarmonicDetailDTO.setVoltageLevel(lineALLInfoDTO.getLineLineDTO().getVoltageLevel());
// rMpPartHarmonicDetailDTO.setSustationName(data.getSubName());
//todo 增加母线信息
rMpPartHarmonicDetailDTOS.add(rMpPartHarmonicDetailDTO);
});
});
List<RMpPartHarmonicDetailDTO> result = rMpPartHarmonicDetailDTOS.stream().
filter(temp -> CollectionUtil.isEmpty(param.getHarmonicTypes()) ||param.getHarmonicTypes().contains(temp.getHarmonicType())).
filter(temp -> temp.getOverLimitrate() > param.getRate()).collect(Collectors.toList());
return result;
}
private List<LocalDate> overLimitCount(DictData temp,List<RStatLimitRateDPO> rStatLimitRateDPOs ) {
List<LocalDate> localDetails = new ArrayList<>();
if (Objects.equals(temp.getCode(), DicDataEnum.VOLTAGE_DEV.getCode())) {
localDetails = rStatLimitRateDPOs.stream().filter(rStatLimitRateDPO -> rStatLimitRateDPO.getVoltageDevOvertime() > 0)
.map(RStatLimitRateDPO::getTime).collect(Collectors.toList());
} else if ( Objects.equals(temp.getCode(), DicDataEnum.FLICKER.getCode())) {
localDetails = rStatLimitRateDPOs.stream().filter(rStatLimitRateDPO -> rStatLimitRateDPO.getFlickerOvertime() > 0)
.map(RStatLimitRateDPO::getTime).collect(Collectors.toList());
} else if ( Objects.equals(temp.getCode(), DicDataEnum.PHASE_VOLTAGE.getCode())) {
localDetails = rStatLimitRateDPOs.stream().filter(rStatLimitRateDPO -> rStatLimitRateDPO.getUbalanceOvertime() > 0)
.map(RStatLimitRateDPO::getTime).collect(Collectors.toList());
} else if (Objects.equals(temp.getCode(), DicDataEnum.THD_V.getCode())){
localDetails = rStatLimitRateDPOs.stream().filter(rStatLimitRateDPO -> rStatLimitRateDPO.getUaberranceOvertime() > 0)
.map(RStatLimitRateDPO::getTime).collect(Collectors.toList());
}else if ( Objects.equals(temp.getCode(), DicDataEnum.HARMONIC_VOLTAGE.getCode())) {
localDetails = rStatLimitRateDPOs.stream().filter(rStatLimitRateDPO ->
rStatLimitRateDPO.getUharm2Overtime()+
rStatLimitRateDPO.getUharm3Overtime()+
rStatLimitRateDPO.getUharm4Overtime()+
rStatLimitRateDPO.getUharm5Overtime()+
rStatLimitRateDPO.getUharm6Overtime()+
rStatLimitRateDPO.getUharm7Overtime()+
rStatLimitRateDPO.getUharm8Overtime()+
rStatLimitRateDPO.getUharm9Overtime()+
rStatLimitRateDPO.getUharm10Overtime()+
rStatLimitRateDPO.getUharm11Overtime()+
rStatLimitRateDPO.getUharm12Overtime()+
rStatLimitRateDPO.getUharm13Overtime()+
rStatLimitRateDPO.getUharm14Overtime()+
rStatLimitRateDPO.getUharm15Overtime()+
rStatLimitRateDPO.getUharm16Overtime()+
rStatLimitRateDPO.getUharm17Overtime()+
rStatLimitRateDPO.getUharm18Overtime()+
rStatLimitRateDPO.getUharm19Overtime()+
rStatLimitRateDPO.getUharm20Overtime()+
rStatLimitRateDPO.getUharm21Overtime()+
rStatLimitRateDPO.getUharm22Overtime()+
rStatLimitRateDPO.getUharm23Overtime()+
rStatLimitRateDPO.getUharm24Overtime()+
rStatLimitRateDPO.getUharm25Overtime() > 0)
.map(RStatLimitRateDPO::getTime).collect(Collectors.toList());
} else if ( Objects.equals(temp.getCode(), DicDataEnum.HARMONIC_CURRENT.getCode())) {
localDetails = rStatLimitRateDPOs.stream().filter(rStatLimitRateDPO ->
rStatLimitRateDPO.getIharm2Overtime()+
rStatLimitRateDPO.getIharm4Overtime()+
rStatLimitRateDPO.getIharm5Overtime()+
rStatLimitRateDPO.getIharm6Overtime()+
rStatLimitRateDPO.getIharm7Overtime()+
rStatLimitRateDPO.getIharm8Overtime()+
rStatLimitRateDPO.getIharm9Overtime()+
rStatLimitRateDPO.getIharm10Overtime()+
rStatLimitRateDPO.getIharm11Overtime()+
rStatLimitRateDPO.getIharm12Overtime()+
rStatLimitRateDPO.getIharm13Overtime()+
rStatLimitRateDPO.getIharm14Overtime()+
rStatLimitRateDPO.getIharm15Overtime()+
rStatLimitRateDPO.getIharm16Overtime()+
rStatLimitRateDPO.getIharm17Overtime()+
rStatLimitRateDPO.getIharm18Overtime()+
rStatLimitRateDPO.getIharm19Overtime()+
rStatLimitRateDPO.getIharm20Overtime()+
rStatLimitRateDPO.getIharm21Overtime()+
rStatLimitRateDPO.getIharm22Overtime()+
rStatLimitRateDPO.getIharm23Overtime()+
rStatLimitRateDPO.getIharm24Overtime()+
rStatLimitRateDPO.getIharm25Overtime()
> 0)
.map(RStatLimitRateDPO::getTime).collect(Collectors.toList());
} else if (Objects.equals(temp.getCode(), DicDataEnum.INTERHARMONIC_VOLTAGE.getCode())){
localDetails = rStatLimitRateDPOs.stream().filter(rStatLimitRateDPO ->
rStatLimitRateDPO.getInuharm1Overtime()+
rStatLimitRateDPO.getInuharm2Overtime()+
rStatLimitRateDPO.getInuharm3Overtime()+
rStatLimitRateDPO.getInuharm4Overtime()+
rStatLimitRateDPO.getInuharm5Overtime()+
rStatLimitRateDPO.getInuharm6Overtime()+
rStatLimitRateDPO.getInuharm7Overtime()+
rStatLimitRateDPO.getInuharm8Overtime()+
rStatLimitRateDPO.getInuharm9Overtime()+
rStatLimitRateDPO.getInuharm10Overtime()+
rStatLimitRateDPO.getInuharm11Overtime()+
rStatLimitRateDPO.getInuharm12Overtime()+
rStatLimitRateDPO.getInuharm13Overtime()+
rStatLimitRateDPO.getInuharm14Overtime()+
rStatLimitRateDPO.getInuharm15Overtime()+
rStatLimitRateDPO.getInuharm16Overtime()
> 0)
.map(RStatLimitRateDPO::getTime).collect(Collectors.toList());
}else if ( Objects.equals(temp.getCode(), DicDataEnum.FREQUENCY_DEV.getCode())) {
localDetails = rStatLimitRateDPOs.stream().filter(rStatLimitRateDPO -> rStatLimitRateDPO.getFreqDevOvertime() > 0)
.map(RStatLimitRateDPO::getTime).collect(Collectors.toList());
} else if (Objects.equals(temp.getCode(), DicDataEnum.NEG_CURRENT.getCode())){
localDetails = rStatLimitRateDPOs.stream().filter(rStatLimitRateDPO -> rStatLimitRateDPO.getINegOvertime() > 0)
.map(RStatLimitRateDPO::getTime).collect(Collectors.toList());
}
return localDetails.stream().distinct().collect(Collectors.toList());
}
}