算法提交

This commit is contained in:
hzj
2023-12-07 13:40:54 +08:00
parent 2704188f75
commit 79e01bbc82
12 changed files with 399 additions and 12 deletions

View File

@@ -80,7 +80,11 @@ public class OrgPointExecutor extends BaseExecutor{
public void processOperatingIndexProcess(NodeComponent bindCmp) {
String tag = bindCmp.getTag();
CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam = bindCmp.getRequestData();
if (tag.equalsIgnoreCase("r_operating_index_m")) {
if (tag.equalsIgnoreCase("r_operating_index_d")) {
//日表
rOperatingIndexService.handleDay(calculatedParam);
}
else if (tag.equalsIgnoreCase("r_operating_index_m")) {
//日表
rOperatingIndexService.handleMonth(calculatedParam);
} else if (tag.equalsIgnoreCase("r_operating_index_q")) {

View File

@@ -1,13 +1,11 @@
package com.njcn.prepare.harmonic.service.mysql.Impl.area;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
import com.njcn.device.biz.pojo.param.DeptGetLineParam;
import com.njcn.device.pms.pojo.po.Monitor;
import com.njcn.harmonic.pojo.po.*;
import com.njcn.prepare.harmonic.constant.AlgorithmParam;
@@ -26,7 +24,6 @@ import com.njcn.system.enums.DicDataEnum;
import com.njcn.system.enums.DicDataTypeEnum;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@@ -225,7 +222,8 @@ public class PrimaryGridDataServiceImpl implements PrimaryGridDataService {
ROperatingIndexDPO rOperatingIndexDPO = new ROperatingIndexDPO();
rOperatingIndexDPO.setOrgNo(orgid);
rOperatingIndexDPO.setDataDate(tempDate);
rOperatingIndexDPO.setDataDate(LocalDate.parse(primaryGridParam.getDataDate()));
rOperatingIndexDPO.setMeasurementRunPoints(measurement_run_points);
rOperatingIndexDPO.setTransitMeasurementPoints(transit_measurement_points);
rOperatingIndexDPO.setEffectiveAccessMeasurementCount(effective_access_measurement_count);
@@ -397,7 +395,7 @@ public class PrimaryGridDataServiceImpl implements PrimaryGridDataService {
ROperatingIndexDPO rOperatingIndexDPO = new ROperatingIndexDPO();
rOperatingIndexDPO.setOrgNo(orgid);
rOperatingIndexDPO.setDataDate(tempDate);
rOperatingIndexDPO.setDataDate(LocalDate.parse(primaryGridParam.getDataDate()));
rOperatingIndexDPO.setMeasurementRunPoints(measurement_run_points);
rOperatingIndexDPO.setTransitMeasurementPoints(transit_measurement_points);
rOperatingIndexDPO.setEffectiveAccessMeasurementCount(effective_access_measurement_count);

View File

@@ -136,7 +136,7 @@ public class RDimObjTargetMServiceImpl extends MppServiceImpl<RDimObjTargetMMapp
overLimiCount = Integer.valueOf(rStatLimitRateDPOS.stream().filter(po->po.getUaberranceOvertime()>0).distinct().count()+"");
} else if ( Objects.equals(temp.getCode(), DicDataEnum.HARMONIC_CURRENT.getCode())) {
overLimiCount = Integer.valueOf(rStatLimitRateDPOS.stream().filter(po->
po.getIharm2Overtime()>0||
po.getIharm2Overtime()>0||
po.getIharm3Overtime() >0||
po.getIharm4Overtime() >0||
po.getIharm5Overtime() >0||

View File

@@ -20,4 +20,6 @@ public interface ROperatingIndexService {
void handleQtr(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
void handleYear(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
}

View File

@@ -7,6 +7,7 @@ import cn.hutool.core.date.LocalDateTimeUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
import com.njcn.harmonic.pojo.po.ROperatingIndexDPO;
import com.njcn.harmonic.pojo.po.ROperatingIndexMPO;
import com.njcn.harmonic.pojo.po.ROperatingIndexQPO;
import com.njcn.harmonic.pojo.po.ROperatingIndexYPO;
@@ -16,6 +17,7 @@ import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorMPO;
import com.njcn.prepare.harmonic.pojo.po.RDnOperatingIndexMPO;
import com.njcn.prepare.harmonic.pojo.po.RDnOperatingQPO;
import com.njcn.prepare.harmonic.pojo.po.RDnOperatingYPO;
import com.njcn.prepare.harmonic.service.mysql.area.ROperatingIndexDPOService;
import com.njcn.prepare.harmonic.service.mysql.area.ROperatingIndexMPOService;
import com.njcn.prepare.harmonic.service.mysql.area.ROperatingIndexQPOService;
import com.njcn.prepare.harmonic.service.mysql.area.ROperatingIndexYPOService;
@@ -57,6 +59,7 @@ public class ROperatingIndexServiceImpl implements ROperatingIndexService {
private final ROperatingMonitorService rOperatingMonitorDService;
private final ROperatingMonitorMService rOperatingMonitorMService;
private final ROperatingIndexDPOService rOperatingIndexDPOService;
private final ROperatingIndexMPOService rOperatingIndexMPOService;
private final ROperatingIndexQPOService rOperatingIndexQPOService;
private final ROperatingIndexYPOService rOperatingIndexYPOService;
@@ -514,6 +517,131 @@ public class ROperatingIndexServiceImpl implements ROperatingIndexService {
}
}
@Override
public void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
List<ROperatingIndexDPO> rdnOperatingIndexDPOList = new ArrayList<>();
QueryWrapper<ROperatingMonitorDPO> queryWrapperD = new QueryWrapper<>();
DateTime begin = DateUtil.beginOfDay(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
DateTime end = DateUtil.endOfDay(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN); /*获取监测点类型类型*/
/*获取监测点类型类型*/
List<DictData> lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
Map<String, DictData> lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
for (DeptGetChildrenMoreDTO deptGetChildrenMoreDTO : calculatedParam.getIdList()) {
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) {
List<String> collect = deptGetChildrenMoreDTO.getLineBaseList().stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
queryWrapperD.clear();
queryWrapperD.in("measurement_point_id", collect).
between("data_date",begin,end);
List<ROperatingMonitorDPO> rOperatingMonitorDPOList = rOperatingMonitorDService.list(queryWrapperD);
ROperatingIndexDPO rOperatingIndexDPO = new ROperatingIndexDPO();
rOperatingIndexDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
rOperatingIndexDPO.setDataDate(localDate);
List<String> collect1 = rOperatingMonitorDPOList.stream().filter(temp -> temp.getEffectiveMinuteCount() > 1).
map(ROperatingMonitorDPO::getMeasurementPointId).distinct().collect(Collectors.toList());
List<ROperatingMonitorDPO> monitorList = rOperatingMonitorDPOList.stream().filter(temp -> temp.getEffectiveMinuteCount() > 1).collect(Collectors.toList());
List<String> collect2 = rOperatingMonitorDPOList.stream().filter(temp -> temp.getDataIntegrityRate().doubleValue() > 0.95 && temp.getIsUnusual() == 1).
map(ROperatingMonitorDPO::getMeasurementPointId).distinct().collect(Collectors.toList());
Map<String, List<ROperatingMonitorDPO>> collect3 = rOperatingMonitorDPOList.stream().collect(Collectors.groupingBy(ROperatingMonitorDPO::getDevId));
Map<String, List<ROperatingMonitorDPO>> collect4 = monitorList.stream().collect(Collectors.groupingBy(ROperatingMonitorDPO::getDevId));
rOperatingIndexDPO.setEffectiveAccessMeasurementCount(collect2.size());
rOperatingIndexDPO.setMeasurementRunPoints(collect.size());
rOperatingIndexDPO.setOnlineMeasurementCount(collect4.size());
rOperatingIndexDPO.setTransitMeasurementPoints(collect1.size());
rOperatingIndexDPO.setOnlineMeasurementPoints(collect3.size());
// rOperatingIndexMPO.setShouldCount();
List<String> collect5 = rOperatingMonitorDPOList.stream().filter(temp -> temp.getIsUnusual() == 0).map(ROperatingMonitorDPO::getMeasurementPointId).distinct().collect(Collectors.toList());
double v = rOperatingMonitorDPOList.stream().mapToDouble(temp -> {
return temp.getIndexIntegrityRate().doubleValue();
}).average().orElse(0.0);
double v1 = rOperatingMonitorDPOList.stream().mapToDouble(temp -> {
return temp.getDataRightRate().doubleValue();
}).average().orElse(0.0);
double v2 = rOperatingMonitorDPOList.stream().mapToDouble(temp -> {
return temp.getDataIntegrityRate().doubleValue();
}).average().orElse(0.0);
rOperatingIndexDPO.setIndexIntegrityRate(v);
rOperatingIndexDPO.setDataIntegrityRate(v2);
rOperatingIndexDPO.setIsUnusual(collect5.size());
rOperatingIndexDPO.setDataRightRate(v1);
rdnOperatingIndexDPOList.add(rOperatingIndexDPO);
}
// if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())) {
// if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())) {
// Map<Integer, List<LineDevGetDTO>> collect3 = deptGetChildrenMoreDTO.getPwMonitorIds().stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineType));
//
// collect3.forEach((k,v)->{
// List<String> collect = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
// queryWrapperD.clear();
// queryWrapperD.in("measurement_point_id", collect).
// between("data_date",begin,end);
//
//
// List<ROperatingMonitorDPO> rOperatingMonitorDPOList = rOperatingMonitorDService.list(queryWrapperD);
// ROperatingIndexDPO rOperatingIndexDPO = new ROperatingIndexDPO();
// rOperatingIndexDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
// rOperatingIndexDPO.setDataDate(localDate);
// List<String> collect1 = rOperatingMonitorDPOList.stream().filter(temp -> temp.getEffectiveMinuteCount() > 1).
// map(ROperatingMonitorDPO::getMeasurementPointId).distinct().collect(Collectors.toList());
//
// List<ROperatingMonitorDPO> monitorList = rOperatingMonitorDPOList.stream().filter(temp -> temp.getEffectiveMinuteCount() > 1).collect(Collectors.toList());
//
// List<String> collect2 = rOperatingMonitorDPOList.stream().filter(temp -> temp.getDataIntegrityRate().doubleValue() > 0.95 && temp.getIsUnusual() == 1).
// map(ROperatingMonitorDPO::getMeasurementPointId).distinct().collect(Collectors.toList());
//
//
// rOperatingIndexDPO.setEffectiveAccessMeasurementCount(collect2.size());
// rOperatingIndexDPO.setMeasurementRunPoints(collect.size());
// rOperatingIndexDPO.setTransitMeasurementPoints(collect1.size());
//
//
// List<String> collect5 = rOperatingMonitorDPOList.stream().filter(temp -> temp.getIsUnusual() == 0).map(ROperatingMonitorDPO::getMeasurementPointId).distinct().collect(Collectors.toList());
//
//
// double integrity = rOperatingMonitorDPOList.stream().mapToDouble(temp -> {
// return temp.getIndexIntegrityRate().doubleValue();
// }).average().orElse(0.0);
// double v1 = rOperatingMonitorDPOList.stream().mapToDouble(temp -> {
// return temp.getDataRightRate().doubleValue();
// }).average().orElse(0.0);
// double v2 = rOperatingMonitorDPOList.stream().mapToDouble(temp -> {
// return temp.getDataIntegrityRate().doubleValue();
// }).average().orElse(0.0);
// rOperatingIndexDPO.setIndexIntegrityRate(integrity);
// rOperatingIndexDPO.setDataIntegrityRate(v2);
// rOperatingIndexDPO.setIsUnusual(collect5.size());
// rOperatingIndexDPO.setDataRightRate(v1);
// rdnOperatingIndexMPOList.add(rDnOperatingIndexMPO);
// });
//
// }
//
// }
}
if (!CollectionUtils.isEmpty(rdnOperatingIndexDPOList)){
rOperatingIndexDPOService.saveOrUpdateBatchByMultiId(rdnOperatingIndexDPOList);
}
}
@Deprecated
private void hanlderYear(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {