算法提交
This commit is contained in:
@@ -2,9 +2,13 @@ package com.njcn.prepare.executor;
|
||||
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
||||
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
|
||||
import com.njcn.prepare.bo.CalculatedParam;
|
||||
import com.njcn.prepare.harmonic.service.mysql.area.RStatHarmonicOrgService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.area.RStatHarmonicService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.area.RStatHarmonicVoltageService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.area.RStatOrgService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.line.PollutionService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.ROperatingIndexService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.*;
|
||||
import com.yomahub.liteflow.annotation.LiteflowComponent;
|
||||
import com.yomahub.liteflow.annotation.LiteflowMethod;
|
||||
import com.yomahub.liteflow.core.NodeComponent;
|
||||
@@ -28,6 +32,16 @@ public class OrgPointExecutor extends BaseExecutor{
|
||||
|
||||
private final PollutionService pollutionService;
|
||||
|
||||
private final RStatHarmonicService rStatHarmonicService;
|
||||
private final RStatHarmonicVoltageService rStatHarmonicVoltageService;
|
||||
private final RStatHarmonicOrgService rstatHarmonicOrgService;
|
||||
private final RStatEventService rStatEventDService;
|
||||
private final RStatEventVoltageService rStatEventVoltageService;
|
||||
private final RStatEventOrgService rStatEventOrgService;
|
||||
private final RStatLoadTypeService rStatLoadTypeService;
|
||||
|
||||
private final RAlarmCountService rAlarmCountService;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -132,4 +146,263 @@ public class OrgPointExecutor extends BaseExecutor{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 3.4.4. 单位监测点稳态指标统计-监测点类别(对象类型)
|
||||
*/
|
||||
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rStatHarmonic", nodeType = NodeTypeEnum.COMMON)
|
||||
public boolean processRStatHarmonicAccess(NodeComponent bindCmp) {
|
||||
return isAccess(bindCmp);
|
||||
}
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "rStatHarmonic", nodeType = NodeTypeEnum.COMMON)
|
||||
public void processRStatHarmonicProcess(NodeComponent bindCmp) {
|
||||
String tag = bindCmp.getTag();
|
||||
CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam = bindCmp.getRequestData();
|
||||
if (tag.equalsIgnoreCase("r_stat_harmonic_d")) {
|
||||
//日表
|
||||
rStatHarmonicService.handleDay(calculatedParam);
|
||||
} else if (tag.equalsIgnoreCase("r_stat_harmonic_m")) {
|
||||
//数据补招不执行非日表算法
|
||||
if (!calculatedParam.isRepair()) {
|
||||
//月表
|
||||
rStatHarmonicService.handleMonth(calculatedParam);
|
||||
}
|
||||
}else if (tag.equalsIgnoreCase("r_stat_harmonic_q")) {
|
||||
//数据补招不执行非日表算法
|
||||
if (!calculatedParam.isRepair()) {
|
||||
//季表
|
||||
rStatHarmonicService.handleQtr(calculatedParam);
|
||||
}
|
||||
}else if (tag.equalsIgnoreCase("r_stat_harmonic_y")) {
|
||||
//数据补招不执行非日表算法
|
||||
if (!calculatedParam.isRepair()) {
|
||||
//年表
|
||||
rStatHarmonicService.handleYear(calculatedParam);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* 3.4.5. 单位监测点稳态指标统计-电压等级
|
||||
*/
|
||||
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rStatHarmonicVoltage", nodeType = NodeTypeEnum.COMMON)
|
||||
public boolean processRStatHarmonicVoltageAccess(NodeComponent bindCmp) {
|
||||
return isAccess(bindCmp);
|
||||
}
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "rStatHarmonicVoltage", nodeType = NodeTypeEnum.COMMON)
|
||||
public void processRStatHarmonicVoltageProcess(NodeComponent bindCmp) {
|
||||
String tag = bindCmp.getTag();
|
||||
CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam = bindCmp.getRequestData();
|
||||
if (tag.equalsIgnoreCase("r_stat_harmonic_voltage_d")) {
|
||||
//日表
|
||||
rStatHarmonicVoltageService.handleDay(calculatedParam);
|
||||
} else if (tag.equalsIgnoreCase("r_stat_harmonic_voltage_m")) {
|
||||
//数据补招不执行非日表算法
|
||||
if (!calculatedParam.isRepair()) {
|
||||
//月表
|
||||
rStatHarmonicVoltageService.handleMonth(calculatedParam);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 3.4.4. 单位监测点稳态指标统计-监测点类别(对象类型)
|
||||
*/
|
||||
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rStatHarmonicOrg", nodeType = NodeTypeEnum.COMMON)
|
||||
public boolean processRStatHarmonicOrgAccess(NodeComponent bindCmp) {
|
||||
return isAccess(bindCmp);
|
||||
}
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "rStatHarmonicOrg", nodeType = NodeTypeEnum.COMMON)
|
||||
public void processRStatHarmonicOrgProcess(NodeComponent bindCmp) {
|
||||
String tag = bindCmp.getTag();
|
||||
CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam = bindCmp.getRequestData();
|
||||
if (tag.equalsIgnoreCase("r_stat_harmonic_org_d")) {
|
||||
//日表
|
||||
rstatHarmonicOrgService.handleDay(calculatedParam);
|
||||
} else if (tag.equalsIgnoreCase("r_stat_harmonic_org_m")) {
|
||||
//数据补招不执行非日表算法
|
||||
if (!calculatedParam.isRepair()) {
|
||||
//月表
|
||||
rstatHarmonicOrgService.handleMonth(calculatedParam);
|
||||
}
|
||||
}else if (tag.equalsIgnoreCase("r_stat_harmonic_org_q")) {
|
||||
//数据补招不执行非日表算法
|
||||
if (!calculatedParam.isRepair()) {
|
||||
//季表
|
||||
rstatHarmonicOrgService.handleQtr(calculatedParam);
|
||||
}
|
||||
}else if (tag.equalsIgnoreCase("r_stat_harmonic_org_y")) {
|
||||
//数据补招不执行非日表算法
|
||||
if (!calculatedParam.isRepair()) {
|
||||
//年表
|
||||
rstatHarmonicOrgService.handleYear(calculatedParam);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 3.4.6. 单位监测点暂态指标统计-监测点类别(对象类型)
|
||||
*/
|
||||
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rStatEvent", nodeType = NodeTypeEnum.COMMON)
|
||||
public boolean processRStatEventAccess(NodeComponent bindCmp) {
|
||||
return isAccess(bindCmp);
|
||||
}
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "rStatEvent", nodeType = NodeTypeEnum.COMMON)
|
||||
public void processRStatEventProcess(NodeComponent bindCmp) {
|
||||
String tag = bindCmp.getTag();
|
||||
CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam = bindCmp.getRequestData();
|
||||
if (tag.equalsIgnoreCase("r_stat_event_d")) {
|
||||
//日表
|
||||
rStatEventDService.handleDay(calculatedParam);
|
||||
} else if (tag.equalsIgnoreCase("r_stat_event_m")) {
|
||||
//数据补招不执行非日表算法
|
||||
if (!calculatedParam.isRepair()) {
|
||||
//月表
|
||||
rStatEventDService.handleMonth(calculatedParam);
|
||||
}
|
||||
}else if (tag.equalsIgnoreCase("r_stat_event_q")) {
|
||||
//数据补招不执行非日表算法
|
||||
if (!calculatedParam.isRepair()) {
|
||||
//季表
|
||||
rStatEventDService.handleQtr(calculatedParam);
|
||||
}
|
||||
}else if (tag.equalsIgnoreCase("r_stat_event_y")) {
|
||||
//数据补招不执行非日表算法
|
||||
if (!calculatedParam.isRepair()) {
|
||||
//年表
|
||||
rStatEventDService.handleYear(calculatedParam);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 3.4.7. 单位监测点暂态指标统计-电压等级
|
||||
*/
|
||||
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rStatEventVoltage", nodeType = NodeTypeEnum.COMMON)
|
||||
public boolean processRStatEventVoltageAccess(NodeComponent bindCmp) {
|
||||
return isAccess(bindCmp);
|
||||
}
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "rStatEventVoltage", nodeType = NodeTypeEnum.COMMON)
|
||||
public void processRStatEventVoltageProcess(NodeComponent bindCmp) {
|
||||
String tag = bindCmp.getTag();
|
||||
CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam = bindCmp.getRequestData();
|
||||
if (tag.equalsIgnoreCase("r_stat_event_voltage_d")) {
|
||||
//日表
|
||||
rStatEventVoltageService.handleDay(calculatedParam);
|
||||
} else if (tag.equalsIgnoreCase("r_stat_event_voltage_m")) {
|
||||
//数据补招不执行非日表算法
|
||||
if (!calculatedParam.isRepair()) {
|
||||
//月表
|
||||
rStatEventVoltageService.handleMonth(calculatedParam);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 3.4.9. 单位暂态指标数据统计
|
||||
*/
|
||||
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rStatEventOrg", nodeType = NodeTypeEnum.COMMON)
|
||||
public boolean processRStatEventOrgAccess(NodeComponent bindCmp) {
|
||||
return isAccess(bindCmp);
|
||||
}
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "rStatEventOrg", nodeType = NodeTypeEnum.COMMON)
|
||||
public void processRStatEventOrgProcess(NodeComponent bindCmp) {
|
||||
String tag = bindCmp.getTag();
|
||||
CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam = bindCmp.getRequestData();
|
||||
if (tag.equalsIgnoreCase("r_stat_event_org_d")) {
|
||||
//日表
|
||||
rStatEventOrgService.handleDay(calculatedParam);
|
||||
} else if (tag.equalsIgnoreCase("r_stat_event_org_m")) {
|
||||
//数据补招不执行非日表算法
|
||||
if (!calculatedParam.isRepair()) {
|
||||
//月表
|
||||
rStatEventOrgService.handleMonth(calculatedParam);
|
||||
}
|
||||
}else if (tag.equalsIgnoreCase("r_stat_event_org_q")) {
|
||||
//数据补招不执行非日表算法
|
||||
if (!calculatedParam.isRepair()) {
|
||||
//季表
|
||||
rStatEventOrgService.handleQtr(calculatedParam);
|
||||
}
|
||||
}else if (tag.equalsIgnoreCase("r_stat_event_org_y")) {
|
||||
//数据补招不执行非日表算法
|
||||
if (!calculatedParam.isRepair()) {
|
||||
//年表
|
||||
rStatEventOrgService.handleYear(calculatedParam);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 3.4.12. 单位干扰源电流类指标超标统计
|
||||
*/
|
||||
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rStatEventLoadType", nodeType = NodeTypeEnum.COMMON)
|
||||
public boolean processRStatEventLoadTypeAccess(NodeComponent bindCmp) {
|
||||
return isAccess(bindCmp);
|
||||
}
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "rStatEventLoadType", nodeType = NodeTypeEnum.COMMON)
|
||||
public void processRStatEventLoadTypeProcess(NodeComponent bindCmp) {
|
||||
String tag = bindCmp.getTag();
|
||||
CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam = bindCmp.getRequestData();
|
||||
if (tag.equalsIgnoreCase("r_stat_load_type_d")) {
|
||||
//日表
|
||||
rStatLoadTypeService.handleDay(calculatedParam);
|
||||
} else if (tag.equalsIgnoreCase("r_stat_load_type_m")) {
|
||||
//数据补招不执行非日表算法
|
||||
if (!calculatedParam.isRepair()) {
|
||||
//月表
|
||||
rStatLoadTypeService.handleMonth(calculatedParam);
|
||||
}
|
||||
}else if (tag.equalsIgnoreCase("r_stat_load_type_q")) {
|
||||
//数据补招不执行非日表算法
|
||||
if (!calculatedParam.isRepair()) {
|
||||
//季表
|
||||
rStatLoadTypeService.handleQtr(calculatedParam);
|
||||
}
|
||||
}else if (tag.equalsIgnoreCase("r_stat_load_type_y")) {
|
||||
//数据补招不执行非日表算法
|
||||
if (!calculatedParam.isRepair()) {
|
||||
//年表
|
||||
rStatLoadTypeService.handleYear(calculatedParam);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*3.4.14. 单位指标告警统计
|
||||
*/
|
||||
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rStatAlarmCount", nodeType = NodeTypeEnum.COMMON)
|
||||
public boolean processRStatAlarmCountAccess(NodeComponent bindCmp) {
|
||||
return isAccess(bindCmp);
|
||||
}
|
||||
@LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "rStatAlarmCount", nodeType = NodeTypeEnum.COMMON)
|
||||
public void processRStatAlarmCountProcess(NodeComponent bindCmp) {
|
||||
String tag = bindCmp.getTag();
|
||||
CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam = bindCmp.getRequestData();
|
||||
if (tag.equalsIgnoreCase("r_stat_alarm_count_w")) {
|
||||
//周表
|
||||
rAlarmCountService.handleDay(calculatedParam);
|
||||
} else if (tag.equalsIgnoreCase("r_stat_area_alarm_count_m")) {
|
||||
//数据补招不执行非日表算法
|
||||
if (!calculatedParam.isRepair()) {
|
||||
//月表
|
||||
rAlarmCountService.handleMonth(calculatedParam);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
</sql>
|
||||
|
||||
<select id="listAll" resultType="com.njcn.prepare.harmonic.pojo.po.RStatOrgDVO">
|
||||
select org_no "orgNo",data_type"dataType",effective_measurement"effectiveMeasurement"
|
||||
select org_no "orgNo",data_type"dataType",IFNULL(effective_measurement,0)"effectiveMeasurement"
|
||||
from r_stat_org_d
|
||||
where date_format(data_date, '%y%m%d') = date_format(#{date}, '%y%m%d')
|
||||
and org_no = #{orgId}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.njcn.prepare.harmonic.mapper.mysql.newalgorithm;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
|
||||
import com.njcn.prepare.harmonic.pojo.po.RStatAreaAlarmCountM;
|
||||
|
||||
import com.njcn.prepare.harmonic.pojo.po.RStatAreaAlarmCountMPO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
@@ -14,5 +14,5 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
* @version V1.0.0
|
||||
*/
|
||||
@Mapper
|
||||
public interface RStatAreaAlarmCountMPOMapper extends MppBaseMapper<RStatAreaAlarmCountM> {
|
||||
public interface RStatAreaAlarmCountMPOMapper extends MppBaseMapper<RStatAreaAlarmCountMPO> {
|
||||
}
|
||||
@@ -1,13 +1,20 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.Impl.area;
|
||||
|
||||
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.core.conditions.query.QueryWrapper;
|
||||
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
||||
import com.njcn.harmonic.pojo.po.RStatOrgMPO;
|
||||
import com.njcn.prepare.bo.CalculatedParam;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.area.*;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatHarmonicDPO;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatHarmonicMPO;
|
||||
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatOrgQPO;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatOrgYPO;
|
||||
import com.njcn.prepare.harmonic.pojo.param.OrgParam;
|
||||
import com.njcn.prepare.harmonic.pojo.po.*;
|
||||
import com.njcn.prepare.harmonic.service.mysql.area.RStatHarmonicOrgService;
|
||||
@@ -30,6 +37,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
import java.time.LocalDate;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -50,6 +58,11 @@ public class RStatHarmonicOrgServiceImpl implements RStatHarmonicOrgService {
|
||||
private final DeptFeignClient deptFeignClient;
|
||||
|
||||
private final RStatOrgDMapper rStatOrgDMapper;
|
||||
private final RStatOrgQMapper rStatOrgQMapper;
|
||||
private final RStatOrgYMapper rStatOrgYMapper;
|
||||
|
||||
|
||||
|
||||
private final RStatHarmonicDPOMapper rStatHarmonicDPOMapper;
|
||||
private final RStatHarmonicOrgDPOService rStatHarmonicDPOService;
|
||||
|
||||
@@ -64,6 +77,361 @@ public class RStatHarmonicOrgServiceImpl implements RStatHarmonicOrgService {
|
||||
DecimalFormat df = new DecimalFormat("0.00");
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
||||
List<RStatHarmonicOrgDPO> rStatHarmonicOrgDPOList = new ArrayList<>();
|
||||
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN);
|
||||
|
||||
|
||||
QueryWrapper<RStatHarmonicDPO> queryWrapper = new QueryWrapper<>();
|
||||
|
||||
/*获取稳态统计指标*/
|
||||
List<DictData> steadyStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
|
||||
/*获取数据类型*/
|
||||
|
||||
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
|
||||
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
;
|
||||
/*获取监测点类型类型*/
|
||||
List<DictData> lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
|
||||
Map<String, DictData> lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
calculatedParam.getIdList().stream().forEach(temp->{
|
||||
int sumEffectiveMeasurement =0;
|
||||
List<RStatOrgDVO> rStatOrgDVOS = rStatOrgDMapper.listAll( LocalDateTimeUtil.format(localDate,DatePattern.NORM_DATE_PATTERN), temp.getUnitId());
|
||||
if(CollectionUtils.isEmpty(rStatOrgDVOS)){
|
||||
sumEffectiveMeasurement=0;
|
||||
}else {
|
||||
sumEffectiveMeasurement = rStatOrgDVOS.stream().mapToInt(RStatOrgDVO::getEffectiveMeasurement).sum();
|
||||
}
|
||||
int finalSumEffectiveMeasurement = sumEffectiveMeasurement;
|
||||
dataTypeMap.forEach((k, v)->{
|
||||
steadyStatis.forEach(dictData -> {
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATOR.getCode())) {
|
||||
return;
|
||||
}
|
||||
queryWrapper.clear();
|
||||
queryWrapper.select("over_limit_measurement").
|
||||
eq("org_no",temp.getUnitId()).
|
||||
eq("data_type",v.getId()).
|
||||
eq("harmonic_type",dictData.getId()).
|
||||
eq("data_date",localDate);
|
||||
List<RStatHarmonicDPO> rStatHarmonicDPOList = rStatHarmonicDPOMapper.selectList(queryWrapper);
|
||||
int sumOverLimitMeasurement =0;
|
||||
|
||||
if(CollectionUtils.isEmpty(rStatHarmonicDPOList)){
|
||||
sumOverLimitMeasurement=0;
|
||||
}else {
|
||||
sumOverLimitMeasurement = rStatHarmonicDPOList.stream().mapToInt(RStatHarmonicDPO::getOverLimitMeasurement).sum();
|
||||
}
|
||||
RStatHarmonicOrgDPO rStatHarmonicOrgDPO = new RStatHarmonicOrgDPO();
|
||||
rStatHarmonicOrgDPO.setOrgNo(temp.getUnitId());
|
||||
rStatHarmonicOrgDPO.setDataDate(localDate);
|
||||
rStatHarmonicOrgDPO.setHarmonicType(dictData.getId());
|
||||
rStatHarmonicOrgDPO.setDataType(v.getId());
|
||||
rStatHarmonicOrgDPO.setOverLimitMeasurementAverage(sumOverLimitMeasurement);
|
||||
if(finalSumEffectiveMeasurement ==0){
|
||||
rStatHarmonicOrgDPO.setOverLimitMeasurementRatioAverage(0.00);
|
||||
}else {
|
||||
rStatHarmonicOrgDPO.setOverLimitMeasurementRatioAverage(Double.parseDouble(df.format((float)sumOverLimitMeasurement / finalSumEffectiveMeasurement)));
|
||||
}
|
||||
rStatHarmonicOrgDPOList.add(rStatHarmonicOrgDPO);
|
||||
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
if(!CollectionUtils.isEmpty(rStatHarmonicOrgDPOList)){
|
||||
rStatHarmonicDPOService.saveOrUpdateBatchByMultiId(rStatHarmonicOrgDPOList,500);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
||||
List<RStatHarmonicOrgMPO> rStatHarmonicOrgMPOList = new ArrayList<>();
|
||||
DateTime begin = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
DateTime end = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN);
|
||||
|
||||
QueryWrapper<RStatHarmonicMPO> queryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatOrgMPO> rStatOrgMPOQueryWrapper = new QueryWrapper<>();
|
||||
|
||||
|
||||
/*获取稳态统计指标*/
|
||||
List<DictData> steadyStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
|
||||
/*获取数据类型*/
|
||||
|
||||
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
|
||||
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
;
|
||||
/*获取监测点类型类型*/
|
||||
List<DictData> lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
|
||||
Map<String, DictData> lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
calculatedParam.getIdList().stream().forEach(temp->{
|
||||
int sumEffectiveMeasurement =0;
|
||||
rStatOrgMPOQueryWrapper.clear();
|
||||
rStatOrgMPOQueryWrapper.select("effective_measurement_accrued").
|
||||
eq("org_no",temp.getUnitId()).
|
||||
between("data_date",begin,end);
|
||||
List<RStatOrgMPO> rStatOrgMPOS = rStatOrgMMapper.selectList(rStatOrgMPOQueryWrapper);
|
||||
if(CollectionUtils.isEmpty(rStatOrgMPOS)){
|
||||
sumEffectiveMeasurement=0;
|
||||
}else {
|
||||
sumEffectiveMeasurement = rStatOrgMPOS.stream().mapToInt(RStatOrgMPO::getEffectiveMeasurementAccrued).sum();
|
||||
}
|
||||
int finalSumEffectiveMeasurement = sumEffectiveMeasurement;
|
||||
dataTypeMap.forEach((k, v)->{
|
||||
steadyStatis.forEach(dictData -> {
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATOR.getCode())) {
|
||||
return;
|
||||
}
|
||||
queryWrapper.clear();
|
||||
queryWrapper.eq("org_no",temp.getUnitId()).
|
||||
eq("harmonic_type",dictData.getId()).
|
||||
eq("data_type",v.getId()).
|
||||
between("data_date",begin,end);
|
||||
List<RStatHarmonicMPO> rStatHarmonicMPOS = rStatHarmonicMPOMapper.selectList(queryWrapper);
|
||||
Double overLimitMeasurementAverage =0.00;
|
||||
int overDay =0;
|
||||
int overLimitMeasurementAccrued=0;
|
||||
Double overLimitMeasurementRatioAverage=0.00;
|
||||
Double overLimitMeasurementRatioAccrued=0.00;
|
||||
if(!CollectionUtils.isEmpty(rStatHarmonicMPOS)){
|
||||
|
||||
overDay = rStatHarmonicMPOS.stream().mapToInt(RStatHarmonicMPO::getOverDay).sum();
|
||||
overLimitMeasurementAccrued = rStatHarmonicMPOS.stream().mapToInt(RStatHarmonicMPO::getOverLimitMeasurementAccrued).sum();
|
||||
double asDouble = rStatHarmonicMPOS.stream().mapToDouble(RStatHarmonicMPO::getOverLimitMeasurementAverage).average().getAsDouble();
|
||||
overLimitMeasurementAverage = Double.parseDouble(df.format(asDouble));
|
||||
double asDouble1 = rStatHarmonicMPOS.stream().mapToDouble(RStatHarmonicMPO::getOverLimitMeasurementRatioAverage).average().getAsDouble();
|
||||
|
||||
overLimitMeasurementRatioAverage = Double.parseDouble(df.format(asDouble1));
|
||||
if(finalSumEffectiveMeasurement ==0){
|
||||
overLimitMeasurementRatioAccrued=0.00;
|
||||
}else {
|
||||
overLimitMeasurementRatioAccrued=Double.parseDouble(df.format((float)overLimitMeasurementAccrued / finalSumEffectiveMeasurement));
|
||||
}
|
||||
}
|
||||
RStatHarmonicOrgMPO rStatHarmonicOrgMPO = new RStatHarmonicOrgMPO();
|
||||
rStatHarmonicOrgMPO.setOrgNo(temp.getUnitId());
|
||||
rStatHarmonicOrgMPO.setDataDate(localDate);
|
||||
rStatHarmonicOrgMPO.setHarmonicType(dictData.getId());
|
||||
rStatHarmonicOrgMPO.setDataType(v.getId());
|
||||
rStatHarmonicOrgMPO.setOverDay(overDay);
|
||||
rStatHarmonicOrgMPO.setOverLimitMeasurementAccrued(overLimitMeasurementAccrued);
|
||||
rStatHarmonicOrgMPO.setOverLimitMeasurementAverage(overLimitMeasurementAverage);
|
||||
rStatHarmonicOrgMPO.setOverLimitMeasurementRatioAccrued(overLimitMeasurementRatioAccrued);
|
||||
rStatHarmonicOrgMPO.setOverLimitMeasurementRatioAverage(overLimitMeasurementRatioAverage);
|
||||
|
||||
rStatHarmonicOrgMPOList.add(rStatHarmonicOrgMPO);
|
||||
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
if(!CollectionUtils.isEmpty(rStatHarmonicOrgMPOList)){
|
||||
rStatHarmonicMPOService.saveOrUpdateBatchByMultiId(rStatHarmonicOrgMPOList,500);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleQtr(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
||||
List<RStatHarmonicOrgQPO> rStatHarmonicOrgQPOList = new ArrayList<>();
|
||||
|
||||
DateTime begin = DateUtil.beginOfQuarter(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
DateTime end = DateUtil.endOfQuarter(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN);
|
||||
|
||||
QueryWrapper<RStatHarmonicMPO> queryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatOrgQPO> rStatOrgQPOQueryWrapper = new QueryWrapper<>();
|
||||
|
||||
|
||||
/*获取稳态统计指标*/
|
||||
List<DictData> steadyStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
|
||||
/*获取数据类型*/
|
||||
|
||||
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
|
||||
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
;
|
||||
/*获取监测点类型类型*/
|
||||
List<DictData> lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
|
||||
Map<String, DictData> lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
calculatedParam.getIdList().stream().forEach(temp->{
|
||||
int sumEffectiveMeasurement =0;
|
||||
rStatOrgQPOQueryWrapper.clear();
|
||||
rStatOrgQPOQueryWrapper.select("effective_measurement_accrued").
|
||||
eq("org_no",temp.getUnitId()).
|
||||
between("data_date",begin,end);
|
||||
|
||||
List<RStatOrgQPO> rStatOrgQPOS = rStatOrgQMapper.selectList(rStatOrgQPOQueryWrapper);
|
||||
if(CollectionUtils.isEmpty(rStatOrgQPOS)){
|
||||
sumEffectiveMeasurement=0;
|
||||
}else {
|
||||
sumEffectiveMeasurement = rStatOrgQPOS.stream().mapToInt(RStatOrgQPO::getEffectiveMeasurementAccrued).sum();
|
||||
}
|
||||
int finalSumEffectiveMeasurement = sumEffectiveMeasurement;
|
||||
dataTypeMap.forEach((k, v)->{
|
||||
steadyStatis.forEach(dictData -> {
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATOR.getCode())) {
|
||||
return;
|
||||
}
|
||||
queryWrapper.clear();
|
||||
queryWrapper.eq("org_no",temp.getUnitId()).
|
||||
eq("harmonic_type",dictData.getId()).
|
||||
eq("data_type",v.getId()).
|
||||
between("data_date",begin,end);
|
||||
List<RStatHarmonicMPO> rStatHarmonicMPOS = rStatHarmonicMPOMapper.selectList(queryWrapper);
|
||||
Double overLimitMeasurementAverage =0.00;
|
||||
int overDay =0;
|
||||
int overLimitMeasurementAccrued=0;
|
||||
Double averageOverDay =0.00;
|
||||
Double overLimitMeasurementRatioAverage=0.00;
|
||||
Double overLimitMeasurementRatioAccrued=0.00;
|
||||
if(!CollectionUtils.isEmpty(rStatHarmonicMPOS)){
|
||||
|
||||
overDay = rStatHarmonicMPOS.stream().mapToInt(RStatHarmonicMPO::getOverDay).sum();
|
||||
overLimitMeasurementAccrued = rStatHarmonicMPOS.stream().mapToInt(RStatHarmonicMPO::getOverLimitMeasurementAccrued).sum();
|
||||
double asDouble = rStatHarmonicMPOS.stream().mapToDouble(RStatHarmonicMPO::getOverLimitMeasurementAverage).average().getAsDouble();
|
||||
overLimitMeasurementAverage = Double.parseDouble(df.format(asDouble));
|
||||
double asDouble1 = rStatHarmonicMPOS.stream().mapToDouble(RStatHarmonicMPO::getOverLimitMeasurementRatioAverage).average().getAsDouble();
|
||||
|
||||
overLimitMeasurementRatioAverage = Double.parseDouble(df.format(asDouble1));
|
||||
if(finalSumEffectiveMeasurement ==0){
|
||||
overLimitMeasurementRatioAccrued=0.00;
|
||||
}else {
|
||||
overLimitMeasurementRatioAccrued=Double.parseDouble(df.format((float)overLimitMeasurementAccrued / finalSumEffectiveMeasurement));
|
||||
}
|
||||
if(!(overLimitMeasurementAccrued==0)){
|
||||
averageOverDay = Double.parseDouble(df.format((float)overDay / overLimitMeasurementAccrued));
|
||||
}
|
||||
}
|
||||
RStatHarmonicOrgQPO rStatHarmonicOrgQPO = new RStatHarmonicOrgQPO();
|
||||
rStatHarmonicOrgQPO.setOrgNo(temp.getUnitId());
|
||||
rStatHarmonicOrgQPO.setDataDate(localDate);
|
||||
rStatHarmonicOrgQPO.setHarmonicType(dictData.getId());
|
||||
rStatHarmonicOrgQPO.setDataType(v.getId());
|
||||
rStatHarmonicOrgQPO.setAverageOverDay(averageOverDay);
|
||||
rStatHarmonicOrgQPO.setOverLimitMeasurementAccrued(overLimitMeasurementAccrued);
|
||||
rStatHarmonicOrgQPO.setOverLimitMeasurementAverage(overLimitMeasurementAverage);
|
||||
rStatHarmonicOrgQPO.setOverLimitMeasurementRatioAccrued(overLimitMeasurementRatioAccrued);
|
||||
rStatHarmonicOrgQPO.setOverLimitMeasurementRatioAverage(overLimitMeasurementRatioAverage);
|
||||
|
||||
rStatHarmonicOrgQPOList.add(rStatHarmonicOrgQPO);
|
||||
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
if(!CollectionUtils.isEmpty(rStatHarmonicOrgQPOList)){
|
||||
rStatHarmonicQPOService.saveOrUpdateBatchByMultiId(rStatHarmonicOrgQPOList,500);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleYear(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
||||
|
||||
List<RStatHarmonicOrgYPO> rStatHarmonicOrgYPOList = new ArrayList<>();
|
||||
DateTime begin = DateUtil.beginOfYear(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
DateTime end = DateUtil.endOfYear(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN);
|
||||
|
||||
QueryWrapper<RStatHarmonicMPO> queryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatOrgYPO> rStatOrgYPOQueryWrapper = new QueryWrapper<>();
|
||||
|
||||
|
||||
/*获取稳态统计指标*/
|
||||
List<DictData> steadyStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
|
||||
/*获取数据类型*/
|
||||
|
||||
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
|
||||
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
;
|
||||
/*获取监测点类型类型*/
|
||||
List<DictData> lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
|
||||
Map<String, DictData> lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
calculatedParam.getIdList().stream().forEach(temp->{
|
||||
int sumEffectiveMeasurement =0;
|
||||
rStatOrgYPOQueryWrapper.clear();
|
||||
rStatOrgYPOQueryWrapper.select("effective_measurement_accrued").
|
||||
eq("org_no",temp.getUnitId()).
|
||||
between("data_date",begin,end);
|
||||
|
||||
|
||||
List<RStatOrgYPO> rStatOrgYPOS = rStatOrgYMapper.selectList(rStatOrgYPOQueryWrapper);
|
||||
if(CollectionUtils.isEmpty(rStatOrgYPOS)){
|
||||
sumEffectiveMeasurement=0;
|
||||
}else {
|
||||
sumEffectiveMeasurement = rStatOrgYPOS.stream().mapToInt(RStatOrgYPO::getEffectiveMeasurementAccrued).sum();
|
||||
}
|
||||
int finalSumEffectiveMeasurement = sumEffectiveMeasurement;
|
||||
dataTypeMap.forEach((k, v)->{
|
||||
steadyStatis.forEach(dictData -> {
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATOR.getCode())) {
|
||||
return;
|
||||
}
|
||||
queryWrapper.clear();
|
||||
queryWrapper.eq("org_no",temp.getUnitId()).
|
||||
eq("harmonic_type",dictData.getId()).
|
||||
eq("data_type",v.getId()).
|
||||
between("data_date",begin,end);
|
||||
List<RStatHarmonicMPO> rStatHarmonicMPOS = rStatHarmonicMPOMapper.selectList(queryWrapper);
|
||||
Double overLimitMeasurementAverage =0.00;
|
||||
int overDay =0;
|
||||
int overLimitMeasurementAccrued=0;
|
||||
Double averageOverDay =0.00;
|
||||
Double overLimitMeasurementRatioAverage=0.00;
|
||||
Double overLimitMeasurementRatioAccrued=0.00;
|
||||
if(!CollectionUtils.isEmpty(rStatHarmonicMPOS)){
|
||||
|
||||
overDay = rStatHarmonicMPOS.stream().mapToInt(RStatHarmonicMPO::getOverDay).sum();
|
||||
overLimitMeasurementAccrued = rStatHarmonicMPOS.stream().mapToInt(RStatHarmonicMPO::getOverLimitMeasurementAccrued).sum();
|
||||
double asDouble = rStatHarmonicMPOS.stream().mapToDouble(RStatHarmonicMPO::getOverLimitMeasurementAverage).average().getAsDouble();
|
||||
overLimitMeasurementAverage = Double.parseDouble(df.format(asDouble));
|
||||
double asDouble1 = rStatHarmonicMPOS.stream().mapToDouble(RStatHarmonicMPO::getOverLimitMeasurementRatioAverage).average().getAsDouble();
|
||||
|
||||
overLimitMeasurementRatioAverage = Double.parseDouble(df.format(asDouble1));
|
||||
if(finalSumEffectiveMeasurement ==0){
|
||||
overLimitMeasurementRatioAccrued=0.00;
|
||||
}else {
|
||||
overLimitMeasurementRatioAccrued=Double.parseDouble(df.format((float)overLimitMeasurementAccrued / finalSumEffectiveMeasurement));
|
||||
}
|
||||
if(!(overLimitMeasurementAccrued==0)){
|
||||
averageOverDay = Double.parseDouble(df.format((float)overDay / overLimitMeasurementAccrued));
|
||||
}
|
||||
}
|
||||
RStatHarmonicOrgYPO rStatHarmonicOrgYPO = new RStatHarmonicOrgYPO();
|
||||
rStatHarmonicOrgYPO.setOrgNo(temp.getUnitId());
|
||||
rStatHarmonicOrgYPO.setDataDate(localDate);
|
||||
rStatHarmonicOrgYPO.setHarmonicType(dictData.getId());
|
||||
rStatHarmonicOrgYPO.setDataType(v.getId());
|
||||
rStatHarmonicOrgYPO.setAverageOverDay(averageOverDay);
|
||||
rStatHarmonicOrgYPO.setOverLimitMeasurementAccrued(overLimitMeasurementAccrued);
|
||||
rStatHarmonicOrgYPO.setOverLimitMeasurementAverage(overLimitMeasurementAverage);
|
||||
rStatHarmonicOrgYPO.setOverLimitMeasurementRatioAccrued(overLimitMeasurementRatioAccrued);
|
||||
rStatHarmonicOrgYPO.setOverLimitMeasurementRatioAverage(overLimitMeasurementRatioAverage);
|
||||
|
||||
rStatHarmonicOrgYPOList.add(rStatHarmonicOrgYPO);
|
||||
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
if(!CollectionUtils.isEmpty(rStatHarmonicOrgYPOList)){
|
||||
rStatHarmonicYPOService.saveOrUpdateBatchByMultiId(rStatHarmonicOrgYPOList,500);
|
||||
}
|
||||
|
||||
}
|
||||
/**------------------------------------------------------------------------------------------------------------**/
|
||||
|
||||
@Override
|
||||
public void handler(OrgParam orgParam) {
|
||||
switch (orgParam.getType()) {
|
||||
@@ -83,6 +451,8 @@ public class RStatHarmonicOrgServiceImpl implements RStatHarmonicOrgService {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Transactional
|
||||
@Async("asyncExecutor")
|
||||
@SneakyThrows
|
||||
@@ -90,6 +460,7 @@ public class RStatHarmonicOrgServiceImpl implements RStatHarmonicOrgService {
|
||||
List<RStatHarmonicOrgYPO> rStatHarmonicOrgYPOList = new ArrayList<>();
|
||||
List<String> data = deptFeignClient.getDepSonIdtByDeptId(orgParam.getOrgId()).getData();
|
||||
Date date = DateUtil.parse(orgParam.getDataDate());
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate(orgParam.getDataDate(), DatePattern.NORM_DATE_PATTERN);
|
||||
|
||||
QueryWrapper<RStatHarmonicMPO> queryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatOrgMPO> rStatOrgMPOQueryWrapper = new QueryWrapper<>();
|
||||
@@ -157,7 +528,7 @@ public class RStatHarmonicOrgServiceImpl implements RStatHarmonicOrgService {
|
||||
}
|
||||
RStatHarmonicOrgYPO rStatHarmonicOrgYPO = new RStatHarmonicOrgYPO();
|
||||
rStatHarmonicOrgYPO.setOrgNo(temp);
|
||||
rStatHarmonicOrgYPO.setDataDate(date);
|
||||
rStatHarmonicOrgYPO.setDataDate(localDate);
|
||||
rStatHarmonicOrgYPO.setHarmonicType(dictData.getId());
|
||||
rStatHarmonicOrgYPO.setDataType(v.getId());
|
||||
rStatHarmonicOrgYPO.setAverageOverDay(averageOverDay);
|
||||
@@ -186,6 +557,7 @@ public class RStatHarmonicOrgServiceImpl implements RStatHarmonicOrgService {
|
||||
List<RStatHarmonicOrgQPO> rStatHarmonicOrgQPOList = new ArrayList<>();
|
||||
List<String> data = deptFeignClient.getDepSonIdtByDeptId(orgParam.getOrgId()).getData();
|
||||
Date date = DateUtil.parse(orgParam.getDataDate());
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate(orgParam.getDataDate(), DatePattern.NORM_DATE_PATTERN);
|
||||
|
||||
QueryWrapper<RStatHarmonicMPO> queryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatOrgMPO> rStatOrgMPOQueryWrapper = new QueryWrapper<>();
|
||||
@@ -252,7 +624,7 @@ public class RStatHarmonicOrgServiceImpl implements RStatHarmonicOrgService {
|
||||
}
|
||||
RStatHarmonicOrgQPO rStatHarmonicOrgQPO = new RStatHarmonicOrgQPO();
|
||||
rStatHarmonicOrgQPO.setOrgNo(temp);
|
||||
rStatHarmonicOrgQPO.setDataDate(date);
|
||||
rStatHarmonicOrgQPO.setDataDate(localDate);
|
||||
rStatHarmonicOrgQPO.setHarmonicType(dictData.getId());
|
||||
rStatHarmonicOrgQPO.setDataType(v.getId());
|
||||
rStatHarmonicOrgQPO.setAverageOverDay(averageOverDay);
|
||||
@@ -280,6 +652,7 @@ public class RStatHarmonicOrgServiceImpl implements RStatHarmonicOrgService {
|
||||
List<RStatHarmonicOrgMPO> rStatHarmonicOrgMPOList = new ArrayList<>();
|
||||
List<String> data = deptFeignClient.getDepSonIdtByDeptId(orgParam.getOrgId()).getData();
|
||||
Date date = DateUtil.parse(orgParam.getDataDate());
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate(orgParam.getDataDate(), DatePattern.NORM_DATE_PATTERN);
|
||||
|
||||
QueryWrapper<RStatHarmonicMPO> queryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatOrgMPO> rStatOrgMPOQueryWrapper = new QueryWrapper<>();
|
||||
@@ -341,7 +714,7 @@ public class RStatHarmonicOrgServiceImpl implements RStatHarmonicOrgService {
|
||||
}
|
||||
RStatHarmonicOrgMPO rStatHarmonicOrgMPO = new RStatHarmonicOrgMPO();
|
||||
rStatHarmonicOrgMPO.setOrgNo(temp);
|
||||
rStatHarmonicOrgMPO.setDataDate(date);
|
||||
rStatHarmonicOrgMPO.setDataDate(localDate);
|
||||
rStatHarmonicOrgMPO.setHarmonicType(dictData.getId());
|
||||
rStatHarmonicOrgMPO.setDataType(v.getId());
|
||||
rStatHarmonicOrgMPO.setOverDay(overDay);
|
||||
@@ -370,6 +743,7 @@ public class RStatHarmonicOrgServiceImpl implements RStatHarmonicOrgService {
|
||||
List<RStatHarmonicOrgDPO> rStatHarmonicOrgDPOList = new ArrayList<>();
|
||||
List<String> data = deptFeignClient.getDepSonIdtByDeptId(orgParam.getOrgId()).getData();
|
||||
Date date = DateUtil.parse(orgParam.getDataDate());
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate(orgParam.getDataDate(), DatePattern.NORM_DATE_PATTERN);
|
||||
|
||||
QueryWrapper<RStatHarmonicDPO> queryWrapper = new QueryWrapper<>();
|
||||
|
||||
@@ -413,7 +787,7 @@ public class RStatHarmonicOrgServiceImpl implements RStatHarmonicOrgService {
|
||||
}
|
||||
RStatHarmonicOrgDPO rStatHarmonicOrgDPO = new RStatHarmonicOrgDPO();
|
||||
rStatHarmonicOrgDPO.setOrgNo(temp);
|
||||
rStatHarmonicOrgDPO.setDataDate(date);
|
||||
rStatHarmonicOrgDPO.setDataDate(localDate);
|
||||
rStatHarmonicOrgDPO.setHarmonicType(dictData.getId());
|
||||
rStatHarmonicOrgDPO.setDataType(v.getId());
|
||||
rStatHarmonicOrgDPO.setOverLimitMeasurementAverage(sumOverLimitMeasurement);
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.Impl.area;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
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.core.conditions.query.QueryWrapper;
|
||||
import com.njcn.common.pojo.response.HttpResult;
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
||||
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
|
||||
import com.njcn.device.pms.pojo.po.RStatOrgPO;
|
||||
import com.njcn.harmonic.pojo.po.*;
|
||||
import com.njcn.prepare.bo.CalculatedParam;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgDMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgMMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgQMapper;
|
||||
@@ -35,6 +39,7 @@ import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.text.DecimalFormat;
|
||||
import java.time.LocalDate;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -73,6 +78,743 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService {
|
||||
private final
|
||||
DicDataFeignClient dicDataFeignClient;
|
||||
|
||||
|
||||
@Override
|
||||
public void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
||||
List<RStatHarmonicDPO> rStatHarmonicDPOList = new ArrayList<>();
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN);
|
||||
/*获取监测点类型类型*/
|
||||
QueryWrapper<RMpPartHarmonicDetailD> queryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RMpSurplusHarmonicDetailD> rMpSurplusHarmonicDetailDQueryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatOrgDPO> rStatOrgDPOQueryWrapper = new QueryWrapper<>();
|
||||
DecimalFormat df = new DecimalFormat("0.00");
|
||||
|
||||
/*获取稳态统计指标*/
|
||||
List<DictData> steadyStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
|
||||
/*获取数据类型*/
|
||||
|
||||
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
|
||||
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
;
|
||||
/*获取监测点类型类型*/
|
||||
List<DictData> lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
|
||||
Map<String, DictData> lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
|
||||
|
||||
calculatedParam.getIdList().forEach(deptGetChildrenMoreDTO -> {
|
||||
|
||||
/*主网*/
|
||||
if(!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())){
|
||||
List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
|
||||
Map<String, List<LineDevGetDTO>> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineTag));
|
||||
collect.forEach((k, v)->{
|
||||
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
|
||||
queryWrapper.clear();
|
||||
queryWrapper.select("is_freq","is_v_dev","is_v","is_i","is_unbalance","is_i_neg").
|
||||
in("measurement_point_id",collect1).
|
||||
eq("data_date",localDate);
|
||||
List<RMpPartHarmonicDetailD> rMpPartHarmonicDetailDS = rMpPartHarmonicDetailDMapper.selectList(queryWrapper);
|
||||
|
||||
rMpSurplusHarmonicDetailDQueryWrapper.clear();
|
||||
rMpSurplusHarmonicDetailDQueryWrapper.select("is_flicker","is_inuharm").
|
||||
in("measurement_point_id",collect1).
|
||||
eq("data_date",localDate);
|
||||
List<RMpSurplusHarmonicDetailD> rMpSurplusHarmonicDetailDS = rMpSurplusHarmonicDetailDMapper.selectList(rMpSurplusHarmonicDetailDQueryWrapper);
|
||||
|
||||
rStatOrgDPOQueryWrapper.clear();
|
||||
rStatOrgDPOQueryWrapper.select("effective_measurement").
|
||||
eq("org_no",deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("measurement_type_class",k).
|
||||
eq("data_type",dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
eq("data_date",localDate);
|
||||
RStatOrgDPO rStatOrgDPO = rStatOrgDMapper.selectOne(rStatOrgDPOQueryWrapper);
|
||||
|
||||
steadyStatis.forEach(dictData -> {
|
||||
if(Objects.equals(dictData.getCode(),DicDataEnum.TOTAL_INDICATOR.getCode())){
|
||||
return;
|
||||
}
|
||||
RStatHarmonicDPO rStatHarmonicDPO = new RStatHarmonicDPO();
|
||||
rStatHarmonicDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatHarmonicDPO.setDataDate(localDate);
|
||||
rStatHarmonicDPO.setHarmonicType(dictData.getId());
|
||||
rStatHarmonicDPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
rStatHarmonicDPO.setMeasurementTypeClass(k);
|
||||
rStatHarmonicDPO.setOverLimitMeasurement(getSteadyStatisData(dictData,rMpPartHarmonicDetailDS,rMpSurplusHarmonicDetailDS));
|
||||
if(rStatOrgDPO.getEffectiveMeasurement()==0){
|
||||
rStatHarmonicDPO.setOverLimitMeasurementRatio(0.00);
|
||||
|
||||
}else{
|
||||
String value = df.format((float)rStatHarmonicDPO.getOverLimitMeasurement() / rStatOrgDPO.getEffectiveMeasurement());
|
||||
rStatHarmonicDPO.setOverLimitMeasurementRatio(Double.parseDouble(value));
|
||||
}
|
||||
rStatHarmonicDPOList.add(rStatHarmonicDPO);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
/*配网*/
|
||||
if(!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())) {
|
||||
List<LineDevGetDTO> pwMonitorIds = deptGetChildrenMoreDTO.getPwMonitorIds();
|
||||
Map<Integer, List<LineDevGetDTO>> pwMonitorMap = pwMonitorIds.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineType));
|
||||
pwMonitorMap.forEach((k, v) -> {
|
||||
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
|
||||
queryWrapper.clear();
|
||||
queryWrapper.select("is_freq", "is_v_dev", "is_v", "is_i", "is_unbalance", "is_i_neg").
|
||||
in("measurement_point_id", collect1).
|
||||
eq("data_date",localDate);
|
||||
List<RMpPartHarmonicDetailD> rMpPartHarmonicDetailDS = rMpPartHarmonicDetailDMapper.selectList(queryWrapper);
|
||||
|
||||
rMpSurplusHarmonicDetailDQueryWrapper.clear();
|
||||
rMpSurplusHarmonicDetailDQueryWrapper.select("is_flicker", "is_inuharm").
|
||||
in("measurement_point_id", collect1).
|
||||
eq("data_date",localDate);
|
||||
List<RMpSurplusHarmonicDetailD> rMpSurplusHarmonicDetailDS = rMpSurplusHarmonicDetailDMapper.selectList(rMpSurplusHarmonicDetailDQueryWrapper);
|
||||
|
||||
rStatOrgDPOQueryWrapper.clear();
|
||||
rStatOrgDPOQueryWrapper.select("effective_measurement").
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId()).
|
||||
eq("data_date",localDate);
|
||||
RStatOrgDPO rStatOrgDPO = rStatOrgDMapper.selectOne(rStatOrgDPOQueryWrapper);
|
||||
|
||||
steadyStatis.forEach(dictData -> {
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.NEG_CURRENT.getCode())) {
|
||||
return;
|
||||
}
|
||||
RStatHarmonicDPO rStatHarmonicDPO = new RStatHarmonicDPO();
|
||||
rStatHarmonicDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatHarmonicDPO.setDataDate(localDate);
|
||||
rStatHarmonicDPO.setHarmonicType(dictData.getId());
|
||||
rStatHarmonicDPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
|
||||
rStatHarmonicDPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap));
|
||||
rStatHarmonicDPO.setOverLimitMeasurement(getSteadyStatisData(dictData, rMpPartHarmonicDetailDS, rMpSurplusHarmonicDetailDS));
|
||||
if (rStatOrgDPO.getEffectiveMeasurement() == 0) {
|
||||
rStatHarmonicDPO.setOverLimitMeasurementRatio(0.00);
|
||||
|
||||
} else {
|
||||
String value = df.format(rStatHarmonicDPO.getOverLimitMeasurement() / rStatOrgDPO.getEffectiveMeasurement());
|
||||
rStatHarmonicDPO.setOverLimitMeasurementRatio(Double.parseDouble(value));
|
||||
}
|
||||
rStatHarmonicDPOList.add(rStatHarmonicDPO);
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
if(!CollectionUtils.isEmpty(rStatHarmonicDPOList)){
|
||||
rStatHarmonicDPOService.saveOrUpdateBatchByMultiId(rStatHarmonicDPOList,500);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
||||
List<RStatHarmonicMPO> rStatHarmonicMPOList = new ArrayList<>();
|
||||
DateTime begin = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
DateTime end = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN);
|
||||
|
||||
|
||||
QueryWrapper<RMpPartHarmonicDetailM> queryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMQueryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatOrgMPO> rStatOrgMPOQueryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatHarmonicDPO> harmonicDPOQueryWrapper = new QueryWrapper<>();
|
||||
|
||||
DecimalFormat df = new DecimalFormat("0.00");
|
||||
|
||||
/*获取稳态统计指标*/
|
||||
List<DictData> steadyStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
|
||||
/*获取数据类型*/
|
||||
|
||||
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
|
||||
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
;
|
||||
/*获取监测点类型类型*/
|
||||
List<DictData> lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
|
||||
Map<String, DictData> lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
|
||||
|
||||
calculatedParam.getIdList().forEach(deptGetChildrenMoreDTO -> {
|
||||
|
||||
/*主网*/
|
||||
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) {
|
||||
List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
|
||||
Map<String, List<LineDevGetDTO>> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineTag));
|
||||
collect.forEach((k, v) -> {
|
||||
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
|
||||
queryWrapper.clear();
|
||||
queryWrapper.select("freq_over_day", "v_dev_over_day", "v_over_day", "i_over_day", "unbalance_over_day", "i_neg_over_day").
|
||||
in("measurement_point_id", collect1).
|
||||
between("data_date",begin,end);
|
||||
List<RMpPartHarmonicDetailM> rMpPartHarmonicDetailMS = rMpPartHarmonicDetailMMapper.selectList(queryWrapper);
|
||||
|
||||
rMpSurplusHarmonicDetailMQueryWrapper.clear();
|
||||
rMpSurplusHarmonicDetailMQueryWrapper.select("flicker_over_day", "inuharm_over_day").
|
||||
in("measurement_point_id", collect1).
|
||||
between("data_date",begin,end);
|
||||
List<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMS = rMpSurplusHarmonicDetailMMapper.selectList(rMpSurplusHarmonicDetailMQueryWrapper);
|
||||
|
||||
rStatOrgMPOQueryWrapper.clear();
|
||||
rStatOrgMPOQueryWrapper.select("effective_measurement_accrued").
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("measurement_type_class", k).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
between("data_date",begin,end);
|
||||
RStatOrgMPO rStatOrgMPO = rStatOrgMMapper.selectOne(rStatOrgMPOQueryWrapper);
|
||||
|
||||
|
||||
|
||||
steadyStatis.forEach(dictData -> {
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATOR.getCode())) {
|
||||
return;
|
||||
}
|
||||
RStatHarmonicMPO rStatHarmonicMPO = new RStatHarmonicMPO();
|
||||
rStatHarmonicMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatHarmonicMPO.setDataDate(localDate);
|
||||
rStatHarmonicMPO.setHarmonicType(dictData.getId());
|
||||
rStatHarmonicMPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
rStatHarmonicMPO.setMeasurementTypeClass(k);
|
||||
/**4、累计超标监测点数*/
|
||||
rStatHarmonicMPO.setOverLimitMeasurementAccrued(getOverLimitMeasurementAccruedTime(dictData, rMpPartHarmonicDetailMS, rMpSurplusHarmonicDetailMS));
|
||||
/*3、日均超标监测点数,6、日均超标监测点数占比*/
|
||||
harmonicDPOQueryWrapper.clear();
|
||||
harmonicDPOQueryWrapper.eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("measurement_type_class", k).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
eq("harmonic_type", dictData.getId()).
|
||||
between("data_date",begin,end);
|
||||
List<RStatHarmonicDPO> rStatHarmonicDPOList = rStatHarmonicDPOService.list(harmonicDPOQueryWrapper);
|
||||
double asDouble = rStatHarmonicDPOList.stream().mapToDouble(RStatHarmonicDPO::getOverLimitMeasurement).average().getAsDouble();
|
||||
asDouble = BigDecimal.valueOf(asDouble).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
double asDouble1 = rStatHarmonicDPOList.stream().mapToDouble(RStatHarmonicDPO::getOverLimitMeasurementRatio).average().getAsDouble();
|
||||
asDouble1 = BigDecimal.valueOf(asDouble1).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
rStatHarmonicMPO.setOverLimitMeasurementAverage(asDouble);
|
||||
double sum = rStatHarmonicDPOList.stream().mapToDouble(RStatHarmonicDPO::getOverLimitMeasurement).sum();
|
||||
rStatHarmonicMPO.setOverLimitMeasurementRatioAverage(asDouble1);
|
||||
|
||||
int i = BigDecimal.valueOf(asDouble1).setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
|
||||
|
||||
rStatHarmonicMPO.setOverDay(i);
|
||||
|
||||
if (rStatOrgMPO.getEffectiveMeasurementAccrued() == 0) {
|
||||
//todo为0时如何设值
|
||||
rStatHarmonicMPO.setOverLimitMeasurementRatioAccrued(0.00);
|
||||
|
||||
} else {
|
||||
String value = df.format((float) rStatHarmonicMPO.getOverLimitMeasurementAccrued() / rStatOrgMPO.getEffectiveMeasurementAccrued());
|
||||
rStatHarmonicMPO.setOverLimitMeasurementRatioAccrued(Double.parseDouble(value));
|
||||
}
|
||||
rStatHarmonicMPOList.add(rStatHarmonicMPO);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
/*配网*/
|
||||
if(CollectionUtil.isNotEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())){
|
||||
List<LineDevGetDTO> pwMonitorIds = deptGetChildrenMoreDTO.getPwMonitorIds();
|
||||
Map<Integer, List<LineDevGetDTO>> collect = pwMonitorIds.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineType));
|
||||
collect.forEach((k, v) -> {
|
||||
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
|
||||
queryWrapper.clear();
|
||||
queryWrapper.select("freq_over_day", "v_dev_over_day", "v_over_day", "i_over_day", "unbalance_over_day", "i_neg_over_day").
|
||||
in("measurement_point_id", collect1).
|
||||
between("data_date",begin,end);
|
||||
List<RMpPartHarmonicDetailM> rMpPartHarmonicDetailMS = rMpPartHarmonicDetailMMapper.selectList(queryWrapper);
|
||||
|
||||
rMpSurplusHarmonicDetailMQueryWrapper.clear();
|
||||
rMpSurplusHarmonicDetailMQueryWrapper.select("flicker_over_day", "inuharm_over_day").
|
||||
in("measurement_point_id", collect1).
|
||||
between("data_date",begin,end);
|
||||
List<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMS = rMpSurplusHarmonicDetailMMapper.selectList(rMpSurplusHarmonicDetailMQueryWrapper);
|
||||
|
||||
rStatOrgMPOQueryWrapper.clear();
|
||||
rStatOrgMPOQueryWrapper.select("effective_measurement_accrued").
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
between("data_date",begin,end);
|
||||
RStatOrgMPO rStatOrgMPO = rStatOrgMMapper.selectOne(rStatOrgMPOQueryWrapper);
|
||||
|
||||
|
||||
|
||||
steadyStatis.forEach(dictData -> {
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATOR.getCode())) {
|
||||
return;
|
||||
}
|
||||
RStatHarmonicMPO rStatHarmonicMPO = new RStatHarmonicMPO();
|
||||
rStatHarmonicMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatHarmonicMPO.setDataDate(localDate);
|
||||
rStatHarmonicMPO.setHarmonicType(dictData.getId());
|
||||
rStatHarmonicMPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
|
||||
rStatHarmonicMPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap));
|
||||
/**4、累计超标监测点数*/
|
||||
rStatHarmonicMPO.setOverLimitMeasurementAccrued(getOverLimitMeasurementAccruedTime(dictData, rMpPartHarmonicDetailMS, rMpSurplusHarmonicDetailMS));
|
||||
/*3、日均超标监测点数,6、日均超标监测点数占比*/
|
||||
harmonicDPOQueryWrapper.clear();
|
||||
harmonicDPOQueryWrapper.eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId()).
|
||||
eq("harmonic_type", dictData.getId()).
|
||||
between("data_date",begin,end);
|
||||
List<RStatHarmonicDPO> rStatHarmonicDPOList = rStatHarmonicDPOService.list(harmonicDPOQueryWrapper);
|
||||
double asDouble = rStatHarmonicDPOList.stream().mapToDouble(RStatHarmonicDPO::getOverLimitMeasurement).average().getAsDouble();
|
||||
asDouble = BigDecimal.valueOf(asDouble).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
double asDouble1 = rStatHarmonicDPOList.stream().mapToDouble(RStatHarmonicDPO::getOverLimitMeasurementRatio).average().getAsDouble();
|
||||
asDouble1 = BigDecimal.valueOf(asDouble1).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
rStatHarmonicMPO.setOverLimitMeasurementAverage(asDouble);
|
||||
double sum = rStatHarmonicDPOList.stream().mapToDouble(RStatHarmonicDPO::getOverLimitMeasurement).sum();
|
||||
rStatHarmonicMPO.setOverLimitMeasurementRatioAverage(asDouble1);
|
||||
|
||||
int i = BigDecimal.valueOf(asDouble1).setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
|
||||
|
||||
rStatHarmonicMPO.setOverDay(i);
|
||||
|
||||
if (rStatOrgMPO.getEffectiveMeasurementAccrued() == 0) {
|
||||
//todo为0时如何设值
|
||||
rStatHarmonicMPO.setOverLimitMeasurementRatioAccrued(0.00);
|
||||
|
||||
} else {
|
||||
String value = df.format((float) rStatHarmonicMPO.getOverLimitMeasurementAccrued() / rStatOrgMPO.getEffectiveMeasurementAccrued());
|
||||
rStatHarmonicMPO.setOverLimitMeasurementRatioAccrued(Double.parseDouble(value));
|
||||
}
|
||||
rStatHarmonicMPOList.add(rStatHarmonicMPO);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
if(CollectionUtil.isNotEmpty(rStatHarmonicMPOList)){
|
||||
rStatHarmonicMPOService.saveOrUpdateBatchByMultiId(rStatHarmonicMPOList,500);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleQtr(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
||||
List<RStatHarmonicQPO> rStatHarmonicQPOList = new ArrayList<>();
|
||||
|
||||
DateTime begin = DateUtil.beginOfQuarter(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
DateTime end = DateUtil.endOfQuarter(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN);
|
||||
|
||||
|
||||
QueryWrapper<RMpPartHarmonicDetailM> queryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMQueryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatOrgQPO> rStatOrgQPOQueryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatHarmonicMPO> harmonicMPOQueryWrapper = new QueryWrapper<>();
|
||||
|
||||
DecimalFormat df = new DecimalFormat("0.00");
|
||||
|
||||
/*获取稳态统计指标*/
|
||||
List<DictData> steadyStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
|
||||
/*获取数据类型*/
|
||||
|
||||
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
|
||||
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
;
|
||||
/*获取监测点类型类型*/
|
||||
List<DictData> lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
|
||||
Map<String, DictData> lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
|
||||
|
||||
calculatedParam.getIdList().forEach(deptGetChildrenMoreDTO -> {
|
||||
|
||||
/*主网*/
|
||||
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) {
|
||||
List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
|
||||
Map<String, List<LineDevGetDTO>> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineTag));
|
||||
collect.forEach((k, v) -> {
|
||||
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
|
||||
queryWrapper.clear();
|
||||
queryWrapper.select("freq_over_day", "v_dev_over_day", "v_over_day", "i_over_day", "unbalance_over_day", "i_neg_over_day").
|
||||
in("measurement_point_id", collect1).
|
||||
between("data_date",begin,end);
|
||||
|
||||
List<RMpPartHarmonicDetailM> rMpPartHarmonicDetailMS = rMpPartHarmonicDetailMMapper.selectList(queryWrapper);
|
||||
|
||||
rMpSurplusHarmonicDetailMQueryWrapper.clear();
|
||||
rMpSurplusHarmonicDetailMQueryWrapper.select("flicker_over_day", "inuharm_over_day").
|
||||
in("measurement_point_id", collect1).
|
||||
between("data_date",begin,end);
|
||||
List<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMS = rMpSurplusHarmonicDetailMMapper.selectList(rMpSurplusHarmonicDetailMQueryWrapper);
|
||||
|
||||
rStatOrgQPOQueryWrapper.clear();
|
||||
rStatOrgQPOQueryWrapper.select("effective_measurement_accrued").
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("measurement_type_class", k).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
between("data_date",begin,end);
|
||||
RStatOrgQPO rStatOrgQPO = rStatOrgQMapper.selectOne(rStatOrgQPOQueryWrapper);
|
||||
|
||||
|
||||
|
||||
steadyStatis.forEach(dictData -> {
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATOR.getCode())) {
|
||||
return;
|
||||
}
|
||||
RStatHarmonicQPO rStatHarmonicQPO = new RStatHarmonicQPO();
|
||||
rStatHarmonicQPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatHarmonicQPO.setDataDate(localDate);
|
||||
rStatHarmonicQPO.setHarmonicType(dictData.getId());
|
||||
rStatHarmonicQPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
rStatHarmonicQPO.setMeasurementTypeClass(k);
|
||||
/**4、累计超标监测点数*/
|
||||
rStatHarmonicQPO.setOverLimitMeasurementAccrued(getOverLimitMeasurementAccruedTime(dictData, rMpPartHarmonicDetailMS, rMpSurplusHarmonicDetailMS));
|
||||
/*3、日均超标监测点数,6、日均超标监测点数占比*/
|
||||
harmonicMPOQueryWrapper.clear();
|
||||
harmonicMPOQueryWrapper.eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("measurement_type_class", k).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
eq("harmonic_type", dictData.getId()).
|
||||
between("data_date",begin,end);
|
||||
List<RStatHarmonicMPO> list = rStatHarmonicMPOService.list(harmonicMPOQueryWrapper);
|
||||
double asDouble = list.stream().mapToDouble(RStatHarmonicMPO::getOverLimitMeasurementAverage).average().getAsDouble();
|
||||
asDouble = BigDecimal.valueOf(asDouble).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
double asDouble1 = list.stream().mapToDouble(RStatHarmonicMPO::getOverLimitMeasurementRatioAverage).average().getAsDouble();
|
||||
asDouble1 = BigDecimal.valueOf(asDouble1).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
int sum1 = list.stream().mapToInt(RStatHarmonicMPO::getOverDay).sum();
|
||||
rStatHarmonicQPO.setOverLimitMeasurementAverage(asDouble);
|
||||
|
||||
rStatHarmonicQPO.setOverLimitMeasurementRatioAverage(asDouble1);
|
||||
|
||||
|
||||
if (rStatHarmonicQPO.getOverLimitMeasurementAccrued() == 0) {
|
||||
//todo为0时如何设值
|
||||
rStatHarmonicQPO.setAverageOverDay(0.00);
|
||||
|
||||
} else {
|
||||
String value = df.format((float) sum1 / rStatHarmonicQPO.getOverLimitMeasurementAccrued());
|
||||
rStatHarmonicQPO.setAverageOverDay(Double.parseDouble(value));
|
||||
}
|
||||
|
||||
if (rStatOrgQPO.getEffectiveMeasurementAccrued() == 0) {
|
||||
//todo为0时如何设值
|
||||
rStatHarmonicQPO.setOverLimitMeasurementRatioAccrued(0.00);
|
||||
|
||||
} else {
|
||||
String value = df.format((float) rStatHarmonicQPO.getOverLimitMeasurementAccrued() / rStatOrgQPO.getEffectiveMeasurementAccrued());
|
||||
rStatHarmonicQPO.setOverLimitMeasurementRatioAccrued(Double.parseDouble(value));
|
||||
}
|
||||
rStatHarmonicQPOList.add(rStatHarmonicQPO);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
/*配网*/
|
||||
if(CollectionUtil.isNotEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())){
|
||||
List<LineDevGetDTO> pwMonitorIds = deptGetChildrenMoreDTO.getPwMonitorIds();
|
||||
Map<Integer, List<LineDevGetDTO>> collect = pwMonitorIds.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineType));
|
||||
collect.forEach((k, v) -> {
|
||||
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
|
||||
queryWrapper.clear();
|
||||
queryWrapper.select("freq_over_day", "v_dev_over_day", "v_over_day", "i_over_day", "unbalance_over_day", "i_neg_over_day").
|
||||
in("measurement_point_id", collect1).
|
||||
between("data_date",begin,end);
|
||||
|
||||
List<RMpPartHarmonicDetailM> rMpPartHarmonicDetailMS = rMpPartHarmonicDetailMMapper.selectList(queryWrapper);
|
||||
|
||||
rMpSurplusHarmonicDetailMQueryWrapper.clear();
|
||||
rMpSurplusHarmonicDetailMQueryWrapper.select("flicker_over_day", "inuharm_over_day").
|
||||
in("measurement_point_id", collect1).
|
||||
between("data_date",begin,end);
|
||||
List<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMS = rMpSurplusHarmonicDetailMMapper.selectList(rMpSurplusHarmonicDetailMQueryWrapper);
|
||||
|
||||
rStatOrgQPOQueryWrapper.clear();
|
||||
rStatOrgQPOQueryWrapper.select("effective_measurement_accrued").
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
between("data_date",begin,end);
|
||||
RStatOrgQPO rStatOrgQPO = rStatOrgQMapper.selectOne(rStatOrgQPOQueryWrapper);
|
||||
|
||||
|
||||
|
||||
steadyStatis.forEach(dictData -> {
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATOR.getCode())) {
|
||||
return;
|
||||
}
|
||||
RStatHarmonicQPO rStatHarmonicQPO = new RStatHarmonicQPO();
|
||||
rStatHarmonicQPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatHarmonicQPO.setDataDate(localDate);
|
||||
rStatHarmonicQPO.setHarmonicType(dictData.getId());
|
||||
rStatHarmonicQPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
rStatHarmonicQPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap));
|
||||
/**4、累计超标监测点数*/
|
||||
rStatHarmonicQPO.setOverLimitMeasurementAccrued(getOverLimitMeasurementAccruedTime(dictData, rMpPartHarmonicDetailMS, rMpSurplusHarmonicDetailMS));
|
||||
/*3、日均超标监测点数,6、日均超标监测点数占比*/
|
||||
harmonicMPOQueryWrapper.clear();
|
||||
harmonicMPOQueryWrapper.eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
eq("harmonic_type", dictData.getId()).
|
||||
between("data_date",begin,end);
|
||||
List<RStatHarmonicMPO> list = rStatHarmonicMPOService.list(harmonicMPOQueryWrapper);
|
||||
double asDouble = list.stream().mapToDouble(RStatHarmonicMPO::getOverLimitMeasurementAverage).average().getAsDouble();
|
||||
asDouble = BigDecimal.valueOf(asDouble).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
double asDouble1 = list.stream().mapToDouble(RStatHarmonicMPO::getOverLimitMeasurementRatioAverage).average().getAsDouble();
|
||||
asDouble1 = BigDecimal.valueOf(asDouble1).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
int sum1 = list.stream().mapToInt(RStatHarmonicMPO::getOverDay).sum();
|
||||
rStatHarmonicQPO.setOverLimitMeasurementAverage(asDouble);
|
||||
|
||||
rStatHarmonicQPO.setOverLimitMeasurementRatioAverage(asDouble1);
|
||||
|
||||
|
||||
if (rStatHarmonicQPO.getOverLimitMeasurementAccrued() == 0) {
|
||||
//todo为0时如何设值
|
||||
rStatHarmonicQPO.setAverageOverDay(0.00);
|
||||
|
||||
} else {
|
||||
String value = df.format((float) sum1 / rStatHarmonicQPO.getOverLimitMeasurementAccrued());
|
||||
rStatHarmonicQPO.setAverageOverDay(Double.parseDouble(value));
|
||||
}
|
||||
|
||||
if (rStatOrgQPO.getEffectiveMeasurementAccrued() == 0) {
|
||||
//todo为0时如何设值
|
||||
rStatHarmonicQPO.setOverLimitMeasurementRatioAccrued(0.00);
|
||||
|
||||
} else {
|
||||
String value = df.format((float) rStatHarmonicQPO.getOverLimitMeasurementAccrued() / rStatOrgQPO.getEffectiveMeasurementAccrued());
|
||||
rStatHarmonicQPO.setOverLimitMeasurementRatioAccrued(Double.parseDouble(value));
|
||||
}
|
||||
rStatHarmonicQPOList.add(rStatHarmonicQPO);
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
if(CollectionUtil.isNotEmpty(rStatHarmonicQPOList)){
|
||||
rStatHarmonicQPOService.saveOrUpdateBatchByMultiId(rStatHarmonicQPOList,500);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleYear(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
||||
List<RStatHarmonicYPO> rStatHarmonicYPOList = new ArrayList<>();
|
||||
|
||||
DateTime begin = DateUtil.beginOfYear(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
DateTime end = DateUtil.endOfYear(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN);
|
||||
|
||||
|
||||
/*获取监测点类型类型*/
|
||||
QueryWrapper<RMpPartHarmonicDetailM> queryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMQueryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatOrgYPO> rStatOrgYPOQueryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatHarmonicMPO> harmonicMPOQueryWrapper = new QueryWrapper<>();
|
||||
|
||||
DecimalFormat df = new DecimalFormat("0.00");
|
||||
|
||||
/*获取稳态统计指标*/
|
||||
List<DictData> steadyStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
|
||||
/*获取数据类型*/
|
||||
|
||||
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
|
||||
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
;
|
||||
/*获取监测点类型类型*/
|
||||
|
||||
List<DictData> lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
|
||||
Map<String, DictData> lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
|
||||
|
||||
calculatedParam.getIdList().forEach(deptGetChildrenMoreDTO -> {
|
||||
|
||||
/*主网*/
|
||||
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) {
|
||||
List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
|
||||
Map<String, List<LineDevGetDTO>> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineTag));
|
||||
collect.forEach((k, v) -> {
|
||||
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
|
||||
queryWrapper.clear();
|
||||
queryWrapper.select("freq_over_day", "v_dev_over_day", "v_over_day", "i_over_day", "unbalance_over_day", "i_neg_over_day").
|
||||
in("measurement_point_id", collect1).
|
||||
between("data_date",begin,end);
|
||||
|
||||
List<RMpPartHarmonicDetailM> rMpPartHarmonicDetailMS = rMpPartHarmonicDetailMMapper.selectList(queryWrapper);
|
||||
|
||||
rMpSurplusHarmonicDetailMQueryWrapper.clear();
|
||||
rMpSurplusHarmonicDetailMQueryWrapper.select("flicker_over_day", "inuharm_over_day").
|
||||
in("measurement_point_id", collect1).
|
||||
between("data_date",begin,end);
|
||||
List<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMS = rMpSurplusHarmonicDetailMMapper.selectList(rMpSurplusHarmonicDetailMQueryWrapper);
|
||||
|
||||
rStatOrgYPOQueryWrapper.clear();
|
||||
rStatOrgYPOQueryWrapper.select("effective_measurement_accrued").
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("measurement_type_class", k).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
between("data_date",begin,end);
|
||||
RStatOrgYPO rStatOrgYPO = rStatOrgYMapper.selectOne(rStatOrgYPOQueryWrapper);
|
||||
|
||||
|
||||
|
||||
steadyStatis.forEach(dictData -> {
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATOR.getCode())) {
|
||||
return;
|
||||
}
|
||||
RStatHarmonicYPO rStatHarmonicYPO = new RStatHarmonicYPO();
|
||||
rStatHarmonicYPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatHarmonicYPO.setDataDate(localDate);
|
||||
rStatHarmonicYPO.setHarmonicType(dictData.getId());
|
||||
rStatHarmonicYPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
rStatHarmonicYPO.setMeasurementTypeClass(k);
|
||||
/**4、累计超标监测点数*/
|
||||
rStatHarmonicYPO.setOverLimitMeasurementAccrued(getOverLimitMeasurementAccruedTime(dictData, rMpPartHarmonicDetailMS, rMpSurplusHarmonicDetailMS));
|
||||
/*3、日均超标监测点数,6、日均超标监测点数占比*/
|
||||
harmonicMPOQueryWrapper.clear();
|
||||
harmonicMPOQueryWrapper.eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("measurement_type_class", k).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
eq("harmonic_type", dictData.getId()).
|
||||
between("data_date",begin,end);
|
||||
List<RStatHarmonicMPO> list = rStatHarmonicMPOService.list(harmonicMPOQueryWrapper);
|
||||
double asDouble = list.stream().mapToDouble(RStatHarmonicMPO::getOverLimitMeasurementAverage).average().getAsDouble();
|
||||
asDouble = BigDecimal.valueOf(asDouble).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
double asDouble1 = list.stream().mapToDouble(RStatHarmonicMPO::getOverLimitMeasurementRatioAverage).average().getAsDouble();
|
||||
asDouble1 = BigDecimal.valueOf(asDouble1).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
int sum1 = list.stream().mapToInt(RStatHarmonicMPO::getOverDay).sum();
|
||||
rStatHarmonicYPO.setOverLimitMeasurementAverage(asDouble);
|
||||
|
||||
rStatHarmonicYPO.setOverLimitMeasurementRatioAverage(asDouble1);
|
||||
|
||||
|
||||
if (rStatHarmonicYPO.getOverLimitMeasurementAccrued() == 0) {
|
||||
//todo为0时如何设值
|
||||
rStatHarmonicYPO.setAverageOverDay(0.00);
|
||||
|
||||
} else {
|
||||
String value = df.format((float) sum1 / rStatHarmonicYPO.getOverLimitMeasurementAccrued());
|
||||
rStatHarmonicYPO.setAverageOverDay(Double.parseDouble(value));
|
||||
}
|
||||
|
||||
if (rStatOrgYPO.getEffectiveMeasurementAccrued() == 0) {
|
||||
//todo为0时如何设值
|
||||
rStatHarmonicYPO.setOverLimitMeasurementRatioAccrued(0.00);
|
||||
|
||||
} else {
|
||||
String value = df.format((float) rStatHarmonicYPO.getOverLimitMeasurementAccrued() / rStatOrgYPO.getEffectiveMeasurementAccrued());
|
||||
rStatHarmonicYPO.setOverLimitMeasurementRatioAccrued(Double.parseDouble(value));
|
||||
}
|
||||
rStatHarmonicYPOList.add(rStatHarmonicYPO);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
/*配网*/
|
||||
if(CollectionUtil.isNotEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())){
|
||||
List<LineDevGetDTO> pwMonitorIds = deptGetChildrenMoreDTO.getPwMonitorIds();
|
||||
Map<Integer, List<LineDevGetDTO>> collect = pwMonitorIds.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineType));
|
||||
collect.forEach((k, v) -> {
|
||||
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
|
||||
queryWrapper.clear();
|
||||
queryWrapper.select("freq_over_day", "v_dev_over_day", "v_over_day", "i_over_day", "unbalance_over_day", "i_neg_over_day").
|
||||
in("measurement_point_id", collect1).
|
||||
between("data_date",begin,end);
|
||||
|
||||
List<RMpPartHarmonicDetailM> rMpPartHarmonicDetailMS = rMpPartHarmonicDetailMMapper.selectList(queryWrapper);
|
||||
|
||||
rMpSurplusHarmonicDetailMQueryWrapper.clear();
|
||||
rMpSurplusHarmonicDetailMQueryWrapper.select("flicker_over_day", "inuharm_over_day").
|
||||
in("measurement_point_id", collect1).
|
||||
between("data_date",begin,end);
|
||||
List<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMS = rMpSurplusHarmonicDetailMMapper.selectList(rMpSurplusHarmonicDetailMQueryWrapper);
|
||||
|
||||
rStatOrgYPOQueryWrapper.clear();
|
||||
rStatOrgYPOQueryWrapper.select("effective_measurement_accrued").
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
between("data_date",begin,end);
|
||||
RStatOrgYPO rStatOrgYPO = rStatOrgYMapper.selectOne(rStatOrgYPOQueryWrapper);
|
||||
|
||||
|
||||
|
||||
steadyStatis.forEach(dictData -> {
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATOR.getCode())) {
|
||||
return;
|
||||
}
|
||||
RStatHarmonicYPO rStatHarmonicYPO = new RStatHarmonicYPO();
|
||||
rStatHarmonicYPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatHarmonicYPO.setDataDate(localDate);
|
||||
rStatHarmonicYPO.setHarmonicType(dictData.getId());
|
||||
rStatHarmonicYPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
rStatHarmonicYPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap));
|
||||
/**4、累计超标监测点数*/
|
||||
rStatHarmonicYPO.setOverLimitMeasurementAccrued(getOverLimitMeasurementAccruedTime(dictData, rMpPartHarmonicDetailMS, rMpSurplusHarmonicDetailMS));
|
||||
/*3、日均超标监测点数,6、日均超标监测点数占比*/
|
||||
harmonicMPOQueryWrapper.clear();
|
||||
harmonicMPOQueryWrapper.eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
eq("harmonic_type", dictData.getId()).
|
||||
between("data_date",begin,end);
|
||||
List<RStatHarmonicMPO> list = rStatHarmonicMPOService.list(harmonicMPOQueryWrapper);
|
||||
double asDouble = list.stream().mapToDouble(RStatHarmonicMPO::getOverLimitMeasurementAverage).average().getAsDouble();
|
||||
asDouble = BigDecimal.valueOf(asDouble).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
double asDouble1 = list.stream().mapToDouble(RStatHarmonicMPO::getOverLimitMeasurementRatioAverage).average().getAsDouble();
|
||||
asDouble1 = BigDecimal.valueOf(asDouble1).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
int sum1 = list.stream().mapToInt(RStatHarmonicMPO::getOverDay).sum();
|
||||
rStatHarmonicYPO.setOverLimitMeasurementAverage(asDouble);
|
||||
|
||||
rStatHarmonicYPO.setOverLimitMeasurementRatioAverage(asDouble1);
|
||||
|
||||
|
||||
if (rStatHarmonicYPO.getOverLimitMeasurementAccrued() == 0) {
|
||||
//todo为0时如何设值
|
||||
rStatHarmonicYPO.setAverageOverDay(0.00);
|
||||
|
||||
} else {
|
||||
String value = df.format((float) sum1 / rStatHarmonicYPO.getOverLimitMeasurementAccrued());
|
||||
rStatHarmonicYPO.setAverageOverDay(Double.parseDouble(value));
|
||||
}
|
||||
|
||||
if (rStatOrgYPO.getEffectiveMeasurementAccrued() == 0) {
|
||||
//todo为0时如何设值
|
||||
rStatHarmonicYPO.setOverLimitMeasurementRatioAccrued(0.00);
|
||||
|
||||
} else {
|
||||
String value = df.format((float) rStatHarmonicYPO.getOverLimitMeasurementAccrued() / rStatOrgYPO.getEffectiveMeasurementAccrued());
|
||||
rStatHarmonicYPO.setOverLimitMeasurementRatioAccrued(Double.parseDouble(value));
|
||||
}
|
||||
rStatHarmonicYPOList.add(rStatHarmonicYPO);
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
if(CollectionUtil.isNotEmpty(rStatHarmonicYPOList)){
|
||||
rStatHarmonicYPOService.saveOrUpdateBatchByMultiId(rStatHarmonicYPOList,500);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/***----------------------------------------------------------------------------------------------**/
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void handler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
|
||||
switch (type) {
|
||||
@@ -92,12 +834,17 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Transactional
|
||||
@Async("asyncExecutor")
|
||||
@SneakyThrows
|
||||
private void hanlderOracleYear(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
|
||||
List<RStatHarmonicYPO> rStatHarmonicYPOList = new ArrayList<>();
|
||||
Date date = DateUtil.parse(dataDate);
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate(dataDate, DatePattern.NORM_DATE_PATTERN);
|
||||
/*获取监测点类型类型*/
|
||||
QueryWrapper<RMpPartHarmonicDetailM> queryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMQueryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatOrgYPO> rStatOrgYPOQueryWrapper = new QueryWrapper<>();
|
||||
@@ -156,7 +903,7 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService {
|
||||
}
|
||||
RStatHarmonicYPO rStatHarmonicYPO = new RStatHarmonicYPO();
|
||||
rStatHarmonicYPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatHarmonicYPO.setDataDate(date);
|
||||
rStatHarmonicYPO.setDataDate(localDate);
|
||||
rStatHarmonicYPO.setHarmonicType(dictData.getId());
|
||||
rStatHarmonicYPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
rStatHarmonicYPO.setMeasurementTypeClass(k);
|
||||
@@ -239,7 +986,7 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService {
|
||||
}
|
||||
RStatHarmonicYPO rStatHarmonicYPO = new RStatHarmonicYPO();
|
||||
rStatHarmonicYPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatHarmonicYPO.setDataDate(date);
|
||||
rStatHarmonicYPO.setDataDate(localDate);
|
||||
rStatHarmonicYPO.setHarmonicType(dictData.getId());
|
||||
rStatHarmonicYPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
rStatHarmonicYPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap));
|
||||
@@ -300,6 +1047,8 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService {
|
||||
private void hanlderOracleQtr(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
|
||||
List<RStatHarmonicQPO> rStatHarmonicQPOList = new ArrayList<>();
|
||||
Date date = DateUtil.parse(dataDate);
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate(dataDate, DatePattern.NORM_DATE_PATTERN);
|
||||
|
||||
QueryWrapper<RMpPartHarmonicDetailM> queryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMQueryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatOrgQPO> rStatOrgQPOQueryWrapper = new QueryWrapper<>();
|
||||
@@ -357,7 +1106,7 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService {
|
||||
}
|
||||
RStatHarmonicQPO rStatHarmonicQPO = new RStatHarmonicQPO();
|
||||
rStatHarmonicQPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatHarmonicQPO.setDataDate(date);
|
||||
rStatHarmonicQPO.setDataDate(localDate);
|
||||
rStatHarmonicQPO.setHarmonicType(dictData.getId());
|
||||
rStatHarmonicQPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
rStatHarmonicQPO.setMeasurementTypeClass(k);
|
||||
@@ -440,7 +1189,7 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService {
|
||||
}
|
||||
RStatHarmonicQPO rStatHarmonicQPO = new RStatHarmonicQPO();
|
||||
rStatHarmonicQPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatHarmonicQPO.setDataDate(date);
|
||||
rStatHarmonicQPO.setDataDate(localDate);
|
||||
rStatHarmonicQPO.setHarmonicType(dictData.getId());
|
||||
rStatHarmonicQPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
rStatHarmonicQPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap));
|
||||
@@ -502,6 +1251,8 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService {
|
||||
|
||||
List<RStatHarmonicMPO> rStatHarmonicMPOList = new ArrayList<>();
|
||||
Date date = DateUtil.parse(dataDate);
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate(dataDate, DatePattern.NORM_DATE_PATTERN);
|
||||
|
||||
QueryWrapper<RMpPartHarmonicDetailM> queryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMQueryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatOrgMPO> rStatOrgMPOQueryWrapper = new QueryWrapper<>();
|
||||
@@ -558,7 +1309,7 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService {
|
||||
}
|
||||
RStatHarmonicMPO rStatHarmonicMPO = new RStatHarmonicMPO();
|
||||
rStatHarmonicMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatHarmonicMPO.setDataDate(date);
|
||||
rStatHarmonicMPO.setDataDate(localDate);
|
||||
rStatHarmonicMPO.setHarmonicType(dictData.getId());
|
||||
rStatHarmonicMPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
rStatHarmonicMPO.setMeasurementTypeClass(k);
|
||||
@@ -633,7 +1384,7 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService {
|
||||
}
|
||||
RStatHarmonicMPO rStatHarmonicMPO = new RStatHarmonicMPO();
|
||||
rStatHarmonicMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatHarmonicMPO.setDataDate(date);
|
||||
rStatHarmonicMPO.setDataDate(localDate);
|
||||
rStatHarmonicMPO.setHarmonicType(dictData.getId());
|
||||
rStatHarmonicMPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
|
||||
rStatHarmonicMPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap));
|
||||
@@ -718,6 +1469,8 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService {
|
||||
private void hanlderDay(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
|
||||
List<RStatHarmonicDPO> rStatHarmonicDPOList = new ArrayList<>();
|
||||
Date date = DateUtil.parse(dataDate);
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate(dataDate, DatePattern.NORM_DATE_PATTERN);
|
||||
|
||||
QueryWrapper<RMpPartHarmonicDetailD> queryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RMpSurplusHarmonicDetailD> rMpSurplusHarmonicDetailDQueryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatOrgDPO> rStatOrgDPOQueryWrapper = new QueryWrapper<>();
|
||||
@@ -770,7 +1523,7 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService {
|
||||
}
|
||||
RStatHarmonicDPO rStatHarmonicDPO = new RStatHarmonicDPO();
|
||||
rStatHarmonicDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatHarmonicDPO.setDataDate(date);
|
||||
rStatHarmonicDPO.setDataDate(localDate);
|
||||
rStatHarmonicDPO.setHarmonicType(dictData.getId());
|
||||
rStatHarmonicDPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
rStatHarmonicDPO.setMeasurementTypeClass(k);
|
||||
@@ -821,7 +1574,7 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService {
|
||||
}
|
||||
RStatHarmonicDPO rStatHarmonicDPO = new RStatHarmonicDPO();
|
||||
rStatHarmonicDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatHarmonicDPO.setDataDate(date);
|
||||
rStatHarmonicDPO.setDataDate(localDate);
|
||||
rStatHarmonicDPO.setHarmonicType(dictData.getId());
|
||||
rStatHarmonicDPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
|
||||
rStatHarmonicDPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap));
|
||||
|
||||
@@ -1,11 +1,15 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.Impl.area;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
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.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.*;
|
||||
import com.njcn.prepare.bo.CalculatedParam;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgDMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgMMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpPartHarmonicDetailDMapper;
|
||||
@@ -31,6 +35,7 @@ import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.text.DecimalFormat;
|
||||
import java.time.LocalDate;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -58,6 +63,358 @@ public class RStatHarmonicVoltageServiceImpl implements RStatHarmonicVoltageServ
|
||||
|
||||
private final
|
||||
DicDataFeignClient dicDataFeignClient;
|
||||
|
||||
|
||||
@Override
|
||||
public void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
||||
|
||||
List<RStatHarmonicVoltageDPO> rStatHarmonicVoltageDPOList = new ArrayList<>();
|
||||
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN);
|
||||
|
||||
|
||||
QueryWrapper<RMpPartHarmonicDetailD> queryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RMpSurplusHarmonicDetailD> rMpSurplusHarmonicDetailDQueryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatOrgDPO> rStatOrgDPOQueryWrapper = new QueryWrapper<>();
|
||||
DecimalFormat df = new DecimalFormat("0.00");
|
||||
|
||||
/*获取稳态统计指标*/
|
||||
List<DictData> steadyStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
|
||||
/*获取数据类型*/
|
||||
|
||||
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
|
||||
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
;
|
||||
/*获取监测点类型类型*/
|
||||
List<DictData> lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
|
||||
Map<String, DictData> lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
|
||||
|
||||
calculatedParam.getIdList().forEach(deptGetChildrenMoreDTO -> {
|
||||
|
||||
/*主网*/
|
||||
if(!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())){
|
||||
List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
|
||||
Map<String, List<LineDevGetDTO>> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineTag));
|
||||
collect.forEach((k, v)->{
|
||||
Map<String, List<LineDevGetDTO>> collect2 = v.stream().collect(Collectors.groupingBy(LineDevGetDTO::getVoltageLevel));
|
||||
collect2.forEach((k1, v1) -> {
|
||||
|
||||
List<String> collect3 = v1.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
|
||||
|
||||
queryWrapper.clear();
|
||||
queryWrapper.select("is_freq","is_v_dev","is_v","is_i","is_unbalance","is_i_neg").
|
||||
in("measurement_point_id",collect3).
|
||||
eq("data_date",localDate);
|
||||
List<RMpPartHarmonicDetailD> rMpPartHarmonicDetailDS = rMpPartHarmonicDetailDMapper.selectList(queryWrapper);
|
||||
|
||||
rMpSurplusHarmonicDetailDQueryWrapper.clear();
|
||||
rMpSurplusHarmonicDetailDQueryWrapper.select("is_flicker","is_inuharm").
|
||||
in("measurement_point_id",collect3).
|
||||
eq("data_date",localDate);
|
||||
List<RMpSurplusHarmonicDetailD> rMpSurplusHarmonicDetailDS = rMpSurplusHarmonicDetailDMapper.selectList(rMpSurplusHarmonicDetailDQueryWrapper);
|
||||
|
||||
rStatOrgDPOQueryWrapper.clear();
|
||||
rStatOrgDPOQueryWrapper.select("effective_measurement").
|
||||
eq("org_no",deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("measurement_type_class",k).
|
||||
eq("data_type",dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
eq("data_date",localDate);
|
||||
RStatOrgDPO rStatOrgDPO = rStatOrgDMapper.selectOne(rStatOrgDPOQueryWrapper);
|
||||
steadyStatis.forEach(dictData -> {
|
||||
if(Objects.equals(dictData.getCode(),DicDataEnum.TOTAL_INDICATOR.getCode())){
|
||||
return;
|
||||
}
|
||||
RStatHarmonicVoltageDPO rStatHarmonicVoltageDPO = new RStatHarmonicVoltageDPO();
|
||||
rStatHarmonicVoltageDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatHarmonicVoltageDPO.setDataDate(localDate);
|
||||
rStatHarmonicVoltageDPO.setHarmonicType(dictData.getId());
|
||||
rStatHarmonicVoltageDPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
rStatHarmonicVoltageDPO.setMeasurementTypeClass(k);
|
||||
rStatHarmonicVoltageDPO.setVoltageType(k1);
|
||||
rStatHarmonicVoltageDPO.setOverLimitMeasurementAverage(getSteadyStatisData(dictData,rMpPartHarmonicDetailDS,rMpSurplusHarmonicDetailDS));
|
||||
if(rStatOrgDPO.getEffectiveMeasurement()==0){
|
||||
rStatHarmonicVoltageDPO.setOverLimitMeasurementRatioAverage(0.00);
|
||||
|
||||
}else{
|
||||
String value = df.format((float)rStatHarmonicVoltageDPO.getOverLimitMeasurementAverage()/ rStatOrgDPO.getEffectiveMeasurement());
|
||||
rStatHarmonicVoltageDPO.setOverLimitMeasurementRatioAverage(Double.parseDouble(value));
|
||||
}
|
||||
rStatHarmonicVoltageDPOList.add(rStatHarmonicVoltageDPO);
|
||||
})
|
||||
|
||||
;}
|
||||
);
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
/*配网*/
|
||||
if(!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())) {
|
||||
List<LineDevGetDTO> pwMonitorIds = deptGetChildrenMoreDTO.getPwMonitorIds();
|
||||
Map<Integer, List<LineDevGetDTO>> pwMonitorMap = pwMonitorIds.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineType));
|
||||
pwMonitorMap.forEach((k, v)->{
|
||||
Map<String, List<LineDevGetDTO>> collect2 = v.stream().collect(Collectors.groupingBy(LineDevGetDTO::getVoltageLevel));
|
||||
collect2.forEach((k1, v1) -> {
|
||||
|
||||
List<String> collect3 = v1.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
|
||||
|
||||
queryWrapper.clear();
|
||||
queryWrapper.select("is_freq","is_v_dev","is_v","is_i","is_unbalance","is_i_neg").
|
||||
in("measurement_point_id",collect3).
|
||||
eq("data_date",localDate);
|
||||
List<RMpPartHarmonicDetailD> rMpPartHarmonicDetailDS = rMpPartHarmonicDetailDMapper.selectList(queryWrapper);
|
||||
|
||||
rMpSurplusHarmonicDetailDQueryWrapper.clear();
|
||||
rMpSurplusHarmonicDetailDQueryWrapper.select("is_flicker","is_inuharm").
|
||||
in("measurement_point_id",collect3).
|
||||
eq("data_date",localDate);
|
||||
List<RMpSurplusHarmonicDetailD> rMpSurplusHarmonicDetailDS = rMpSurplusHarmonicDetailDMapper.selectList(rMpSurplusHarmonicDetailDQueryWrapper);
|
||||
|
||||
rStatOrgDPOQueryWrapper.clear();
|
||||
rStatOrgDPOQueryWrapper.select("effective_measurement").
|
||||
eq("org_no",deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("measurement_type_class",getmeasurementType(k,lineSortMap)).
|
||||
eq("data_type",dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
eq("data_date",localDate);
|
||||
RStatOrgDPO rStatOrgDPO = rStatOrgDMapper.selectOne(rStatOrgDPOQueryWrapper);
|
||||
steadyStatis.forEach(dictData -> {
|
||||
if(Objects.equals(dictData.getCode(),DicDataEnum.TOTAL_INDICATOR.getCode())){
|
||||
return;
|
||||
}
|
||||
RStatHarmonicVoltageDPO rStatHarmonicVoltageDPO = new RStatHarmonicVoltageDPO();
|
||||
rStatHarmonicVoltageDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatHarmonicVoltageDPO.setDataDate(localDate);
|
||||
rStatHarmonicVoltageDPO.setHarmonicType(dictData.getId());
|
||||
rStatHarmonicVoltageDPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
|
||||
rStatHarmonicVoltageDPO.setMeasurementTypeClass(getmeasurementType(k,lineSortMap));
|
||||
rStatHarmonicVoltageDPO.setVoltageType(k1);
|
||||
rStatHarmonicVoltageDPO.setOverLimitMeasurementAverage(getSteadyStatisData(dictData,rMpPartHarmonicDetailDS,rMpSurplusHarmonicDetailDS));
|
||||
if(rStatOrgDPO.getEffectiveMeasurement()==0){
|
||||
rStatHarmonicVoltageDPO.setOverLimitMeasurementRatioAverage(0.00);
|
||||
|
||||
}else{
|
||||
String value = df.format((float)rStatHarmonicVoltageDPO.getOverLimitMeasurementAverage()/ rStatOrgDPO.getEffectiveMeasurement());
|
||||
rStatHarmonicVoltageDPO.setOverLimitMeasurementRatioAverage(Double.parseDouble(value));
|
||||
}
|
||||
rStatHarmonicVoltageDPOList.add(rStatHarmonicVoltageDPO);
|
||||
})
|
||||
|
||||
;}
|
||||
);
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
if(!CollectionUtils.isEmpty(rStatHarmonicVoltageDPOList)){
|
||||
rStatHarmonicVoltageDPOService.saveOrUpdateBatchByMultiId(rStatHarmonicVoltageDPOList,500);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
||||
List<RStatHarmonicVoltageMPO> rStatHarmonicVoltageMPOList = new ArrayList<>();
|
||||
|
||||
DateTime begin = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
DateTime end = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN);
|
||||
|
||||
QueryWrapper<RMpPartHarmonicDetailM> queryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMQueryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatOrgMPO> rStatOrgMPOQueryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatHarmonicVoltageDPO> harmonicVoltageDPOQueryWrapper = new QueryWrapper<>();
|
||||
|
||||
DecimalFormat df = new DecimalFormat("0.00");
|
||||
|
||||
/*获取稳态统计指标*/
|
||||
List<DictData> steadyStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
|
||||
/*获取数据类型*/
|
||||
|
||||
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
|
||||
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
;
|
||||
/*获取监测点类型类型*/
|
||||
List<DictData> lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
|
||||
Map<String, DictData> lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
|
||||
|
||||
calculatedParam.getIdList().forEach(deptGetChildrenMoreDTO -> {
|
||||
|
||||
/*主网*/
|
||||
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) {
|
||||
List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
|
||||
Map<String, List<LineDevGetDTO>> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineTag));
|
||||
collect.forEach((k, v) -> {
|
||||
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
Map<String, List<LineDevGetDTO>> collect2 = v.stream().collect(Collectors.groupingBy(LineDevGetDTO::getVoltageLevel));
|
||||
collect2.forEach((k1, v1) -> {
|
||||
queryWrapper.clear();
|
||||
queryWrapper.select("freq_over_day", "v_dev_over_day", "v_over_day", "i_over_day", "unbalance_over_day", "i_neg_over_day").
|
||||
in("measurement_point_id", collect1).
|
||||
between("data_date",begin,end);
|
||||
List<RMpPartHarmonicDetailM> rMpPartHarmonicDetailMS = rMpPartHarmonicDetailMMapper.selectList(queryWrapper);
|
||||
|
||||
rMpSurplusHarmonicDetailMQueryWrapper.clear();
|
||||
rMpSurplusHarmonicDetailMQueryWrapper.select("flicker_over_day", "inuharm_over_day").
|
||||
in("measurement_point_id", collect1).
|
||||
between("data_date",begin,end);
|
||||
List<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMS = rMpSurplusHarmonicDetailMMapper.selectList(rMpSurplusHarmonicDetailMQueryWrapper);
|
||||
|
||||
rStatOrgMPOQueryWrapper.clear();
|
||||
rStatOrgMPOQueryWrapper.select("effective_measurement_accrued").
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("measurement_type_class", k).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
between("data_date",begin,end);
|
||||
RStatOrgMPO rStatOrgMPO = rStatOrgMMapper.selectOne(rStatOrgMPOQueryWrapper);
|
||||
|
||||
|
||||
|
||||
steadyStatis.forEach(dictData -> {
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATOR.getCode())) {
|
||||
return;
|
||||
}
|
||||
RStatHarmonicVoltageMPO rStatHarmonicVoltageMPO = new RStatHarmonicVoltageMPO();
|
||||
rStatHarmonicVoltageMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatHarmonicVoltageMPO.setDataDate(localDate);
|
||||
rStatHarmonicVoltageMPO.setHarmonicType(dictData.getId());
|
||||
rStatHarmonicVoltageMPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
rStatHarmonicVoltageMPO.setMeasurementTypeClass(k);
|
||||
rStatHarmonicVoltageMPO.setVoltageType(k1);
|
||||
|
||||
/**4、累计超标监测点数*/
|
||||
rStatHarmonicVoltageMPO.setOverLimitMeasurementAccrued(getOverLimitMeasurementAccruedTime(dictData, rMpPartHarmonicDetailMS, rMpSurplusHarmonicDetailMS));
|
||||
/*3、日均超标监测点数,6、日均超标监测点数占比*/
|
||||
harmonicVoltageDPOQueryWrapper.clear();
|
||||
harmonicVoltageDPOQueryWrapper.eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("measurement_type_class", k).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
eq("harmonic_type", dictData.getId()).
|
||||
eq("voltage_type",k1).
|
||||
between("data_date",begin,end);
|
||||
List<RStatHarmonicVoltageDPO> list = rStatHarmonicVoltageDPOService.list(harmonicVoltageDPOQueryWrapper);
|
||||
double asDouble = list.stream().mapToDouble(RStatHarmonicVoltageDPO::getOverLimitMeasurementAverage).average().getAsDouble();
|
||||
asDouble = BigDecimal.valueOf(asDouble).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
rStatHarmonicVoltageMPO.setOverLimitMeasurementAverage(asDouble);
|
||||
double asDouble1 = list.stream().mapToDouble(RStatHarmonicVoltageDPO::getOverLimitMeasurementRatioAverage).average().getAsDouble();
|
||||
asDouble1 = BigDecimal.valueOf(asDouble1).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
rStatHarmonicVoltageMPO.setOverLimitMeasurementRatioAccrued(asDouble);
|
||||
int sum = list.stream().mapToInt(RStatHarmonicVoltageDPO::getOverLimitMeasurementAverage).sum();
|
||||
rStatHarmonicVoltageMPO.setOverDay(sum);
|
||||
|
||||
|
||||
if (rStatOrgMPO.getEffectiveMeasurementAccrued() == 0) {
|
||||
//todo为0时如何设值
|
||||
rStatHarmonicVoltageMPO.setOverLimitMeasurementRatioAverage(0.00);
|
||||
|
||||
} else {
|
||||
String value = df.format((float) rStatHarmonicVoltageMPO.getOverLimitMeasurementAccrued() / rStatOrgMPO.getEffectiveMeasurementAccrued());
|
||||
rStatHarmonicVoltageMPO.setOverLimitMeasurementRatioAverage(Double.parseDouble(value));
|
||||
}
|
||||
rStatHarmonicVoltageMPOList.add(rStatHarmonicVoltageMPO);
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
}
|
||||
/*配网*/
|
||||
if(CollectionUtil.isNotEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())){
|
||||
List<LineDevGetDTO> pwMonitorIds = deptGetChildrenMoreDTO.getPwMonitorIds();
|
||||
Map<Integer, List<LineDevGetDTO>> collect = pwMonitorIds.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineType));
|
||||
collect.forEach((k, v) -> {
|
||||
{
|
||||
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
Map<String, List<LineDevGetDTO>> collect2 = v.stream().collect(Collectors.groupingBy(LineDevGetDTO::getVoltageLevel));
|
||||
collect2.forEach((k1, v1) -> {
|
||||
queryWrapper.clear();
|
||||
queryWrapper.select("freq_over_day", "v_dev_over_day", "v_over_day", "i_over_day", "unbalance_over_day", "i_neg_over_day").
|
||||
in("measurement_point_id", collect1).
|
||||
between("data_date",begin,end);
|
||||
List<RMpPartHarmonicDetailM> rMpPartHarmonicDetailMS = rMpPartHarmonicDetailMMapper.selectList(queryWrapper);
|
||||
|
||||
rMpSurplusHarmonicDetailMQueryWrapper.clear();
|
||||
rMpSurplusHarmonicDetailMQueryWrapper.select("flicker_over_day", "inuharm_over_day").
|
||||
in("measurement_point_id", collect1).
|
||||
between("data_date",begin,end);
|
||||
List<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMS = rMpSurplusHarmonicDetailMMapper.selectList(rMpSurplusHarmonicDetailMQueryWrapper);
|
||||
|
||||
rStatOrgMPOQueryWrapper.clear();
|
||||
rStatOrgMPOQueryWrapper.select("effective_measurement_accrued").
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("measurement_type_class", k).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
between("data_date",begin,end);
|
||||
RStatOrgMPO rStatOrgMPO = rStatOrgMMapper.selectOne(rStatOrgMPOQueryWrapper);
|
||||
|
||||
|
||||
|
||||
steadyStatis.forEach(dictData -> {
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATOR.getCode())) {
|
||||
return;
|
||||
}
|
||||
RStatHarmonicVoltageMPO rStatHarmonicVoltageMPO = new RStatHarmonicVoltageMPO();
|
||||
rStatHarmonicVoltageMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatHarmonicVoltageMPO.setDataDate(localDate);
|
||||
rStatHarmonicVoltageMPO.setHarmonicType(dictData.getId());
|
||||
rStatHarmonicVoltageMPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
rStatHarmonicVoltageMPO.setMeasurementTypeClass(getmeasurementType(k,lineSortMap));
|
||||
rStatHarmonicVoltageMPO.setVoltageType(k1);
|
||||
|
||||
/**4、累计超标监测点数*/
|
||||
rStatHarmonicVoltageMPO.setOverLimitMeasurementAccrued(getOverLimitMeasurementAccruedTime(dictData, rMpPartHarmonicDetailMS, rMpSurplusHarmonicDetailMS));
|
||||
/*3、日均超标监测点数,6、日均超标监测点数占比*/
|
||||
harmonicVoltageDPOQueryWrapper.clear();
|
||||
harmonicVoltageDPOQueryWrapper.eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("measurement_type_class", k).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
eq("harmonic_type", dictData.getId()).
|
||||
eq("voltage_type",k1).
|
||||
between("data_date",begin,end);
|
||||
List<RStatHarmonicVoltageDPO> list = rStatHarmonicVoltageDPOService.list(harmonicVoltageDPOQueryWrapper);
|
||||
double asDouble = list.stream().mapToDouble(RStatHarmonicVoltageDPO::getOverLimitMeasurementAverage).average().getAsDouble();
|
||||
asDouble = BigDecimal.valueOf(asDouble).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
rStatHarmonicVoltageMPO.setOverLimitMeasurementAverage(asDouble);
|
||||
double asDouble1 = list.stream().mapToDouble(RStatHarmonicVoltageDPO::getOverLimitMeasurementRatioAverage).average().getAsDouble();
|
||||
asDouble1 = BigDecimal.valueOf(asDouble1).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
rStatHarmonicVoltageMPO.setOverLimitMeasurementRatioAccrued(asDouble);
|
||||
int sum = list.stream().mapToInt(RStatHarmonicVoltageDPO::getOverLimitMeasurementAverage).sum();
|
||||
rStatHarmonicVoltageMPO.setOverDay(sum);
|
||||
|
||||
|
||||
if (rStatOrgMPO.getEffectiveMeasurementAccrued() == 0) {
|
||||
//todo为0时如何设值
|
||||
rStatHarmonicVoltageMPO.setOverLimitMeasurementRatioAverage(0.00);
|
||||
|
||||
} else {
|
||||
String value = df.format((float) rStatHarmonicVoltageMPO.getOverLimitMeasurementAccrued() / rStatOrgMPO.getEffectiveMeasurementAccrued());
|
||||
rStatHarmonicVoltageMPO.setOverLimitMeasurementRatioAverage(Double.parseDouble(value));
|
||||
}
|
||||
rStatHarmonicVoltageMPOList.add(rStatHarmonicVoltageMPO);
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
if(CollectionUtil.isNotEmpty(rStatHarmonicVoltageMPOList)){
|
||||
rStatHarmonicVoltageMPOService.saveOrUpdateBatchByMultiId(rStatHarmonicVoltageMPOList,500);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**---------------------------------------------------------------------------------**/
|
||||
|
||||
@Override
|
||||
public void handlerByPowerLevel(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
|
||||
switch (type) {
|
||||
@@ -78,12 +435,16 @@ public class RStatHarmonicVoltageServiceImpl implements RStatHarmonicVoltageServ
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Transactional(rollbackFor = {Exception.class})
|
||||
@Async("asyncExecutor")
|
||||
@SneakyThrows
|
||||
private void hanlderMByPl(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
|
||||
List<RStatHarmonicVoltageMPO> rStatHarmonicVoltageMPOList = new ArrayList<>();
|
||||
Date date = DateUtil.parse(dataDate);
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate(dataDate, DatePattern.NORM_DATE_PATTERN);
|
||||
|
||||
QueryWrapper<RMpPartHarmonicDetailM> queryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RMpSurplusHarmonicDetailM> rMpSurplusHarmonicDetailMQueryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatOrgMPO> rStatOrgMPOQueryWrapper = new QueryWrapper<>();
|
||||
@@ -141,7 +502,7 @@ public class RStatHarmonicVoltageServiceImpl implements RStatHarmonicVoltageServ
|
||||
}
|
||||
RStatHarmonicVoltageMPO rStatHarmonicVoltageMPO = new RStatHarmonicVoltageMPO();
|
||||
rStatHarmonicVoltageMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatHarmonicVoltageMPO.setDataDate(date);
|
||||
rStatHarmonicVoltageMPO.setDataDate(localDate);
|
||||
rStatHarmonicVoltageMPO.setHarmonicType(dictData.getId());
|
||||
rStatHarmonicVoltageMPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
rStatHarmonicVoltageMPO.setMeasurementTypeClass(k);
|
||||
@@ -155,7 +516,7 @@ public class RStatHarmonicVoltageServiceImpl implements RStatHarmonicVoltageServ
|
||||
eq("measurement_type_class", k).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
eq("harmonic_type", dictData.getId()).
|
||||
eq("voltageType",k1).
|
||||
eq("voltage_type",k1).
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m')",dataDate.substring(0, 7));
|
||||
List<RStatHarmonicVoltageDPO> list = rStatHarmonicVoltageDPOService.list(harmonicVoltageDPOQueryWrapper);
|
||||
double asDouble = list.stream().mapToDouble(RStatHarmonicVoltageDPO::getOverLimitMeasurementAverage).average().getAsDouble();
|
||||
@@ -170,11 +531,11 @@ public class RStatHarmonicVoltageServiceImpl implements RStatHarmonicVoltageServ
|
||||
|
||||
if (rStatOrgMPO.getEffectiveMeasurementAccrued() == 0) {
|
||||
//todo为0时如何设值
|
||||
rStatHarmonicVoltageMPO.setOverLimitMeasurementRatioAccrued(0.00);
|
||||
rStatHarmonicVoltageMPO.setOverLimitMeasurementRatioAverage(0.00);
|
||||
|
||||
} else {
|
||||
String value = df.format((float) rStatHarmonicVoltageMPO.getOverLimitMeasurementAccrued() / rStatOrgMPO.getEffectiveMeasurementAccrued());
|
||||
rStatHarmonicVoltageMPO.setOverLimitMeasurementRatioAccrued(Double.parseDouble(value));
|
||||
rStatHarmonicVoltageMPO.setOverLimitMeasurementRatioAverage(Double.parseDouble(value));
|
||||
}
|
||||
rStatHarmonicVoltageMPOList.add(rStatHarmonicVoltageMPO);
|
||||
});
|
||||
@@ -219,7 +580,7 @@ public class RStatHarmonicVoltageServiceImpl implements RStatHarmonicVoltageServ
|
||||
}
|
||||
RStatHarmonicVoltageMPO rStatHarmonicVoltageMPO = new RStatHarmonicVoltageMPO();
|
||||
rStatHarmonicVoltageMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatHarmonicVoltageMPO.setDataDate(date);
|
||||
rStatHarmonicVoltageMPO.setDataDate(localDate);
|
||||
rStatHarmonicVoltageMPO.setHarmonicType(dictData.getId());
|
||||
rStatHarmonicVoltageMPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
rStatHarmonicVoltageMPO.setMeasurementTypeClass(getmeasurementType(k,lineSortMap));
|
||||
@@ -233,7 +594,7 @@ public class RStatHarmonicVoltageServiceImpl implements RStatHarmonicVoltageServ
|
||||
eq("measurement_type_class", k).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
eq("harmonic_type", dictData.getId()).
|
||||
eq("voltageType",k1).
|
||||
eq("voltage_type",k1).
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m')",dataDate.substring(0, 7));
|
||||
List<RStatHarmonicVoltageDPO> list = rStatHarmonicVoltageDPOService.list(harmonicVoltageDPOQueryWrapper);
|
||||
double asDouble = list.stream().mapToDouble(RStatHarmonicVoltageDPO::getOverLimitMeasurementAverage).average().getAsDouble();
|
||||
@@ -248,11 +609,11 @@ public class RStatHarmonicVoltageServiceImpl implements RStatHarmonicVoltageServ
|
||||
|
||||
if (rStatOrgMPO.getEffectiveMeasurementAccrued() == 0) {
|
||||
//todo为0时如何设值
|
||||
rStatHarmonicVoltageMPO.setOverLimitMeasurementRatioAccrued(0.00);
|
||||
rStatHarmonicVoltageMPO.setOverLimitMeasurementRatioAverage(0.00);
|
||||
|
||||
} else {
|
||||
String value = df.format((float) rStatHarmonicVoltageMPO.getOverLimitMeasurementAccrued() / rStatOrgMPO.getEffectiveMeasurementAccrued());
|
||||
rStatHarmonicVoltageMPO.setOverLimitMeasurementRatioAccrued(Double.parseDouble(value));
|
||||
rStatHarmonicVoltageMPO.setOverLimitMeasurementRatioAverage(Double.parseDouble(value));
|
||||
}
|
||||
rStatHarmonicVoltageMPOList.add(rStatHarmonicVoltageMPO);
|
||||
});
|
||||
@@ -277,6 +638,8 @@ public class RStatHarmonicVoltageServiceImpl implements RStatHarmonicVoltageServ
|
||||
private void hanlderDayByPl(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
|
||||
List<RStatHarmonicVoltageDPO> rStatHarmonicVoltageDPOList = new ArrayList<>();
|
||||
Date date = DateUtil.parse(dataDate);
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate(dataDate, DatePattern.NORM_DATE_PATTERN);
|
||||
|
||||
QueryWrapper<RMpPartHarmonicDetailD> queryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RMpSurplusHarmonicDetailD> rMpSurplusHarmonicDetailDQueryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatOrgDPO> rStatOrgDPOQueryWrapper = new QueryWrapper<>();
|
||||
@@ -332,14 +695,14 @@ public class RStatHarmonicVoltageServiceImpl implements RStatHarmonicVoltageServ
|
||||
}
|
||||
RStatHarmonicVoltageDPO rStatHarmonicVoltageDPO = new RStatHarmonicVoltageDPO();
|
||||
rStatHarmonicVoltageDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatHarmonicVoltageDPO.setDataDate(date);
|
||||
rStatHarmonicVoltageDPO.setDataDate(localDate);
|
||||
rStatHarmonicVoltageDPO.setHarmonicType(dictData.getId());
|
||||
rStatHarmonicVoltageDPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
rStatHarmonicVoltageDPO.setMeasurementTypeClass(k);
|
||||
rStatHarmonicVoltageDPO.setVoltageType(k1);
|
||||
rStatHarmonicVoltageDPO.setOverLimitMeasurementAverage(getSteadyStatisData(dictData,rMpPartHarmonicDetailDS,rMpSurplusHarmonicDetailDS));
|
||||
if(rStatOrgDPO.getEffectiveMeasurement()==0){
|
||||
rStatHarmonicVoltageDPO.setOverLimitMeasurementRatioAverage(1.00);
|
||||
rStatHarmonicVoltageDPO.setOverLimitMeasurementRatioAverage(0.00);
|
||||
|
||||
}else{
|
||||
String value = df.format((float)rStatHarmonicVoltageDPO.getOverLimitMeasurementAverage()/ rStatOrgDPO.getEffectiveMeasurement());
|
||||
@@ -390,14 +753,14 @@ public class RStatHarmonicVoltageServiceImpl implements RStatHarmonicVoltageServ
|
||||
}
|
||||
RStatHarmonicVoltageDPO rStatHarmonicVoltageDPO = new RStatHarmonicVoltageDPO();
|
||||
rStatHarmonicVoltageDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatHarmonicVoltageDPO.setDataDate(date);
|
||||
rStatHarmonicVoltageDPO.setDataDate(localDate);
|
||||
rStatHarmonicVoltageDPO.setHarmonicType(dictData.getId());
|
||||
rStatHarmonicVoltageDPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
|
||||
rStatHarmonicVoltageDPO.setMeasurementTypeClass(getmeasurementType(k,lineSortMap));
|
||||
rStatHarmonicVoltageDPO.setVoltageType(k1);
|
||||
rStatHarmonicVoltageDPO.setOverLimitMeasurementAverage(getSteadyStatisData(dictData,rMpPartHarmonicDetailDS,rMpSurplusHarmonicDetailDS));
|
||||
if(rStatOrgDPO.getEffectiveMeasurement()==0){
|
||||
rStatHarmonicVoltageDPO.setOverLimitMeasurementRatioAverage(1.00);
|
||||
rStatHarmonicVoltageDPO.setOverLimitMeasurementRatioAverage(0.00);
|
||||
|
||||
}else{
|
||||
String value = df.format((float)rStatHarmonicVoltageDPO.getOverLimitMeasurementAverage()/ rStatOrgDPO.getEffectiveMeasurement());
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.area;
|
||||
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
||||
import com.njcn.prepare.bo.CalculatedParam;
|
||||
import com.njcn.prepare.harmonic.pojo.param.OrgParam;
|
||||
|
||||
import java.util.List;
|
||||
@@ -15,4 +16,12 @@ import java.util.List;
|
||||
public interface RStatHarmonicOrgService {
|
||||
|
||||
void handler(OrgParam orgParam);
|
||||
|
||||
void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
|
||||
|
||||
void handleMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
|
||||
|
||||
void handleQtr(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
|
||||
|
||||
void handleYear(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.area;
|
||||
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
||||
import com.njcn.prepare.bo.CalculatedParam;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -14,4 +15,11 @@ import java.util.List;
|
||||
public interface RStatHarmonicService {
|
||||
void handler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type);
|
||||
|
||||
void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
|
||||
|
||||
void handleMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
|
||||
|
||||
void handleQtr(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
|
||||
|
||||
void handleYear(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.njcn.prepare.harmonic.service.mysql.area;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.IMppService;
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
||||
import com.njcn.prepare.bo.CalculatedParam;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatHarmonicVoltageDPO;
|
||||
|
||||
import java.util.List;
|
||||
@@ -18,4 +19,9 @@ public interface RStatHarmonicVoltageService {
|
||||
|
||||
void handlerByPowerLevel(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type);
|
||||
|
||||
void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
|
||||
|
||||
void handleMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.newalgorithm;
|
||||
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
||||
import com.njcn.prepare.bo.CalculatedParam;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -13,4 +14,7 @@ public interface RAlarmCountService {
|
||||
|
||||
void handler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type);
|
||||
|
||||
void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
|
||||
|
||||
void handleMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
|
||||
}
|
||||
|
||||
@@ -2,12 +2,12 @@ package com.njcn.prepare.harmonic.service.mysql.newalgorithm;
|
||||
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.IMppService;
|
||||
import com.njcn.prepare.harmonic.pojo.po.RStatAreaAlarmCountM;
|
||||
import com.njcn.prepare.harmonic.pojo.po.RStatAreaAlarmCountMPO;
|
||||
|
||||
/**
|
||||
* @author zbj
|
||||
* @since 2023-06-14
|
||||
*/
|
||||
|
||||
public interface RStatAreaAlarmCountMPOService extends IMppService<RStatAreaAlarmCountM> {
|
||||
public interface RStatAreaAlarmCountMPOService extends IMppService<RStatAreaAlarmCountMPO> {
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.newalgorithm;
|
||||
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
||||
import com.njcn.prepare.bo.CalculatedParam;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -13,4 +14,11 @@ public interface RStatEventOrgService {
|
||||
|
||||
void handler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type);
|
||||
|
||||
void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
|
||||
|
||||
void handleMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
|
||||
|
||||
void handleQtr(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
|
||||
|
||||
void handleYear(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.newalgorithm;
|
||||
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
||||
import com.njcn.prepare.bo.CalculatedParam;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -13,4 +14,11 @@ public interface RStatEventService {
|
||||
|
||||
void handler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type);
|
||||
|
||||
void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
|
||||
|
||||
void handleMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
|
||||
|
||||
void handleQtr(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
|
||||
|
||||
void handleYear(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.newalgorithm;
|
||||
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
||||
import com.njcn.prepare.bo.CalculatedParam;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -13,4 +14,7 @@ public interface RStatEventVoltageService {
|
||||
|
||||
void handler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type);
|
||||
|
||||
void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
|
||||
|
||||
void handleMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.newalgorithm;
|
||||
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
||||
import com.njcn.prepare.bo.CalculatedParam;
|
||||
import com.njcn.user.pojo.po.Dept;
|
||||
|
||||
import java.util.List;
|
||||
@@ -13,4 +15,12 @@ import java.util.List;
|
||||
*/
|
||||
public interface RStatLoadTypeService {
|
||||
void handler(List<Dept> deptList, String dataDate, Integer type);
|
||||
|
||||
void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
|
||||
|
||||
void handleMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
|
||||
|
||||
void handleQtr(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
|
||||
|
||||
void handleYear(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam);
|
||||
}
|
||||
|
||||
@@ -1,11 +1,15 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.newalgorithm.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.core.conditions.query.QueryWrapper;
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
||||
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
|
||||
import com.njcn.device.pms.pojo.po.RMpMonitorAlarmCountM;
|
||||
import com.njcn.device.pms.pojo.po.RStatAreaAlarmCountM;
|
||||
import com.njcn.harmonic.pojo.po.*;
|
||||
import com.njcn.prepare.bo.CalculatedParam;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.area.RMpMonitorAlarmCountMMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.area.RMpTargetWarnDMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgMMapper;
|
||||
@@ -54,35 +58,19 @@ public class RAlarmCountServiceImpl implements RAlarmCountService {
|
||||
|
||||
private final RStatOrgMMapper rStatOrgMMapper;
|
||||
|
||||
@Override
|
||||
public void handler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
|
||||
switch (type) {
|
||||
case 3:
|
||||
this.rAlarmCountMHandler(data, dataDate, type);
|
||||
break;
|
||||
case 4:
|
||||
this.rAlarmCountWHandler(data, dataDate, type);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//周表
|
||||
public void rAlarmCountWHandler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
|
||||
@Override
|
||||
public void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
||||
List<RStatZwAlarmCountWPO> rStatZwAlarmCountWPOS = new ArrayList<>();
|
||||
List<RStatPwAlarmCountWPO> rStatPwAlarmCountWPOS = new ArrayList<>();
|
||||
//获取日期
|
||||
Date localDate = DateUtil.parse(dataDate);
|
||||
DateTime begin = DateUtil.beginOfWeek(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
DateTime end = DateUtil.endOfWeek(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN);
|
||||
|
||||
//获取当前周的起始与结束日期
|
||||
LocalDate date = LocalDate.parse(dataDate, DateTimeFormatter.ISO_DATE);
|
||||
LocalDate startOfWeek = date.with(DayOfWeek.MONDAY);
|
||||
LocalDate endOfWeek = date.with(DayOfWeek.SUNDAY);
|
||||
|
||||
QueryWrapper<RMpTargetWarnDPO> rMpTargetWarnDPOQueryWrapper = new QueryWrapper<>();
|
||||
|
||||
data.forEach(deptGetChildrenMoreDTO -> {
|
||||
calculatedParam.getIdList().forEach(deptGetChildrenMoreDTO -> {
|
||||
|
||||
/*主网*/
|
||||
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) {
|
||||
@@ -94,9 +82,10 @@ public class RAlarmCountServiceImpl implements RAlarmCountService {
|
||||
rMpTargetWarnDPOQueryWrapper.
|
||||
in("measurement_point_id", collect1).
|
||||
eq("is_effective", "1").
|
||||
between("data_date", startOfWeek, endOfWeek);
|
||||
between("data_date", begin, end);
|
||||
|
||||
List<RMpTargetWarnDPO> rMpTargetWarnDPOList = rMpTargetWarnDMapper.selectList(rMpTargetWarnDPOQueryWrapper);
|
||||
List<String> collect = rMpTargetWarnDPOList.stream().map(RMpTargetWarnDPO::getMeasurementPointId).distinct().collect(Collectors.toList());
|
||||
|
||||
//告警4次及以上监测点数量
|
||||
long count = rMpTargetWarnDPOList.stream()
|
||||
@@ -125,7 +114,7 @@ public class RAlarmCountServiceImpl implements RAlarmCountService {
|
||||
RStatZwAlarmCountWPO rStatZwAlarmCountWPO = new RStatZwAlarmCountWPO();
|
||||
rStatZwAlarmCountWPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatZwAlarmCountWPO.setDataDate(localDate);
|
||||
rStatZwAlarmCountWPO.setMonitorEffectiveCount(rMpTargetWarnDPOList.size());
|
||||
rStatZwAlarmCountWPO.setMonitorEffectiveCount(collect.size());
|
||||
rStatZwAlarmCountWPO.setWarnMonitorCount(Integer.valueOf(count + ""));
|
||||
rStatZwAlarmCountWPO.setMonitorGradeCount(top30PercentCount);
|
||||
rStatZwAlarmCountWPOS.add(rStatZwAlarmCountWPO);
|
||||
@@ -141,17 +130,18 @@ public class RAlarmCountServiceImpl implements RAlarmCountService {
|
||||
rMpTargetWarnDPOQueryWrapper.clear();
|
||||
rMpTargetWarnDPOQueryWrapper.
|
||||
in("measurement_point_id", collect1).
|
||||
between("data_date", startOfWeek, endOfWeek);
|
||||
between("data_date", begin, end);
|
||||
|
||||
List<RMpTargetWarnDPO> rMpTargetWarnDPOList = rMpTargetWarnDMapper.selectList(rMpTargetWarnDPOQueryWrapper);
|
||||
List<String> collect = rMpTargetWarnDPOList.stream().map(RMpTargetWarnDPO::getMeasurementPointId).distinct().collect(Collectors.toList());
|
||||
|
||||
//获取告警监测点数
|
||||
long count = rMpTargetWarnDPOList.stream().filter(alarm -> alarm.getIsWarn() == 1).count();
|
||||
long count = rMpTargetWarnDPOList.stream().filter(alarm -> alarm.getIsWarn() == 1).distinct().count();
|
||||
|
||||
RStatPwAlarmCountWPO rStatPwAlarmCountWPO = new RStatPwAlarmCountWPO();
|
||||
rStatPwAlarmCountWPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatPwAlarmCountWPO.setDataDate(localDate);
|
||||
rStatPwAlarmCountWPO.setOnlineMonitorCount(rMpTargetWarnDPOList.size());
|
||||
rStatPwAlarmCountWPO.setOnlineMonitorCount(collect.size());
|
||||
rStatPwAlarmCountWPO.setAlarmMonitorCount(Integer.valueOf(count + ""));
|
||||
|
||||
rStatPwAlarmCountWPOS.add(rStatPwAlarmCountWPO);
|
||||
@@ -161,20 +151,22 @@ public class RAlarmCountServiceImpl implements RAlarmCountService {
|
||||
if (!CollectionUtils.isEmpty(rStatZwAlarmCountWPOS)) {
|
||||
rStatZwAlarmCountWPOService.saveOrUpdateBatchByMultiId(rStatZwAlarmCountWPOS, 500);
|
||||
}
|
||||
if (!CollectionUtils.isEmpty(rStatZwAlarmCountWPOS)) {
|
||||
if (!CollectionUtils.isEmpty(rStatPwAlarmCountWPOS)) {
|
||||
rStatPwAlarmCountWPOService.saveOrUpdateBatchByMultiId(rStatPwAlarmCountWPOS, 500);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//月表
|
||||
public void rAlarmCountMHandler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
|
||||
@Override
|
||||
public void handleMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
||||
List<RStatAreaAlarmCountMPO> rStatAreaAlarmCountMPOS = new ArrayList<>();
|
||||
List<RStatAreaAlarmCountM> result = new ArrayList<>();
|
||||
|
||||
DecimalFormat df = new DecimalFormat("0.00");
|
||||
|
||||
//获取日期
|
||||
Date localDate = DateUtil.parse(dataDate);
|
||||
DateTime begin = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
DateTime end = DateUtil.endOfMonth(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> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
|
||||
@@ -184,47 +176,46 @@ public class RAlarmCountServiceImpl implements RAlarmCountService {
|
||||
//org表
|
||||
QueryWrapper<RStatOrgMPO> rStatOrgMPOQueryWrapper = new QueryWrapper<>();
|
||||
|
||||
data.forEach(deptGetChildrenMoreDTO -> {
|
||||
calculatedParam.getIdList().forEach(deptGetChildrenMoreDTO -> {
|
||||
|
||||
/*主网*/
|
||||
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) {
|
||||
List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
|
||||
List<String> collect1 = lineBaseList.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
|
||||
//日表
|
||||
QueryWrapper<RMpTargetWarnDPO> rMpTargetWarnDPOQueryWrapper = new QueryWrapper<>();
|
||||
rMpTargetWarnDPOQueryWrapper.clear();
|
||||
rMpTargetWarnDPOQueryWrapper.
|
||||
in("measurement_point_id", collect1).
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m')", dataDate.substring(0, 7));
|
||||
|
||||
List<RMpTargetWarnDPO> rMpTargetWarnDPOList = rMpTargetWarnDMapper.selectList(rMpTargetWarnDPOQueryWrapper);
|
||||
// //日表
|
||||
// QueryWrapper<RMpTargetWarnDPO> rMpTargetWarnDPOQueryWrapper = new QueryWrapper<>();
|
||||
// rMpTargetWarnDPOQueryWrapper.clear();
|
||||
// rMpTargetWarnDPOQueryWrapper.
|
||||
// in("measurement_point_id", collect1).
|
||||
// between("data_date", begin, end);
|
||||
//
|
||||
// List<RMpTargetWarnDPO> rMpTargetWarnDPOList = rMpTargetWarnDMapper.selectList(rMpTargetWarnDPOQueryWrapper);
|
||||
|
||||
//月表
|
||||
rMpMonitorAlarmCountMQueryWrapper.clear();
|
||||
rMpMonitorAlarmCountMQueryWrapper.
|
||||
in("measurement_point_id", collect1).
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m')", dataDate.substring(0, 7)).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
between("data_date", begin, end);
|
||||
List<RMpMonitorAlarmCountMPO> rMpMonitorAlarmCountMPOS = rMpMonitorAlarmCountMMapper.selectList(rMpMonitorAlarmCountMQueryWrapper);
|
||||
|
||||
//org表
|
||||
rStatOrgMPOQueryWrapper.clear();
|
||||
rStatOrgMPOQueryWrapper.select("effective_measurement_accrued").
|
||||
rStatOrgMPOQueryWrapper.select("sum(effective_measurement_accrued) effective_measurement_accrued").
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m')", dataDate.substring(0, 7)).
|
||||
between("data_date", begin, end).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
RStatOrgMPO rStatOrgMPO = rStatOrgMMapper.selectOne(rStatOrgMPOQueryWrapper);
|
||||
|
||||
//所有告警次数集合
|
||||
Map<String, Long> resultCount = new HashMap<>();
|
||||
long vdevAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getVdevAlarmInfo() == 1).count();
|
||||
long freqAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getFreqAlarmInfo() == 1).count();
|
||||
long unbalanceAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getUnbalanceAlarmInfo() == 1).count();
|
||||
long vAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getVAlarmInfo() == 1).count();
|
||||
long flickerAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getFlickerAlarmInfo() == 1).count();
|
||||
long sagAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getSagAlarmInfo() == 1).count();
|
||||
long interruptAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getInterruptAlarmInfo() == 1).count();
|
||||
long vdevAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getVdevAlarmInfo() == 1).map(RMpMonitorAlarmCountMPO::getMeasurementPointId).distinct().count();
|
||||
long freqAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getFreqAlarmInfo() == 1).map(RMpMonitorAlarmCountMPO::getMeasurementPointId).distinct().count();
|
||||
long unbalanceAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getUnbalanceAlarmInfo() == 1).map(RMpMonitorAlarmCountMPO::getMeasurementPointId).distinct().count();
|
||||
long vAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getVAlarmInfo() == 1).map(RMpMonitorAlarmCountMPO::getMeasurementPointId).distinct().count();
|
||||
long flickerAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getFlickerAlarmInfo() == 1).map(RMpMonitorAlarmCountMPO::getMeasurementPointId).distinct().count();
|
||||
long sagAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getSagAlarmInfo() == 1).map(RMpMonitorAlarmCountMPO::getMeasurementPointId).distinct().count();
|
||||
long interruptAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getInterruptAlarmInfo() == 1).map(RMpMonitorAlarmCountMPO::getMeasurementPointId).distinct().count();
|
||||
if (vdevAlarmInfoCount != 0){
|
||||
resultCount.put("vdevAlarmInfo",vdevAlarmInfoCount);
|
||||
}
|
||||
@@ -249,24 +240,24 @@ public class RAlarmCountServiceImpl implements RAlarmCountService {
|
||||
|
||||
|
||||
//获取电压暂降告警次数
|
||||
long sagCount = rMpTargetWarnDPOList.stream().filter(alarm -> alarm.getIsSagWarn() == 1).count();
|
||||
long sagCount = rMpMonitorAlarmCountMPOS.stream().filter(alarm -> alarm.getSagAlarmInfo() == 1).count();
|
||||
//获取电压暂降监测点数(id去重)
|
||||
long sagMCount = rMpTargetWarnDPOList.stream().filter(obj -> obj.getIsSagWarn() == 1).map(obj -> obj.getMeasurementPointId()).distinct().count();
|
||||
long sagMCount = rMpMonitorAlarmCountMPOS.stream().filter(obj -> obj.getSagAlarmInfo() == 1).map(obj -> obj.getMeasurementPointId()).distinct().count();
|
||||
|
||||
//获取短时中断告警次数
|
||||
long iaaCount = rMpTargetWarnDPOList.stream().filter(alarm -> alarm.getIsInterruptWarn() == 1).count();
|
||||
long iaaCount = rMpMonitorAlarmCountMPOS.stream().filter(alarm -> alarm.getInterruptAlarmInfo() == 1).count();
|
||||
//获取短时中断监测点数(id去重)
|
||||
long iaaMCount = rMpTargetWarnDPOList.stream().filter(obj -> obj.getIsInterruptWarn() == 1).map(obj -> obj.getMeasurementPointId()).distinct().count();
|
||||
long iaaMCount = rMpMonitorAlarmCountMPOS.stream().filter(obj -> obj.getInterruptAlarmInfo() == 1).map(obj -> obj.getMeasurementPointId()).distinct().count();
|
||||
|
||||
//获取在线监测点数
|
||||
int size = rMpTargetWarnDPOList.size();
|
||||
int size = rStatOrgMPO.getEffectiveMeasurementAccrued();
|
||||
//获取稳态告警监测点数
|
||||
long wtCount = rMpMonitorAlarmCountMPOS.stream()
|
||||
.filter(obj -> obj.getVdevAlarmInfo() == 1 || obj.getFreqAlarmInfo() == 1 || obj.getUnbalanceAlarmInfo() == 1
|
||||
|| obj.getVAlarmInfo() == 1 || obj.getFlickerAlarmInfo() == 1).count();
|
||||
|| obj.getVAlarmInfo() == 1 || obj.getFlickerAlarmInfo() == 1).map(obj -> obj.getMeasurementPointId()).distinct().count();
|
||||
//获取暂态告警监测点数
|
||||
long ztCount = rMpMonitorAlarmCountMPOS.stream()
|
||||
.filter(obj -> obj.getSagAlarmInfo() == 1 || obj.getInterruptAlarmInfo() == 1).count();
|
||||
.filter(obj -> obj.getSagAlarmInfo() == 1 || obj.getInterruptAlarmInfo() == 1).map(obj -> obj.getMeasurementPointId()).distinct().count();
|
||||
|
||||
RStatAreaAlarmCountMPO rStatAreaAlarmCountMPO = new RStatAreaAlarmCountMPO();
|
||||
rStatAreaAlarmCountMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
@@ -305,53 +296,53 @@ public class RAlarmCountServiceImpl implements RAlarmCountService {
|
||||
}
|
||||
|
||||
if (Objects.isNull(rStatOrgMPO)) {
|
||||
rStatAreaAlarmCountMPO.setVdevAlarmRatio(1.00f);
|
||||
rStatAreaAlarmCountMPO.setFreqAlarmRatio(1.00f);
|
||||
rStatAreaAlarmCountMPO.setUnbalanceAlarmRatio(1.00f);
|
||||
rStatAreaAlarmCountMPO.setVAlarmRatio(1.00f);
|
||||
rStatAreaAlarmCountMPO.setFlickerAlarmRatio(1.00f);
|
||||
rStatAreaAlarmCountMPO.setVdevAlarmRatio(0.00f);
|
||||
rStatAreaAlarmCountMPO.setFreqAlarmRatio(0.00f);
|
||||
rStatAreaAlarmCountMPO.setUnbalanceAlarmRatio(0.00f);
|
||||
rStatAreaAlarmCountMPO.setVAlarmRatio(0.00f);
|
||||
rStatAreaAlarmCountMPO.setFlickerAlarmRatio(0.00f);
|
||||
} else {
|
||||
if (rStatOrgMPO.getEffectiveMeasurementAccrued() == 0) {
|
||||
rStatAreaAlarmCountMPO.setVdevAlarmRatio(1.00f);
|
||||
rStatAreaAlarmCountMPO.setFreqAlarmRatio(1.00f);
|
||||
rStatAreaAlarmCountMPO.setUnbalanceAlarmRatio(1.00f);
|
||||
rStatAreaAlarmCountMPO.setVAlarmRatio(1.00f);
|
||||
rStatAreaAlarmCountMPO.setFlickerAlarmRatio(1.00f);
|
||||
rStatAreaAlarmCountMPO.setVdevAlarmRatio(0.00f);
|
||||
rStatAreaAlarmCountMPO.setFreqAlarmRatio(0.00f);
|
||||
rStatAreaAlarmCountMPO.setUnbalanceAlarmRatio(0.00f);
|
||||
rStatAreaAlarmCountMPO.setVAlarmRatio(0.00f);
|
||||
rStatAreaAlarmCountMPO.setFlickerAlarmRatio(0.00f);
|
||||
} else {
|
||||
//电压偏差告警占比
|
||||
if (resultCount.containsKey("vdevAlarmInfo")) {
|
||||
String value = df.format(resultCount.get("vdevAlarmInfo") / rStatOrgMPO.getEffectiveMeasurementAccrued());
|
||||
rStatAreaAlarmCountMPO.setVdevAlarmRatio(Float.parseFloat(value));
|
||||
} else {
|
||||
rStatAreaAlarmCountMPO.setVdevAlarmRatio(1.00f);
|
||||
rStatAreaAlarmCountMPO.setVdevAlarmRatio(0.00f);
|
||||
}
|
||||
//频率偏差告警占比
|
||||
if (resultCount.containsKey("freqAlarmInfo")) {
|
||||
String value = df.format(resultCount.get("freqAlarmInfo") / rStatOrgMPO.getEffectiveMeasurementAccrued());
|
||||
rStatAreaAlarmCountMPO.setFreqAlarmRatio(Float.parseFloat(value));
|
||||
} else {
|
||||
rStatAreaAlarmCountMPO.setFreqAlarmRatio(1.00f);
|
||||
rStatAreaAlarmCountMPO.setFreqAlarmRatio(0.00f);
|
||||
}
|
||||
//三项电压不平衡度告警占比
|
||||
if (resultCount.containsKey("unbalanceAlarmInfo")) {
|
||||
String value = df.format(resultCount.get("unbalanceAlarmInfo") / rStatOrgMPO.getEffectiveMeasurementAccrued());
|
||||
rStatAreaAlarmCountMPO.setUnbalanceAlarmRatio(Float.parseFloat(value));
|
||||
} else {
|
||||
rStatAreaAlarmCountMPO.setUnbalanceAlarmRatio(1.00f);
|
||||
rStatAreaAlarmCountMPO.setUnbalanceAlarmRatio(0.00f);
|
||||
}
|
||||
//谐波电压告警占比
|
||||
if (resultCount.containsKey("vAlarmInfo")) {
|
||||
String value = df.format(resultCount.get("vAlarmInfo") / rStatOrgMPO.getEffectiveMeasurementAccrued());
|
||||
rStatAreaAlarmCountMPO.setVAlarmRatio(Float.parseFloat(value));
|
||||
} else {
|
||||
rStatAreaAlarmCountMPO.setVAlarmRatio(1.00f);
|
||||
rStatAreaAlarmCountMPO.setVAlarmRatio(0.00f);
|
||||
}
|
||||
//闪変告警占比
|
||||
if (resultCount.containsKey("flickerAlarmInfo")) {
|
||||
String value = df.format(resultCount.get("flickerAlarmInfo") / rStatOrgMPO.getEffectiveMeasurementAccrued());
|
||||
rStatAreaAlarmCountMPO.setFlickerAlarmRatio(Float.parseFloat(value));
|
||||
} else {
|
||||
rStatAreaAlarmCountMPO.setFlickerAlarmRatio(1.00f);
|
||||
rStatAreaAlarmCountMPO.setFlickerAlarmRatio(0.00f);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -364,40 +355,39 @@ public class RAlarmCountServiceImpl implements RAlarmCountService {
|
||||
List<LineDevGetDTO> pwMonitorIds = deptGetChildrenMoreDTO.getPwMonitorIds();
|
||||
List<String> collect1 = pwMonitorIds.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
|
||||
//日表
|
||||
QueryWrapper<RMpTargetWarnDPO> rMpTargetWarnDPOQueryWrapper = new QueryWrapper<>();
|
||||
rMpTargetWarnDPOQueryWrapper.clear();
|
||||
rMpTargetWarnDPOQueryWrapper.
|
||||
in("measurement_point_id", collect1).
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m')", dataDate.substring(0, 7));
|
||||
|
||||
List<RMpTargetWarnDPO> rMpTargetWarnDPOList = rMpTargetWarnDMapper.selectList(rMpTargetWarnDPOQueryWrapper);
|
||||
// //日表
|
||||
// QueryWrapper<RMpTargetWarnDPO> rMpTargetWarnDPOQueryWrapper = new QueryWrapper<>();
|
||||
// rMpTargetWarnDPOQueryWrapper.clear();
|
||||
// rMpTargetWarnDPOQueryWrapper.
|
||||
// in("measurement_point_id", collect1).
|
||||
// between("data_date", begin, end);
|
||||
//
|
||||
// List<RMpTargetWarnDPO> rMpTargetWarnDPOList = rMpTargetWarnDMapper.selectList(rMpTargetWarnDPOQueryWrapper);
|
||||
|
||||
//月表
|
||||
rMpMonitorAlarmCountMQueryWrapper.clear();
|
||||
rMpMonitorAlarmCountMQueryWrapper.
|
||||
in("measurement_point_id", collect1).
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m')", dataDate.substring(0, 7)).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
|
||||
between("data_date", begin, end);
|
||||
List<RMpMonitorAlarmCountMPO> rMpMonitorAlarmCountMPOS = rMpMonitorAlarmCountMMapper.selectList(rMpMonitorAlarmCountMQueryWrapper);
|
||||
|
||||
//org表
|
||||
rStatOrgMPOQueryWrapper.clear();
|
||||
rStatOrgMPOQueryWrapper.select("effective_measurement_accrued").
|
||||
rStatOrgMPOQueryWrapper.select("sum(effective_measurement_accrued) effective_measurement_accrued").
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("DATE_FORMAT( data_date ,'%Y-%m')", dataDate.substring(0, 7)).
|
||||
between("data_date", begin, end).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
|
||||
RStatOrgMPO rStatOrgMPO = rStatOrgMMapper.selectOne(rStatOrgMPOQueryWrapper);
|
||||
|
||||
//所有告警次数集合
|
||||
Map<String, Long> resultCount = new HashMap<>();
|
||||
long vdevAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getVdevAlarmInfo() == 1).count();
|
||||
long freqAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getFreqAlarmInfo() == 1).count();
|
||||
long unbalanceAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getUnbalanceAlarmInfo() == 1).count();
|
||||
long vAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getVAlarmInfo() == 1).count();
|
||||
long flickerAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getFlickerAlarmInfo() == 1).count();
|
||||
long sagAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getSagAlarmInfo() == 1).count();
|
||||
long interruptAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getInterruptAlarmInfo() == 1).count();
|
||||
long vdevAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getVdevAlarmInfo() == 1).map(RMpMonitorAlarmCountMPO::getMeasurementPointId).distinct().count();
|
||||
long freqAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getFreqAlarmInfo() == 1).map(RMpMonitorAlarmCountMPO::getMeasurementPointId).distinct().count();
|
||||
long unbalanceAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getUnbalanceAlarmInfo() == 1).map(RMpMonitorAlarmCountMPO::getMeasurementPointId).distinct().count();
|
||||
long vAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getVAlarmInfo() == 1).map(RMpMonitorAlarmCountMPO::getMeasurementPointId).distinct().count();
|
||||
long flickerAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getFlickerAlarmInfo() == 1).map(RMpMonitorAlarmCountMPO::getMeasurementPointId).distinct().count();
|
||||
long sagAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getSagAlarmInfo() == 1).map(RMpMonitorAlarmCountMPO::getMeasurementPointId).distinct().count();
|
||||
long interruptAlarmInfoCount = rMpMonitorAlarmCountMPOS.stream().filter(obj ->obj.getInterruptAlarmInfo() == 1).map(RMpMonitorAlarmCountMPO::getMeasurementPointId).distinct().count();
|
||||
if (vdevAlarmInfoCount != 0){
|
||||
resultCount.put("vdevAlarmInfo",vdevAlarmInfoCount);
|
||||
}
|
||||
@@ -421,17 +411,17 @@ public class RAlarmCountServiceImpl implements RAlarmCountService {
|
||||
}
|
||||
|
||||
//获取电压暂降告警次数
|
||||
long sagCount = rMpTargetWarnDPOList.stream().filter(alarm -> alarm.getIsSagWarn() == 1).count();
|
||||
long sagCount = rMpMonitorAlarmCountMPOS.stream().filter(alarm -> alarm.getSagAlarmInfo() == 1).count();
|
||||
//获取电压暂降监测点数(id去重)
|
||||
long sagMCount = rMpTargetWarnDPOList.stream().filter(obj -> obj.getIsSagWarn() == 1).map(obj -> obj.getMeasurementPointId()).distinct().count();
|
||||
long sagMCount = rMpMonitorAlarmCountMPOS.stream().filter(obj -> obj.getSagAlarmInfo() == 1).map(obj -> obj.getMeasurementPointId()).distinct().count();
|
||||
|
||||
//获取短时中断告警次数
|
||||
long iaaCount = rMpTargetWarnDPOList.stream().filter(alarm -> alarm.getIsInterruptWarn() == 1).count();
|
||||
long iaaCount = rMpMonitorAlarmCountMPOS.stream().filter(alarm -> alarm.getInterruptAlarmInfo() == 1).count();
|
||||
//获取短时中断监测点数(id去重)
|
||||
long iaaMCount = rMpTargetWarnDPOList.stream().filter(obj -> obj.getIsInterruptWarn() == 1).map(obj -> obj.getMeasurementPointId()).distinct().count();
|
||||
long iaaMCount = rMpMonitorAlarmCountMPOS.stream().filter(obj -> obj.getInterruptAlarmInfo() == 1).map(obj -> obj.getMeasurementPointId()).distinct().count();
|
||||
|
||||
//获取在线监测点数
|
||||
int size = rMpTargetWarnDPOList.size();
|
||||
int size = rStatOrgMPO.getEffectiveMeasurementAccrued();
|
||||
//获取稳态告警监测点数
|
||||
long wtCount = rMpMonitorAlarmCountMPOS.stream()
|
||||
.filter(obj -> obj.getVdevAlarmInfo() == 1 || obj.getFreqAlarmInfo() == 1 || obj.getUnbalanceAlarmInfo() == 1
|
||||
@@ -681,16 +671,130 @@ public class RAlarmCountServiceImpl implements RAlarmCountService {
|
||||
|
||||
zwResult.addAll(pwResult);
|
||||
|
||||
//拷贝
|
||||
for (RStatAreaAlarmCountMPO po : zwResult) {
|
||||
RStatAreaAlarmCountM m = new RStatAreaAlarmCountM();
|
||||
BeanUtils.copyProperties(po,m);
|
||||
result.add(m);
|
||||
}
|
||||
|
||||
if (!CollectionUtils.isEmpty(result)) {
|
||||
rStatAreaAlarmCountMPOService.saveOrUpdateBatchByMultiId(result, 500);
|
||||
if (!CollectionUtils.isEmpty(zwResult)) {
|
||||
rStatAreaAlarmCountMPOService.saveOrUpdateBatchByMultiId(zwResult, 500);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
|
||||
switch (type) {
|
||||
case 3:
|
||||
this.rAlarmCountMHandler(data, dataDate, type);
|
||||
break;
|
||||
case 4:
|
||||
this.rAlarmCountWHandler(data, dataDate, type);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//周表
|
||||
public void rAlarmCountWHandler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
|
||||
// List<RStatZwAlarmCountWPO> rStatZwAlarmCountWPOS = new ArrayList<>();
|
||||
// List<RStatPwAlarmCountWPO> rStatPwAlarmCountWPOS = new ArrayList<>();
|
||||
// //获取日期
|
||||
// Date localDate = DateUtil.parse(dataDate);
|
||||
//
|
||||
// //获取当前周的起始与结束日期
|
||||
// LocalDate date = LocalDate.parse(dataDate, DateTimeFormatter.ISO_DATE);
|
||||
// LocalDate startOfWeek = date.with(DayOfWeek.MONDAY);
|
||||
// LocalDate endOfWeek = date.with(DayOfWeek.SUNDAY);
|
||||
//
|
||||
// QueryWrapper<RMpTargetWarnDPO> rMpTargetWarnDPOQueryWrapper = new QueryWrapper<>();
|
||||
//
|
||||
// data.forEach(deptGetChildrenMoreDTO -> {
|
||||
//
|
||||
// /*主网*/
|
||||
// if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) {
|
||||
// List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
|
||||
//
|
||||
// List<String> collect1 = lineBaseList.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
//
|
||||
// rMpTargetWarnDPOQueryWrapper.clear();
|
||||
// rMpTargetWarnDPOQueryWrapper.
|
||||
// in("measurement_point_id", collect1).
|
||||
// eq("is_effective", "1").
|
||||
// between("data_date", startOfWeek, endOfWeek);
|
||||
//
|
||||
// List<RMpTargetWarnDPO> rMpTargetWarnDPOList = rMpTargetWarnDMapper.selectList(rMpTargetWarnDPOQueryWrapper);
|
||||
//
|
||||
// //告警4次及以上监测点数量
|
||||
// long count = rMpTargetWarnDPOList.stream()
|
||||
// .filter(obj -> obj.getIsWarn() == 1)
|
||||
// .collect(Collectors.groupingBy(RMpTargetWarnDPO::getMeasurementPointId, Collectors.counting()))
|
||||
// .entrySet().stream()
|
||||
// .filter(e -> e.getValue() >= 4)
|
||||
// .count();
|
||||
//
|
||||
// // 使用 Stream API 进行流式处理,选择 status 为 1 的告警,按照 id 进行分组并统计个数
|
||||
// Map<String, Double> avgStatusOneCountByAlarmId = rMpTargetWarnDPOList.stream()
|
||||
// .filter(alarm -> alarm.getIsWarn() == 1)
|
||||
// .collect(Collectors.groupingBy(RMpTargetWarnDPO::getMeasurementPointId, Collectors.counting()))
|
||||
// .entrySet().stream()
|
||||
// .collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue() / 7.0));
|
||||
//
|
||||
// // 对 map 中的 value 进行从大到小的排序,并且排除 value 为 0 的元素
|
||||
// Map<String, Double> sortedAvgStatusOneCountByAlarmId = avgStatusOneCountByAlarmId.entrySet().stream()
|
||||
// .filter(e -> e.getValue() != 0)
|
||||
// .sorted(Map.Entry.<String, Double>comparingByValue(Comparator.reverseOrder()))
|
||||
// .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, LinkedHashMap::new));
|
||||
//
|
||||
// // 获取前 30% 的告警 id 数量
|
||||
// int top30PercentCount = (int) (sortedAvgStatusOneCountByAlarmId.size() * 0.3) + 1;
|
||||
//
|
||||
// RStatZwAlarmCountWPO rStatZwAlarmCountWPO = new RStatZwAlarmCountWPO();
|
||||
// rStatZwAlarmCountWPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
// rStatZwAlarmCountWPO.setDataDate(localDate);
|
||||
// rStatZwAlarmCountWPO.setMonitorEffectiveCount(rMpTargetWarnDPOList.size());
|
||||
// rStatZwAlarmCountWPO.setWarnMonitorCount(Integer.valueOf(count + ""));
|
||||
// rStatZwAlarmCountWPO.setMonitorGradeCount(top30PercentCount);
|
||||
// rStatZwAlarmCountWPOS.add(rStatZwAlarmCountWPO);
|
||||
//
|
||||
// }
|
||||
//
|
||||
//
|
||||
// /*配网*/
|
||||
// if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())) {
|
||||
// List<LineDevGetDTO> pwMonitorIds = deptGetChildrenMoreDTO.getPwMonitorIds();
|
||||
// List<String> collect1 = pwMonitorIds.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
//
|
||||
// rMpTargetWarnDPOQueryWrapper.clear();
|
||||
// rMpTargetWarnDPOQueryWrapper.
|
||||
// in("measurement_point_id", collect1).
|
||||
// between("data_date", startOfWeek, endOfWeek);
|
||||
//
|
||||
// List<RMpTargetWarnDPO> rMpTargetWarnDPOList = rMpTargetWarnDMapper.selectList(rMpTargetWarnDPOQueryWrapper);
|
||||
//
|
||||
// //获取告警监测点数
|
||||
// long count = rMpTargetWarnDPOList.stream().filter(alarm -> alarm.getIsWarn() == 1).count();
|
||||
//
|
||||
// RStatPwAlarmCountWPO rStatPwAlarmCountWPO = new RStatPwAlarmCountWPO();
|
||||
// rStatPwAlarmCountWPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
// rStatPwAlarmCountWPO.setDataDate(localDate);
|
||||
// rStatPwAlarmCountWPO.setOnlineMonitorCount(rMpTargetWarnDPOList.size());
|
||||
// rStatPwAlarmCountWPO.setAlarmMonitorCount(Integer.valueOf(count + ""));
|
||||
//
|
||||
// rStatPwAlarmCountWPOS.add(rStatPwAlarmCountWPO);
|
||||
// }
|
||||
//
|
||||
// });
|
||||
// if (!CollectionUtils.isEmpty(rStatZwAlarmCountWPOS)) {
|
||||
// rStatZwAlarmCountWPOService.saveOrUpdateBatchByMultiId(rStatZwAlarmCountWPOS, 500);
|
||||
// }
|
||||
// if (!CollectionUtils.isEmpty(rStatZwAlarmCountWPOS)) {
|
||||
// rStatPwAlarmCountWPOService.saveOrUpdateBatchByMultiId(rStatPwAlarmCountWPOS, 500);
|
||||
// }
|
||||
}
|
||||
|
||||
//月表
|
||||
public void rAlarmCountMHandler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +1,10 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.newalgorithm.impl;
|
||||
|
||||
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
|
||||
import com.njcn.device.pms.pojo.po.RStatAreaAlarmCountM;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RStatAreaAlarmCountMPOMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RStatZwAlarmCountWPOMapper;
|
||||
import com.njcn.prepare.harmonic.pojo.po.RStatAreaAlarmCountM;
|
||||
import com.njcn.prepare.harmonic.pojo.po.RStatAreaAlarmCountMPO;
|
||||
import com.njcn.prepare.harmonic.pojo.po.RStatZwAlarmCountWPO;
|
||||
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatAreaAlarmCountMPOService;
|
||||
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.RStatZwAlarmCountWPOService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -21,5 +18,5 @@ import org.springframework.stereotype.Service;
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class RStatAreaAlarmCountMPOServiceImpl extends MppServiceImpl<RStatAreaAlarmCountMPOMapper, RStatAreaAlarmCountM> implements RStatAreaAlarmCountMPOService {
|
||||
public class RStatAreaAlarmCountMPOServiceImpl extends MppServiceImpl<RStatAreaAlarmCountMPOMapper, RStatAreaAlarmCountMPO> implements RStatAreaAlarmCountMPOService {
|
||||
}
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.newalgorithm.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.core.conditions.query.QueryWrapper;
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
||||
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
|
||||
@@ -8,6 +11,7 @@ import com.njcn.harmonic.pojo.po.RMpEventDetailDPO;
|
||||
import com.njcn.harmonic.pojo.po.RMpEventDetailMPO;
|
||||
import com.njcn.harmonic.pojo.po.RStatOrgDPO;
|
||||
import com.njcn.harmonic.pojo.po.RStatOrgMPO;
|
||||
import com.njcn.prepare.bo.CalculatedParam;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgDMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgMMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgQMapper;
|
||||
@@ -15,6 +19,9 @@ import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgYMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpEventDetailDMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpEventDetailMMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.*;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatHarmonicDPO;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatOrgQPO;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.RStatOrgYPO;
|
||||
import com.njcn.prepare.harmonic.pojo.po.*;
|
||||
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.*;
|
||||
import com.njcn.system.api.DicDataFeignClient;
|
||||
@@ -97,6 +104,432 @@ public class RStatEventOrgServiceImpl implements RStatEventOrgService {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
||||
List<RStatEventOrgDPO> rStatEventOrgDPOS = new ArrayList<>();
|
||||
DecimalFormat df = new DecimalFormat("0.00");
|
||||
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN);
|
||||
QueryWrapper<RStatEventDPO> queryWrapper = new QueryWrapper<>();
|
||||
|
||||
/*获取暂态统计指标*/
|
||||
List<DictData> eventStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
|
||||
/*获取数据类型*/
|
||||
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
|
||||
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
|
||||
calculatedParam.getIdList().forEach(deptGetChildrenMoreDTO -> {
|
||||
int sumEffectiveMeasurement =0;
|
||||
List<RStatOrgDVO> rStatOrgDVOS = rStatOrgDMapper.listAll( LocalDateTimeUtil.format(localDate,DatePattern.NORM_DATE_PATTERN), deptGetChildrenMoreDTO.getUnitId());
|
||||
if(CollectionUtils.isEmpty(rStatOrgDVOS)){
|
||||
sumEffectiveMeasurement=0;
|
||||
}else {
|
||||
sumEffectiveMeasurement = rStatOrgDVOS.stream().mapToInt(RStatOrgDVO::getEffectiveMeasurement).sum();
|
||||
}
|
||||
int finalSumEffectiveMeasurement = sumEffectiveMeasurement;
|
||||
dataTypeMap.forEach((k, v)->{
|
||||
eventStatis.forEach(dictData -> {
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.DISTURBANCE.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.OTHER.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.RECORDING_WAVE.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATORS.getCode())) {
|
||||
return;
|
||||
}
|
||||
queryWrapper.clear();
|
||||
queryWrapper.
|
||||
eq("org_no",deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("data_type",v.getId()).
|
||||
eq("event_type",dictData.getId()).
|
||||
eq("data_date",localDate);
|
||||
List<RStatEventDPO> list = rStatEventDPOMapper.selectList(queryWrapper);
|
||||
int sum_event_measurement =0;
|
||||
int sum_event_count =0;
|
||||
|
||||
if(CollectionUtils.isEmpty(list)){
|
||||
sum_event_measurement=0;
|
||||
sum_event_count =0;
|
||||
}else {
|
||||
sum_event_measurement = list.stream().mapToInt(RStatEventDPO::getEventMeasurement).sum();
|
||||
sum_event_count = list.stream().mapToInt(RStatEventDPO::getEventCount).sum();
|
||||
|
||||
}
|
||||
RStatEventOrgDPO rStatEventOrgDPO = new RStatEventOrgDPO();
|
||||
rStatEventOrgDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatEventOrgDPO.setDataDate(localDate);
|
||||
rStatEventOrgDPO.setEventType(dictData.getId());
|
||||
rStatEventOrgDPO.setEventMeasurement(sum_event_measurement);
|
||||
rStatEventOrgDPO.setEventCount(sum_event_count);
|
||||
rStatEventOrgDPO.setDataType(v.getId());
|
||||
if (finalSumEffectiveMeasurement == 0) {
|
||||
rStatEventOrgDPO.setEventMeasurementRatio(0.00f);
|
||||
} else {
|
||||
String value = df.format(((float)sum_event_measurement)/ finalSumEffectiveMeasurement);
|
||||
rStatEventOrgDPO.setEventMeasurementRatio(Float.parseFloat(value));
|
||||
}
|
||||
|
||||
rStatEventOrgDPOS.add(rStatEventOrgDPO);
|
||||
});
|
||||
});
|
||||
});
|
||||
if (!CollectionUtils.isEmpty(rStatEventOrgDPOS)) {
|
||||
rStatEventOrgDPOService.saveOrUpdateBatchByMultiId(rStatEventOrgDPOS, 500);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
||||
List<RStatEventOrgMPO> rStatEventOrgMPOS = new ArrayList<>();
|
||||
|
||||
DecimalFormat df = new DecimalFormat("0.00");
|
||||
DateTime begin = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
DateTime end = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN);
|
||||
|
||||
QueryWrapper<RStatOrgMPO> rStatOrgMPOQueryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatEventMPO> queryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatEventOrgDPO> queryWrapper1 = new QueryWrapper<>();
|
||||
|
||||
|
||||
/*获取暂态统计指标*/
|
||||
List<DictData> eventStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
|
||||
/*获取数据类型*/
|
||||
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
|
||||
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
|
||||
calculatedParam.getIdList().forEach(deptGetChildrenMoreDTO -> {
|
||||
int sumEffectiveMeasurement =0;
|
||||
rStatOrgMPOQueryWrapper.clear();
|
||||
rStatOrgMPOQueryWrapper.select("IFNULL(effective_measurement_accrued,0) effective_measurement_accrued").
|
||||
eq("org_no",deptGetChildrenMoreDTO.getUnitId()).
|
||||
between("data_date",begin,end);
|
||||
List<RStatOrgMPO> rStatOrgMPOS = rStatOrgMMapper.selectList(rStatOrgMPOQueryWrapper);
|
||||
if(CollectionUtils.isEmpty(rStatOrgMPOS)){
|
||||
sumEffectiveMeasurement=0;
|
||||
}else {
|
||||
sumEffectiveMeasurement = rStatOrgMPOS.stream().mapToInt(RStatOrgMPO::getEffectiveMeasurementAccrued).sum();
|
||||
}
|
||||
int finalSumEffectiveMeasurement = sumEffectiveMeasurement;
|
||||
|
||||
dataTypeMap.forEach((k, v)->{
|
||||
eventStatis.forEach(dictData -> {
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.DISTURBANCE.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.OTHER.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.RECORDING_WAVE.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATORS.getCode())) {
|
||||
return;
|
||||
}
|
||||
queryWrapper.clear();
|
||||
queryWrapper.
|
||||
eq("org_no",deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("data_type",v.getId()).
|
||||
eq("event_type",dictData.getId()).
|
||||
between("data_date",begin,end);
|
||||
List<RStatEventMPO> list = rStatEventMPOMapper.selectList(queryWrapper);
|
||||
int sum_event_measurement =0;
|
||||
int sum_event_count =0;
|
||||
|
||||
if(CollectionUtils.isEmpty(list)){
|
||||
sum_event_measurement=0;
|
||||
sum_event_count =0;
|
||||
}else {
|
||||
sum_event_measurement = list.stream().mapToInt(RStatEventMPO::getEventMeasurementAccrued).sum();
|
||||
sum_event_count = list.stream().mapToInt(RStatEventMPO::getEventCount).sum();
|
||||
|
||||
}
|
||||
queryWrapper1.clear();
|
||||
queryWrapper1.
|
||||
eq("org_no",deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("data_type",v.getId()).
|
||||
eq("event_type",dictData.getId()).
|
||||
between("data_date",begin,end);
|
||||
List<RStatEventOrgDPO> rStatEventOrgDPOList = rStatEventOrgDPOService.list(queryWrapper1);
|
||||
int event_count_all = rStatEventOrgDPOList.stream().mapToInt(RStatEventOrgDPO::getEventCount).sum();
|
||||
int event_measurement_all = rStatEventOrgDPOList.stream().mapToInt(RStatEventOrgDPO::getEventMeasurement).sum();
|
||||
double event_measurement_avg = rStatEventOrgDPOList.stream().mapToInt(RStatEventOrgDPO::getEventMeasurement).average().getAsDouble();
|
||||
|
||||
double asDouble = rStatEventOrgDPOList.stream().mapToDouble(RStatEventOrgDPO::getEventMeasurementRatio).average().getAsDouble();
|
||||
|
||||
|
||||
RStatEventOrgMPO rStatEventOrgMPO = new RStatEventOrgMPO();
|
||||
rStatEventOrgMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatEventOrgMPO.setDataDate(localDate);
|
||||
rStatEventOrgMPO.setEventType(dictData.getId());
|
||||
|
||||
rStatEventOrgMPO.setDataType(v.getId());
|
||||
|
||||
rStatEventOrgMPO.setEventMeasurementAverage(Float.parseFloat( df.format(event_measurement_avg)));
|
||||
rStatEventOrgMPO.setEventMeasurementAccrued(sum_event_measurement);
|
||||
|
||||
if (event_measurement_all == 0) {
|
||||
rStatEventOrgMPO.setEventFreq(0.00f);
|
||||
} else {
|
||||
String value = df.format(((float)event_count_all)/ event_measurement_all);
|
||||
rStatEventOrgMPO.setEventFreq(Float.parseFloat(value));
|
||||
}
|
||||
rStatEventOrgMPO.setEventCount(event_count_all);
|
||||
|
||||
rStatEventOrgMPO.setEventMeasurementRatioAverage(Float.parseFloat( df.format(asDouble)));
|
||||
|
||||
if (finalSumEffectiveMeasurement == 0) {
|
||||
rStatEventOrgMPO.setEventMeasurementRatioAccrued(0.00f);
|
||||
} else {
|
||||
String value = df.format(((float)sum_event_measurement)/ finalSumEffectiveMeasurement);
|
||||
rStatEventOrgMPO.setEventMeasurementRatioAccrued(Float.parseFloat(value));
|
||||
}
|
||||
|
||||
rStatEventOrgMPOS.add(rStatEventOrgMPO);
|
||||
});
|
||||
});
|
||||
});
|
||||
if (!CollectionUtils.isEmpty(rStatEventOrgMPOS)) {
|
||||
rStatEventOrgMPOService.saveOrUpdateBatchByMultiId(rStatEventOrgMPOS, 500);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleQtr(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
||||
|
||||
List<RStatEventOrgQPO> rStatEventOrgQPOS = new ArrayList<>();
|
||||
DecimalFormat df = new DecimalFormat("0.00");
|
||||
|
||||
DateTime begin = DateUtil.beginOfQuarter(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
DateTime end = DateUtil.endOfQuarter(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN);
|
||||
|
||||
QueryWrapper<RStatOrgQPO> rStatOrgQPOQueryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatEventQPO> queryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatEventOrgDPO> queryWrapper1 = new QueryWrapper<>();
|
||||
QueryWrapper<RStatEventOrgMPO> queryWrapper2 = new QueryWrapper<>();
|
||||
|
||||
|
||||
/*获取暂态统计指标*/
|
||||
List<DictData> eventStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
|
||||
/*获取数据类型*/
|
||||
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
|
||||
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
|
||||
calculatedParam.getIdList().forEach(deptGetChildrenMoreDTO -> {
|
||||
int sumEffectiveMeasurement =0;
|
||||
rStatOrgQPOQueryWrapper.clear();
|
||||
rStatOrgQPOQueryWrapper.select("IFNULL(effective_measurement_accrued,0) effective_measurement_accrued").
|
||||
eq("org_no",deptGetChildrenMoreDTO.getUnitId()).
|
||||
between("data_date",begin,end);
|
||||
List<RStatOrgQPO> rStatOrgQPOS = rStatOrgQMapper.selectList(rStatOrgQPOQueryWrapper);
|
||||
if(CollectionUtils.isEmpty(rStatOrgQPOS)){
|
||||
sumEffectiveMeasurement=0;
|
||||
}else {
|
||||
sumEffectiveMeasurement = rStatOrgQPOS.stream().mapToInt(RStatOrgQPO::getEffectiveMeasurementAccrued).sum();
|
||||
}
|
||||
int finalSumEffectiveMeasurement = sumEffectiveMeasurement;
|
||||
|
||||
dataTypeMap.forEach((k, v)->{
|
||||
eventStatis.forEach(dictData -> {
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.DISTURBANCE.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.OTHER.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.RECORDING_WAVE.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATORS.getCode())) {
|
||||
return;
|
||||
}
|
||||
queryWrapper.clear();
|
||||
queryWrapper.
|
||||
eq("org_no",deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("data_type",v.getId()).
|
||||
eq("event_type",dictData.getId()).
|
||||
between("data_date",begin,end);
|
||||
List<RStatEventQPO> list = rStatEventQPOMapper.selectList(queryWrapper);
|
||||
int sum_event_measurement =0;
|
||||
int sum_event_count =0;
|
||||
|
||||
if(CollectionUtils.isEmpty(list)){
|
||||
sum_event_measurement=0;
|
||||
sum_event_count =0;
|
||||
}else {
|
||||
sum_event_measurement = list.stream().mapToInt(RStatEventQPO::getEventMeasurementAccrued).sum();
|
||||
sum_event_count = list.stream().mapToInt(RStatEventQPO::getEventCount).sum();
|
||||
|
||||
}
|
||||
queryWrapper1.clear();
|
||||
queryWrapper1.
|
||||
eq("org_no",deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("data_type",v.getId()).
|
||||
eq("event_type",dictData.getId()).
|
||||
between("data_date",begin,end);
|
||||
List<RStatEventOrgDPO> rStatEventOrgDPOList = rStatEventOrgDPOService.list(queryWrapper1);
|
||||
int event_count_all = rStatEventOrgDPOList.stream().mapToInt(RStatEventOrgDPO::getEventCount).sum();
|
||||
int event_measurement_all = rStatEventOrgDPOList.stream().mapToInt(RStatEventOrgDPO::getEventMeasurement).sum();
|
||||
// double event_measurement_avg = rStatEventOrgDPOList.stream().mapToInt(RStatEventOrgDPO::getEventMeasurement).average().getAsDouble();
|
||||
//
|
||||
// double asDouble = rStatEventOrgDPOList.stream().mapToDouble(RStatEventOrgDPO::getEventMeasurementRatio).average().getAsDouble();
|
||||
|
||||
queryWrapper2.clear();
|
||||
queryWrapper2.
|
||||
eq("org_no",deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("data_type",v.getId()).
|
||||
eq("event_type",dictData.getId()).
|
||||
between("data_date",begin,end);
|
||||
List<RStatEventOrgMPO> rStatEventOrgMPOList = rStatEventOrgMPOService.list(queryWrapper2);
|
||||
|
||||
double event_measurement_average = rStatEventOrgMPOList.stream().mapToDouble(RStatEventOrgMPO::getEventMeasurementAverage).average().getAsDouble();
|
||||
double event_measurement_ratio_average = rStatEventOrgMPOList.stream().mapToDouble(RStatEventOrgMPO::getEventMeasurementRatioAverage).average().getAsDouble();
|
||||
|
||||
int event_count = rStatEventOrgMPOList.stream().mapToInt(RStatEventOrgMPO::getEventCount).sum();
|
||||
|
||||
RStatEventOrgQPO rStatEventOrgQPO = new RStatEventOrgQPO();
|
||||
rStatEventOrgQPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatEventOrgQPO.setDataDate(localDate);
|
||||
rStatEventOrgQPO.setEventType(dictData.getId());
|
||||
rStatEventOrgQPO.setDataType(v.getId());
|
||||
rStatEventOrgQPO.setEventMeasurementAverage(Float.parseFloat( df.format(event_measurement_average)));
|
||||
rStatEventOrgQPO.setEventMeasurementAccrued(sum_event_measurement);
|
||||
rStatEventOrgQPO.setEventCount(event_count);
|
||||
rStatEventOrgQPO.setEventMeasurementRatioAverage(Float.parseFloat( df.format(event_measurement_ratio_average)));
|
||||
if (finalSumEffectiveMeasurement == 0) {
|
||||
rStatEventOrgQPO.setEventMeasurementRatioAccrued(0.00f);
|
||||
} else {
|
||||
String value = df.format(((float)sum_event_measurement)/ finalSumEffectiveMeasurement);
|
||||
rStatEventOrgQPO.setEventMeasurementRatioAccrued(Float.parseFloat(value));
|
||||
}
|
||||
if (event_measurement_all == 0) {
|
||||
rStatEventOrgQPO.setEventFreq(0.00f);
|
||||
} else {
|
||||
String value = df.format(((float)event_count_all)/ event_measurement_all);
|
||||
rStatEventOrgQPO.setEventFreq(Float.parseFloat(value));
|
||||
}
|
||||
|
||||
|
||||
rStatEventOrgQPOS.add(rStatEventOrgQPO);
|
||||
});
|
||||
});
|
||||
});
|
||||
if (!CollectionUtils.isEmpty(rStatEventOrgQPOS)) {
|
||||
rStatEventOrgQPOService.saveOrUpdateBatchByMultiId(rStatEventOrgQPOS, 500);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleYear(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
||||
|
||||
List<RStatEventOrgYPO> rStatEventOrgYPOS = new ArrayList<>();
|
||||
DecimalFormat df = new DecimalFormat("0.00");
|
||||
|
||||
DateTime begin = DateUtil.beginOfYear(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
DateTime end = DateUtil.endOfYear(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN);
|
||||
|
||||
QueryWrapper<RStatOrgYPO> rStatOrgYPOQueryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatEventYPO> queryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatEventOrgDPO> queryWrapper1 = new QueryWrapper<>();
|
||||
QueryWrapper<RStatEventOrgMPO> queryWrapper2 = new QueryWrapper<>();
|
||||
|
||||
|
||||
/*获取暂态统计指标*/
|
||||
List<DictData> eventStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
|
||||
/*获取数据类型*/
|
||||
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
|
||||
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
|
||||
calculatedParam.getIdList().forEach(deptGetChildrenMoreDTO -> {
|
||||
int sumEffectiveMeasurement =0;
|
||||
rStatOrgYPOQueryWrapper.clear();
|
||||
rStatOrgYPOQueryWrapper.select("IFNULL(effective_measurement_accrued,0) effective_measurement_accrued").
|
||||
eq("org_no",deptGetChildrenMoreDTO.getUnitId()).
|
||||
between("data_date",begin,end);
|
||||
List<RStatOrgYPO> rStatOrgYPOS = rStatOrgYMapper.selectList(rStatOrgYPOQueryWrapper);
|
||||
if(CollectionUtils.isEmpty(rStatOrgYPOS)){
|
||||
sumEffectiveMeasurement=0;
|
||||
}else {
|
||||
sumEffectiveMeasurement = rStatOrgYPOS.stream().mapToInt(RStatOrgYPO::getEffectiveMeasurementAccrued).sum();
|
||||
}
|
||||
int finalSumEffectiveMeasurement = sumEffectiveMeasurement;
|
||||
|
||||
dataTypeMap.forEach((k, v)->{
|
||||
eventStatis.forEach(dictData -> {
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.DISTURBANCE.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.OTHER.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.RECORDING_WAVE.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATORS.getCode())) {
|
||||
return;
|
||||
}
|
||||
queryWrapper.clear();
|
||||
queryWrapper.
|
||||
eq("org_no",deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("data_type",v.getId()).
|
||||
eq("event_type",dictData.getId()).
|
||||
between("data_date",begin,end);
|
||||
List<RStatEventYPO> list = rStatEventYPOMapper.selectList(queryWrapper);
|
||||
int sum_event_measurement =0;
|
||||
int sum_event_count =0;
|
||||
|
||||
if(CollectionUtils.isEmpty(list)){
|
||||
sum_event_measurement=0;
|
||||
sum_event_count =0;
|
||||
}else {
|
||||
sum_event_measurement = list.stream().mapToInt(RStatEventYPO::getEventMeasurementAccrued).sum();
|
||||
sum_event_count = list.stream().mapToInt(RStatEventYPO::getEventCount).sum();
|
||||
|
||||
}
|
||||
queryWrapper1.clear();
|
||||
queryWrapper1.
|
||||
eq("org_no",deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("data_type",v.getId()).
|
||||
eq("event_type",dictData.getId()).
|
||||
between("data_date",begin,end);
|
||||
List<RStatEventOrgDPO> rStatEventOrgDPOList = rStatEventOrgDPOService.list(queryWrapper1);
|
||||
int event_count_all = rStatEventOrgDPOList.stream().mapToInt(RStatEventOrgDPO::getEventCount).sum();
|
||||
int event_measurement_all = rStatEventOrgDPOList.stream().mapToInt(RStatEventOrgDPO::getEventMeasurement).sum();
|
||||
double event_measurement_avg = rStatEventOrgDPOList.stream().mapToInt(RStatEventOrgDPO::getEventMeasurement).average().getAsDouble();
|
||||
|
||||
double asDouble = rStatEventOrgDPOList.stream().mapToDouble(RStatEventOrgDPO::getEventMeasurementRatio).average().getAsDouble();
|
||||
|
||||
queryWrapper2.clear();
|
||||
queryWrapper2.
|
||||
eq("org_no",deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("data_type",v.getId()).
|
||||
eq("event_type",dictData.getId()).
|
||||
between("data_date",begin,end);
|
||||
List<RStatEventOrgMPO> rStatEventOrgMPOList = rStatEventOrgMPOService.list(queryWrapper2);
|
||||
|
||||
double event_measurement_average = rStatEventOrgMPOList.stream().mapToDouble(RStatEventOrgMPO::getEventMeasurementAverage).average().getAsDouble();
|
||||
double event_measurement_ratio_average = rStatEventOrgMPOList.stream().mapToDouble(RStatEventOrgMPO::getEventMeasurementRatioAverage).average().getAsDouble();
|
||||
|
||||
int event_count = rStatEventOrgMPOList.stream().mapToInt(RStatEventOrgMPO::getEventCount).sum();
|
||||
|
||||
RStatEventOrgYPO rStatEventOrgYPO = new RStatEventOrgYPO();
|
||||
rStatEventOrgYPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatEventOrgYPO.setDataDate(localDate);
|
||||
rStatEventOrgYPO.setEventType(dictData.getId());
|
||||
rStatEventOrgYPO.setDataType(v.getId());
|
||||
rStatEventOrgYPO.setEventMeasurementAverage(Float.parseFloat( df.format(event_measurement_average)));
|
||||
rStatEventOrgYPO.setEventMeasurementAccrued(sum_event_measurement);
|
||||
rStatEventOrgYPO.setEventCount(event_count);
|
||||
rStatEventOrgYPO.setEventMeasurementRatioAverage(Float.parseFloat( df.format(event_measurement_ratio_average)));
|
||||
if (finalSumEffectiveMeasurement == 0) {
|
||||
rStatEventOrgYPO.setEventMeasurementRatioAccrued(0.00f);
|
||||
} else {
|
||||
String value = df.format(((float)sum_event_measurement)/ finalSumEffectiveMeasurement);
|
||||
rStatEventOrgYPO.setEventMeasurementRatioAccrued(Float.parseFloat(value));
|
||||
}
|
||||
if (event_measurement_all == 0) {
|
||||
rStatEventOrgYPO.setEventFreq(0.00f);
|
||||
} else {
|
||||
String value = df.format(((float)event_count_all)/ event_measurement_all);
|
||||
rStatEventOrgYPO.setEventFreq(Float.parseFloat(value));
|
||||
}
|
||||
|
||||
|
||||
rStatEventOrgYPOS.add(rStatEventOrgYPO);
|
||||
});
|
||||
});
|
||||
});
|
||||
if (!CollectionUtils.isEmpty(rStatEventOrgYPOS)) {
|
||||
rStatEventOrgYPOService.saveOrUpdateBatchByMultiId(rStatEventOrgYPOS, 500);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//天表
|
||||
public void rStartEventOrgDHandler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
|
||||
List<RStatEventOrgDPO> rStatEventOrgDPOS = new ArrayList<>();
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.newalgorithm.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.core.conditions.query.QueryWrapper;
|
||||
import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
||||
@@ -9,6 +12,7 @@ import com.njcn.harmonic.pojo.po.RMpEventDetailDPO;
|
||||
import com.njcn.harmonic.pojo.po.RMpEventDetailMPO;
|
||||
import com.njcn.harmonic.pojo.po.RStatOrgDPO;
|
||||
import com.njcn.harmonic.pojo.po.RStatOrgMPO;
|
||||
import com.njcn.prepare.bo.CalculatedParam;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgDMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgMMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgQMapper;
|
||||
@@ -75,6 +79,852 @@ public class RStatEventServiceImpl implements RStatEventService {
|
||||
|
||||
private final RStatOrgYMapper rStatOrgYMapper;
|
||||
|
||||
@Override
|
||||
public void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
||||
List<RStatEventDPO> rStatEventDPOList = new ArrayList<>();
|
||||
DecimalFormat df = new DecimalFormat("0.00");
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN);
|
||||
|
||||
|
||||
/*获取暂态统计指标*/
|
||||
List<DictData> eventStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
|
||||
|
||||
/*获取数据类型*/
|
||||
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
|
||||
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
|
||||
/*获取监测点类型类型*/
|
||||
List<DictData> lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
|
||||
Map<String, DictData> lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
|
||||
QueryWrapper<RMpEventDetailDPO> rMpEventDetailDPOQueryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatOrgDPO> rStatOrgDPOQueryWrapper = new QueryWrapper<>();
|
||||
|
||||
calculatedParam.getIdList().forEach(deptGetChildrenMoreDTO -> {
|
||||
|
||||
/*主网*/
|
||||
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) {
|
||||
List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
|
||||
Map<String, List<LineDevGetDTO>> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineTag));
|
||||
collect.forEach((k, v) -> {
|
||||
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
|
||||
rMpEventDetailDPOQueryWrapper.clear();
|
||||
rMpEventDetailDPOQueryWrapper.
|
||||
in("measurement_point_id", collect1).
|
||||
eq("data_date",localDate);
|
||||
List<RMpEventDetailDPO> rMpEventDetailDPOS = rMpEventDetailDMapper.selectList(rMpEventDetailDPOQueryWrapper);
|
||||
|
||||
rStatOrgDPOQueryWrapper.clear();
|
||||
rStatOrgDPOQueryWrapper.select("effective_measurement").
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("measurement_type_class", k).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
eq("data_date",localDate);
|
||||
RStatOrgDPO rStatOrgDPO = rStatOrgDMapper.selectOne(rStatOrgDPOQueryWrapper);
|
||||
|
||||
eventStatis.forEach(dictData -> {
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.DISTURBANCE.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.OTHER.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.RECORDING_WAVE.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATORS.getCode())) {
|
||||
return;
|
||||
}
|
||||
List<Integer> transientStatisData = getTransientStatisData(dictData, rMpEventDetailDPOS);
|
||||
RStatEventDPO rStatEventDPO = new RStatEventDPO();
|
||||
rStatEventDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatEventDPO.setDataDate(localDate);
|
||||
rStatEventDPO.setMeasurementTypeClass(k);
|
||||
rStatEventDPO.setEventType(dictData.getId());
|
||||
rStatEventDPO.setEventMeasurement(transientStatisData.get(0));
|
||||
rStatEventDPO.setEventCount(transientStatisData.get(1));
|
||||
rStatEventDPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
if (Objects.isNull(rStatOrgDPO)) {
|
||||
rStatEventDPO.setEventMeasurementRatio(1.00f);
|
||||
} else {
|
||||
if (rStatOrgDPO.getEffectiveMeasurement() == 0) {
|
||||
rStatEventDPO.setEventMeasurementRatio(1.00f);
|
||||
} else {
|
||||
String value = df.format(rStatEventDPO.getEventMeasurement() / rStatOrgDPO.getEffectiveMeasurement().floatValue());
|
||||
rStatEventDPO.setEventMeasurementRatio(Float.parseFloat(value));
|
||||
}
|
||||
}
|
||||
|
||||
rStatEventDPOList.add(rStatEventDPO);
|
||||
}
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
/*配网*/
|
||||
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())) {
|
||||
List<LineDevGetDTO> pwMonitorIds = deptGetChildrenMoreDTO.getPwMonitorIds();
|
||||
Map<Integer, List<LineDevGetDTO>> collect = pwMonitorIds.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineType));
|
||||
collect.forEach((k, v) -> {
|
||||
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
|
||||
rMpEventDetailDPOQueryWrapper.clear();
|
||||
rMpEventDetailDPOQueryWrapper.
|
||||
in("measurement_point_id", collect1).
|
||||
eq("data_date",localDate);
|
||||
List<RMpEventDetailDPO> rMpEventDetailDPOS = rMpEventDetailDMapper.selectList(rMpEventDetailDPOQueryWrapper);
|
||||
|
||||
rStatOrgDPOQueryWrapper.clear();
|
||||
rStatOrgDPOQueryWrapper.select("effective_measurement").
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId()).
|
||||
eq("data_date",localDate);
|
||||
RStatOrgDPO rStatOrgDPO = rStatOrgDMapper.selectOne(rStatOrgDPOQueryWrapper);
|
||||
|
||||
eventStatis.forEach(dictData -> {
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.DISTURBANCE.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.OTHER.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.RECORDING_WAVE.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATORS.getCode())) {
|
||||
return;
|
||||
}
|
||||
List<Integer> transientStatisData = getTransientStatisData(dictData, rMpEventDetailDPOS);
|
||||
RStatEventDPO rStatEventDPO = new RStatEventDPO();
|
||||
rStatEventDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatEventDPO.setDataDate(localDate);
|
||||
rStatEventDPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap));
|
||||
rStatEventDPO.setEventType(dictData.getId());
|
||||
rStatEventDPO.setEventMeasurement(transientStatisData.get(0));
|
||||
rStatEventDPO.setEventCount(transientStatisData.get(1));
|
||||
rStatEventDPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
|
||||
if (Objects.isNull(rStatOrgDPO)) {
|
||||
rStatEventDPO.setEventMeasurementRatio(1.00f);
|
||||
} else {
|
||||
if (rStatOrgDPO.getEffectiveMeasurement() == 0) {
|
||||
rStatEventDPO.setEventMeasurementRatio(1.00f);
|
||||
} else {
|
||||
String value = df.format(rStatEventDPO.getEventMeasurement() / rStatOrgDPO.getEffectiveMeasurement().floatValue());
|
||||
rStatEventDPO.setEventMeasurementRatio(Float.parseFloat(value));
|
||||
}
|
||||
}
|
||||
rStatEventDPOList.add(rStatEventDPO);
|
||||
}
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
if (!CollectionUtils.isEmpty(rStatEventDPOList)) {
|
||||
rStatEventDPOService.saveOrUpdateBatchByMultiId(rStatEventDPOList, 500);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
||||
List<RStatEventMPO> rStatEventMPOList = new ArrayList<>();
|
||||
DecimalFormat df = new DecimalFormat("0.00");
|
||||
|
||||
DateTime begin = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
DateTime end = DateUtil.endOfMonth(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> eventStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
|
||||
|
||||
/*获取数据类型*/
|
||||
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
|
||||
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
|
||||
/*获取监测点类型类型*/
|
||||
List<DictData> lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
|
||||
Map<String, DictData> lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
|
||||
//详情表
|
||||
QueryWrapper<RMpEventDetailMPO> rMpEventDetailMPOQueryWrapper = new QueryWrapper<>();
|
||||
//org表
|
||||
QueryWrapper<RStatOrgMPO> rStatOrgMPOQueryWrapper = new QueryWrapper<>();
|
||||
//天表
|
||||
QueryWrapper<RStatEventDPO> rStatEventDPOQueryWrapper = new QueryWrapper<>();
|
||||
|
||||
calculatedParam.getIdList().forEach(deptGetChildrenMoreDTO -> {
|
||||
|
||||
/*主网*/
|
||||
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) {
|
||||
List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
|
||||
Map<String, List<LineDevGetDTO>> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineTag));
|
||||
collect.forEach((k, v) -> {
|
||||
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
|
||||
rMpEventDetailMPOQueryWrapper.clear();
|
||||
rMpEventDetailMPOQueryWrapper.
|
||||
in("measurement_point_id", collect1).
|
||||
between("data_date",begin,end);
|
||||
List<RMpEventDetailMPO> rMpEventDetailMPOS = rMpEventDetailMMapper.selectList(rMpEventDetailMPOQueryWrapper);
|
||||
|
||||
rStatOrgMPOQueryWrapper.clear();
|
||||
rStatOrgMPOQueryWrapper.select("effective_measurement_accrued").
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("measurement_type_class", k).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
between("data_date",begin,end);
|
||||
RStatOrgMPO rStatOrgMPO = rStatOrgMMapper.selectOne(rStatOrgMPOQueryWrapper);
|
||||
|
||||
//天表
|
||||
rStatEventDPOQueryWrapper.clear();
|
||||
rStatEventDPOQueryWrapper.
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
between("data_date",begin,end).
|
||||
eq("measurement_type_class",k).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
List<RStatEventDPO> rStatEventDPO = rStatEventDPOMapper.selectList(rStatEventDPOQueryWrapper);
|
||||
|
||||
|
||||
//求各个类型的平均值
|
||||
Map<String, Double> avgEM = rStatEventDPO.stream()
|
||||
.collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.averagingInt(RStatEventDPO::getEventMeasurement)));
|
||||
|
||||
//event_measurement的和
|
||||
Map<String, Integer> sumEM = rStatEventDPO.stream()
|
||||
.collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.summingInt(RStatEventDPO::getEventMeasurement)));
|
||||
|
||||
//event_count
|
||||
Map<String, Integer> sumEC = rStatEventDPO.stream()
|
||||
.collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.summingInt(RStatEventDPO::getEventCount)));
|
||||
|
||||
//event_measurement_ratio
|
||||
Map<String, Double> avgEMR = rStatEventDPO.stream()
|
||||
.collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.averagingDouble(RStatEventDPO::getEventMeasurementRatio)));
|
||||
|
||||
|
||||
eventStatis.forEach(dictData -> {
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.DISTURBANCE.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.OTHER.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.RECORDING_WAVE.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATORS.getCode())) {
|
||||
return;
|
||||
}
|
||||
//累计发生暂态监测点数
|
||||
Integer statisData = getStatisData(dictData, rMpEventDetailMPOS);
|
||||
|
||||
RStatEventMPO rStatEventMPO = new RStatEventMPO();
|
||||
rStatEventMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatEventMPO.setDataDate(localDate);
|
||||
rStatEventMPO.setMeasurementTypeClass(k);
|
||||
rStatEventMPO.setEventType(dictData.getId());
|
||||
rStatEventMPO.setEventMeasurementAverage(Float.parseFloat(df.format(avgEM.get(dictData.getId()))));
|
||||
rStatEventMPO.setEventMeasurementAccrued(statisData);
|
||||
rStatEventMPO.setEventCount(sumEC.get(dictData.getId()));
|
||||
rStatEventMPO.setEventMeasurementRatioAverage(Float.parseFloat(df.format(avgEMR.get(dictData.getId()))));
|
||||
rStatEventMPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
|
||||
if (sumEM.get(dictData.getId()) == 0) {
|
||||
rStatEventMPO.setEventFreq(1.00f);
|
||||
} else {
|
||||
String value = df.format(sumEC.get(dictData.getId()) / sumEM.get(dictData.getId()).floatValue());
|
||||
rStatEventMPO.setEventFreq(Float.parseFloat(value));
|
||||
}
|
||||
if (Objects.isNull(rStatOrgMPO)) {
|
||||
rStatEventMPO.setEventMeasurementRatioAccrued(1.00f);
|
||||
} else {
|
||||
if (rStatOrgMPO.getEffectiveMeasurementAccrued() == 0) {
|
||||
rStatEventMPO.setEventMeasurementRatioAccrued(1.00f);
|
||||
} else {
|
||||
String value = df.format(statisData / rStatOrgMPO.getEffectiveMeasurementAccrued().floatValue());
|
||||
rStatEventMPO.setEventMeasurementRatioAccrued(Float.parseFloat(value));
|
||||
}
|
||||
}
|
||||
rStatEventMPOList.add(rStatEventMPO);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/*配网*/
|
||||
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())) {
|
||||
List<LineDevGetDTO> pwMonitorIds = deptGetChildrenMoreDTO.getPwMonitorIds();
|
||||
Map<Integer, List<LineDevGetDTO>> collect = pwMonitorIds.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineType));
|
||||
collect.forEach((k, v) -> {
|
||||
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
|
||||
rMpEventDetailMPOQueryWrapper.clear();
|
||||
rMpEventDetailMPOQueryWrapper.
|
||||
in("measurement_point_id", collect1).
|
||||
between("data_date",begin,end);
|
||||
List<RMpEventDetailMPO> rMpEventDetailMPOS = rMpEventDetailMMapper.selectList(rMpEventDetailMPOQueryWrapper);
|
||||
|
||||
rStatOrgMPOQueryWrapper.clear();
|
||||
rStatOrgMPOQueryWrapper.select("effective_measurement_accrued").
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId()).
|
||||
between("data_date",begin,end);
|
||||
RStatOrgMPO rStatOrgMPO = rStatOrgMMapper.selectOne(rStatOrgMPOQueryWrapper);
|
||||
|
||||
//天表
|
||||
rStatEventDPOQueryWrapper.clear();
|
||||
rStatEventDPOQueryWrapper.
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
between("data_date",begin,end).
|
||||
eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
|
||||
List<RStatEventDPO> rStatEventDPO = rStatEventDPOMapper.selectList(rStatEventDPOQueryWrapper);
|
||||
|
||||
|
||||
//求各个类型的平均值
|
||||
Map<String, Double> avgEM = rStatEventDPO.stream()
|
||||
.collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.averagingInt(RStatEventDPO::getEventMeasurement)));
|
||||
|
||||
//event_measurement的和
|
||||
Map<String, Integer> sumEM = rStatEventDPO.stream()
|
||||
.collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.summingInt(RStatEventDPO::getEventMeasurement)));
|
||||
|
||||
//event_count
|
||||
Map<String, Integer> sumEC = rStatEventDPO.stream()
|
||||
.collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.summingInt(RStatEventDPO::getEventCount)));
|
||||
|
||||
//event_measurement_ratio
|
||||
Map<String, Double> avgEMR = rStatEventDPO.stream()
|
||||
.collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.averagingDouble(RStatEventDPO::getEventMeasurementRatio)));
|
||||
|
||||
|
||||
eventStatis.forEach(dictData -> {
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.DISTURBANCE.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.OTHER.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.RECORDING_WAVE.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATORS.getCode())) {
|
||||
return;
|
||||
}
|
||||
//累计发生暂态监测点数
|
||||
Integer statisData = getStatisData(dictData, rMpEventDetailMPOS);
|
||||
|
||||
RStatEventMPO rStatEventMPO = new RStatEventMPO();
|
||||
rStatEventMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatEventMPO.setDataDate(localDate);
|
||||
rStatEventMPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap));
|
||||
rStatEventMPO.setEventType(dictData.getId());
|
||||
rStatEventMPO.setEventMeasurementAverage(Float.parseFloat(df.format(avgEM.get(dictData.getId()))));
|
||||
rStatEventMPO.setEventMeasurementAccrued(statisData);
|
||||
rStatEventMPO.setEventCount(sumEC.get(dictData.getId()));
|
||||
rStatEventMPO.setEventMeasurementRatioAverage(Float.parseFloat(df.format(avgEMR.get(dictData.getId()))));
|
||||
rStatEventMPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
|
||||
|
||||
if (sumEM.get(dictData.getId()) == 0) {
|
||||
rStatEventMPO.setEventFreq(1.00f);
|
||||
} else {
|
||||
String value = df.format(sumEC.get(dictData.getId()) / sumEM.get(dictData.getId()).floatValue());
|
||||
rStatEventMPO.setEventFreq(Float.parseFloat(value));
|
||||
}
|
||||
if (Objects.isNull(rStatOrgMPO)) {
|
||||
rStatEventMPO.setEventMeasurementRatioAccrued(1.00f);
|
||||
} else {
|
||||
if (rStatOrgMPO.getEffectiveMeasurementAccrued() == 0) {
|
||||
rStatEventMPO.setEventMeasurementRatioAccrued(1.00f);
|
||||
} else {
|
||||
String value = df.format(statisData / rStatOrgMPO.getEffectiveMeasurementAccrued().floatValue());
|
||||
rStatEventMPO.setEventMeasurementRatioAccrued(Float.parseFloat(value));
|
||||
}
|
||||
}
|
||||
rStatEventMPOList.add(rStatEventMPO);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
if (!CollectionUtils.isEmpty(rStatEventMPOList)) {
|
||||
rStatEventMPOService.saveOrUpdateBatchByMultiId(rStatEventMPOList, 500);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleQtr(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
||||
List<RStatEventQPO> rStatEventQPOList = new ArrayList<>();
|
||||
DecimalFormat df = new DecimalFormat("0.00");
|
||||
|
||||
DateTime begin = DateUtil.beginOfQuarter(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
DateTime end = DateUtil.endOfQuarter(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> eventStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
|
||||
|
||||
/*获取数据类型*/
|
||||
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
|
||||
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
|
||||
/*获取监测点类型类型*/
|
||||
List<DictData> lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
|
||||
Map<String, DictData> lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
|
||||
//详情表
|
||||
QueryWrapper<RMpEventDetailMPO> rMpEventDetailMPOQueryWrapper = new QueryWrapper<>();
|
||||
//org季表
|
||||
QueryWrapper<RStatOrgQPO> rStatOrgQPOQueryWrapper = new QueryWrapper<>();
|
||||
//天表
|
||||
QueryWrapper<RStatEventDPO> rStatEventDPOQueryWrapper = new QueryWrapper<>();
|
||||
//月表
|
||||
QueryWrapper<RStatEventMPO> rStatEventMPOQueryWrapper = new QueryWrapper<>();
|
||||
|
||||
calculatedParam.getIdList().forEach(deptGetChildrenMoreDTO -> {
|
||||
|
||||
/*主网*/
|
||||
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) {
|
||||
List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
|
||||
Map<String, List<LineDevGetDTO>> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineTag));
|
||||
collect.forEach((k, v) -> {
|
||||
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
|
||||
rMpEventDetailMPOQueryWrapper.clear();
|
||||
rMpEventDetailMPOQueryWrapper.
|
||||
in("measurement_point_id", collect1).
|
||||
between("data_date", begin, end);
|
||||
List<RMpEventDetailMPO> rMpEventDetailMPOS = rMpEventDetailMMapper.selectList(rMpEventDetailMPOQueryWrapper);
|
||||
|
||||
//季表
|
||||
rStatOrgQPOQueryWrapper.clear();
|
||||
rStatOrgQPOQueryWrapper.select("effective_measurement_accrued").
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("measurement_type_class", k).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
between("data_date", begin, end);
|
||||
;
|
||||
RStatOrgQPO rStatOrgQPO = rStatOrgQMapper.selectOne(rStatOrgQPOQueryWrapper);
|
||||
|
||||
//天表
|
||||
rStatEventDPOQueryWrapper.clear();
|
||||
rStatEventDPOQueryWrapper.
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
between("data_date", begin, end).
|
||||
eq("measurement_type_class", k).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
List<RStatEventDPO> rStatEventDPO = rStatEventDPOMapper.selectList(rStatEventDPOQueryWrapper);
|
||||
|
||||
//月表
|
||||
rStatEventMPOQueryWrapper.clear();
|
||||
rStatEventMPOQueryWrapper.
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
between("data_date", begin, end).
|
||||
eq("measurement_type_class", k).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
List<RStatEventMPO> rStatEventMPO = rStatEventMPOMapper.selectList(rStatEventMPOQueryWrapper);
|
||||
|
||||
//求各个类型的平均值(月表)
|
||||
Map<String, Double> avgEMM = rStatEventMPO.stream()
|
||||
.collect(Collectors.groupingBy(RStatEventMPO::getEventType, Collectors.averagingDouble(RStatEventMPO::getEventMeasurementAverage)));
|
||||
|
||||
//event_measurement的和
|
||||
Map<String, Integer> sumEM = rStatEventDPO.stream()
|
||||
.collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.summingInt(RStatEventDPO::getEventMeasurement)));
|
||||
|
||||
//event_count(天表)
|
||||
Map<String, Integer> sumEC = rStatEventDPO.stream()
|
||||
.collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.summingInt(RStatEventDPO::getEventCount)));
|
||||
|
||||
//event_count(月表)
|
||||
Map<String, Integer> sumECM = rStatEventMPO.stream()
|
||||
.collect(Collectors.groupingBy(RStatEventMPO::getEventType, Collectors.summingInt(RStatEventMPO::getEventCount)));
|
||||
|
||||
//event_measurement_ratio_average(月表)
|
||||
Map<String, Double> avgEMRM = rStatEventMPO.stream()
|
||||
.collect(Collectors.groupingBy(RStatEventMPO::getEventType, Collectors.averagingDouble(RStatEventMPO::getEventMeasurementRatioAverage)));
|
||||
|
||||
|
||||
eventStatis.forEach(dictData -> {
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.DISTURBANCE.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.OTHER.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.RECORDING_WAVE.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATORS.getCode())) {
|
||||
return;
|
||||
}
|
||||
//累计发生暂态监测点数
|
||||
Integer statisData = getStatisQData(dictData, rMpEventDetailMPOS);
|
||||
|
||||
RStatEventQPO rStatEventQPO = new RStatEventQPO();
|
||||
rStatEventQPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatEventQPO.setDataDate(localDate);
|
||||
rStatEventQPO.setMeasurementTypeClass(k);
|
||||
rStatEventQPO.setEventType(dictData.getId());
|
||||
rStatEventQPO.setEventMeasurementAverage(Float.parseFloat(df.format(avgEMM.get(dictData.getId()))));
|
||||
// todo
|
||||
rStatEventQPO.setEventMeasurementAccrued(statisData);
|
||||
rStatEventQPO.setEventCount(sumECM.get(dictData.getId()));
|
||||
rStatEventQPO.setEventMeasurementRatioAverage(Float.parseFloat(df.format(avgEMRM.get(dictData.getId()))));
|
||||
rStatEventQPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
|
||||
if (sumEM.get(dictData.getId()) == 0) {
|
||||
rStatEventQPO.setEventFreq(1.00f);
|
||||
} else {
|
||||
String value = df.format(sumEC.get(dictData.getId()) / sumEM.get(dictData.getId()).floatValue());
|
||||
rStatEventQPO.setEventFreq(Float.parseFloat(value));
|
||||
}
|
||||
if (Objects.isNull(rStatOrgQPO)) {
|
||||
rStatEventQPO.setEventMeasurementRatioAccrued(1.00f);
|
||||
} else {
|
||||
if (rStatOrgQPO.getEffectiveMeasurementAccrued() == 0) {
|
||||
rStatEventQPO.setEventMeasurementRatioAccrued(1.00f);
|
||||
} else {
|
||||
String value = df.format(statisData / rStatOrgQPO.getEffectiveMeasurementAccrued().floatValue());
|
||||
rStatEventQPO.setEventMeasurementRatioAccrued(Float.parseFloat(value));
|
||||
}
|
||||
}
|
||||
rStatEventQPOList.add(rStatEventQPO);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/*配网*/
|
||||
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())) {
|
||||
List<LineDevGetDTO> pwMonitorIds = deptGetChildrenMoreDTO.getPwMonitorIds();
|
||||
Map<Integer, List<LineDevGetDTO>> collect = pwMonitorIds.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineType));
|
||||
collect.forEach((k, v) -> {
|
||||
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
rMpEventDetailMPOQueryWrapper.clear();
|
||||
rMpEventDetailMPOQueryWrapper.
|
||||
in("measurement_point_id", collect1).
|
||||
between("data_date", begin, end);
|
||||
List<RMpEventDetailMPO> rMpEventDetailMPOS = rMpEventDetailMMapper.selectList(rMpEventDetailMPOQueryWrapper);
|
||||
|
||||
//季表
|
||||
rStatOrgQPOQueryWrapper.clear();
|
||||
rStatOrgQPOQueryWrapper.select("effective_measurement_accrued").
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId()).
|
||||
between("data_date", begin, end);
|
||||
;
|
||||
RStatOrgQPO rStatOrgQPO = rStatOrgQMapper.selectOne(rStatOrgQPOQueryWrapper);
|
||||
|
||||
//天表
|
||||
rStatEventDPOQueryWrapper.clear();
|
||||
rStatEventDPOQueryWrapper.
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
between("data_date", begin, end).
|
||||
eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
|
||||
List<RStatEventDPO> rStatEventDPO = rStatEventDPOMapper.selectList(rStatEventDPOQueryWrapper);
|
||||
|
||||
//月表
|
||||
rStatEventMPOQueryWrapper.clear();
|
||||
rStatEventMPOQueryWrapper.
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
between("data_date", begin, end).
|
||||
eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
|
||||
List<RStatEventMPO> rStatEventMPO = rStatEventMPOMapper.selectList(rStatEventMPOQueryWrapper);
|
||||
|
||||
//求各个类型的平均值(月表)
|
||||
Map<String, Double> avgEMM = rStatEventMPO.stream()
|
||||
.collect(Collectors.groupingBy(RStatEventMPO::getEventType, Collectors.averagingDouble(RStatEventMPO::getEventMeasurementAverage)));
|
||||
|
||||
//event_measurement的和
|
||||
Map<String, Integer> sumEM = rStatEventDPO.stream()
|
||||
.collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.summingInt(RStatEventDPO::getEventMeasurement)));
|
||||
|
||||
//event_count(天表)
|
||||
Map<String, Integer> sumEC = rStatEventDPO.stream()
|
||||
.collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.summingInt(RStatEventDPO::getEventCount)));
|
||||
|
||||
//event_count(月表)
|
||||
Map<String, Integer> sumECM = rStatEventMPO.stream()
|
||||
.collect(Collectors.groupingBy(RStatEventMPO::getEventType, Collectors.summingInt(RStatEventMPO::getEventCount)));
|
||||
|
||||
//event_measurement_ratio_average(月表)
|
||||
Map<String, Double> avgEMRM = rStatEventMPO.stream()
|
||||
.collect(Collectors.groupingBy(RStatEventMPO::getEventType, Collectors.averagingDouble(RStatEventMPO::getEventMeasurementRatioAverage)));
|
||||
|
||||
|
||||
eventStatis.forEach(dictData -> {
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.DISTURBANCE.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.OTHER.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.RECORDING_WAVE.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATORS.getCode())) {
|
||||
return;
|
||||
}
|
||||
//累计发生暂态监测点数
|
||||
Integer statisData = getStatisQData(dictData, rMpEventDetailMPOS);
|
||||
|
||||
RStatEventQPO rStatEventQPO = new RStatEventQPO();
|
||||
rStatEventQPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatEventQPO.setDataDate(localDate);
|
||||
rStatEventQPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap));
|
||||
rStatEventQPO.setEventType(dictData.getId());
|
||||
rStatEventQPO.setEventMeasurementAverage(Float.parseFloat(df.format(avgEMM.get(dictData.getId()))));
|
||||
// todo
|
||||
rStatEventQPO.setEventMeasurementAccrued(statisData);
|
||||
rStatEventQPO.setEventCount(sumECM.get(dictData.getId()));
|
||||
rStatEventQPO.setEventMeasurementRatioAverage(Float.parseFloat(df.format(avgEMRM.get(dictData.getId()))));
|
||||
rStatEventQPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
|
||||
|
||||
if (sumEM.get(dictData.getId()) == 0) {
|
||||
rStatEventQPO.setEventFreq(1.00f);
|
||||
} else {
|
||||
String value = df.format(sumEC.get(dictData.getId()) / sumEM.get(dictData.getId()).floatValue());
|
||||
rStatEventQPO.setEventFreq(Float.parseFloat(value));
|
||||
}
|
||||
if (Objects.isNull(rStatOrgQPO)) {
|
||||
rStatEventQPO.setEventMeasurementRatioAccrued(1.00f);
|
||||
} else {
|
||||
if (rStatOrgQPO.getEffectiveMeasurementAccrued() == 0) {
|
||||
rStatEventQPO.setEventMeasurementRatioAccrued(1.00f);
|
||||
} else {
|
||||
String value = df.format(statisData / rStatOrgQPO.getEffectiveMeasurementAccrued().floatValue());
|
||||
rStatEventQPO.setEventMeasurementRatioAccrued(Float.parseFloat(value));
|
||||
}
|
||||
}
|
||||
rStatEventQPOList.add(rStatEventQPO);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
if (!CollectionUtils.isEmpty(rStatEventQPOList)) {
|
||||
rStatEventQPOService.saveOrUpdateBatchByMultiId(rStatEventQPOList, 500);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleYear(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
||||
List<RStatEventYPO> rStatEventYPOList = new ArrayList<>();
|
||||
DecimalFormat df = new DecimalFormat("0.00");
|
||||
|
||||
DateTime begin = DateUtil.beginOfQuarter(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
DateTime end = DateUtil.endOfQuarter(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> eventStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
|
||||
|
||||
/*获取数据类型*/
|
||||
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
|
||||
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
|
||||
/*获取监测点类型类型*/
|
||||
List<DictData> lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
|
||||
Map<String, DictData> lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
|
||||
//详情表
|
||||
QueryWrapper<RMpEventDetailMPO> rMpEventDetailMPOQueryWrapper = new QueryWrapper<>();
|
||||
//org年表
|
||||
QueryWrapper<RStatOrgYPO> rStatOrgYPOQueryWrapper = new QueryWrapper<>();
|
||||
//天表
|
||||
QueryWrapper<RStatEventDPO> rStatEventDPOQueryWrapper = new QueryWrapper<>();
|
||||
//月表
|
||||
QueryWrapper<RStatEventMPO> rStatEventMPOQueryWrapper = new QueryWrapper<>();
|
||||
|
||||
calculatedParam.getIdList().forEach(deptGetChildrenMoreDTO -> {
|
||||
|
||||
/*主网*/
|
||||
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) {
|
||||
List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
|
||||
Map<String, List<LineDevGetDTO>> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineTag));
|
||||
collect.forEach((k, v) -> {
|
||||
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
|
||||
rMpEventDetailMPOQueryWrapper.clear();
|
||||
rMpEventDetailMPOQueryWrapper.
|
||||
in("measurement_point_id", collect1).
|
||||
between("data_date", begin, end);
|
||||
List<RMpEventDetailMPO> rMpEventDetailMPOS = rMpEventDetailMMapper.selectList(rMpEventDetailMPOQueryWrapper);
|
||||
|
||||
//年表
|
||||
rStatOrgYPOQueryWrapper.clear();
|
||||
rStatOrgYPOQueryWrapper.select("effective_measurement_accrued").
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("measurement_type_class", k).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
between("data_date", begin, end);
|
||||
|
||||
RStatOrgYPO rStatOrgYPO = rStatOrgYMapper.selectOne(rStatOrgYPOQueryWrapper);
|
||||
|
||||
//天表
|
||||
rStatEventDPOQueryWrapper.clear();
|
||||
rStatEventDPOQueryWrapper.
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
between("data_date", begin, end).
|
||||
eq("measurement_type_class",k).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
List<RStatEventDPO> rStatEventDPO = rStatEventDPOMapper.selectList(rStatEventDPOQueryWrapper);
|
||||
|
||||
//月表
|
||||
rStatEventMPOQueryWrapper.clear();
|
||||
rStatEventMPOQueryWrapper.
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
between("data_date", begin, end).
|
||||
eq("measurement_type_class",k).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
List<RStatEventMPO> rStatEventMPO = rStatEventMPOMapper.selectList(rStatEventMPOQueryWrapper);
|
||||
|
||||
//求各个类型的平均值(月表)
|
||||
Map<String, Double> avgEMM = rStatEventMPO.stream()
|
||||
.collect(Collectors.groupingBy(RStatEventMPO::getEventType, Collectors.averagingDouble(RStatEventMPO::getEventMeasurementAverage)));
|
||||
|
||||
//event_measurement的和
|
||||
Map<String, Integer> sumEM = rStatEventDPO.stream()
|
||||
.collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.summingInt(RStatEventDPO::getEventMeasurement)));
|
||||
|
||||
//event_count(天表)
|
||||
Map<String, Integer> sumEC = rStatEventDPO.stream()
|
||||
.collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.summingInt(RStatEventDPO::getEventCount)));
|
||||
|
||||
//event_count(月表)
|
||||
Map<String, Integer> sumECM = rStatEventMPO.stream()
|
||||
.collect(Collectors.groupingBy(RStatEventMPO::getEventType, Collectors.summingInt(RStatEventMPO::getEventCount)));
|
||||
|
||||
//event_measurement_ratio_average(月表)
|
||||
Map<String, Double> avgEMRM = rStatEventMPO.stream()
|
||||
.collect(Collectors.groupingBy(RStatEventMPO::getEventType, Collectors.averagingDouble(RStatEventMPO::getEventMeasurementRatioAverage)));
|
||||
|
||||
|
||||
eventStatis.forEach(dictData -> {
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.DISTURBANCE.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.OTHER.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.RECORDING_WAVE.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATORS.getCode())) {
|
||||
return;
|
||||
}
|
||||
//累计发生暂态监测点数
|
||||
Integer statisData = getStatisQData(dictData, rMpEventDetailMPOS);
|
||||
|
||||
RStatEventYPO rStatEventYPO = new RStatEventYPO();
|
||||
rStatEventYPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatEventYPO.setDataDate(localDate);
|
||||
rStatEventYPO.setMeasurementTypeClass(k);
|
||||
rStatEventYPO.setEventType(dictData.getId());
|
||||
rStatEventYPO.setEventMeasurementAverage(Float.parseFloat(df.format(avgEMM.get(dictData.getId()))));
|
||||
// todo
|
||||
rStatEventYPO.setEventMeasurementAccrued(statisData);
|
||||
rStatEventYPO.setEventCount(sumECM.get(dictData.getId()));
|
||||
rStatEventYPO.setEventMeasurementRatioAverage(Float.parseFloat(df.format(avgEMRM.get(dictData.getId()))));
|
||||
rStatEventYPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
|
||||
if (sumEM.get(dictData.getId()) == 0) {
|
||||
rStatEventYPO.setEventFreq(1.00f);
|
||||
} else {
|
||||
String value = df.format(sumEC.get(dictData.getId()) / sumEM.get(dictData.getId()).floatValue());
|
||||
rStatEventYPO.setEventFreq(Float.parseFloat(value));
|
||||
}
|
||||
if (Objects.isNull(rStatOrgYPO)) {
|
||||
rStatEventYPO.setEventMeasurementRatioAccrued(1.00f);
|
||||
} else {
|
||||
if (rStatOrgYPO.getEffectiveMeasurementAccrued() == 0) {
|
||||
rStatEventYPO.setEventMeasurementRatioAccrued(1.00f);
|
||||
} else {
|
||||
String value = df.format(statisData / rStatOrgYPO.getEffectiveMeasurementAccrued().floatValue());
|
||||
rStatEventYPO.setEventMeasurementRatioAccrued(Float.parseFloat(value));
|
||||
}
|
||||
}
|
||||
rStatEventYPOList.add(rStatEventYPO);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/*配网*/
|
||||
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())) {
|
||||
List<LineDevGetDTO> pwMonitorIds = deptGetChildrenMoreDTO.getPwMonitorIds();
|
||||
Map<Integer, List<LineDevGetDTO>> collect = pwMonitorIds.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineType));
|
||||
collect.forEach((k, v) -> {
|
||||
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
|
||||
rMpEventDetailMPOQueryWrapper.clear();
|
||||
rMpEventDetailMPOQueryWrapper.
|
||||
in("measurement_point_id", collect1).
|
||||
between("data_date", begin, end);
|
||||
List<RMpEventDetailMPO> rMpEventDetailMPOS = rMpEventDetailMMapper.selectList(rMpEventDetailMPOQueryWrapper);
|
||||
|
||||
//年表
|
||||
rStatOrgYPOQueryWrapper.clear();
|
||||
rStatOrgYPOQueryWrapper.select("effective_measurement_accrued").
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId()).
|
||||
between("data_date", begin, end);
|
||||
|
||||
RStatOrgYPO rStatOrgYPO = rStatOrgYMapper.selectOne(rStatOrgYPOQueryWrapper);
|
||||
|
||||
//天表
|
||||
rStatEventDPOQueryWrapper.clear();
|
||||
rStatEventDPOQueryWrapper.
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
between("data_date", begin, end).
|
||||
eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
|
||||
List<RStatEventDPO> rStatEventDPO = rStatEventDPOMapper.selectList(rStatEventDPOQueryWrapper);
|
||||
|
||||
//月表
|
||||
rStatEventMPOQueryWrapper.clear();
|
||||
rStatEventMPOQueryWrapper.
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
between("data_date", begin, end).
|
||||
eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
|
||||
List<RStatEventMPO> rStatEventMPO = rStatEventMPOMapper.selectList(rStatEventMPOQueryWrapper);
|
||||
|
||||
//求各个类型的平均值(月表)
|
||||
Map<String, Double> avgEMM = rStatEventMPO.stream()
|
||||
.collect(Collectors.groupingBy(RStatEventMPO::getEventType, Collectors.averagingDouble(RStatEventMPO::getEventMeasurementAverage)));
|
||||
|
||||
//event_measurement的和
|
||||
Map<String, Integer> sumEM = rStatEventDPO.stream()
|
||||
.collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.summingInt(RStatEventDPO::getEventMeasurement)));
|
||||
|
||||
//event_count(天表)
|
||||
Map<String, Integer> sumEC = rStatEventDPO.stream()
|
||||
.collect(Collectors.groupingBy(RStatEventDPO::getEventType, Collectors.summingInt(RStatEventDPO::getEventCount)));
|
||||
|
||||
//event_count(月表)
|
||||
Map<String, Integer> sumECM = rStatEventMPO.stream()
|
||||
.collect(Collectors.groupingBy(RStatEventMPO::getEventType, Collectors.summingInt(RStatEventMPO::getEventCount)));
|
||||
|
||||
//event_measurement_ratio_average(月表)
|
||||
Map<String, Double> avgEMRM = rStatEventMPO.stream()
|
||||
.collect(Collectors.groupingBy(RStatEventMPO::getEventType, Collectors.averagingDouble(RStatEventMPO::getEventMeasurementRatioAverage)));
|
||||
|
||||
|
||||
eventStatis.forEach(dictData -> {
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.DISTURBANCE.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.OTHER.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.RECORDING_WAVE.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATORS.getCode())) {
|
||||
return;
|
||||
}
|
||||
//累计发生暂态监测点数
|
||||
Integer statisData = getStatisQData(dictData, rMpEventDetailMPOS);
|
||||
|
||||
RStatEventYPO rStatEventYPO = new RStatEventYPO();
|
||||
rStatEventYPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatEventYPO.setDataDate(localDate);
|
||||
rStatEventYPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap));
|
||||
rStatEventYPO.setEventType(dictData.getId());
|
||||
rStatEventYPO.setEventMeasurementAverage(Float.parseFloat(df.format(avgEMM.get(dictData.getId()))));
|
||||
// todo
|
||||
rStatEventYPO.setEventMeasurementAccrued(statisData);
|
||||
rStatEventYPO.setEventCount(sumECM.get(dictData.getId()));
|
||||
rStatEventYPO.setEventMeasurementRatioAverage(Float.parseFloat(df.format(avgEMRM.get(dictData.getId()))));
|
||||
rStatEventYPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
|
||||
|
||||
if (sumEM.get(dictData.getId()) == 0) {
|
||||
rStatEventYPO.setEventFreq(1.00f);
|
||||
} else {
|
||||
String value = df.format(sumEC.get(dictData.getId()) / sumEM.get(dictData.getId()).floatValue());
|
||||
rStatEventYPO.setEventFreq(Float.parseFloat(value));
|
||||
}
|
||||
if (Objects.isNull(rStatOrgYPO)) {
|
||||
rStatEventYPO.setEventMeasurementRatioAccrued(1.00f);
|
||||
} else {
|
||||
if (rStatOrgYPO.getEffectiveMeasurementAccrued() == 0) {
|
||||
rStatEventYPO.setEventMeasurementRatioAccrued(1.00f);
|
||||
} else {
|
||||
String value = df.format(statisData / rStatOrgYPO.getEffectiveMeasurementAccrued().floatValue());
|
||||
rStatEventYPO.setEventMeasurementRatioAccrued(Float.parseFloat(value));
|
||||
}
|
||||
}
|
||||
rStatEventYPOList.add(rStatEventYPO);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
if (!CollectionUtils.isEmpty(rStatEventYPOList)) {
|
||||
rStatEventYPOService.saveOrUpdateBatchByMultiId(rStatEventYPOList, 500);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
|
||||
switch (type) {
|
||||
@@ -95,6 +945,8 @@ public class RStatEventServiceImpl implements RStatEventService {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//天表
|
||||
public void rStartEventDHandler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
|
||||
List<RStatEventDPO> rStatEventDPOList = new ArrayList<>();
|
||||
|
||||
@@ -1,16 +1,21 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.newalgorithm.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.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.*;
|
||||
import com.njcn.prepare.bo.CalculatedParam;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgDMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgMMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpEventDetailDMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.line.RMpEventDetailMMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RStatEventDPOMapper;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.newalgorithm.RStatEventVoltageDPOMapper;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.RMpEventDetailPO;
|
||||
import com.njcn.prepare.harmonic.pojo.po.*;
|
||||
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.*;
|
||||
import com.njcn.system.api.DicDataFeignClient;
|
||||
@@ -23,6 +28,7 @@ import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.text.DecimalFormat;
|
||||
import java.time.LocalDate;
|
||||
import java.time.ZoneId;
|
||||
@@ -60,6 +66,439 @@ public class RStatEventVoltageServiceImpl implements RStatEventVoltageService {
|
||||
private final RStatOrgMMapper rStatOrgMMapper;
|
||||
|
||||
|
||||
@Override
|
||||
public void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
||||
List<RStatEventVoltageDPO> rStatEventVoltageDPOS = new ArrayList<>();
|
||||
DecimalFormat df = new DecimalFormat("0.00");
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN);
|
||||
|
||||
|
||||
/*获取暂态统计指标*/
|
||||
List<DictData> eventStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
|
||||
|
||||
/*获取数据类型*/
|
||||
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
|
||||
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
|
||||
/*获取监测点类型类型*/
|
||||
List<DictData> lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
|
||||
Map<String, DictData> lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
|
||||
/*获取监测点电压等级*/
|
||||
List<DictData> voltageList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_VOLTAGE_STAND.getCode()).getData();
|
||||
Map<String, DictData> voltageMap = voltageList.stream().collect(Collectors.toMap(DictData::getValue, dictData -> dictData));
|
||||
|
||||
QueryWrapper<RMpEventDetailDPO> rMpEventDetailDPOQueryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatOrgDPO> rStatOrgDPOQueryWrapper = new QueryWrapper<>();
|
||||
|
||||
calculatedParam.getIdList().forEach(deptGetChildrenMoreDTO -> {
|
||||
|
||||
/*主网*/
|
||||
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) {
|
||||
List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
|
||||
Map<String, List<LineDevGetDTO>> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineTag));
|
||||
collect.forEach((k, v) -> {
|
||||
Map<String, List<LineDevGetDTO>> collect2 = v.stream().collect(Collectors.groupingBy(LineDevGetDTO::getVoltageLevel));
|
||||
collect2.forEach((k1, v1) -> {
|
||||
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
|
||||
rMpEventDetailDPOQueryWrapper.clear();
|
||||
rMpEventDetailDPOQueryWrapper.
|
||||
in("measurement_point_id", collect1).
|
||||
eq("data_date",localDate);
|
||||
List<RMpEventDetailDPO> rMpEventDetailDPOS = rMpEventDetailDMapper.selectList(rMpEventDetailDPOQueryWrapper);
|
||||
|
||||
rStatOrgDPOQueryWrapper.clear();
|
||||
rStatOrgDPOQueryWrapper.select("effective_measurement").
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("measurement_type_class", k).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
eq("data_date",localDate);
|
||||
RStatOrgDPO rStatOrgDPO = rStatOrgDMapper.selectOne(rStatOrgDPOQueryWrapper);
|
||||
|
||||
eventStatis.forEach(dictData -> {
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.DISTURBANCE.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.OTHER.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.RECORDING_WAVE.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATORS.getCode())) {
|
||||
return;
|
||||
}
|
||||
|
||||
List<Integer> transientStatisData = getTransientStatisDataNew(dictData, rMpEventDetailDPOS);
|
||||
RStatEventVoltageDPO rStatEventVoltageDPO = new RStatEventVoltageDPO();
|
||||
rStatEventVoltageDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatEventVoltageDPO.setDataDate(localDate);
|
||||
rStatEventVoltageDPO.setMeasurementTypeClass(k);
|
||||
rStatEventVoltageDPO.setEventType(dictData.getId());
|
||||
rStatEventVoltageDPO.setVoltageType(k1);
|
||||
rStatEventVoltageDPO.setEventMeasurement(transientStatisData.get(0));
|
||||
rStatEventVoltageDPO.setEventCount(transientStatisData.get(1));
|
||||
rStatEventVoltageDPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
if (Objects.isNull(rStatOrgDPO)) {
|
||||
rStatEventVoltageDPO.setEventMeasurementRatio(0.00f);
|
||||
} else {
|
||||
if (rStatOrgDPO.getEffectiveMeasurement() == 0) {
|
||||
rStatEventVoltageDPO.setEventMeasurementRatio(0.00f);
|
||||
} else {
|
||||
String value = df.format(rStatEventVoltageDPO.getEventMeasurement() / rStatOrgDPO.getEffectiveMeasurement().floatValue());
|
||||
rStatEventVoltageDPO.setEventMeasurementRatio(Float.parseFloat(value));
|
||||
}
|
||||
}
|
||||
rStatEventVoltageDPOS.add(rStatEventVoltageDPO);
|
||||
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
/*配网*/
|
||||
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())) {
|
||||
List<LineDevGetDTO> pwMonitorIds = deptGetChildrenMoreDTO.getPwMonitorIds();
|
||||
Map<Integer, List<LineDevGetDTO>> collect = pwMonitorIds.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineType));
|
||||
collect.forEach((k, v) -> {
|
||||
Map<String, List<LineDevGetDTO>> collect2 = v.stream().collect(Collectors.groupingBy(LineDevGetDTO::getVoltageLevel));
|
||||
|
||||
collect2.forEach((k1, v1) -> {
|
||||
List<String> collect1 = v1.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
rMpEventDetailDPOQueryWrapper.clear();
|
||||
rMpEventDetailDPOQueryWrapper.
|
||||
in("measurement_point_id", collect1).
|
||||
eq("data_date",localDate);
|
||||
List<RMpEventDetailDPO> rMpEventDetailDPOS = rMpEventDetailDMapper.selectList(rMpEventDetailDPOQueryWrapper);
|
||||
|
||||
rStatOrgDPOQueryWrapper.clear();
|
||||
rStatOrgDPOQueryWrapper.select("effective_measurement").
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("measurement_type_class", getmeasurementType(k, lineSortMap)).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId()).
|
||||
eq("data_date",localDate);
|
||||
RStatOrgDPO rStatOrgDPO = rStatOrgDMapper.selectOne(rStatOrgDPOQueryWrapper);
|
||||
|
||||
eventStatis.forEach(dictData -> {
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.DISTURBANCE.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.OTHER.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.RECORDING_WAVE.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATORS.getCode())) {
|
||||
return;
|
||||
}
|
||||
List<Integer> transientStatisData = getTransientStatisDataNew(dictData, rMpEventDetailDPOS);
|
||||
RStatEventVoltageDPO rStatEventVoltageDPO = new RStatEventVoltageDPO();
|
||||
rStatEventVoltageDPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatEventVoltageDPO.setDataDate(localDate);
|
||||
rStatEventVoltageDPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap));
|
||||
rStatEventVoltageDPO.setEventType(dictData.getId());
|
||||
rStatEventVoltageDPO.setVoltageType(k1);
|
||||
rStatEventVoltageDPO.setEventMeasurement(transientStatisData.get(0));
|
||||
rStatEventVoltageDPO.setEventCount(transientStatisData.get(1));
|
||||
rStatEventVoltageDPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
|
||||
if (Objects.isNull(rStatOrgDPO)) {
|
||||
rStatEventVoltageDPO.setEventMeasurementRatio(0.00f);
|
||||
} else {
|
||||
if (rStatOrgDPO.getEffectiveMeasurement() == 0) {
|
||||
rStatEventVoltageDPO.setEventMeasurementRatio(0.00f);
|
||||
} else {
|
||||
String value = df.format(rStatEventVoltageDPO.getEventMeasurement() / rStatOrgDPO.getEffectiveMeasurement().floatValue());
|
||||
rStatEventVoltageDPO.setEventMeasurementRatio(Float.parseFloat(value));
|
||||
}
|
||||
}
|
||||
rStatEventVoltageDPOS.add(rStatEventVoltageDPO);
|
||||
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
if (!CollectionUtils.isEmpty(rStatEventVoltageDPOS)) {
|
||||
rStatEventVoltageDPOService.saveOrUpdateBatchByMultiId(rStatEventVoltageDPOS, 500);
|
||||
}
|
||||
}
|
||||
|
||||
private List<Integer> getTransientStatisDataNew(DictData dictData, List<RMpEventDetailDPO> rMpEventDetailDPOS) {
|
||||
List<Integer> result = new ArrayList<>(2);
|
||||
Integer value = 0;
|
||||
Integer count = 0;
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.VOLTAGE_DIP.getCode())) {
|
||||
value = Integer.valueOf(rMpEventDetailDPOS.stream().filter(temp -> temp.getSagTimes() > 0).count() + "");
|
||||
count = Integer.valueOf(rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getSagTimes).sum() + "");
|
||||
}
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.VOLTAGE_RISE.getCode())) {
|
||||
value = Integer.valueOf(rMpEventDetailDPOS.stream().filter(temp -> temp.getSwellTimes() > 0).count() + "");
|
||||
count = Integer.valueOf(rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getSwellTimes).sum() + "");
|
||||
}
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.SHORT_INTERRUPTIONS.getCode())) {
|
||||
value = Integer.valueOf(rMpEventDetailDPOS.stream().filter(temp -> temp.getInterruptTimes() > 0).count() + "");
|
||||
count = Integer.valueOf(rMpEventDetailDPOS.stream().mapToInt(RMpEventDetailDPO::getInterruptTimes).sum() + "");
|
||||
}
|
||||
result.add(value);
|
||||
result.add(count);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
||||
List<RStatEventVoltageMPO> rStatEventVoltageMPOS = new ArrayList<>();
|
||||
DecimalFormat df = new DecimalFormat("0.00");
|
||||
|
||||
DateTime begin = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
DateTime end = DateUtil.endOfMonth(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> eventStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_STATIS.getCode()).getData();
|
||||
|
||||
/*获取数据类型*/
|
||||
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
|
||||
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
|
||||
/*获取监测点类型类型*/
|
||||
List<DictData> lineSortList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_SORT.getCode()).getData();
|
||||
Map<String, DictData> lineSortMap = lineSortList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
|
||||
/*获取监测点电压等级*/
|
||||
List<DictData> voltageList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_VOLTAGE_STAND.getCode()).getData();
|
||||
Map<String, DictData> voltageMap = voltageList.stream().collect(Collectors.toMap(DictData::getValue, dictData -> dictData));
|
||||
|
||||
//详情表
|
||||
QueryWrapper<RMpEventDetailMPO> rMpEventDetailMPOQueryWrapper = new QueryWrapper<>();
|
||||
//org表
|
||||
QueryWrapper<RStatOrgMPO> rStatOrgMPOQueryWrapper = new QueryWrapper<>();
|
||||
//天表
|
||||
QueryWrapper<RStatEventVoltageDPO> rStatEventVoltageDPOQueryWrapper = new QueryWrapper<>();
|
||||
|
||||
calculatedParam.getIdList().forEach(deptGetChildrenMoreDTO -> {
|
||||
|
||||
/*主网*/
|
||||
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getLineBaseList())) {
|
||||
List<LineDevGetDTO> lineBaseList = deptGetChildrenMoreDTO.getLineBaseList();
|
||||
Map<String, List<LineDevGetDTO>> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineTag));
|
||||
collect.forEach((k, v) -> {
|
||||
Map<String, List<LineDevGetDTO>> collect2 = v.stream().collect(Collectors.groupingBy(LineDevGetDTO::getVoltageLevel));
|
||||
|
||||
collect2.forEach((k1, v1) -> {
|
||||
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
|
||||
rMpEventDetailMPOQueryWrapper.clear();
|
||||
rMpEventDetailMPOQueryWrapper.
|
||||
in("measurement_point_id", collect1).
|
||||
between("data_date",begin,end);
|
||||
List<RMpEventDetailMPO> rMpEventDetailMPOS = rMpEventDetailMMapper.selectList(rMpEventDetailMPOQueryWrapper);
|
||||
|
||||
rStatOrgMPOQueryWrapper.clear();
|
||||
rStatOrgMPOQueryWrapper.select("effective_measurement_accrued").
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("measurement_type_class", k).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
between("data_date",begin,end);
|
||||
RStatOrgMPO rStatOrgMPO = rStatOrgMMapper.selectOne(rStatOrgMPOQueryWrapper);
|
||||
|
||||
|
||||
|
||||
eventStatis.forEach(dictData -> {
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.DISTURBANCE.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.OTHER.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.RECORDING_WAVE.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATORS.getCode())) {
|
||||
return;
|
||||
}
|
||||
|
||||
//天表
|
||||
rStatEventVoltageDPOQueryWrapper.clear();
|
||||
rStatEventVoltageDPOQueryWrapper.
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
between("data_date",begin,end).
|
||||
eq("measurement_type_class", k).
|
||||
eq("event_type", dictData.getId()).
|
||||
eq("voltage_type",k1).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
List<RStatEventVoltageDPO> rStatEventVoltageDPOS = rStatEventVoltageDPOMapper.selectList(rStatEventVoltageDPOQueryWrapper);
|
||||
|
||||
//累计发生暂态监测点数
|
||||
List<Integer> transientStatisDataNew = getTransientStatisDataNewByM(dictData, rMpEventDetailMPOS);
|
||||
|
||||
RStatEventVoltageMPO rStatEventVoltageMPO = new RStatEventVoltageMPO();
|
||||
rStatEventVoltageMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatEventVoltageMPO.setDataDate(localDate);
|
||||
rStatEventVoltageMPO.setMeasurementTypeClass(k);
|
||||
rStatEventVoltageMPO.setEventType(dictData.getId());
|
||||
rStatEventVoltageMPO.setVoltageType(k1);
|
||||
rStatEventVoltageMPO.setDataType(dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
|
||||
/*3、日均发生暂态监测点数*/
|
||||
double asDouble = rStatEventVoltageDPOS.stream().mapToDouble(RStatEventVoltageDPO::getEventMeasurement).average().getAsDouble();
|
||||
asDouble = BigDecimal.valueOf(asDouble).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
rStatEventVoltageMPO.setEventMeasurementAverage(Float.parseFloat(asDouble+""));
|
||||
|
||||
/*4、累计发生暂态监测点数*/
|
||||
rStatEventVoltageMPO.setEventMeasurementAccrued(transientStatisDataNew.get(0));
|
||||
|
||||
int eventMeasurementsum = rStatEventVoltageDPOS.stream().mapToInt(RStatEventVoltageDPO::getEventMeasurement).sum();
|
||||
int eventCountsum = rStatEventVoltageDPOS.stream().mapToInt(RStatEventVoltageDPO::getEventCount).sum();
|
||||
/*5、暂态指标发生频次*/
|
||||
if (eventMeasurementsum==0){
|
||||
rStatEventVoltageMPO.setEventFreq(0.00f);
|
||||
}else {
|
||||
String value = df.format((float) eventCountsum / eventMeasurementsum);
|
||||
rStatEventVoltageMPO.setEventFreq(Float.parseFloat(value));
|
||||
|
||||
}
|
||||
|
||||
/*6、暂态指标发生次数*/
|
||||
rStatEventVoltageMPO.setEventCount(eventCountsum);
|
||||
/*7、日均发生暂态监测点数占比*/
|
||||
double asDouble2 = rStatEventVoltageDPOS.stream().mapToDouble(RStatEventVoltageDPO::getEventMeasurementRatio).average().getAsDouble();
|
||||
asDouble2 = BigDecimal.valueOf(asDouble2).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
rStatEventVoltageMPO.setEventMeasurementRatioAverage(Float.parseFloat(asDouble2+""));
|
||||
|
||||
if (Objects.isNull(rStatOrgMPO)) {
|
||||
rStatEventVoltageMPO.setEventMeasurementRatioAccrued(0.00f);
|
||||
} else {
|
||||
if (rStatOrgMPO.getEffectiveMeasurementAccrued() == 0) {
|
||||
rStatEventVoltageMPO.setEventMeasurementRatioAccrued(0.00f);
|
||||
} else {
|
||||
String value = df.format(rStatEventVoltageMPO.getEventMeasurementAccrued() / rStatOrgMPO.getEffectiveMeasurementAccrued().floatValue());
|
||||
rStatEventVoltageMPO.setEventMeasurementRatioAccrued(Float.parseFloat(value));
|
||||
}
|
||||
}
|
||||
rStatEventVoltageMPOS.add(rStatEventVoltageMPO);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
/*配网*/
|
||||
if (!CollectionUtils.isEmpty(deptGetChildrenMoreDTO.getPwMonitorIds())) {
|
||||
List<LineDevGetDTO> pwMonitorIds = deptGetChildrenMoreDTO.getPwMonitorIds();
|
||||
Map<Integer, List<LineDevGetDTO>> collect = pwMonitorIds.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineType));
|
||||
collect.forEach((k, v) -> {
|
||||
Map<String, List<LineDevGetDTO>> collect2 = v.stream().collect(Collectors.groupingBy(LineDevGetDTO::getVoltageLevel));
|
||||
|
||||
collect2.forEach((k1, v1) -> {
|
||||
List<String> collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList());
|
||||
|
||||
rMpEventDetailMPOQueryWrapper.clear();
|
||||
rMpEventDetailMPOQueryWrapper.
|
||||
in("measurement_point_id", collect1).
|
||||
between("data_date",begin,end);
|
||||
List<RMpEventDetailMPO> rMpEventDetailMPOS = rMpEventDetailMMapper.selectList(rMpEventDetailMPOQueryWrapper);
|
||||
|
||||
rStatOrgMPOQueryWrapper.clear();
|
||||
rStatOrgMPOQueryWrapper.select("effective_measurement_accrued").
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
eq("measurement_type_class", k).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
between("data_date",begin,end);
|
||||
RStatOrgMPO rStatOrgMPO = rStatOrgMMapper.selectOne(rStatOrgMPOQueryWrapper);
|
||||
eventStatis.forEach(dictData -> {
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.DISTURBANCE.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.OTHER.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.RECORDING_WAVE.getCode())
|
||||
|| Objects.equals(dictData.getCode(), DicDataEnum.TOTAL_INDICATORS.getCode())) {
|
||||
return;
|
||||
}
|
||||
//天表
|
||||
rStatEventVoltageDPOQueryWrapper.clear();
|
||||
rStatEventVoltageDPOQueryWrapper.
|
||||
eq("org_no", deptGetChildrenMoreDTO.getUnitId()).
|
||||
between("data_date",begin,end).
|
||||
eq("measurement_type_class", k).
|
||||
eq("event_type", dictData.getId()).
|
||||
eq("voltage_type",k1).
|
||||
eq("data_type", dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId());
|
||||
List<RStatEventVoltageDPO> rStatEventVoltageDPOS = rStatEventVoltageDPOMapper.selectList(rStatEventVoltageDPOQueryWrapper);
|
||||
|
||||
RStatEventVoltageMPO rStatEventVoltageMPO = new RStatEventVoltageMPO();
|
||||
rStatEventVoltageMPO.setOrgNo(deptGetChildrenMoreDTO.getUnitId());
|
||||
rStatEventVoltageMPO.setDataDate(localDate);
|
||||
rStatEventVoltageMPO.setMeasurementTypeClass(getmeasurementType(k, lineSortMap));
|
||||
rStatEventVoltageMPO.setEventType(dictData.getId());
|
||||
rStatEventVoltageMPO.setVoltageType(k1);
|
||||
rStatEventVoltageMPO.setDataType(dataTypeMap.get(DicDataEnum.DISTRIBUTION_POINT.getCode()).getId());
|
||||
|
||||
List<Integer> transientStatisDataNew = getTransientStatisDataNewByM(dictData, rMpEventDetailMPOS);
|
||||
|
||||
/*3、日均发生暂态监测点数*/
|
||||
double asDouble = rStatEventVoltageDPOS.stream().mapToDouble(RStatEventVoltageDPO::getEventMeasurement).average().getAsDouble();
|
||||
asDouble = BigDecimal.valueOf(asDouble).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
rStatEventVoltageMPO.setEventMeasurementAverage(Float.parseFloat(asDouble+""));
|
||||
|
||||
/*4、累计发生暂态监测点数*/
|
||||
rStatEventVoltageMPO.setEventMeasurementAccrued(transientStatisDataNew.get(0));
|
||||
|
||||
int eventMeasurementsum = rStatEventVoltageDPOS.stream().mapToInt(RStatEventVoltageDPO::getEventMeasurement).sum();
|
||||
int eventCountsum = rStatEventVoltageDPOS.stream().mapToInt(RStatEventVoltageDPO::getEventCount).sum();
|
||||
/*5、暂态指标发生频次*/
|
||||
if (eventMeasurementsum==0){
|
||||
rStatEventVoltageMPO.setEventFreq(0.00f);
|
||||
}else {
|
||||
String value = df.format((float) eventCountsum / eventMeasurementsum);
|
||||
rStatEventVoltageMPO.setEventFreq(Float.parseFloat(value));
|
||||
|
||||
}
|
||||
|
||||
/*6、暂态指标发生次数*/
|
||||
rStatEventVoltageMPO.setEventCount(eventCountsum);
|
||||
/*7、日均发生暂态监测点数占比*/
|
||||
double asDouble2 = rStatEventVoltageDPOS.stream().mapToDouble(RStatEventVoltageDPO::getEventMeasurementRatio).average().getAsDouble();
|
||||
asDouble2 = BigDecimal.valueOf(asDouble2).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
||||
rStatEventVoltageMPO.setEventMeasurementRatioAverage(Float.parseFloat(asDouble2+""));
|
||||
|
||||
if (Objects.isNull(rStatOrgMPO)) {
|
||||
rStatEventVoltageMPO.setEventMeasurementRatioAccrued(0.00f);
|
||||
} else {
|
||||
if (rStatOrgMPO.getEffectiveMeasurementAccrued() == 0) {
|
||||
rStatEventVoltageMPO.setEventMeasurementRatioAccrued(0.00f);
|
||||
} else {
|
||||
String value = df.format(rStatEventVoltageMPO.getEventMeasurementAccrued() / rStatOrgMPO.getEffectiveMeasurementAccrued().floatValue());
|
||||
rStatEventVoltageMPO.setEventMeasurementRatioAccrued(Float.parseFloat(value));
|
||||
}
|
||||
}
|
||||
rStatEventVoltageMPOS.add(rStatEventVoltageMPO);
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
if (!CollectionUtils.isEmpty(rStatEventVoltageMPOS)) {
|
||||
rStatEventVoltageMPOService.saveOrUpdateBatchByMultiId(rStatEventVoltageMPOS, 500);
|
||||
}
|
||||
}
|
||||
|
||||
private List<Integer> getTransientStatisDataNewByM(DictData dictData, List<RMpEventDetailMPO> rMpEventDetailMPOS) {
|
||||
List<Integer> result = new ArrayList<>(2);
|
||||
Integer value = 0;
|
||||
Integer count = 0;
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.VOLTAGE_DIP.getCode())) {
|
||||
value = Integer.valueOf(rMpEventDetailMPOS.stream().filter(temp -> temp.getSagTimes() > 0).count() + "");
|
||||
count = Integer.valueOf(rMpEventDetailMPOS.stream().mapToInt(RMpEventDetailMPO::getSagTimes).sum() + "");
|
||||
}
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.VOLTAGE_RISE.getCode())) {
|
||||
value = Integer.valueOf(rMpEventDetailMPOS.stream().filter(temp -> temp.getSwellTimes() > 0).count() + "");
|
||||
count = Integer.valueOf(rMpEventDetailMPOS.stream().mapToInt(RMpEventDetailMPO::getSwellTimes).sum() + "");
|
||||
}
|
||||
if (Objects.equals(dictData.getCode(), DicDataEnum.SHORT_INTERRUPTIONS.getCode())) {
|
||||
value = Integer.valueOf(rMpEventDetailMPOS.stream().filter(temp -> temp.getInterruptTimes() > 0).count() + "");
|
||||
count = Integer.valueOf(rMpEventDetailMPOS.stream().mapToInt(RMpEventDetailMPO::getInterruptTimes).sum() + "");
|
||||
}
|
||||
result.add(value);
|
||||
result.add(count);
|
||||
return result;
|
||||
}
|
||||
|
||||
/**----------------------------------------------------------------------------------------------------------------**/
|
||||
|
||||
|
||||
@Override
|
||||
public void handler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
|
||||
switch (type) {
|
||||
@@ -74,6 +513,8 @@ public class RStatEventVoltageServiceImpl implements RStatEventVoltageService {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//天表
|
||||
public void rStartEventVoltageDHandler(List<DeptGetChildrenMoreDTO> data, String dataDate, Integer type) {
|
||||
List<RStatEventVoltageDPO> rStatEventVoltageDPOS = new ArrayList<>();
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
package com.njcn.prepare.harmonic.service.mysql.newalgorithm.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
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.core.conditions.query.QueryWrapper;
|
||||
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
|
||||
import com.njcn.device.pms.pojo.po.RStatOrgPO;
|
||||
import com.njcn.harmonic.pojo.po.RStatOrgMPO;
|
||||
import com.njcn.prepare.bo.CalculatedParam;
|
||||
import com.njcn.prepare.harmonic.mapper.mysql.area.*;
|
||||
import com.njcn.prepare.harmonic.pojo.mysql.po.*;
|
||||
import com.njcn.prepare.harmonic.service.mysql.area.RStatHarmonicDPOService;
|
||||
@@ -25,6 +30,7 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -57,6 +63,395 @@ public class RStatLoadTypeServiceImpl implements RStatLoadTypeService {
|
||||
private final RStatOrgMMapper rStatOrgMMapper;
|
||||
private final RStatOrgQMapper rStatOrgQMapper;
|
||||
private final RStatOrgYMapper rStatOrgYMapper;
|
||||
|
||||
@Override
|
||||
public void handleDay(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN);
|
||||
List<RStatLoadTypeDPO> result = new ArrayList<>();
|
||||
List<DictData> dataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.MONITORING_LABELS.getCode()).getData();
|
||||
//过滤监测对象类型(陆上风电、分布式光伏、电气化铁路、其他非线性负荷)
|
||||
Map<String, DictData> collect = dataList.stream().filter(temp -> Objects.equals(temp.getLevel(), 1)).collect(Collectors.toMap(DictData::getId, dictData -> dictData));
|
||||
|
||||
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
|
||||
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
;
|
||||
/*获取稳态统计指标*/
|
||||
List<DictData> steadyStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
|
||||
Map<String, DictData> steadyStatisMap = steadyStatis.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
calculatedParam.getIdList().forEach(dept -> {
|
||||
|
||||
|
||||
collect.forEach((m,n)->{
|
||||
RStatLoadTypeDPO rStatLoadTypeDPO = new RStatLoadTypeDPO();
|
||||
rStatLoadTypeDPO.setDataDate(localDate);
|
||||
rStatLoadTypeDPO.setOrgNo(dept.getUnitId());
|
||||
rStatLoadTypeDPO.setLoadType(m);
|
||||
/*只计算谐波电压、谐波电流、三相电压不平衡度、负序电流/闪变*/
|
||||
RStatHarmonicDPO one = rStatHarmonicDPOService.lambdaQuery().eq(RStatHarmonicDPO::getOrgNo, dept.getUnitId()).
|
||||
eq(RStatHarmonicDPO::getDataDate, localDate).
|
||||
eq(RStatHarmonicDPO::getMeasurementTypeClass, m).
|
||||
eq(RStatHarmonicDPO::getDataType, dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
eq(RStatHarmonicDPO::getHarmonicType, steadyStatisMap.get(DicDataEnum.HARMONIC_VOLTAGE.getCode()).getId()).one();
|
||||
if(Objects.nonNull(one)){
|
||||
rStatLoadTypeDPO.setVRatio(one.getOverLimitMeasurementRatio());
|
||||
}else {
|
||||
rStatLoadTypeDPO.setVRatio(0.00);
|
||||
}
|
||||
RStatHarmonicDPO two = rStatHarmonicDPOService.lambdaQuery().eq(RStatHarmonicDPO::getOrgNo, dept.getUnitId()).
|
||||
eq(RStatHarmonicDPO::getDataDate, localDate).
|
||||
eq(RStatHarmonicDPO::getMeasurementTypeClass, m).
|
||||
eq(RStatHarmonicDPO::getDataType, dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
eq(RStatHarmonicDPO::getHarmonicType, steadyStatisMap.get(DicDataEnum.HARMONIC_CURRENT.getCode()).getId()).one();
|
||||
if(Objects.nonNull(two)){
|
||||
rStatLoadTypeDPO.setIRatio(two.getOverLimitMeasurementRatio());
|
||||
}else {
|
||||
rStatLoadTypeDPO.setIRatio(0.00);
|
||||
}
|
||||
RStatHarmonicDPO three = rStatHarmonicDPOService.lambdaQuery().eq(RStatHarmonicDPO::getOrgNo, dept.getUnitId()).
|
||||
eq(RStatHarmonicDPO::getDataDate, localDate).
|
||||
eq(RStatHarmonicDPO::getMeasurementTypeClass, m).
|
||||
eq(RStatHarmonicDPO::getDataType, dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
eq(RStatHarmonicDPO::getHarmonicType, steadyStatisMap.get(DicDataEnum.PHASE_VOLTAGE.getCode()).getId()).one();
|
||||
if(Objects.nonNull(three)){
|
||||
rStatLoadTypeDPO.setUnbalanceRatio(three.getOverLimitMeasurementRatio());
|
||||
}else {
|
||||
rStatLoadTypeDPO.setUnbalanceRatio(0.00);
|
||||
}
|
||||
RStatHarmonicDPO four = rStatHarmonicDPOService.lambdaQuery().eq(RStatHarmonicDPO::getOrgNo, dept.getUnitId()).
|
||||
eq(RStatHarmonicDPO::getDataDate, localDate).
|
||||
eq(RStatHarmonicDPO::getMeasurementTypeClass, m).
|
||||
eq(RStatHarmonicDPO::getDataType, dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
eq(RStatHarmonicDPO::getHarmonicType, steadyStatisMap.get(DicDataEnum.NEG_CURRENT.getCode()).getId()).one();
|
||||
if(Objects.nonNull(four)){
|
||||
rStatLoadTypeDPO.setINegRatio(four.getOverLimitMeasurementRatio());
|
||||
}else {
|
||||
rStatLoadTypeDPO.setINegRatio(0.00);
|
||||
}
|
||||
RStatHarmonicDPO five = rStatHarmonicDPOService.lambdaQuery().eq(RStatHarmonicDPO::getOrgNo, dept.getUnitId()).
|
||||
eq(RStatHarmonicDPO::getDataDate, localDate).
|
||||
eq(RStatHarmonicDPO::getMeasurementTypeClass, m).
|
||||
eq(RStatHarmonicDPO::getDataType, dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
eq(RStatHarmonicDPO::getHarmonicType, steadyStatisMap.get(DicDataEnum.FLICKER.getCode()).getId()).one();
|
||||
if(Objects.nonNull(five)){
|
||||
rStatLoadTypeDPO.setFlickerRatio(five.getOverLimitMeasurementRatio());
|
||||
}else {
|
||||
rStatLoadTypeDPO.setFlickerRatio(0.00);
|
||||
}
|
||||
result.add(rStatLoadTypeDPO);
|
||||
});
|
||||
});
|
||||
|
||||
if(CollectionUtil.isNotEmpty(result)){
|
||||
rStatLoadTypeDPOService.saveOrUpdateBatchByMultiId(result,500);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleMonth(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
||||
|
||||
DateTime begin = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
DateTime end = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN);
|
||||
List<RStatLoadTypeMPO> result = new ArrayList<>();
|
||||
QueryWrapper<RStatHarmonicMPO> queryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatOrgMPO> rStatOrgMPOQueryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatLoadTypeDPO> rStatLoadTypeDPOQueryWrapper = new QueryWrapper<>();
|
||||
|
||||
List<DictData> dataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.MONITORING_LABELS.getCode()).getData();
|
||||
//过滤监测对象类型(陆上风电、分布式光伏、电气化铁路、其他非线性负荷)
|
||||
Map<String, DictData> collect = dataList.stream().filter(temp -> Objects.equals(temp.getLevel(), 1)).collect(Collectors.toMap(DictData::getId, dictData -> dictData));
|
||||
|
||||
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
|
||||
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
;
|
||||
/*获取稳态统计指标*/
|
||||
List<DictData> steadyStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
|
||||
Map<String, DictData> steadyStatisMap = steadyStatis.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
calculatedParam.getIdList().forEach(dept -> {
|
||||
|
||||
|
||||
collect.forEach((m,n)->{
|
||||
rStatOrgMPOQueryWrapper.clear();
|
||||
rStatOrgMPOQueryWrapper.eq("measurement_type_class",m).
|
||||
eq("org_no",dept.getUnitId()).
|
||||
between("data_date",begin,end);
|
||||
List<RStatOrgMPO> rStatOrgMPOS = rStatOrgMMapper.selectList(rStatOrgMPOQueryWrapper);
|
||||
|
||||
queryWrapper.clear();
|
||||
queryWrapper.eq("org_no",dept.getUnitId()).
|
||||
between("data_date",begin,end);
|
||||
List<RStatHarmonicMPO> rStatHarmonicMPOS = rStatHarmonicMPOMapper.selectList(queryWrapper);
|
||||
rStatLoadTypeDPOQueryWrapper.clear();
|
||||
rStatLoadTypeDPOQueryWrapper.eq("org_no",dept.getUnitId()).
|
||||
eq("load_type",m).
|
||||
between("data_date",begin,end);
|
||||
List<RStatLoadTypeDPO> rStatLoadTypeDPOS = rStatLoadTypeDPOService.getBaseMapper().selectList(rStatLoadTypeDPOQueryWrapper);
|
||||
|
||||
RStatLoadTypeMPO rStatLoadTypeMPO = new RStatLoadTypeMPO();
|
||||
rStatLoadTypeMPO.setDataDate(localDate);
|
||||
rStatLoadTypeMPO.setOrgNo(dept.getUnitId());
|
||||
rStatLoadTypeMPO.setLoadType(m);
|
||||
/*2、有效接入监测点数*/
|
||||
if(CollectionUtils.isEmpty(rStatOrgMPOS)){
|
||||
rStatLoadTypeMPO.setEffectiveMeasurement(0);
|
||||
}else {
|
||||
rStatLoadTypeMPO.setEffectiveMeasurement(rStatOrgMPOS.get(0).getEffectiveMeasurementAccrued());
|
||||
}
|
||||
/*4、谐波电压超标点数6、谐波电流超标点数*/
|
||||
if(CollectionUtils.isEmpty(rStatHarmonicMPOS)){
|
||||
rStatLoadTypeMPO.setVCount(0);
|
||||
rStatLoadTypeMPO.setICount(0);
|
||||
rStatLoadTypeMPO.setINegCount(0);
|
||||
rStatLoadTypeMPO.setUnbalanceCount(0);
|
||||
rStatLoadTypeMPO.setFlickerCount(0);
|
||||
}else {
|
||||
Optional<RStatHarmonicMPO> vfirst = rStatHarmonicMPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.HARMONIC_VOLTAGE.getCode()).getId())).findFirst();
|
||||
rStatLoadTypeMPO.setVCount(vfirst.isPresent() ? vfirst.get().getOverLimitMeasurementAccrued(): 0);
|
||||
Optional<RStatHarmonicMPO> ifirst = rStatHarmonicMPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.HARMONIC_CURRENT.getCode()).getId())).findFirst();
|
||||
rStatLoadTypeMPO.setICount(ifirst.isPresent() ? ifirst.get().getOverLimitMeasurementAccrued(): 0);
|
||||
Optional<RStatHarmonicMPO> pfirst = rStatHarmonicMPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.PHASE_VOLTAGE.getCode()).getId())).findFirst();
|
||||
Optional<RStatHarmonicMPO> nfirst = rStatHarmonicMPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.NEG_CURRENT.getCode()).getId())).findFirst();
|
||||
Optional<RStatHarmonicMPO> ffirst = rStatHarmonicMPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.FLICKER.getCode()).getId())).findFirst();
|
||||
|
||||
rStatLoadTypeMPO.setINegCount(nfirst.isPresent() ? nfirst.get().getOverLimitMeasurementAccrued(): 0);
|
||||
rStatLoadTypeMPO.setUnbalanceCount(pfirst.isPresent() ? pfirst.get().getOverLimitMeasurementAccrued(): 0);
|
||||
rStatLoadTypeMPO.setFlickerCount(ffirst.isPresent() ? ffirst.get().getOverLimitMeasurementAccrued(): 0);
|
||||
|
||||
}
|
||||
/*3、日均谐波电压超标点占比5、日均谐波电流超标点占比,7、日均三相电压不平衡度超标点占比9、日均负序电流超标点占比11、日均闪变超标点占比*/
|
||||
if(CollectionUtils.isEmpty(rStatLoadTypeDPOS)){
|
||||
rStatLoadTypeMPO.setVAverage(0.00);
|
||||
rStatLoadTypeMPO.setIAverage(0.00);
|
||||
rStatLoadTypeMPO.setUnbalanceAverage(0.00);
|
||||
rStatLoadTypeMPO.setFlickerAverage(0.00);
|
||||
rStatLoadTypeMPO.setINegAverage(0.00);
|
||||
}else {
|
||||
double vavg = rStatLoadTypeDPOS.stream().mapToDouble(RStatLoadTypeDPO::getVRatio).average().getAsDouble();
|
||||
rStatLoadTypeMPO.setVAverage(vavg);
|
||||
double iavge = rStatLoadTypeDPOS.stream().mapToDouble(RStatLoadTypeDPO::getIRatio).average().getAsDouble();
|
||||
rStatLoadTypeMPO.setIAverage(iavge);
|
||||
double uavge = rStatLoadTypeDPOS.stream().mapToDouble(RStatLoadTypeDPO::getUnbalanceRatio).average().getAsDouble();
|
||||
rStatLoadTypeMPO.setUnbalanceAverage(uavge);
|
||||
double inavge = rStatLoadTypeDPOS.stream().mapToDouble(RStatLoadTypeDPO::getINegRatio).average().getAsDouble();
|
||||
double favg = rStatLoadTypeDPOS.stream().mapToDouble(RStatLoadTypeDPO::getFlickerRatio).average().getAsDouble();
|
||||
rStatLoadTypeMPO.setFlickerAverage(favg);
|
||||
rStatLoadTypeMPO.setINegAverage(inavge);
|
||||
|
||||
}
|
||||
result.add(rStatLoadTypeMPO);
|
||||
});
|
||||
});
|
||||
if(CollectionUtil.isNotEmpty(result)){
|
||||
rStatLoadTypeMPOService.saveOrUpdateBatchByMultiId(result,500);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleQtr(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
||||
|
||||
DateTime begin = DateUtil.beginOfQuarter(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
DateTime end = DateUtil.endOfQuarter(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN);
|
||||
|
||||
List<RStatLoadTypeQPO> result = new ArrayList<>();
|
||||
QueryWrapper<RStatHarmonicQPO> queryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatOrgQPO> rStatOrgQPOQueryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatLoadTypeMPO> rStatLoadTypeMPOQueryWrapper = new QueryWrapper<>();
|
||||
|
||||
List<DictData> dataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.MONITORING_LABELS.getCode()).getData();
|
||||
//过滤监测对象类型(陆上风电、分布式光伏、电气化铁路、其他非线性负荷)
|
||||
Map<String, DictData> collect = dataList.stream().filter(temp -> Objects.equals(temp.getLevel(), 1)).collect(Collectors.toMap(DictData::getId, dictData -> dictData));
|
||||
|
||||
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
|
||||
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
;
|
||||
/*获取稳态统计指标*/
|
||||
List<DictData> steadyStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
|
||||
Map<String, DictData> steadyStatisMap = steadyStatis.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
calculatedParam.getIdList().forEach(dept -> {
|
||||
|
||||
|
||||
collect.forEach((m,n)->{
|
||||
rStatOrgQPOQueryWrapper.clear();
|
||||
rStatOrgQPOQueryWrapper.eq("measurement_type_class",m).
|
||||
eq("org_no",dept.getUnitId()).
|
||||
between("data_date",begin,end);
|
||||
List<RStatOrgQPO> rStatOrgQPOS = rStatOrgQMapper.selectList(rStatOrgQPOQueryWrapper);
|
||||
|
||||
queryWrapper.clear();
|
||||
queryWrapper.eq("org_no",dept.getUnitId()).
|
||||
between("data_date",begin,end);
|
||||
List<RStatHarmonicQPO> rStatHarmonicQPOS = rStatHarmonicQPOMapper.selectList(queryWrapper);
|
||||
rStatLoadTypeMPOQueryWrapper.clear();
|
||||
rStatLoadTypeMPOQueryWrapper.eq("org_no",dept.getUnitId()).
|
||||
eq("load_type",m).
|
||||
between("data_date",begin,end);
|
||||
List<RStatLoadTypeMPO> rStatLoadTypeMPOS = rStatLoadTypeMPOService.getBaseMapper().selectList(rStatLoadTypeMPOQueryWrapper);
|
||||
|
||||
RStatLoadTypeQPO rStatLoadTypeQPO = new RStatLoadTypeQPO();
|
||||
rStatLoadTypeQPO.setDataDate(localDate);
|
||||
rStatLoadTypeQPO.setOrgNo(dept.getUnitId());
|
||||
rStatLoadTypeQPO.setLoadType(m);
|
||||
/*2、有效接入监测点数*/
|
||||
if(CollectionUtils.isEmpty(rStatOrgQPOS)){
|
||||
rStatLoadTypeQPO.setEffectiveMeasurement(0);
|
||||
}else {
|
||||
rStatLoadTypeQPO.setEffectiveMeasurement(rStatOrgQPOS.get(0).getEffectiveMeasurementAccrued());
|
||||
}
|
||||
/*4、谐波电压超标点数6、谐波电流超标点数*/
|
||||
if(CollectionUtils.isEmpty(rStatHarmonicQPOS)){
|
||||
rStatLoadTypeQPO.setVCount(0);
|
||||
rStatLoadTypeQPO.setICount(0);
|
||||
rStatLoadTypeQPO.setINegCount(0);
|
||||
rStatLoadTypeQPO.setUnbalanceCount(0);
|
||||
rStatLoadTypeQPO.setFlickerCount(0);
|
||||
}else {
|
||||
Optional<RStatHarmonicQPO> vfirst = rStatHarmonicQPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.HARMONIC_VOLTAGE.getCode()).getId())).findFirst();
|
||||
rStatLoadTypeQPO.setVCount(vfirst.isPresent() ? vfirst.get().getOverLimitMeasurementAccrued(): 0);
|
||||
Optional<RStatHarmonicQPO> ifirst = rStatHarmonicQPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.HARMONIC_CURRENT.getCode()).getId())).findFirst();
|
||||
rStatLoadTypeQPO.setICount(ifirst.isPresent() ? ifirst.get().getOverLimitMeasurementAccrued(): 0);
|
||||
Optional<RStatHarmonicQPO> pfirst = rStatHarmonicQPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.PHASE_VOLTAGE.getCode()).getId())).findFirst();
|
||||
Optional<RStatHarmonicQPO> nfirst = rStatHarmonicQPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.NEG_CURRENT.getCode()).getId())).findFirst();
|
||||
Optional<RStatHarmonicQPO> ffirst = rStatHarmonicQPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.FLICKER.getCode()).getId())).findFirst();
|
||||
|
||||
rStatLoadTypeQPO.setINegCount(nfirst.isPresent() ? nfirst.get().getOverLimitMeasurementAccrued(): 0);
|
||||
rStatLoadTypeQPO.setUnbalanceCount(pfirst.isPresent() ? pfirst.get().getOverLimitMeasurementAccrued(): 0);
|
||||
rStatLoadTypeQPO.setFlickerCount(ffirst.isPresent() ? ffirst.get().getOverLimitMeasurementAccrued(): 0);
|
||||
|
||||
}
|
||||
/*3、日均谐波电压超标点占比5、日均谐波电流超标点占比,7、日均三相电压不平衡度超标点占比9、日均负序电流超标点占比11、日均闪变超标点占比*/
|
||||
if(CollectionUtils.isEmpty(rStatLoadTypeMPOS)){
|
||||
rStatLoadTypeQPO.setVAverage(0.00);
|
||||
rStatLoadTypeQPO.setIAverage(0.00);
|
||||
rStatLoadTypeQPO.setUnbalanceAverage(0.00);
|
||||
rStatLoadTypeQPO.setFlickerAverage(0.00);
|
||||
rStatLoadTypeQPO.setINegAverage(0.00);
|
||||
}else {
|
||||
double vavg = rStatLoadTypeMPOS.stream().mapToDouble(RStatLoadTypeMPO::getVAverage).average().getAsDouble();
|
||||
rStatLoadTypeQPO.setVAverage(vavg);
|
||||
double iavge = rStatLoadTypeMPOS.stream().mapToDouble(RStatLoadTypeMPO::getIAverage).average().getAsDouble();
|
||||
rStatLoadTypeQPO.setIAverage(iavge);
|
||||
double uavge = rStatLoadTypeMPOS.stream().mapToDouble(RStatLoadTypeMPO::getUnbalanceAverage).average().getAsDouble();
|
||||
rStatLoadTypeQPO.setUnbalanceAverage(uavge);
|
||||
double inavge = rStatLoadTypeMPOS.stream().mapToDouble(RStatLoadTypeMPO::getINegAverage).average().getAsDouble();
|
||||
double favg = rStatLoadTypeMPOS.stream().mapToDouble(RStatLoadTypeMPO::getFlickerAverage).average().getAsDouble();
|
||||
rStatLoadTypeQPO.setFlickerAverage(favg);
|
||||
rStatLoadTypeQPO.setINegAverage(inavge);
|
||||
|
||||
}
|
||||
result.add(rStatLoadTypeQPO);
|
||||
});
|
||||
});
|
||||
if(CollectionUtil.isNotEmpty(result)){
|
||||
rStatLoadTypeQPOService.saveOrUpdateBatchByMultiId(result,500);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleYear(CalculatedParam<DeptGetChildrenMoreDTO> calculatedParam) {
|
||||
|
||||
|
||||
DateTime begin = DateUtil.beginOfYear(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
DateTime end = DateUtil.endOfYear(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN));
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate( DateUtil.format(begin, DatePattern.NORM_DATE_PATTERN), DatePattern.NORM_DATE_PATTERN);
|
||||
|
||||
List<RStatLoadTypeYPO> result = new ArrayList<>();
|
||||
QueryWrapper<RStatHarmonicYPO> queryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatOrgYPO> rStatOrgYPOQueryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatLoadTypeMPO> rStatLoadTypeMPOQueryWrapper = new QueryWrapper<>();
|
||||
|
||||
List<DictData> dataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.MONITORING_LABELS.getCode()).getData();
|
||||
//过滤监测对象类型(陆上风电、分布式光伏、电气化铁路、其他非线性负荷)
|
||||
Map<String, DictData> collect = dataList.stream().filter(temp -> Objects.equals(temp.getLevel(), 1)).collect(Collectors.toMap(DictData::getId, dictData -> dictData));
|
||||
|
||||
List<DictData> dataTypeList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_TYPE.getCode()).getData();
|
||||
Map<String, DictData> dataTypeMap = dataTypeList.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
;
|
||||
/*获取稳态统计指标*/
|
||||
List<DictData> steadyStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
|
||||
Map<String, DictData> steadyStatisMap = steadyStatis.stream().collect(Collectors.toMap(DictData::getCode, dictData -> dictData));
|
||||
calculatedParam.getIdList().forEach(dept -> {
|
||||
|
||||
|
||||
collect.forEach((m,n)->{
|
||||
rStatOrgYPOQueryWrapper.clear();
|
||||
rStatOrgYPOQueryWrapper.eq("measurement_type_class",m).
|
||||
eq("org_no",dept.getUnitId()).
|
||||
between("data_date",begin,end);
|
||||
List<RStatOrgYPO> rStatOrgYPOS = rStatOrgYMapper.selectList(rStatOrgYPOQueryWrapper);
|
||||
|
||||
queryWrapper.clear();
|
||||
queryWrapper.eq("org_no",dept.getUnitId()).
|
||||
between("data_date",begin,end);
|
||||
List<RStatHarmonicYPO> rStatHarmonicYPOS = rStatHarmonicYPOMapper.selectList(queryWrapper);
|
||||
rStatLoadTypeMPOQueryWrapper.clear();
|
||||
rStatLoadTypeMPOQueryWrapper.eq("org_no",dept.getUnitId()).
|
||||
eq("load_type",m).
|
||||
between("data_date",begin,end);
|
||||
List<RStatLoadTypeMPO> rStatLoadTypeMPOS = rStatLoadTypeMPOService.getBaseMapper().selectList(rStatLoadTypeMPOQueryWrapper);
|
||||
|
||||
RStatLoadTypeYPO rStatLoadTypeYPO = new RStatLoadTypeYPO();
|
||||
rStatLoadTypeYPO.setDataDate(localDate);
|
||||
rStatLoadTypeYPO.setOrgNo(dept.getUnitId());
|
||||
rStatLoadTypeYPO.setLoadType(m);
|
||||
/*2、有效接入监测点数*/
|
||||
if(CollectionUtils.isEmpty(rStatOrgYPOS)){
|
||||
rStatLoadTypeYPO.setEffectiveMeasurement(0);
|
||||
}else {
|
||||
rStatLoadTypeYPO.setEffectiveMeasurement(rStatOrgYPOS.get(0).getEffectiveMeasurementAccrued());
|
||||
}
|
||||
/*4、谐波电压超标点数6、谐波电流超标点数*/
|
||||
if(CollectionUtils.isEmpty(rStatHarmonicYPOS)){
|
||||
rStatLoadTypeYPO.setVCount(0);
|
||||
rStatLoadTypeYPO.setICount(0);
|
||||
rStatLoadTypeYPO.setINegCount(0);
|
||||
rStatLoadTypeYPO.setUnbalanceCount(0);
|
||||
rStatLoadTypeYPO.setFlickerCount(0);
|
||||
}else {
|
||||
Optional<RStatHarmonicYPO> vfirst = rStatHarmonicYPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.HARMONIC_VOLTAGE.getCode()).getId())).findFirst();
|
||||
rStatLoadTypeYPO.setVCount(vfirst.isPresent() ? vfirst.get().getOverLimitMeasurementAccrued(): 0);
|
||||
Optional<RStatHarmonicYPO> ifirst = rStatHarmonicYPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.HARMONIC_CURRENT.getCode()).getId())).findFirst();
|
||||
rStatLoadTypeYPO.setICount(ifirst.isPresent() ? ifirst.get().getOverLimitMeasurementAccrued(): 0);
|
||||
Optional<RStatHarmonicYPO> pfirst = rStatHarmonicYPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.PHASE_VOLTAGE.getCode()).getId())).findFirst();
|
||||
Optional<RStatHarmonicYPO> nfirst = rStatHarmonicYPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.NEG_CURRENT.getCode()).getId())).findFirst();
|
||||
Optional<RStatHarmonicYPO> ffirst = rStatHarmonicYPOS.stream().filter(temp -> Objects.equals(temp.getHarmonicType(), steadyStatisMap.get(DicDataEnum.FLICKER.getCode()).getId())).findFirst();
|
||||
|
||||
rStatLoadTypeYPO.setINegCount(nfirst.isPresent() ? nfirst.get().getOverLimitMeasurementAccrued(): 0);
|
||||
rStatLoadTypeYPO.setUnbalanceCount(pfirst.isPresent() ? pfirst.get().getOverLimitMeasurementAccrued(): 0);
|
||||
rStatLoadTypeYPO.setFlickerCount(ffirst.isPresent() ? ffirst.get().getOverLimitMeasurementAccrued(): 0);
|
||||
|
||||
}
|
||||
/*3、日均谐波电压超标点占比5、日均谐波电流超标点占比,7、日均三相电压不平衡度超标点占比9、日均负序电流超标点占比11、日均闪变超标点占比*/
|
||||
if(CollectionUtils.isEmpty(rStatLoadTypeMPOS)){
|
||||
rStatLoadTypeYPO.setVAverage(0.00);
|
||||
rStatLoadTypeYPO.setIAverage(0.00);
|
||||
rStatLoadTypeYPO.setUnbalanceAverage(0.00);
|
||||
rStatLoadTypeYPO.setFlickerAverage(0.00);
|
||||
rStatLoadTypeYPO.setINegAverage(0.00);
|
||||
}else {
|
||||
double vavg = rStatLoadTypeMPOS.stream().mapToDouble(RStatLoadTypeMPO::getVAverage).average().getAsDouble();
|
||||
rStatLoadTypeYPO.setVAverage(vavg);
|
||||
double iavge = rStatLoadTypeMPOS.stream().mapToDouble(RStatLoadTypeMPO::getIAverage).average().getAsDouble();
|
||||
rStatLoadTypeYPO.setIAverage(iavge);
|
||||
double uavge = rStatLoadTypeMPOS.stream().mapToDouble(RStatLoadTypeMPO::getUnbalanceAverage).average().getAsDouble();
|
||||
rStatLoadTypeYPO.setUnbalanceAverage(uavge);
|
||||
double inavge = rStatLoadTypeMPOS.stream().mapToDouble(RStatLoadTypeMPO::getINegAverage).average().getAsDouble();
|
||||
double favg = rStatLoadTypeMPOS.stream().mapToDouble(RStatLoadTypeMPO::getFlickerAverage).average().getAsDouble();
|
||||
rStatLoadTypeYPO.setFlickerAverage(favg);
|
||||
rStatLoadTypeYPO.setINegAverage(inavge);
|
||||
|
||||
}
|
||||
result.add(rStatLoadTypeYPO);
|
||||
});
|
||||
});
|
||||
if(CollectionUtil.isNotEmpty(result)){
|
||||
rStatLoadTypeYPOService.saveOrUpdateBatchByMultiId(result,500);
|
||||
}
|
||||
|
||||
}
|
||||
@Override
|
||||
public void handler(List<Dept> deptList, String dataDate, Integer type) {
|
||||
switch (type) {
|
||||
@@ -76,11 +471,14 @@ public class RStatLoadTypeServiceImpl implements RStatLoadTypeService {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Transactional(rollbackFor = {Exception.class})
|
||||
@Async("asyncExecutor")
|
||||
@SneakyThrows
|
||||
private void hanlderYear(List<Dept> deptList, String dataDate, Integer type) {
|
||||
Date date = DateUtil.parse(dataDate);
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate(dataDate, DatePattern.NORM_DATE_PATTERN);
|
||||
List<RStatLoadTypeYPO> result = new ArrayList<>();
|
||||
QueryWrapper<RStatHarmonicYPO> queryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatOrgYPO> rStatOrgYPOQueryWrapper = new QueryWrapper<>();
|
||||
@@ -117,7 +515,7 @@ public class RStatLoadTypeServiceImpl implements RStatLoadTypeService {
|
||||
List<RStatLoadTypeMPO> rStatLoadTypeMPOS = rStatLoadTypeMPOService.getBaseMapper().selectList(rStatLoadTypeMPOQueryWrapper);
|
||||
|
||||
RStatLoadTypeYPO rStatLoadTypeYPO = new RStatLoadTypeYPO();
|
||||
rStatLoadTypeYPO.setDataDate(date);
|
||||
rStatLoadTypeYPO.setDataDate(localDate);
|
||||
rStatLoadTypeYPO.setOrgNo(dept.getId());
|
||||
rStatLoadTypeYPO.setLoadType(m);
|
||||
/*2、有效接入监测点数*/
|
||||
@@ -178,7 +576,7 @@ public class RStatLoadTypeServiceImpl implements RStatLoadTypeService {
|
||||
@Async("asyncExecutor")
|
||||
@SneakyThrows
|
||||
private void hanlderQtr(List<Dept> deptList, String dataDate, Integer type) {
|
||||
Date date = DateUtil.parse(dataDate);
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate(dataDate, DatePattern.NORM_DATE_PATTERN);
|
||||
List<RStatLoadTypeQPO> result = new ArrayList<>();
|
||||
QueryWrapper<RStatHarmonicQPO> queryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatOrgQPO> rStatOrgQPOQueryWrapper = new QueryWrapper<>();
|
||||
@@ -215,7 +613,7 @@ public class RStatLoadTypeServiceImpl implements RStatLoadTypeService {
|
||||
List<RStatLoadTypeMPO> rStatLoadTypeMPOS = rStatLoadTypeMPOService.getBaseMapper().selectList(rStatLoadTypeMPOQueryWrapper);
|
||||
|
||||
RStatLoadTypeQPO rStatLoadTypeQPO = new RStatLoadTypeQPO();
|
||||
rStatLoadTypeQPO.setDataDate(date);
|
||||
rStatLoadTypeQPO.setDataDate(localDate);
|
||||
rStatLoadTypeQPO.setOrgNo(dept.getId());
|
||||
rStatLoadTypeQPO.setLoadType(m);
|
||||
/*2、有效接入监测点数*/
|
||||
@@ -278,7 +676,7 @@ public class RStatLoadTypeServiceImpl implements RStatLoadTypeService {
|
||||
@Async("asyncExecutor")
|
||||
@SneakyThrows
|
||||
private void hanlderMonth(List<Dept> deptList, String dataDate, Integer type) {
|
||||
Date date = DateUtil.parse(dataDate);
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate(dataDate, DatePattern.NORM_DATE_PATTERN);
|
||||
List<RStatLoadTypeMPO> result = new ArrayList<>();
|
||||
QueryWrapper<RStatHarmonicMPO> queryWrapper = new QueryWrapper<>();
|
||||
QueryWrapper<RStatOrgMPO> rStatOrgMPOQueryWrapper = new QueryWrapper<>();
|
||||
@@ -315,7 +713,7 @@ public class RStatLoadTypeServiceImpl implements RStatLoadTypeService {
|
||||
List<RStatLoadTypeDPO> rStatLoadTypeDPOS = rStatLoadTypeDPOService.getBaseMapper().selectList(rStatLoadTypeDPOQueryWrapper);
|
||||
|
||||
RStatLoadTypeMPO rStatLoadTypeMPO = new RStatLoadTypeMPO();
|
||||
rStatLoadTypeMPO.setDataDate(date);
|
||||
rStatLoadTypeMPO.setDataDate(localDate);
|
||||
rStatLoadTypeMPO.setOrgNo(dept.getId());
|
||||
rStatLoadTypeMPO.setLoadType(m);
|
||||
/*2、有效接入监测点数*/
|
||||
@@ -379,7 +777,7 @@ public class RStatLoadTypeServiceImpl implements RStatLoadTypeService {
|
||||
@Async("asyncExecutor")
|
||||
@SneakyThrows
|
||||
private void hanlderDay(List<Dept> deptList, String dataDate, Integer type) {
|
||||
Date date = DateUtil.parse(dataDate);
|
||||
LocalDate localDate = LocalDateTimeUtil.parseDate(dataDate, DatePattern.NORM_DATE_PATTERN);
|
||||
List<RStatLoadTypeDPO> result = new ArrayList<>();
|
||||
List<DictData> dataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.MONITORING_LABELS.getCode()).getData();
|
||||
//过滤监测对象类型(陆上风电、分布式光伏、电气化铁路、其他非线性负荷)
|
||||
@@ -396,12 +794,12 @@ public class RStatLoadTypeServiceImpl implements RStatLoadTypeService {
|
||||
|
||||
collect.forEach((m,n)->{
|
||||
RStatLoadTypeDPO rStatLoadTypeDPO = new RStatLoadTypeDPO();
|
||||
rStatLoadTypeDPO.setDataDate(date);
|
||||
rStatLoadTypeDPO.setDataDate(localDate);
|
||||
rStatLoadTypeDPO.setOrgNo(dept.getId());
|
||||
rStatLoadTypeDPO.setLoadType(m);
|
||||
/*只计算谐波电压、谐波电流、三相电压不平衡度、负序电流/闪变*/
|
||||
RStatHarmonicDPO one = rStatHarmonicDPOService.lambdaQuery().eq(RStatHarmonicDPO::getOrgNo, dept.getId()).
|
||||
eq(RStatHarmonicDPO::getDataDate, date).
|
||||
eq(RStatHarmonicDPO::getDataDate, localDate).
|
||||
eq(RStatHarmonicDPO::getMeasurementTypeClass, m).
|
||||
eq(RStatHarmonicDPO::getDataType, dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
eq(RStatHarmonicDPO::getHarmonicType, steadyStatisMap.get(DicDataEnum.HARMONIC_VOLTAGE).getId()).one();
|
||||
@@ -411,7 +809,7 @@ public class RStatLoadTypeServiceImpl implements RStatLoadTypeService {
|
||||
rStatLoadTypeDPO.setVRatio(0.00);
|
||||
}
|
||||
RStatHarmonicDPO two = rStatHarmonicDPOService.lambdaQuery().eq(RStatHarmonicDPO::getOrgNo, dept.getId()).
|
||||
eq(RStatHarmonicDPO::getDataDate, date).
|
||||
eq(RStatHarmonicDPO::getDataDate, localDate).
|
||||
eq(RStatHarmonicDPO::getMeasurementTypeClass, m).
|
||||
eq(RStatHarmonicDPO::getDataType, dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
eq(RStatHarmonicDPO::getHarmonicType, steadyStatisMap.get(DicDataEnum.HARMONIC_CURRENT).getId()).one();
|
||||
@@ -421,7 +819,7 @@ public class RStatLoadTypeServiceImpl implements RStatLoadTypeService {
|
||||
rStatLoadTypeDPO.setIRatio(0.00);
|
||||
}
|
||||
RStatHarmonicDPO three = rStatHarmonicDPOService.lambdaQuery().eq(RStatHarmonicDPO::getOrgNo, dept.getId()).
|
||||
eq(RStatHarmonicDPO::getDataDate, date).
|
||||
eq(RStatHarmonicDPO::getDataDate, localDate).
|
||||
eq(RStatHarmonicDPO::getMeasurementTypeClass, m).
|
||||
eq(RStatHarmonicDPO::getDataType, dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
eq(RStatHarmonicDPO::getHarmonicType, steadyStatisMap.get(DicDataEnum.PHASE_VOLTAGE).getId()).one();
|
||||
@@ -431,7 +829,7 @@ public class RStatLoadTypeServiceImpl implements RStatLoadTypeService {
|
||||
rStatLoadTypeDPO.setUnbalanceRatio(0.00);
|
||||
}
|
||||
RStatHarmonicDPO four = rStatHarmonicDPOService.lambdaQuery().eq(RStatHarmonicDPO::getOrgNo, dept.getId()).
|
||||
eq(RStatHarmonicDPO::getDataDate, date).
|
||||
eq(RStatHarmonicDPO::getDataDate, localDate).
|
||||
eq(RStatHarmonicDPO::getMeasurementTypeClass, m).
|
||||
eq(RStatHarmonicDPO::getDataType, dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
eq(RStatHarmonicDPO::getHarmonicType, steadyStatisMap.get(DicDataEnum.NEG_CURRENT).getId()).one();
|
||||
@@ -441,7 +839,7 @@ public class RStatLoadTypeServiceImpl implements RStatLoadTypeService {
|
||||
rStatLoadTypeDPO.setINegRatio(0.00);
|
||||
}
|
||||
RStatHarmonicDPO five = rStatHarmonicDPOService.lambdaQuery().eq(RStatHarmonicDPO::getOrgNo, dept.getId()).
|
||||
eq(RStatHarmonicDPO::getDataDate, date).
|
||||
eq(RStatHarmonicDPO::getDataDate, localDate).
|
||||
eq(RStatHarmonicDPO::getMeasurementTypeClass, m).
|
||||
eq(RStatHarmonicDPO::getDataType, dataTypeMap.get(DicDataEnum.MAINNET_POINT.getCode()).getId()).
|
||||
eq(RStatHarmonicDPO::getHarmonicType, steadyStatisMap.get(DicDataEnum.FLICKER).getId()).one();
|
||||
|
||||
Reference in New Issue
Block a user