1.谐波统计bug修改

This commit is contained in:
wr
2023-09-19 11:01:48 +08:00
parent e0ac80822a
commit 7da60259b6
3 changed files with 159 additions and 154 deletions

View File

@@ -25,15 +25,16 @@ public class AreaDTO {
/**
* 平均超标天数
*/
private Double averageOverDay = 0.0;
private Double averageOverDay = 3.14159;
/**
* 符合性占比
*/
private Double ratio = 0.0;
private Double ratio = 3.14159;
/**
* 监测点超标占比
*/
private Double lineRatio = 0.0;
private Double lineRatio = 3.14159;
}

View File

@@ -33,17 +33,17 @@ public class HarmonicDeptVO implements Serializable {
private Integer overLineCount = 0;
@ApiModelProperty("符合性占比")
private Double ratio = -1.0;
private Double ratio = 3.14159;
/**
* 监测点超标占比
*/
@ApiModelProperty("监测点超标占比")
private Double lineRatio;
private Double lineRatio = 3.14159;
/**
* 平均超标天数
*/
@ApiModelProperty("平均超标天数")
private Double averageOverDay = -1.0;
private Double averageOverDay = 3.14159;
}

View File

@@ -57,6 +57,7 @@ public class HarmonicServiceImpl implements IHarmonicService {
private final LineFeignClient lineFeignClient;
private final RStatLimitTargetDMapper targetDMapper;
@Override
public List<PollutionVO> getDeptSubstationRelations(HarmonicPublicParam harmonicPublicParam) {
harmonicPublicParam.setServerName(generalInfo.getMicroServiceName());
@@ -64,38 +65,38 @@ public class HarmonicServiceImpl implements IHarmonicService {
List<String> lineList = new ArrayList<>();
List<PollutionLineDTO> lineInfo = new ArrayList<>();
PollutionParamDTO paramDTO = new PollutionParamDTO();
if (StringUtils.isBlank(RequestUtil.getDeptIndex())){
if (StringUtils.isBlank(RequestUtil.getDeptIndex())) {
return list;
}
List<GeneralDeviceDTO> deptList = generalDeviceInfoClient.getPracticalRunDeviceInfo(harmonicPublicParam).getData();
deptList.forEach(dept->{
deptList.forEach(dept -> {
lineList.addAll(dept.getLineIndexes());
});
if (!CollectionUtils.isEmpty(lineList)){
if (!CollectionUtils.isEmpty(lineList)) {
paramDTO.setLineList(lineList);
lineInfo = lineFeignClient.getLineInfo(paramDTO).getData();
}
Map<String,List<PollutionLineDTO>> map = lineInfo.stream().collect(Collectors.groupingBy(PollutionLineDTO::getSubstationId));
Map<String, List<PollutionLineDTO>> map = lineInfo.stream().collect(Collectors.groupingBy(PollutionLineDTO::getSubstationId));
//获取所有的数据信息
List<RStatLimitTargetDPO> limitTargetNew = getLimitTargetNew(lineList, harmonicPublicParam.getSearchBeginTime(), harmonicPublicParam.getSearchEndTime());
//聚合查询
List<RStatLimitTargetDPO> allData = new ArrayList<>();
if (Objects.equals(harmonicPublicParam.getStatisticalType().getCode(), DicDataEnum.XBDY_ENUM.getCode())){
if (Objects.equals(harmonicPublicParam.getStatisticalType().getCode(), DicDataEnum.XBDY_ENUM.getCode())) {
allData = getAllDataV(lineList, harmonicPublicParam.getSearchBeginTime(), harmonicPublicParam.getSearchEndTime());
} else if (Objects.equals(harmonicPublicParam.getStatisticalType().getCode(), DicDataEnum.XBDL_ENUM.getCode())){
} else if (Objects.equals(harmonicPublicParam.getStatisticalType().getCode(), DicDataEnum.XBDL_ENUM.getCode())) {
allData = getAllDataI(lineList, harmonicPublicParam.getSearchBeginTime(), harmonicPublicParam.getSearchEndTime());
}
List<RStatLimitTargetDPO> finalAllData = allData;
deptList.forEach(dept->{
deptList.forEach(dept -> {
if (!CollectionUtils.isEmpty(dept.getSubIndexes())){
if (!CollectionUtils.isEmpty(dept.getSubIndexes())) {
List<PollutionVO> childrenList = new ArrayList<>();
PollutionVO pollutionVO = new PollutionVO();
pollutionVO.setId(dept.getIndex());
pollutionVO.setName(dept.getName()+"\n("+dept.getLineIndexes().size()+")");
dept.getSubIndexes().forEach(sub->{
pollutionVO.setName(dept.getName() + "\n(" + dept.getLineIndexes().size() + ")");
dept.getSubIndexes().forEach(sub -> {
List<PollutionLineDTO> l1 = map.get(sub);
PollutionVO children = new PollutionVO();
children.setId(sub);
@@ -104,25 +105,21 @@ public class HarmonicServiceImpl implements IHarmonicService {
//监测点id
List<String> lineIds = l1.stream().map(PollutionLineDTO::getId).collect(Collectors.toList());
List<RStatLimitTargetDPO> collect = limitTargetNew.stream().filter(x -> lineIds.contains(x.getLineId())).collect(Collectors.toList());
List<RStatLimitTargetDPO> sumList = finalAllData.stream().filter(x -> lineIds.contains(x.getLineId())).collect(Collectors.toList());
children.setData(handleDataNew(collect,sumList,harmonicPublicParam.getStatisticalType().getCode()).getRatio());
children.setData(handleDataNew(collect, sumList, harmonicPublicParam.getStatisticalType().getCode()).getRatio());
childrenList.add(children);
});
if (!CollectionUtils.isEmpty(childrenList)){
if (!CollectionUtils.isEmpty(childrenList)) {
pollutionVO.setChildren(childrenList.stream().sorted(Comparator.comparing(PollutionVO::getData).reversed().thenComparing(PollutionVO::getName)).collect(Collectors.toList()));
}
if (!CollectionUtils.isEmpty(dept.getLineIndexes())){
if (!CollectionUtils.isEmpty(dept.getLineIndexes())) {
double tem = childrenList.stream().mapToDouble(PollutionVO::getData).average().orElse(3.14159);
pollutionVO.setData(tem == 3.14159||tem<0?3.14159:NumberUtil.round(tem,2).doubleValue());
pollutionVO.setData(tem == 3.14159 || tem < 0 ? 3.14159 : NumberUtil.round(tem, 2).doubleValue());
}
list.add(pollutionVO);
}
});
if (!CollectionUtils.isEmpty(list)){
if (!CollectionUtils.isEmpty(list)) {
return list.stream().sorted(Comparator.comparing(PollutionVO::getData).reversed().thenComparing(PollutionVO::getName)).collect(Collectors.toList());
}
return list;
@@ -140,28 +137,33 @@ public class HarmonicServiceImpl implements IHarmonicService {
List<RStatLimitTargetDPO> limitTargetNew = getLimitTargetNew(lineIds, param.getSearchBeginTime(), param.getSearchEndTime());
//聚合查询
List<RStatLimitTargetDPO> allData = new ArrayList<>();
if (Objects.equals(param.getStatisticalType().getCode(), DicDataEnum.XBDY_ENUM.getCode())){
if (Objects.equals(param.getStatisticalType().getCode(), DicDataEnum.XBDY_ENUM.getCode())) {
allData = getAllDataV(lineIds, param.getSearchBeginTime(), param.getSearchEndTime());
} else if (Objects.equals(param.getStatisticalType().getCode(), DicDataEnum.XBDL_ENUM.getCode())){
} else if (Objects.equals(param.getStatisticalType().getCode(), DicDataEnum.XBDL_ENUM.getCode())) {
allData = getAllDataI(lineIds, param.getSearchBeginTime(), param.getSearchEndTime());
}
List<RStatLimitTargetDPO> finalAllData = allData;
deptList.forEach(item->{
deptList.forEach(item -> {
List<String> lineList = item.getLineIndexes();
if (!CollectionUtils.isEmpty(lineList)){
if (!CollectionUtils.isEmpty(lineList)) {
HarmonicDeptVO harmonicDeptVO = new HarmonicDeptVO();
List<RStatLimitTargetDPO> collect = limitTargetNew.stream().filter(x -> lineList.contains(x.getLineId())).collect(Collectors.toList());
List<RStatLimitTargetDPO> sumList = finalAllData.stream().filter(x -> lineList.contains(x.getLineId())).collect(Collectors.toList());
AreaDTO areaDTO = handleDataNew(collect, sumList, param.getStatisticalType().getCode());
BeanUtil.copyProperties(areaDTO,harmonicDeptVO);
BeanUtil.copyProperties(areaDTO, harmonicDeptVO);
harmonicDeptVO.setId(item.getIndex());
harmonicDeptVO.setName(item.getName());
list.add(harmonicDeptVO);
}
});
if (!CollectionUtils.isEmpty(list)){
return list.stream().sorted(Comparator.comparing(HarmonicDeptVO::getRatio).reversed().thenComparing(HarmonicDeptVO::getOnlineCount).thenComparing(HarmonicDeptVO::getOverLineCount)).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(list)) {
List<HarmonicDeptVO> collect = list.stream().filter(x->x.getRatio()!=3.14159&&x.getOnlineCount()!=0&&x.getOverLineCount()!=0)
.sorted(Comparator.comparing(HarmonicDeptVO::getRatio).reversed().thenComparing(HarmonicDeptVO::getOnlineCount).thenComparing(HarmonicDeptVO::getOverLineCount)).collect(Collectors.toList());
List<String> ids = collect.stream().map(HarmonicDeptVO::getId).collect(Collectors.toList());
collect.addAll(list.stream().filter(x->!ids.contains(x.getId()))
.collect(Collectors.toList()));
return collect;
}
return list;
}
@@ -171,32 +173,32 @@ public class HarmonicServiceImpl implements IHarmonicService {
param.setServerName(generalInfo.getMicroServiceName());
List<HarmonicSubstationVO> list = new ArrayList<>();
List<GeneralDeviceDTO> subList = generalDeviceInfoClient.getPracticalRunDeviceInfoAsSubstation(param).getData();
subList.forEach(item->{
subList.forEach(item -> {
HarmonicSubstationVO harmonicSubstationVO = new HarmonicSubstationVO();
harmonicSubstationVO.setId(item.getIndex());
harmonicSubstationVO.setName(item.getName());
List<String> lineList = item.getLineIndexes();
if (!CollectionUtils.isEmpty(lineList)){
AreaDTO areaDTO = handleData(getLimitTarget(lineList, param.getSearchBeginTime(),param.getSearchEndTime()),param.getStatisticalType().getCode(),lineList, param.getSearchBeginTime(),param.getSearchEndTime());
BeanUtil.copyProperties(areaDTO,harmonicSubstationVO);
int result = getWarningInfo(lineList, param.getSearchBeginTime(),param.getSearchEndTime(),param.getStatisticalType().getCode());
if (result == -1){
if (!CollectionUtils.isEmpty(lineList)) {
AreaDTO areaDTO = handleData(getLimitTarget(lineList, param.getSearchBeginTime(), param.getSearchEndTime()), param.getStatisticalType().getCode(), lineList, param.getSearchBeginTime(), param.getSearchEndTime());
BeanUtil.copyProperties(areaDTO, harmonicSubstationVO);
int result = getWarningInfo(lineList, param.getSearchBeginTime(), param.getSearchEndTime(), param.getStatisticalType().getCode());
if (result == -1) {
harmonicSubstationVO.setWarningFreq(-1.0);
} else {
if (areaDTO.getOverLineCount() == 0){
if (areaDTO.getOnlineCount() > 0){
if (areaDTO.getOverLineCount() == 0) {
if (areaDTO.getOnlineCount() > 0) {
harmonicSubstationVO.setWarningFreq(0.0);
} else {
harmonicSubstationVO.setWarningFreq(-1.0);
}
} else {
harmonicSubstationVO.setWarningFreq(BigDecimal.valueOf(result*1.0/areaDTO.getOverLineCount()).setScale(2, RoundingMode.HALF_UP).doubleValue());
harmonicSubstationVO.setWarningFreq(BigDecimal.valueOf(result * 1.0 / areaDTO.getOverLineCount()).setScale(2, RoundingMode.HALF_UP).doubleValue());
}
}
}
list.add(harmonicSubstationVO);
});
if (!CollectionUtils.isEmpty(list)){
if (!CollectionUtils.isEmpty(list)) {
return list.stream().sorted(Comparator.comparing(HarmonicSubstationVO::getRatio).reversed().thenComparing(HarmonicSubstationVO::getOnlineCount).thenComparing(HarmonicSubstationVO::getOverLineCount)).collect(Collectors.toList());
}
return list;
@@ -207,33 +209,33 @@ public class HarmonicServiceImpl implements IHarmonicService {
param.setServerName(generalInfo.getMicroServiceName());
List<HarmonicLineVO> list = new ArrayList<>();
List<String> line = new ArrayList<>();
if (StringUtils.isBlank(RequestUtil.getDeptIndex())){
if (StringUtils.isBlank(RequestUtil.getDeptIndex())) {
return list;
}
List<GeneralDeviceDTO> sub = generalDeviceInfoClient.getPracticalRunDeviceInfoAsSubstation(param).getData();
sub.forEach(item->{
if (Objects.equals(param.getId(),item.getIndex())){
if (!CollectionUtils.isEmpty(item.getLineIndexes())){
sub.forEach(item -> {
if (Objects.equals(param.getId(), item.getIndex())) {
if (!CollectionUtils.isEmpty(item.getLineIndexes())) {
line.addAll(item.getLineIndexes());
}
}
});
if (!CollectionUtils.isEmpty(line)){
List<LimitTarget> limitTargetList = getLineOverDays(line,param.getSearchBeginTime(),param.getSearchEndTime(),param.getStatisticalType().getCode());
if (!CollectionUtils.isEmpty(limitTargetList)){
buildData(list,limitTargetList,param.getStatisticalType().getCode());
if (!CollectionUtils.isEmpty(line)) {
List<LimitTarget> limitTargetList = getLineOverDays(line, param.getSearchBeginTime(), param.getSearchEndTime(), param.getStatisticalType().getCode());
if (!CollectionUtils.isEmpty(limitTargetList)) {
buildData(list, limitTargetList, param.getStatisticalType().getCode());
}
}
//获取监测点名称
if (!CollectionUtils.isEmpty(list)){
if (!CollectionUtils.isEmpty(list)) {
List<String> lineList = list.stream().map(HarmonicLineVO::getId).collect(Collectors.toList());
List<LineDeviceStateVO> lineDeviceStateVOList = lineFeignClient.getAllLine(lineList).getData();
list.stream().map(item1->lineDeviceStateVOList.stream().filter(item2->Objects.equals(item1.getId(),item2.getId())).findAny().map(item3->{
list.stream().map(item1 -> lineDeviceStateVOList.stream().filter(item2 -> Objects.equals(item1.getId(), item2.getId())).findAny().map(item3 -> {
item1.setName(item3.getName());
return list;
})).collect(Collectors.toList());
}
if (!CollectionUtils.isEmpty(list)){
if (!CollectionUtils.isEmpty(list)) {
return list.stream().sorted(Comparator.comparing(HarmonicLineVO::getOverDays).reversed()).collect(Collectors.toList());
}
return list;
@@ -245,38 +247,38 @@ public class HarmonicServiceImpl implements IHarmonicService {
param.setServerName(generalInfo.getMicroServiceName());
List<HarmonicLineVO> list = new ArrayList<>();
List<String> lineList = new ArrayList<>();
if (StringUtils.isBlank(RequestUtil.getDeptIndex())){
if (StringUtils.isBlank(RequestUtil.getDeptIndex())) {
return list;
}
List<GeneralDeviceDTO> deviceList = generalDeviceInfoClient.getPracticalRunDeviceInfo(param).getData();
deviceList.forEach(item->{
if (!CollectionUtils.isEmpty(item.getLineIndexes())){
deviceList.forEach(item -> {
if (!CollectionUtils.isEmpty(item.getLineIndexes())) {
lineList.addAll(item.getLineIndexes());
}
});
if (!CollectionUtils.isEmpty(lineList)){
List<LimitTarget> limitTargetList = getLineOverDays(lineList,param.getSearchBeginTime(),param.getSearchEndTime(),param.getStatisticalType().getCode());
if (!CollectionUtils.isEmpty(limitTargetList)){
buildData(list,limitTargetList,param.getStatisticalType().getCode());
if (!CollectionUtils.isEmpty(lineList)) {
List<LimitTarget> limitTargetList = getLineOverDays(lineList, param.getSearchBeginTime(), param.getSearchEndTime(), param.getStatisticalType().getCode());
if (!CollectionUtils.isEmpty(limitTargetList)) {
buildData(list, limitTargetList, param.getStatisticalType().getCode());
}
}
list.sort((item1,item2)->item2.getOverDays().compareTo(item1.getOverDays()));
list.sort((item1, item2) -> item2.getOverDays().compareTo(item1.getOverDays()));
//获取监测点名称
if (!CollectionUtils.isEmpty(list)){
if (!CollectionUtils.isEmpty(list)) {
List<String> l1 = list.stream().map(HarmonicLineVO::getId).collect(Collectors.toList());
List<LineDeviceStateVO> lineDeviceStateVOList = lineFeignClient.getAllLine(l1).getData();
list.stream().map(item1->lineDeviceStateVOList.stream().filter(item2->Objects.equals(item1.getId(),item2.getId())).findAny().map(item3->{
list.stream().map(item1 -> lineDeviceStateVOList.stream().filter(item2 -> Objects.equals(item1.getId(), item2.getId())).findAny().map(item3 -> {
item1.setName(item3.getName());
return list;
})).collect(Collectors.toList());
}
if (list.size() > Param.UP_LIMIT){
return list.subList(Param.DOWN_LIMIT,Param.UP_LIMIT);
if (list.size() > Param.UP_LIMIT) {
return list.subList(Param.DOWN_LIMIT, Param.UP_LIMIT);
}
return list;
}
public List<RStatLimitTargetDPO> getLimitTargetNew(List<String> lineList, String startTime, String endTime){
public List<RStatLimitTargetDPO> getLimitTargetNew(List<String> lineList, String startTime, String endTime) {
List<RStatLimitTargetDPO> limitRates = targetDMapper.selectList(new LambdaQueryWrapper<RStatLimitTargetDPO>()
.in(RStatLimitTargetDPO::getLineId, lineList)
.ge(StrUtil.isNotBlank(startTime), RStatLimitTargetDPO::getTime, DateUtil.beginOfDay(DateUtil.parse(startTime)))
@@ -284,24 +286,26 @@ public class HarmonicServiceImpl implements IHarmonicService {
);
return limitRates;
}
/**
* 功能描述: 获取limitTarget数据
* @param lineList 部门列表
* @param startTime 开始时间
* @param endTime 结束时间
*
* @param lineList 部门列表
* @param startTime 开始时间
* @param endTime 结束时间
* @return java.util.List<com.njcn.harmonic.pojo.dto.PublicDTO>
* @author xy
* @date 2022/2/25 15:05
*/
public List<LimitTarget> getLimitTarget(List<String> lineList, String startTime, String endTime){
public List<LimitTarget> getLimitTarget(List<String> lineList, String startTime, String endTime) {
List<LimitTarget> listInfo = new ArrayList<>();
List<RStatLimitTargetDPO> limitRates = targetDMapper.selectList(new LambdaQueryWrapper<RStatLimitTargetDPO>()
.in(RStatLimitTargetDPO::getLineId, lineList)
.ge(StrUtil.isNotBlank(startTime), RStatLimitTargetDPO::getTime, DateUtil.beginOfDay(DateUtil.parse(startTime)))
.le(StrUtil.isNotBlank(endTime), RStatLimitTargetDPO::getTime, DateUtil.endOfDay(DateUtil.parse(endTime)))
);
if(CollUtil.isNotEmpty(limitRates)){
limitRates.forEach(list ->{
if (CollUtil.isNotEmpty(limitRates)) {
limitRates.forEach(list -> {
LimitTarget limitRatePO = BeanUtil.copyProperties(list, LimitTarget.class);
limitRatePO.setTime(list.getTime().toInstant());
limitRatePO.setLineId(list.getLineId());
@@ -388,7 +392,7 @@ public class HarmonicServiceImpl implements IHarmonicService {
listInfo.add(limitRatePO);
});
}
return listInfo;
return listInfo;
}
@@ -414,19 +418,19 @@ public class HarmonicServiceImpl implements IHarmonicService {
int overDay = 0;
List<RStatLimitTargetDPO> l = map.get(key);
for (RStatLimitTargetDPO pojo : l) {
if (Objects.equals(type, DicDataEnum.XBDY_ENUM.getCode())){
if (pojo.getUaberranceOvertime()>0 || pojo.getUharm20Overtime()>0 || pojo.getUharm3Overtime()>0 || pojo.getUharm4Overtime()>0 || pojo.getUharm5Overtime()>0 || pojo.getUharm6Overtime()>0 || pojo.getUharm7Overtime()>0 || pojo.getUharm8Overtime()>0 || pojo.getUharm9Overtime()>0 || pojo.getUharm10Overtime()>0 || pojo.getUharm11Overtime()>0 || pojo.getUharm12Overtime()>0 || pojo.getUharm13Overtime()>0 || pojo.getUharm14Overtime()>0 || pojo.getUharm15Overtime()>0 || pojo.getUharm16Overtime()>0 || pojo.getUharm17Overtime()>0 || pojo.getUharm18Overtime()>0 || pojo.getUharm19Overtime()>0 || pojo.getUharm20Overtime()>0 || pojo.getUharm21Overtime()>0 || pojo.getUharm22Overtime()>0 || pojo.getUharm23Overtime()>0 || pojo.getUharm24Overtime()>0 || pojo.getUharm25Overtime()>0){
if (Objects.equals(type, DicDataEnum.XBDY_ENUM.getCode())) {
if (pojo.getUaberranceOvertime() > 0 || pojo.getUharm20Overtime() > 0 || pojo.getUharm3Overtime() > 0 || pojo.getUharm4Overtime() > 0 || pojo.getUharm5Overtime() > 0 || pojo.getUharm6Overtime() > 0 || pojo.getUharm7Overtime() > 0 || pojo.getUharm8Overtime() > 0 || pojo.getUharm9Overtime() > 0 || pojo.getUharm10Overtime() > 0 || pojo.getUharm11Overtime() > 0 || pojo.getUharm12Overtime() > 0 || pojo.getUharm13Overtime() > 0 || pojo.getUharm14Overtime() > 0 || pojo.getUharm15Overtime() > 0 || pojo.getUharm16Overtime() > 0 || pojo.getUharm17Overtime() > 0 || pojo.getUharm18Overtime() > 0 || pojo.getUharm19Overtime() > 0 || pojo.getUharm20Overtime() > 0 || pojo.getUharm21Overtime() > 0 || pojo.getUharm22Overtime() > 0 || pojo.getUharm23Overtime() > 0 || pojo.getUharm24Overtime() > 0 || pojo.getUharm25Overtime() > 0) {
overCountByDay = overCountByDay + 1;
overDay = overDay + 1;
}
} else if (Objects.equals(type, DicDataEnum.XBDL_ENUM.getCode())){
if (pojo.getIharm2Overtime()>0 || pojo.getIharm3Overtime()>0 || pojo.getIharm4Overtime()>0 || pojo.getIharm5Overtime()>0 || pojo.getIharm6Overtime()>0 || pojo.getIharm7Overtime()>0 || pojo.getIharm8Overtime()>0 || pojo.getIharm9Overtime()>0 || pojo.getIharm10Overtime()>0 || pojo.getIharm11Overtime()>0 || pojo.getIharm12Overtime()>0 || pojo.getIharm13Overtime()>0 || pojo.getIharm14Overtime()>0 || pojo.getIharm15Overtime()>0 || pojo.getIharm16Overtime()>0 || pojo.getIharm17Overtime()>0 || pojo.getIharm18Overtime()>0 || pojo.getIharm19Overtime()>0 || pojo.getIharm20Overtime()>0 || pojo.getIharm21Overtime()>0 || pojo.getIharm22Overtime()>0 || pojo.getIharm23Overtime()>0 || pojo.getIharm24Overtime()>0 || pojo.getIharm25Overtime()>0){
} else if (Objects.equals(type, DicDataEnum.XBDL_ENUM.getCode())) {
if (pojo.getIharm2Overtime() > 0 || pojo.getIharm3Overtime() > 0 || pojo.getIharm4Overtime() > 0 || pojo.getIharm5Overtime() > 0 || pojo.getIharm6Overtime() > 0 || pojo.getIharm7Overtime() > 0 || pojo.getIharm8Overtime() > 0 || pojo.getIharm9Overtime() > 0 || pojo.getIharm10Overtime() > 0 || pojo.getIharm11Overtime() > 0 || pojo.getIharm12Overtime() > 0 || pojo.getIharm13Overtime() > 0 || pojo.getIharm14Overtime() > 0 || pojo.getIharm15Overtime() > 0 || pojo.getIharm16Overtime() > 0 || pojo.getIharm17Overtime() > 0 || pojo.getIharm18Overtime() > 0 || pojo.getIharm19Overtime() > 0 || pojo.getIharm20Overtime() > 0 || pojo.getIharm21Overtime() > 0 || pojo.getIharm22Overtime() > 0 || pojo.getIharm23Overtime() > 0 || pojo.getIharm24Overtime() > 0 || pojo.getIharm25Overtime() > 0) {
overCountByDay = overCountByDay + 1;
overDay = overDay + 1;
}
}
}
ratio = ratio + overDay*1.0/l.size();
ratio = ratio + overDay * 1.0 / l.size();
}
//平均超标天数
if (CollectionUtils.isEmpty(list)){
@@ -435,42 +439,39 @@ public class HarmonicServiceImpl implements IHarmonicService {
avgOverDay = overLineCount == 0?0.0:BigDecimal.valueOf(overCountByDay*1.0/overLineCount).setScale(2, RoundingMode.HALF_UP).doubleValue();
}
//月监测点符合性超标占比
ratio = map.size() == 0?0:BigDecimal.valueOf(ratio*100/map.size()).setScale(2, RoundingMode.HALF_UP).doubleValue();
ratio = map.size() == 0?0:BigDecimal.valueOf(ratio*100.0/map.size()).setScale(2, RoundingMode.HALF_UP).doubleValue();
areaDTO.setOnlineCount(onlineCount);
areaDTO.setOverLineCount(overLineCount);
//平均超标天数
areaDTO.setAverageOverDay(avgOverDay);
areaDTO.setRatio(Math.min(ratio,100.0));
//月监测点超标占比
double lineRatio = onlineCount==0?0:BigDecimal.valueOf(overLineCount*100/onlineCount).setScale(2, RoundingMode.HALF_UP).doubleValue();
double lineRatio = onlineCount==0?0:BigDecimal.valueOf(overLineCount*100.0/onlineCount).setScale(2, RoundingMode.HALF_UP).doubleValue();
areaDTO.setLineRatio(Math.min(lineRatio,100.0));
return areaDTO;
}
/** todo
/**
* todo
* 功能描述: 处理区域(变电站)在线监测点数、超标监测点数、平均超标天数、占比
*
* @param list 集合
* type 类型
* type 类型
* @return
* @author xy
* @date 2022/2/25 15:05
*/
public AreaDTO handleData(List<LimitTarget> list,String type,List<String> lineList,String startTime,String endTime) {
int onlineCount = 0,overLineCount = 0,overCountByDay = 0;
double avgOverDay = 0.0,ratio = 0.0;
public AreaDTO handleData(List<LimitTarget> list, String type, List<String> lineList, String startTime, String endTime) {
int onlineCount = 0, overLineCount = 0, overCountByDay = 0;
double avgOverDay = 0.0, ratio = 0.0;
AreaDTO areaDTO = new AreaDTO();
if (!CollectionUtils.isEmpty(list)){
if (!CollectionUtils.isEmpty(list)) {
List<RStatLimitTargetDPO> data = new ArrayList<>();
if (Objects.equals(type, DicDataEnum.XBDY_ENUM.getCode())){
data = getAllDataV(lineList,startTime,endTime);
} else if (Objects.equals(type, DicDataEnum.XBDL_ENUM.getCode())){
data = getAllDataI(lineList,startTime,endTime);
if (Objects.equals(type, DicDataEnum.XBDY_ENUM.getCode())) {
data = getAllDataV(lineList, startTime, endTime);
} else if (Objects.equals(type, DicDataEnum.XBDL_ENUM.getCode())) {
data = getAllDataI(lineList, startTime, endTime);
}
if (!CollectionUtils.isEmpty(data)) {
onlineCount = data.size();
@@ -478,96 +479,99 @@ public class HarmonicServiceImpl implements IHarmonicService {
areaDTO.setOnlineCount(onlineCount);
//超标监测点数
for (RStatLimitTargetDPO pojo : data) {
if (Objects.equals(type, DicDataEnum.XBDY_ENUM.getCode())){
if (pojo.getAllTime()>0){
if (Objects.equals(type, DicDataEnum.XBDY_ENUM.getCode())) {
if (pojo.getAllTime() > 0) {
overLineCount = overLineCount + 1;
}
} else if (Objects.equals(type, DicDataEnum.XBDL_ENUM.getCode())){
if (pojo.getAllTime()>0){
} else if (Objects.equals(type, DicDataEnum.XBDL_ENUM.getCode())) {
if (pojo.getAllTime() > 0) {
overLineCount = overLineCount + 1;
}
}
}
}
}
Map<Instant,List<LimitTarget>> map = list.stream().collect(Collectors.groupingBy(LimitTarget::getTime));
Map<Instant, List<LimitTarget>> map = list.stream().collect(Collectors.groupingBy(LimitTarget::getTime));
for (Instant key : map.keySet()) {
int overDay = 0;
List<LimitTarget> l = map.get(key);
for (LimitTarget pojo : l) {
if (Objects.equals(type, DicDataEnum.XBDY_ENUM.getCode())){
if (pojo.getUAberranceOverTime()>0 || pojo.getUHarm2OverTime()>0 || pojo.getUHarm3OverTime()>0 || pojo.getUHarm4OverTime()>0 || pojo.getUHarm5OverTime()>0 || pojo.getUHarm6OverTime()>0 || pojo.getUHarm7OverTime()>0 || pojo.getUHarm8OverTime()>0 || pojo.getUHarm9OverTime()>0 || pojo.getUHarm10OverTime()>0 || pojo.getUHarm11OverTime()>0 || pojo.getUHarm12OverTime()>0 || pojo.getUHarm13OverTime()>0 || pojo.getUHarm14OverTime()>0 || pojo.getUHarm15OverTime()>0 || pojo.getUHarm16OverTime()>0 || pojo.getUHarm17OverTime()>0 || pojo.getUHarm18OverTime()>0 || pojo.getUHarm19OverTime()>0 || pojo.getUHarm20OverTime()>0 || pojo.getUHarm21OverTime()>0 || pojo.getUHarm22OverTime()>0 || pojo.getUHarm23OverTime()>0 || pojo.getUHarm24OverTime()>0 || pojo.getUHarm25OverTime()>0){
if (Objects.equals(type, DicDataEnum.XBDY_ENUM.getCode())) {
if (pojo.getUAberranceOverTime() > 0 || pojo.getUHarm2OverTime() > 0 || pojo.getUHarm3OverTime() > 0 || pojo.getUHarm4OverTime() > 0 || pojo.getUHarm5OverTime() > 0 || pojo.getUHarm6OverTime() > 0 || pojo.getUHarm7OverTime() > 0 || pojo.getUHarm8OverTime() > 0 || pojo.getUHarm9OverTime() > 0 || pojo.getUHarm10OverTime() > 0 || pojo.getUHarm11OverTime() > 0 || pojo.getUHarm12OverTime() > 0 || pojo.getUHarm13OverTime() > 0 || pojo.getUHarm14OverTime() > 0 || pojo.getUHarm15OverTime() > 0 || pojo.getUHarm16OverTime() > 0 || pojo.getUHarm17OverTime() > 0 || pojo.getUHarm18OverTime() > 0 || pojo.getUHarm19OverTime() > 0 || pojo.getUHarm20OverTime() > 0 || pojo.getUHarm21OverTime() > 0 || pojo.getUHarm22OverTime() > 0 || pojo.getUHarm23OverTime() > 0 || pojo.getUHarm24OverTime() > 0 || pojo.getUHarm25OverTime() > 0) {
overCountByDay = overCountByDay + 1;
overDay = overDay + 1;
}
} else if (Objects.equals(type, DicDataEnum.XBDL_ENUM.getCode())){
if (pojo.getIHarm2OverTime()>0 || pojo.getIHarm3OverTime()>0 || pojo.getIHarm4OverTime()>0 || pojo.getIHarm5OverTime()>0 || pojo.getIHarm6OverTime()>0 || pojo.getIHarm7OverTime()>0 || pojo.getIHarm8OverTime()>0 || pojo.getIHarm9OverTime()>0 || pojo.getIHarm10OverTime()>0 || pojo.getIHarm11OverTime()>0 || pojo.getIHarm12OverTime()>0 || pojo.getIHarm13OverTime()>0 || pojo.getIHarm14OverTime()>0 || pojo.getIHarm15OverTime()>0 || pojo.getIHarm16OverTime()>0 || pojo.getIHarm17OverTime()>0 || pojo.getIHarm18OverTime()>0 || pojo.getIHarm19OverTime()>0 || pojo.getIHarm20OverTime()>0 || pojo.getIHarm21OverTime()>0 || pojo.getIHarm22OverTime()>0 || pojo.getIHarm23OverTime()>0 || pojo.getIHarm24OverTime()>0 || pojo.getIHarm25OverTime()>0){
} else if (Objects.equals(type, DicDataEnum.XBDL_ENUM.getCode())) {
if (pojo.getIHarm2OverTime() > 0 || pojo.getIHarm3OverTime() > 0 || pojo.getIHarm4OverTime() > 0 || pojo.getIHarm5OverTime() > 0 || pojo.getIHarm6OverTime() > 0 || pojo.getIHarm7OverTime() > 0 || pojo.getIHarm8OverTime() > 0 || pojo.getIHarm9OverTime() > 0 || pojo.getIHarm10OverTime() > 0 || pojo.getIHarm11OverTime() > 0 || pojo.getIHarm12OverTime() > 0 || pojo.getIHarm13OverTime() > 0 || pojo.getIHarm14OverTime() > 0 || pojo.getIHarm15OverTime() > 0 || pojo.getIHarm16OverTime() > 0 || pojo.getIHarm17OverTime() > 0 || pojo.getIHarm18OverTime() > 0 || pojo.getIHarm19OverTime() > 0 || pojo.getIHarm20OverTime() > 0 || pojo.getIHarm21OverTime() > 0 || pojo.getIHarm22OverTime() > 0 || pojo.getIHarm23OverTime() > 0 || pojo.getIHarm24OverTime() > 0 || pojo.getIHarm25OverTime() > 0) {
overCountByDay = overCountByDay + 1;
overDay = overDay + 1;
}
}
}
ratio = ratio + overDay*1.0/l.size();
ratio = ratio + overDay * 1.0 / l.size();
}
//平均超标天数
if (CollectionUtils.isEmpty(list)){
if (CollectionUtils.isEmpty(list)) {
avgOverDay = -1.0;
} else {
avgOverDay = overLineCount == 0?0.0:BigDecimal.valueOf(overCountByDay*1.0/overLineCount).setScale(2, RoundingMode.HALF_UP).doubleValue();
avgOverDay = overLineCount == 0 ? 0.0 : BigDecimal.valueOf(overCountByDay * 1.0 / overLineCount).setScale(2, RoundingMode.HALF_UP).doubleValue();
}
//月监测点符合性超标占比
ratio = map.size() == 0?-1.0:BigDecimal.valueOf(ratio*100/map.size()).setScale(2, RoundingMode.HALF_UP).doubleValue();
ratio = map.size() == 0 ? -1.0 : BigDecimal.valueOf(ratio * 100 / map.size()).setScale(2, RoundingMode.HALF_UP).doubleValue();
areaDTO.setOnlineCount(onlineCount);
areaDTO.setOverLineCount(overLineCount);
areaDTO.setAverageOverDay(avgOverDay);
areaDTO.setRatio(Math.min(ratio,100.0));
areaDTO.setRatio(Math.min(ratio, 100.0));
//月监测点超标占比
double lineRatio = onlineCount==0?0:BigDecimal.valueOf(overLineCount*100/onlineCount).setScale(2, RoundingMode.HALF_UP).doubleValue();
areaDTO.setLineRatio(Math.min(lineRatio,100.0));
double lineRatio = onlineCount == 0 ? 0 : BigDecimal.valueOf(overLineCount * 100 / onlineCount).setScale(2, RoundingMode.HALF_UP).doubleValue();
areaDTO.setLineRatio(Math.min(lineRatio, 100.0));
return areaDTO;
}
/**
* 功能描述: 处理区域在线监测点数、超标监测点数
*
* @param list 集合
* @return
* @author xy
* @date 2022/2/25 15:05
*/
private List<RStatLimitTargetDPO> getAllDataV(List<String> list, String startTime, String endTime){
return targetDMapper.getSumV(list,startTime,endTime);
private List<RStatLimitTargetDPO> getAllDataV(List<String> list, String startTime, String endTime) {
return targetDMapper.getSumV(list, startTime, endTime);
}
private List<RStatLimitTargetDPO> getAllDataI(List<String> list, String startTime, String endTime){
return targetDMapper.getSumI(list,startTime,endTime);
private List<RStatLimitTargetDPO> getAllDataI(List<String> list, String startTime, String endTime) {
return targetDMapper.getSumI(list, startTime, endTime);
}
/**
* 功能描述: 获取告警频次
* @author xy
* @param lineList 监测点id
* @param startTime 开始时间
* @param endTime 结束时间
* @param type 类型
* @date 2022/4/24 16:47
*
* @param lineList 监测点id
* @param startTime 开始时间
* @param endTime 结束时间
* @param type 类型
* @return
* @author xy
* @date 2022/4/24 16:47
*/
private Integer getWarningInfo(List<String> lineList, String startTime, String endTime, String type) {
Integer result = 0;
if (Objects.equals(type, DicDataEnum.XBDY_ENUM.getCode())){
if (Objects.equals(type, DicDataEnum.XBDY_ENUM.getCode())) {
Integer sumAddV = targetDMapper.getSumAddV(lineList, startTime, endTime);
if(ObjectUtil.isNotNull(sumAddV)){
result=sumAddV;
}else{
result=-1;
if (ObjectUtil.isNotNull(sumAddV)) {
result = sumAddV;
} else {
result = -1;
}
} else if (Objects.equals(type, DicDataEnum.XBDL_ENUM.getCode())){
} else if (Objects.equals(type, DicDataEnum.XBDL_ENUM.getCode())) {
Integer sumAddI = targetDMapper.getSumAddI(lineList, startTime, endTime);
if(ObjectUtil.isNotNull(sumAddI)){
result=sumAddI;
}else{
result=-1;
if (ObjectUtil.isNotNull(sumAddI)) {
result = sumAddI;
} else {
result = -1;
}
}
@@ -575,30 +579,30 @@ public class HarmonicServiceImpl implements IHarmonicService {
}
/**
* 功能描述: 获取监测点超标天数
* @author xy
* @param lineList 监测点id
* @param startTime 开始时间
* @param endTime 结束时间
* @param type 类型
* @date 2022/4/24 16:47
*
* @param lineList 监测点id
* @param startTime 开始时间
* @param endTime 结束时间
* @param type 类型
* @return
* @author xy
* @date 2022/4/24 16:47
*/
private List<LimitTarget> getLineOverDays(List<String> lineList, String startTime, String endTime, String type) {
List<LimitTarget> listInfo=new ArrayList<>();
List<RStatLimitTargetDPO> sum=new ArrayList<>();
if (Objects.equals(type, DicDataEnum.XBDY_ENUM.getCode())){
List<LimitTarget> listInfo = new ArrayList<>();
List<RStatLimitTargetDPO> sum = new ArrayList<>();
if (Objects.equals(type, DicDataEnum.XBDY_ENUM.getCode())) {
sum = targetDMapper.getSumV(lineList, startTime, endTime);
} else if (Objects.equals(type, DicDataEnum.XBDL_ENUM.getCode())){
} else if (Objects.equals(type, DicDataEnum.XBDL_ENUM.getCode())) {
sum = targetDMapper.getSumI(lineList, startTime, endTime);
}
if(CollUtil.isNotEmpty(sum)){
sum.forEach(list ->{
LimitTarget limitRatePO = BeanUtil.copyProperties(list,LimitTarget.class);
if (CollUtil.isNotEmpty(sum)) {
sum.forEach(list -> {
LimitTarget limitRatePO = BeanUtil.copyProperties(list, LimitTarget.class);
limitRatePO.setLineId(list.getLineId());
limitRatePO.setFlickerAllTime(list.getFlickerAllTime());
limitRatePO.setFlickerOverTime(list.getFlickerOvertime());
@@ -683,17 +687,17 @@ public class HarmonicServiceImpl implements IHarmonicService {
listInfo.add(limitRatePO);
});
}
return listInfo;
return listInfo;
}
/**
* 数据组装
*/
private void buildData(List<HarmonicLineVO> result,List<LimitTarget> list, String type) {
list.forEach(item->{
private void buildData(List<HarmonicLineVO> result, List<LimitTarget> list, String type) {
list.forEach(item -> {
HarmonicLineVO harmonicLineVO = new HarmonicLineVO();
harmonicLineVO.setId(item.getLineId());
if (Objects.equals(type, DicDataEnum.XBDY_ENUM.getCode())){
if (Objects.equals(type, DicDataEnum.XBDY_ENUM.getCode())) {
harmonicLineVO.setOverThreeTimes(item.getUHarm3OverTime());
harmonicLineVO.setOverFiveTimes(item.getUHarm5OverTime());
harmonicLineVO.setOverSevenTimes(item.getUHarm7OverTime());
@@ -701,11 +705,11 @@ public class HarmonicServiceImpl implements IHarmonicService {
harmonicLineVO.setOverThirteenTimes(item.getUHarm13OverTime());
harmonicLineVO.setOverTwentyThreeTimes(item.getUHarm23OverTime());
harmonicLineVO.setOverTwentyFiveTimes(item.getUHarm25OverTime());
int otherTimes = item.getUAberranceOverTime()+item.getUHarm2OverTime()+item.getUHarm4OverTime()+item.getUHarm6OverTime()+item.getUHarm8OverTime()+item.getUHarm9OverTime()+item.getUHarm10OverTime()+item.getUHarm12OverTime()+item.getUHarm14OverTime()+item.getUHarm15OverTime()+item.getUHarm16OverTime()+item.getUHarm17OverTime()+item.getUHarm18OverTime()+item.getUHarm19OverTime()+item.getUHarm20OverTime()+item.getUHarm21OverTime()+item.getUHarm22OverTime()+item.getUHarm24OverTime();
int otherTimes = item.getUAberranceOverTime() + item.getUHarm2OverTime() + item.getUHarm4OverTime() + item.getUHarm6OverTime() + item.getUHarm8OverTime() + item.getUHarm9OverTime() + item.getUHarm10OverTime() + item.getUHarm12OverTime() + item.getUHarm14OverTime() + item.getUHarm15OverTime() + item.getUHarm16OverTime() + item.getUHarm17OverTime() + item.getUHarm18OverTime() + item.getUHarm19OverTime() + item.getUHarm20OverTime() + item.getUHarm21OverTime() + item.getUHarm22OverTime() + item.getUHarm24OverTime();
harmonicLineVO.setOtherTimes(otherTimes);
List<Integer> over = Stream.of(item.getUAberranceOverTime(),item.getUHarm2OverTime(),item.getUHarm3OverTime(),item.getUHarm4OverTime(),item.getUHarm5OverTime(),item.getUHarm6OverTime(),item.getUHarm7OverTime(),item.getUHarm8OverTime(),item.getUHarm9OverTime(),item.getUHarm10OverTime(),item.getUHarm11OverTime(),item.getUHarm12OverTime(),item.getUHarm13OverTime(),item.getUHarm14OverTime(),item.getUHarm15OverTime(),item.getUHarm16OverTime(),item.getUHarm17OverTime(),item.getUHarm18OverTime(),item.getUHarm19OverTime(),item.getUHarm20OverTime(),item.getUHarm21OverTime(),item.getUHarm22OverTime(),item.getUHarm23OverTime(),item.getUHarm24OverTime(),item.getUHarm25OverTime()).collect(Collectors.toList());
List<Integer> over = Stream.of(item.getUAberranceOverTime(), item.getUHarm2OverTime(), item.getUHarm3OverTime(), item.getUHarm4OverTime(), item.getUHarm5OverTime(), item.getUHarm6OverTime(), item.getUHarm7OverTime(), item.getUHarm8OverTime(), item.getUHarm9OverTime(), item.getUHarm10OverTime(), item.getUHarm11OverTime(), item.getUHarm12OverTime(), item.getUHarm13OverTime(), item.getUHarm14OverTime(), item.getUHarm15OverTime(), item.getUHarm16OverTime(), item.getUHarm17OverTime(), item.getUHarm18OverTime(), item.getUHarm19OverTime(), item.getUHarm20OverTime(), item.getUHarm21OverTime(), item.getUHarm22OverTime(), item.getUHarm23OverTime(), item.getUHarm24OverTime(), item.getUHarm25OverTime()).collect(Collectors.toList());
harmonicLineVO.setOverDays(Collections.max(over));
} else if (Objects.equals(type, DicDataEnum.XBDL_ENUM.getCode())){
} else if (Objects.equals(type, DicDataEnum.XBDL_ENUM.getCode())) {
harmonicLineVO.setOverThreeTimes(item.getIHarm3OverTime());
harmonicLineVO.setOverFiveTimes(item.getIHarm5OverTime());
harmonicLineVO.setOverSevenTimes(item.getIHarm7OverTime());
@@ -713,9 +717,9 @@ public class HarmonicServiceImpl implements IHarmonicService {
harmonicLineVO.setOverThirteenTimes(item.getIHarm13OverTime());
harmonicLineVO.setOverTwentyThreeTimes(item.getIHarm23OverTime());
harmonicLineVO.setOverTwentyFiveTimes(item.getIHarm25OverTime());
int otherTimes = item.getIHarm2OverTime()+item.getIHarm4OverTime()+item.getIHarm6OverTime()+item.getIHarm8OverTime()+item.getIHarm9OverTime()+item.getIHarm10OverTime()+item.getIHarm12OverTime()+item.getIHarm14OverTime()+item.getIHarm15OverTime()+item.getIHarm16OverTime()+item.getIHarm17OverTime()+item.getIHarm18OverTime()+item.getIHarm19OverTime()+item.getIHarm20OverTime()+item.getIHarm21OverTime()+item.getIHarm22OverTime()+item.getIHarm24OverTime();
int otherTimes = item.getIHarm2OverTime() + item.getIHarm4OverTime() + item.getIHarm6OverTime() + item.getIHarm8OverTime() + item.getIHarm9OverTime() + item.getIHarm10OverTime() + item.getIHarm12OverTime() + item.getIHarm14OverTime() + item.getIHarm15OverTime() + item.getIHarm16OverTime() + item.getIHarm17OverTime() + item.getIHarm18OverTime() + item.getIHarm19OverTime() + item.getIHarm20OverTime() + item.getIHarm21OverTime() + item.getIHarm22OverTime() + item.getIHarm24OverTime();
harmonicLineVO.setOtherTimes(otherTimes);
List<Integer> over = Stream.of(item.getIHarm2OverTime(),item.getIHarm3OverTime(),item.getIHarm4OverTime(),item.getIHarm5OverTime(),item.getIHarm6OverTime(),item.getIHarm7OverTime(),item.getIHarm8OverTime(),item.getIHarm9OverTime(),item.getIHarm10OverTime(),item.getIHarm11OverTime(),item.getIHarm12OverTime(),item.getIHarm13OverTime(),item.getIHarm14OverTime(),item.getIHarm15OverTime(),item.getIHarm16OverTime(),item.getIHarm17OverTime(),item.getIHarm18OverTime(),item.getIHarm19OverTime(),item.getIHarm20OverTime(),item.getIHarm21OverTime(),item.getIHarm22OverTime(),item.getIHarm23OverTime(),item.getIHarm24OverTime(),item.getIHarm25OverTime()).collect(Collectors.toList());
List<Integer> over = Stream.of(item.getIHarm2OverTime(), item.getIHarm3OverTime(), item.getIHarm4OverTime(), item.getIHarm5OverTime(), item.getIHarm6OverTime(), item.getIHarm7OverTime(), item.getIHarm8OverTime(), item.getIHarm9OverTime(), item.getIHarm10OverTime(), item.getIHarm11OverTime(), item.getIHarm12OverTime(), item.getIHarm13OverTime(), item.getIHarm14OverTime(), item.getIHarm15OverTime(), item.getIHarm16OverTime(), item.getIHarm17OverTime(), item.getIHarm18OverTime(), item.getIHarm19OverTime(), item.getIHarm20OverTime(), item.getIHarm21OverTime(), item.getIHarm22OverTime(), item.getIHarm23OverTime(), item.getIHarm24OverTime(), item.getIHarm25OverTime()).collect(Collectors.toList());
harmonicLineVO.setOverDays(Collections.max(over));
}
result.add(harmonicLineVO);