修改算法
This commit is contained in:
@@ -55,7 +55,6 @@ public class RDimBusTargetDPO {
|
|||||||
@TableField(value = "Pass_Avg_Rate")
|
@TableField(value = "Pass_Avg_Rate")
|
||||||
private Double passAvgRate;
|
private Double passAvgRate;
|
||||||
|
|
||||||
@TableField(value = "`State`")
|
|
||||||
private Integer state;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -21,7 +21,7 @@ import lombok.Data;
|
|||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@TableName(value = "r_dim_bus_target_m")
|
@TableName(value = "r_dim_bus_target_m")
|
||||||
public class RDimBusTargetMPO extends BaseEntity {
|
public class RDimBusTargetMPO {
|
||||||
@MppMultiId(value = "Org_Id")
|
@MppMultiId(value = "Org_Id")
|
||||||
private String orgId;
|
private String orgId;
|
||||||
|
|
||||||
@@ -55,7 +55,6 @@ public class RDimBusTargetMPO extends BaseEntity {
|
|||||||
@TableField(value = "Pass_Avg_Rate")
|
@TableField(value = "Pass_Avg_Rate")
|
||||||
private Double passAvgRate;
|
private Double passAvgRate;
|
||||||
|
|
||||||
@TableField(value = "`State`")
|
|
||||||
private Integer state;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -21,7 +21,7 @@ import lombok.Data;
|
|||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@TableName(value = "r_dim_bus_target_y")
|
@TableName(value = "r_dim_bus_target_y")
|
||||||
public class RDimBusTargetYPO extends BaseEntity {
|
public class RDimBusTargetYPO {
|
||||||
@MppMultiId(value = "Org_Id")
|
@MppMultiId(value = "Org_Id")
|
||||||
private String orgId;
|
private String orgId;
|
||||||
|
|
||||||
@@ -55,8 +55,7 @@ public class RDimBusTargetYPO extends BaseEntity {
|
|||||||
@TableField(value = "Pass_Avg_Rate")
|
@TableField(value = "Pass_Avg_Rate")
|
||||||
private Double passAvgRate;
|
private Double passAvgRate;
|
||||||
|
|
||||||
@TableField(value = "`State`")
|
|
||||||
private Integer state;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -76,8 +76,6 @@ public class RDimBusbarHarmnicDPO {
|
|||||||
@TableField(value = "Statis_count")
|
@TableField(value = "Statis_count")
|
||||||
private Integer statisCount;
|
private Integer statisCount;
|
||||||
|
|
||||||
@TableField(value = "`State`")
|
|
||||||
private Integer state;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2,42 +2,25 @@ package com.njcn.prepare.harmonic.service.mysql.dim.impl;
|
|||||||
|
|
||||||
import cn.hutool.core.date.DatePattern;
|
import cn.hutool.core.date.DatePattern;
|
||||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
|
||||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||||
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
||||||
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
|
|
||||||
import com.njcn.device.pms.pojo.po.Monitor;
|
|
||||||
import com.njcn.device.pq.pojo.po.RStatIntegrityD;
|
|
||||||
import com.njcn.harmonic.pojo.po.RMpPartHarmonicDetailD;
|
|
||||||
import com.njcn.harmonic.pojo.po.RMpSurplusHarmonicDetailD;
|
|
||||||
import com.njcn.harmonic.pojo.po.dim.RDimBusbarHarmnicDPO;
|
import com.njcn.harmonic.pojo.po.dim.RDimBusbarHarmnicDPO;
|
||||||
import com.njcn.prepare.harmonic.mapper.mysql.day.RStatIntegrityDMapper;
|
|
||||||
import com.njcn.prepare.harmonic.mapper.mysql.line.PmsMonitorMapper;
|
|
||||||
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
|
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
|
||||||
import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorDPO;
|
|
||||||
import com.njcn.prepare.harmonic.service.mysql.Impl.line.ROperatingMonitorDServiceImpl;
|
|
||||||
import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusTargetDPOService;
|
import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusTargetDPOService;
|
||||||
import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusbarHarmnicDPOService;
|
import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusbarHarmnicDPOService;
|
||||||
import com.njcn.prepare.harmonic.service.mysql.line.IRMpPartHarmonicDetailDService;
|
|
||||||
import com.njcn.prepare.harmonic.service.mysql.line.IRMpSurplusHarmonicDetailDService;
|
|
||||||
import com.njcn.prepare.harmonic.service.mysql.line.ROperatingMonitorService;
|
|
||||||
import com.njcn.system.api.DicDataFeignClient;
|
import com.njcn.system.api.DicDataFeignClient;
|
||||||
import com.njcn.system.enums.DicDataEnum;
|
import com.njcn.system.enums.DicDataEnum;
|
||||||
import com.njcn.system.enums.DicDataTypeEnum;
|
import com.njcn.system.enums.DicDataTypeEnum;
|
||||||
import com.njcn.system.pojo.po.DictData;
|
import com.njcn.system.pojo.po.DictData;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
||||||
import com.njcn.harmonic.pojo.po.dim.RDimBusTargetDPO;
|
import com.njcn.harmonic.pojo.po.dim.RDimBusTargetDPO;
|
||||||
import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimBusTargetDPOMapper;
|
import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimBusTargetDPOMapper;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.List;
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -56,9 +39,6 @@ public class RDimBusTargetDPOServiceImpl extends MppServiceImpl<RDimBusTargetDPO
|
|||||||
private final DicDataFeignClient dicDataFeignClient;
|
private final DicDataFeignClient dicDataFeignClient;
|
||||||
private final RDimBusbarHarmnicDPOService rDimBusbarHarmnicDPOService;
|
private final RDimBusbarHarmnicDPOService rDimBusbarHarmnicDPOService;
|
||||||
|
|
||||||
//咨询后直接用Mapper查询,这个算法只用pms补考虑pq,后续不知道要不要改
|
|
||||||
private final PmsMonitorMapper pmsMonitorMapper;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
public void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
||||||
List<RDimBusTargetDPO> rDimBusTargetDPOList = new ArrayList<>();
|
List<RDimBusTargetDPO> rDimBusTargetDPOList = new ArrayList<>();
|
||||||
@@ -88,72 +68,33 @@ public class RDimBusTargetDPOServiceImpl extends MppServiceImpl<RDimBusTargetDPO
|
|||||||
double v1 = count / effectiveBuses;
|
double v1 = count / effectiveBuses;
|
||||||
double limitrate = Math.round(v1 * 100.0) / 100.0;
|
double limitrate = Math.round(v1 * 100.0) / 100.0;
|
||||||
rDimBusTargetDPO.setLimitRate(limitrate);
|
rDimBusTargetDPO.setLimitRate(limitrate);
|
||||||
double asDouble = rdibBusbarHarmList.stream().filter(temp -> temp.getStatisCount() > 0).mapToDouble(temp -> {
|
OptionalDouble average = rdibBusbarHarmList.stream().filter(temp -> temp.getStatisCount() > 0).mapToDouble(temp -> {
|
||||||
return Double.valueOf(temp.getLimitCount()) / temp.getStatisCount();
|
return Double.valueOf(temp.getLimitCount()) / temp.getStatisCount();
|
||||||
}).average().getAsDouble();
|
}).average();
|
||||||
double passRate = Math.round(asDouble * 100.0) / 100.0;
|
Double passRate=0.00;
|
||||||
rDimBusTargetDPO.setPassRate(1-passRate);
|
if(average.isPresent()) {
|
||||||
|
passRate = average.getAsDouble();
|
||||||
|
rDimBusTargetDPO.setPassAvgRate(1 - passRate);
|
||||||
|
passRate = Math.round(passRate * 100.0) / 100.0;
|
||||||
|
rDimBusTargetDPO.setPassRate(1 - passRate);
|
||||||
|
}else {
|
||||||
|
rDimBusTargetDPO.setPassAvgRate(3.14159);
|
||||||
|
|
||||||
|
rDimBusTargetDPO.setPassRate(3.14159);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
rDimBusTargetDPO.setLimitAvgRate(limitrate);
|
||||||
|
|
||||||
|
rDimBusTargetDPOList.add(rDimBusTargetDPO);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
if (!CollectionUtils.isEmpty(rDimBusTargetDPOList)) {
|
||||||
|
this.saveOrUpdateBatchByMultiId(rDimBusTargetDPOList, 500);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void overLimitTimes(DictData temp, List<RMpSurplusHarmonicDetailD> rMpSurplusHarmonicDetailDList, List<RMpPartHarmonicDetailD> rMpPartHarmonicDetailDList, List<Monitor> monitorList) {
|
|
||||||
Double overLimitTimes =0.00;
|
|
||||||
Map<String, Integer> collect = monitorList.stream().collect(Collectors.toMap(Monitor::getId, Monitor::getStatisticalInterval));
|
|
||||||
if (Objects.equals(temp.getCode(), DicDataEnum.VOLTAGE_DEV.getCode())) {
|
|
||||||
overLimitTimes = rMpPartHarmonicDetailDList.stream().mapToDouble(po -> {
|
|
||||||
return po.getVDevTimes() * collect.get(po.getMeasurementPointId());
|
|
||||||
}
|
|
||||||
).sum();
|
|
||||||
|
|
||||||
} else if ( Objects.equals(temp.getCode(), DicDataEnum.FLICKER.getCode())) {
|
|
||||||
overLimitTimes = rMpSurplusHarmonicDetailDList.stream().mapToDouble(po -> {
|
|
||||||
return po.getFlickerTimes() * collect.get(po.getMeasurementPointId());
|
|
||||||
}
|
|
||||||
).sum();
|
|
||||||
|
|
||||||
} else if ( Objects.equals(temp.getCode(), DicDataEnum.PHASE_VOLTAGE.getCode())) {
|
|
||||||
overLimitTimes = rMpPartHarmonicDetailDList.stream().mapToDouble(po -> {
|
|
||||||
return po.getUnbalanceTimes() * collect.get(po.getMeasurementPointId());
|
|
||||||
}
|
|
||||||
).sum();
|
|
||||||
|
|
||||||
} else if (Objects.equals(temp.getCode(), DicDataEnum.THD_V.getCode())){
|
|
||||||
overLimitTimes = rMpPartHarmonicDetailDList.stream().mapToDouble(po -> {
|
|
||||||
return po.getVTimes() * collect.get(po.getMeasurementPointId());
|
|
||||||
}
|
|
||||||
).sum();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Description: overLimitBusbarsCount
|
|
||||||
* @Param:
|
|
||||||
* @return: java.lang.Integer
|
|
||||||
* @Author: clam
|
|
||||||
* @Date: 2023/11/21
|
|
||||||
*/
|
|
||||||
private Integer overLimitBusbarsCount(DictData temp, List<RMpSurplusHarmonicDetailD> rMpSurplusHarmonicDetailDList, List<RMpPartHarmonicDetailD> rMpPartHarmonicDetailDList) {
|
|
||||||
Integer busbarsCount =0;
|
|
||||||
|
|
||||||
if (Objects.equals(temp.getCode(), DicDataEnum.VOLTAGE_DEV.getCode())) {
|
|
||||||
busbarsCount = rMpPartHarmonicDetailDList.stream().filter(po -> Objects.equals(po.getIsVDev(), 1)).collect(Collectors.toList()).size();
|
|
||||||
|
|
||||||
} else if ( Objects.equals(temp.getCode(), DicDataEnum.FLICKER.getCode())) {
|
|
||||||
busbarsCount = rMpSurplusHarmonicDetailDList.stream().filter(po -> Objects.equals(po.getIsFlicker(), 1)).collect(Collectors.toList()).size();
|
|
||||||
|
|
||||||
} else if ( Objects.equals(temp.getCode(), DicDataEnum.PHASE_VOLTAGE.getCode())) {
|
|
||||||
busbarsCount = rMpPartHarmonicDetailDList.stream().filter(po -> Objects.equals(po.getIsUnbalance(), 1)).collect(Collectors.toList()).size();
|
|
||||||
|
|
||||||
|
|
||||||
} else if (Objects.equals(temp.getCode(), DicDataEnum.THD_V.getCode())){
|
|
||||||
busbarsCount = rMpPartHarmonicDetailDList.stream().filter(po -> Objects.equals(po.getIsVThd(), 1)).collect(Collectors.toList()).size();
|
|
||||||
|
|
||||||
}
|
|
||||||
return busbarsCount;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +1,31 @@
|
|||||||
package com.njcn.prepare.harmonic.service.mysql.dim.impl;
|
package com.njcn.prepare.harmonic.service.mysql.dim.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DatePattern;
|
||||||
|
import cn.hutool.core.date.DateTime;
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||||
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
||||||
|
import com.njcn.harmonic.pojo.po.dim.RDimBusTargetDPO;
|
||||||
|
import com.njcn.harmonic.pojo.po.dim.RDimBusbarHarmnicDPO;
|
||||||
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
|
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
|
||||||
import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusTargetDPOService;
|
import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusTargetDPOService;
|
||||||
import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusTargetMPOService;
|
import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusTargetMPOService;
|
||||||
|
import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusbarHarmnicDPOService;
|
||||||
|
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 lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimBusTargetMPOMapper;
|
import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimBusTargetMPOMapper;
|
||||||
import com.njcn.harmonic.pojo.po.dim.RDimBusTargetMPO;
|
import com.njcn.harmonic.pojo.po.dim.RDimBusTargetMPO;
|
||||||
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@@ -23,8 +39,65 @@ import com.njcn.harmonic.pojo.po.dim.RDimBusTargetMPO;
|
|||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class RDimBusTargetMPOServiceImpl extends MppServiceImpl<RDimBusTargetMPOMapper, RDimBusTargetMPO> implements RDimBusTargetMPOService {
|
public class RDimBusTargetMPOServiceImpl extends MppServiceImpl<RDimBusTargetMPOMapper, RDimBusTargetMPO> implements RDimBusTargetMPOService {
|
||||||
|
|
||||||
|
private final DicDataFeignClient dicDataFeignClient;
|
||||||
|
private final RDimBusbarHarmnicDPOService rDimBusbarHarmnicDPOService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handleMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
public void handleMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
||||||
|
List<RDimBusTargetMPO> rDimBusTargetMPOList = new ArrayList<>();
|
||||||
|
//指标对象类型
|
||||||
|
List<DictData> indicatorTypeDate = dicDataFeignClient.getDicDataByTypeCode(
|
||||||
|
DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
|
||||||
|
LocalDate localDate = LocalDateTimeUtil.parseDate(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN);
|
||||||
|
//获取日期
|
||||||
|
DateTime begin = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||||
|
DateTime end = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||||
|
List<String> collect = indicatorTypeDate.stream().filter(temp -> Objects.equals(temp.getCode(), DicDataEnum.VOLTAGE_DEV.getCode()) ||
|
||||||
|
Objects.equals(temp.getCode(), DicDataEnum.FLICKER.getCode()) ||
|
||||||
|
Objects.equals(temp.getCode(), DicDataEnum.PHASE_VOLTAGE.getCode()) ||
|
||||||
|
Objects.equals(temp.getCode(), DicDataEnum.THD_V.getCode())).map(DictData::getId).collect(Collectors.toList());
|
||||||
|
List<RDimBusbarHarmnicDPO> rdibBusbarHarms = rDimBusbarHarmnicDPOService.lambdaQuery().between(RDimBusbarHarmnicDPO::getStatisDate, begin,end).in(RDimBusbarHarmnicDPO::getTargetType, collect).list();
|
||||||
|
if (CollectionUtils.isEmpty(rdibBusbarHarms)){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Map<String, Map<String, List<RDimBusbarHarmnicDPO>>> collect1 = rdibBusbarHarms.stream().collect(Collectors.groupingBy(RDimBusbarHarmnicDPO::getOrgId,
|
||||||
|
Collectors.groupingBy(RDimBusbarHarmnicDPO::getTargetType)));
|
||||||
|
collect1.forEach((orgId,v)->{
|
||||||
|
v.forEach((tag,rdibBusbarHarmList)->{
|
||||||
|
RDimBusTargetMPO rDimBusTargetMPO = new RDimBusTargetMPO();
|
||||||
|
rDimBusTargetMPO.setOrgId(orgId);
|
||||||
|
rDimBusTargetMPO.setTargetType(tag);
|
||||||
|
rDimBusTargetMPO.setStatisDate(localDate);
|
||||||
|
//有效接入母线数量
|
||||||
|
Double effectiveBuses = Double.valueOf(rdibBusbarHarmList.stream().map(RDimBusbarHarmnicDPO::getBusbarId).distinct().count()
|
||||||
|
);
|
||||||
|
long count = rdibBusbarHarmList.stream().filter(temp -> temp.getLimitCount() > 0).map(RDimBusbarHarmnicDPO::getBusbarId).distinct().count();
|
||||||
|
double v1 = count / effectiveBuses;
|
||||||
|
double limitrate = Math.round(v1 * 100.0) / 100.0;
|
||||||
|
rDimBusTargetMPO.setLimitRate(limitrate);
|
||||||
|
OptionalDouble average = rdibBusbarHarmList.stream().filter(temp -> temp.getStatisCount() > 0).mapToDouble(temp -> {
|
||||||
|
return Double.valueOf(temp.getLimitCount()) / temp.getStatisCount();
|
||||||
|
}).average();
|
||||||
|
Double passRate=0.00;
|
||||||
|
if(average.isPresent()) {
|
||||||
|
passRate = average.getAsDouble();
|
||||||
|
rDimBusTargetMPO.setPassAvgRate(1 - passRate);
|
||||||
|
passRate = Math.round(passRate * 100.0) / 100.0;
|
||||||
|
rDimBusTargetMPO.setPassRate(1 - passRate);
|
||||||
|
}else {
|
||||||
|
rDimBusTargetMPO.setPassAvgRate(3.14159);
|
||||||
|
|
||||||
|
rDimBusTargetMPO.setPassRate(3.14159);
|
||||||
|
|
||||||
|
}
|
||||||
|
rDimBusTargetMPO.setLimitAvgRate(limitrate);
|
||||||
|
rDimBusTargetMPOList.add(rDimBusTargetMPO);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
if (!CollectionUtils.isEmpty(rDimBusTargetMPOList)) {
|
||||||
|
this.saveOrUpdateBatchByMultiId(rDimBusTargetMPOList, 500);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,16 +1,32 @@
|
|||||||
package com.njcn.prepare.harmonic.service.mysql.dim.impl;
|
package com.njcn.prepare.harmonic.service.mysql.dim.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DatePattern;
|
||||||
|
import cn.hutool.core.date.DateTime;
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||||
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
||||||
|
import com.njcn.harmonic.pojo.po.dim.RDimBusTargetMPO;
|
||||||
|
import com.njcn.harmonic.pojo.po.dim.RDimBusbarHarmnicDPO;
|
||||||
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
|
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
|
||||||
import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusTargetDPOService;
|
import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusTargetDPOService;
|
||||||
import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusTargetYPOService;
|
import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusTargetYPOService;
|
||||||
|
import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusbarHarmnicDPOService;
|
||||||
|
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 lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.njcn.harmonic.pojo.po.dim.RDimBusTargetYPO;
|
import com.njcn.harmonic.pojo.po.dim.RDimBusTargetYPO;
|
||||||
import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimBusTargetYPOMapper;
|
import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimBusTargetYPOMapper;
|
||||||
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@@ -24,8 +40,63 @@ import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimBusTargetYPOMapper;
|
|||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class RDimBusTargetYPOServiceImpl extends MppServiceImpl<RDimBusTargetYPOMapper, RDimBusTargetYPO> implements RDimBusTargetYPOService {
|
public class RDimBusTargetYPOServiceImpl extends MppServiceImpl<RDimBusTargetYPOMapper, RDimBusTargetYPO> implements RDimBusTargetYPOService {
|
||||||
|
|
||||||
|
private final DicDataFeignClient dicDataFeignClient;
|
||||||
|
private final RDimBusbarHarmnicDPOService rDimBusbarHarmnicDPOService;
|
||||||
@Override
|
@Override
|
||||||
public void handleYear(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
public void handleYear(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
||||||
|
List<RDimBusTargetYPO> rDimBusTargetYPOList = new ArrayList<>();
|
||||||
|
//指标对象类型
|
||||||
|
List<DictData> indicatorTypeDate = dicDataFeignClient.getDicDataByTypeCode(
|
||||||
|
DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
|
||||||
|
LocalDate localDate = LocalDateTimeUtil.parseDate(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN);
|
||||||
|
//获取日期
|
||||||
|
DateTime begin = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||||
|
DateTime end = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||||
|
List<String> collect = indicatorTypeDate.stream().filter(temp -> Objects.equals(temp.getCode(), DicDataEnum.VOLTAGE_DEV.getCode()) ||
|
||||||
|
Objects.equals(temp.getCode(), DicDataEnum.FLICKER.getCode()) ||
|
||||||
|
Objects.equals(temp.getCode(), DicDataEnum.PHASE_VOLTAGE.getCode()) ||
|
||||||
|
Objects.equals(temp.getCode(), DicDataEnum.THD_V.getCode())).map(DictData::getId).collect(Collectors.toList());
|
||||||
|
List<RDimBusbarHarmnicDPO> rdibBusbarHarms = rDimBusbarHarmnicDPOService.lambdaQuery().between(RDimBusbarHarmnicDPO::getStatisDate, begin,end).in(RDimBusbarHarmnicDPO::getTargetType, collect).list();
|
||||||
|
if (CollectionUtils.isEmpty(rdibBusbarHarms)){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Map<String, Map<String, List<RDimBusbarHarmnicDPO>>> collect1 = rdibBusbarHarms.stream().collect(Collectors.groupingBy(RDimBusbarHarmnicDPO::getOrgId,
|
||||||
|
Collectors.groupingBy(RDimBusbarHarmnicDPO::getTargetType)));
|
||||||
|
collect1.forEach((orgId,v)->{
|
||||||
|
v.forEach((tag,rdibBusbarHarmList)->{
|
||||||
|
RDimBusTargetYPO rDimBusTargetYPO = new RDimBusTargetYPO();
|
||||||
|
rDimBusTargetYPO.setOrgId(orgId);
|
||||||
|
rDimBusTargetYPO.setTargetType(tag);
|
||||||
|
rDimBusTargetYPO.setStatisDate(localDate);
|
||||||
|
//有效接入母线数量
|
||||||
|
Double effectiveBuses = Double.valueOf(rdibBusbarHarmList.stream().map(RDimBusbarHarmnicDPO::getBusbarId).distinct().count()
|
||||||
|
);
|
||||||
|
long count = rdibBusbarHarmList.stream().filter(temp -> temp.getLimitCount() > 0).map(RDimBusbarHarmnicDPO::getBusbarId).distinct().count();
|
||||||
|
double v1 = count / effectiveBuses;
|
||||||
|
double limitrate = Math.round(v1 * 100.0) / 100.0;
|
||||||
|
rDimBusTargetYPO.setLimitRate(limitrate);
|
||||||
|
OptionalDouble average = rdibBusbarHarmList.stream().filter(temp -> temp.getStatisCount() > 0).mapToDouble(temp -> {
|
||||||
|
return Double.valueOf(temp.getLimitCount()) / temp.getStatisCount();
|
||||||
|
}).average();
|
||||||
|
Double passRate=0.00;
|
||||||
|
if(average.isPresent()) {
|
||||||
|
passRate = average.getAsDouble();
|
||||||
|
rDimBusTargetYPO.setPassAvgRate(1 - passRate);
|
||||||
|
passRate = Math.round(passRate * 100.0) / 100.0;
|
||||||
|
rDimBusTargetYPO.setPassRate(1 - passRate);
|
||||||
|
}else {
|
||||||
|
rDimBusTargetYPO.setPassAvgRate(3.14159);
|
||||||
|
|
||||||
|
rDimBusTargetYPO.setPassRate(3.14159);
|
||||||
|
|
||||||
|
}
|
||||||
|
rDimBusTargetYPO.setLimitAvgRate(limitrate);
|
||||||
|
rDimBusTargetYPOList.add(rDimBusTargetYPO);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
if (!CollectionUtils.isEmpty(rDimBusTargetYPOList)) {
|
||||||
|
this.saveOrUpdateBatchByMultiId(rDimBusTargetYPOList, 500);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -110,7 +110,6 @@ public class RDimBusbarHarmnicDPOServiceImpl extends MppServiceImpl<RDimBusbarHa
|
|||||||
rDimBusbarHarmnicDPO.setBusbarId(busbar.getLineId());
|
rDimBusbarHarmnicDPO.setBusbarId(busbar.getLineId());
|
||||||
rDimBusbarHarmnicDPO.setTargetType(temp.getId());
|
rDimBusbarHarmnicDPO.setTargetType(temp.getId());
|
||||||
rDimBusbarHarmnicDPO.setLevel(0);
|
rDimBusbarHarmnicDPO.setLevel(0);
|
||||||
rDimBusbarHarmnicDPO.setState(1);
|
|
||||||
rDimBusbarHarmnicDPO.setMonitorTag(busbar.getMonitorTag());
|
rDimBusbarHarmnicDPO.setMonitorTag(busbar.getMonitorTag());
|
||||||
rDimBusbarHarmnicDPO.setVoltageLevel(busbar.getVoltageLevel());
|
rDimBusbarHarmnicDPO.setVoltageLevel(busbar.getVoltageLevel());
|
||||||
Optional<RStatLimitRateDPO> first = rStatLimitRateDPOS.stream().filter(rStatLimitRateDPO -> Objects.equals(rStatLimitRateDPO.getLineId(), busbar.getId())).findFirst();
|
Optional<RStatLimitRateDPO> first = rStatLimitRateDPOS.stream().filter(rStatLimitRateDPO -> Objects.equals(rStatLimitRateDPO.getLineId(), busbar.getId())).findFirst();
|
||||||
@@ -145,7 +144,6 @@ public class RDimBusbarHarmnicDPOServiceImpl extends MppServiceImpl<RDimBusbarHa
|
|||||||
rDimBusbarHarmnicDPO.setTargetType(dictData.getId());
|
rDimBusbarHarmnicDPO.setTargetType(dictData.getId());
|
||||||
rDimBusbarHarmnicDPO.setBusbarId(busbar.getLineId());
|
rDimBusbarHarmnicDPO.setBusbarId(busbar.getLineId());
|
||||||
rDimBusbarHarmnicDPO.setLevel(1);
|
rDimBusbarHarmnicDPO.setLevel(1);
|
||||||
rDimBusbarHarmnicDPO.setState(1);
|
|
||||||
rDimBusbarHarmnicDPO.setMonitorTag(busbar.getMonitorTag());
|
rDimBusbarHarmnicDPO.setMonitorTag(busbar.getMonitorTag());
|
||||||
rDimBusbarHarmnicDPO.setVoltageLevel(busbar.getVoltageLevel());
|
rDimBusbarHarmnicDPO.setVoltageLevel(busbar.getVoltageLevel());
|
||||||
Optional<RMpEventDetailDPO> first = rMpEventDetailDPOList.stream().filter(rMpEventDetailDPO -> Objects.equals(rMpEventDetailDPO.getMeasurementPointId(), busbar.getId())).findFirst();
|
Optional<RMpEventDetailDPO> first = rMpEventDetailDPOList.stream().filter(rMpEventDetailDPO -> Objects.equals(rMpEventDetailDPO.getMeasurementPointId(), busbar.getId())).findFirst();
|
||||||
|
|||||||
Reference in New Issue
Block a user