电能质量问题监测点超标新增需求
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user