diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/dim/IRDimBusGlobalDController.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/dim/IRDimBusGlobalDController.java index f8d2f5e38..5d4bf7dfb 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/dim/IRDimBusGlobalDController.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/dim/IRDimBusGlobalDController.java @@ -268,7 +268,8 @@ public class IRDimBusGlobalDController extends BaseController { baseParam.setFullChain(false); baseParam.setRepair(false); baseParam.setDataDate(endDate); - set.add("r_upload_substation_statistical_data_m"); +// set.add("r_upload_substation_statistical_data_m"); + set.add("r_upload_substation_statistical_data_y"); baseParam.setTagNames(set); liteFlowFeignClient.substationExecutor(baseParam); }else if("3".equals(type)){ diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/PmsRunStatisticMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/PmsRunStatisticMapper.java deleted file mode 100644 index 0c481a26d..000000000 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/line/PmsRunStatisticMapper.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.njcn.prepare.harmonic.mapper.mysql.line; - - - -import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; -import com.njcn.harmonic.pojo.po.upload.PmsRunStatisticD; - -/** - *

- * Mapper 接口 - *

- * - * @author cdf - * @since 2024-04-17 - */ -public interface PmsRunStatisticMapper extends MppBaseMapper { - -} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/area/RStatHarmonicServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/area/RStatHarmonicServiceImpl.java index b3376e464..60db6edb9 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/area/RStatHarmonicServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/area/RStatHarmonicServiceImpl.java @@ -1,5 +1,6 @@ package com.njcn.prepare.harmonic.service.mysql.Impl.area; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateTime; @@ -13,11 +14,9 @@ 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; import com.njcn.prepare.harmonic.mapper.mysql.area.RStatOrgYMapper; -import com.njcn.prepare.harmonic.mapper.mysql.line.RMpPartHarmonicDetailDMapper; -import com.njcn.prepare.harmonic.mapper.mysql.line.RMpPartHarmonicDetailMMapper; -import com.njcn.prepare.harmonic.mapper.mysql.line.RMpSurplusHarmonicDetailDMapper; -import com.njcn.prepare.harmonic.mapper.mysql.line.RMpSurplusHarmonicDetailMMapper; +import com.njcn.prepare.harmonic.mapper.mysql.line.*; import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam; +import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorDPO; import com.njcn.prepare.harmonic.pojo.mysql.po.*; import com.njcn.prepare.harmonic.service.mysql.area.*; import com.njcn.prepare.harmonic.utils.PublicUtil; @@ -65,20 +64,21 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService { private final RStatOrgMMapper rStatOrgMMapper; private final RStatOrgQMapper rStatOrgQMapper; private final RStatOrgYMapper rStatOrgYMapper; + private final ROperatingMonitorDMapper rOperatingMonitorDMapper; - - private final - DicDataFeignClient dicDataFeignClient; + private final DicDataFeignClient dicDataFeignClient; @Override public void handleDay(CalculatedParam calculatedParam) { List rStatHarmonicDPOList = new ArrayList<>(); LocalDate localDate = LocalDateTimeUtil.parseDate(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN); + /*获取监测点类型类型*/ + QueryWrapper rOperatingMonitorDPOQueryWrapper = new QueryWrapper<>(); QueryWrapper queryWrapper = new QueryWrapper<>(); QueryWrapper rMpSurplusHarmonicDetailDQueryWrapper = new QueryWrapper<>(); QueryWrapper rStatOrgDPOQueryWrapper = new QueryWrapper<>(); @@ -104,16 +104,24 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService { Map> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineTag)); collect.forEach((k, v)->{ List collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList()); + /*todo 取有效监测点进行匹配*/ + rOperatingMonitorDPOQueryWrapper.clear(); + rOperatingMonitorDPOQueryWrapper.select("measurement_point_id"). + in("measurement_point_id",collect1). + gt("effective_minute_count",0). + eq("data_date",localDate); + List rOperatingMonitorDPOS = rOperatingMonitorDMapper.selectList(rOperatingMonitorDPOQueryWrapper); + List effLineIds = rOperatingMonitorDPOS.stream().map(ROperatingMonitorDPO::getMeasurementPointId).distinct().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). + in("measurement_point_id",effLineIds). eq("data_date",localDate); List rMpPartHarmonicDetailDS = rMpPartHarmonicDetailDMapper.selectList(queryWrapper); rMpSurplusHarmonicDetailDQueryWrapper.clear(); rMpSurplusHarmonicDetailDQueryWrapper.select("is_flicker","is_inuharm"). - in("measurement_point_id",collect1). + in("measurement_point_id",effLineIds). eq("data_date",localDate); List rMpSurplusHarmonicDetailDS = rMpSurplusHarmonicDetailDMapper.selectList(rMpSurplusHarmonicDetailDQueryWrapper); @@ -213,7 +221,7 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService { 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 rOperatingMonitorDPOQueryWrapper = new QueryWrapper<>(); QueryWrapper queryWrapper = new QueryWrapper<>(); QueryWrapper rMpSurplusHarmonicDetailMQueryWrapper = new QueryWrapper<>(); QueryWrapper rStatOrgMPOQueryWrapper = new QueryWrapper<>(); @@ -241,16 +249,24 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService { Map> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineTag)); collect.forEach((k, v) -> { List collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList()); + /*todo 取有效监测点进行匹配*/ + rOperatingMonitorDPOQueryWrapper.clear(); + rOperatingMonitorDPOQueryWrapper.select("measurement_point_id"). + in("measurement_point_id",collect1). + gt("effective_minute_count",0). + between("data_date",begin,end); + List rOperatingMonitorDPOS = rOperatingMonitorDMapper.selectList(rOperatingMonitorDPOQueryWrapper); + List effLineIds = rOperatingMonitorDPOS.stream().map(ROperatingMonitorDPO::getMeasurementPointId).distinct().collect(Collectors.toList()); queryWrapper.clear(); queryWrapper.select("measurement_point_id","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). + in("measurement_point_id", effLineIds). between("data_date",begin,end); List rMpPartHarmonicDetailMS = rMpPartHarmonicDetailMMapper.selectList(queryWrapper); rMpSurplusHarmonicDetailMQueryWrapper.clear(); rMpSurplusHarmonicDetailMQueryWrapper.select("measurement_point_id","flicker_over_day", "inuharm_over_day"). - in("measurement_point_id", collect1). + in("measurement_point_id", effLineIds). between("data_date",begin,end); List rMpSurplusHarmonicDetailMS = rMpSurplusHarmonicDetailMMapper.selectList(rMpSurplusHarmonicDetailMQueryWrapper); @@ -401,7 +417,7 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService { 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 rOperatingMonitorDPOQueryWrapper = new QueryWrapper<>(); QueryWrapper queryWrapper = new QueryWrapper<>(); QueryWrapper rMpSurplusHarmonicDetailMQueryWrapper = new QueryWrapper<>(); QueryWrapper rStatOrgQPOQueryWrapper = new QueryWrapper<>(); @@ -429,20 +445,28 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService { Map> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineTag)); collect.forEach((k, v) -> { List collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList()); - - queryWrapper.clear(); - queryWrapper.select("measurement_point_id","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). + /*todo 取有效监测点进行匹配*/ + rOperatingMonitorDPOQueryWrapper.clear(); + rOperatingMonitorDPOQueryWrapper.select("measurement_point_id"). + in("measurement_point_id",collect1). + gt("effective_minute_count",0). between("data_date",begin,end); - - List rMpPartHarmonicDetailMS = rMpPartHarmonicDetailMMapper.selectList(queryWrapper); - - rMpSurplusHarmonicDetailMQueryWrapper.clear(); - rMpSurplusHarmonicDetailMQueryWrapper.select("measurement_point_id","flicker_over_day", "inuharm_over_day"). - in("measurement_point_id", collect1). - between("data_date",begin,end); - List rMpSurplusHarmonicDetailMS = rMpSurplusHarmonicDetailMMapper.selectList(rMpSurplusHarmonicDetailMQueryWrapper); - + List rOperatingMonitorDPOS = rOperatingMonitorDMapper.selectList(rOperatingMonitorDPOQueryWrapper); + List effLineIds = rOperatingMonitorDPOS.stream().map(ROperatingMonitorDPO::getMeasurementPointId).distinct().collect(Collectors.toList()); + List rMpPartHarmonicDetailMS =new ArrayList<>(); + List rMpSurplusHarmonicDetailMS=new ArrayList<>(); + if(CollUtil.isNotEmpty(effLineIds)){ + queryWrapper.clear(); + queryWrapper.select("measurement_point_id","freq_over_day", "v_dev_over_day", "v_over_day", "i_over_day", "unbalance_over_day", "i_neg_over_day"). + in("measurement_point_id", effLineIds). + between("data_date",begin,end); + rMpPartHarmonicDetailMS.addAll(rMpPartHarmonicDetailMMapper.selectList(queryWrapper)); + rMpSurplusHarmonicDetailMQueryWrapper.clear(); + rMpSurplusHarmonicDetailMQueryWrapper.select("measurement_point_id","flicker_over_day", "inuharm_over_day"). + in("measurement_point_id", effLineIds). + between("data_date",begin,end); + rMpSurplusHarmonicDetailMS.addAll(rMpSurplusHarmonicDetailMMapper.selectList(rMpSurplusHarmonicDetailMQueryWrapper)); + } rStatOrgQPOQueryWrapper.clear(); rStatOrgQPOQueryWrapper.select("effective_measurement_accrued"). eq("org_no", deptGetChildrenMoreDTO.getUnitId()). @@ -609,6 +633,7 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService { /*获取监测点类型类型*/ + QueryWrapper rOperatingMonitorDPOQueryWrapper = new QueryWrapper<>(); QueryWrapper queryWrapper = new QueryWrapper<>(); QueryWrapper rMpSurplusHarmonicDetailMQueryWrapper = new QueryWrapper<>(); QueryWrapper rStatOrgYPOQueryWrapper = new QueryWrapper<>(); @@ -637,17 +662,25 @@ public class RStatHarmonicServiceImpl implements RStatHarmonicService { Map> collect = lineBaseList.stream().collect(Collectors.groupingBy(LineDevGetDTO::getLineTag)); collect.forEach((k, v) -> { List collect1 = v.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList()); + /*todo 取有效监测点进行匹配*/ + rOperatingMonitorDPOQueryWrapper.clear(); + rOperatingMonitorDPOQueryWrapper.select("measurement_point_id"). + in("measurement_point_id",collect1). + gt("effective_minute_count",0). + between("data_date",begin,end); + List rOperatingMonitorDPOS = rOperatingMonitorDMapper.selectList(rOperatingMonitorDPOQueryWrapper); + List effLineIds = rOperatingMonitorDPOS.stream().map(ROperatingMonitorDPO::getMeasurementPointId).distinct().collect(Collectors.toList()); queryWrapper.clear(); queryWrapper.select("measurement_point_id","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). + in("measurement_point_id", effLineIds). between("data_date",begin,end); List rMpPartHarmonicDetailMS = rMpPartHarmonicDetailMMapper.selectList(queryWrapper); rMpSurplusHarmonicDetailMQueryWrapper.clear(); rMpSurplusHarmonicDetailMQueryWrapper.select("measurement_point_id","flicker_over_day", "inuharm_over_day"). - in("measurement_point_id", collect1). + in("measurement_point_id", effLineIds). between("data_date",begin,end); List rMpSurplusHarmonicDetailMS = rMpSurplusHarmonicDetailMMapper.selectList(rMpSurplusHarmonicDetailMQueryWrapper); diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/area/RStatOrgServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/area/RStatOrgServiceImpl.java index 9913b37dc..d5617608f 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/area/RStatOrgServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/area/RStatOrgServiceImpl.java @@ -1,5 +1,6 @@ package com.njcn.prepare.harmonic.service.mysql.Impl.area; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; @@ -75,7 +76,6 @@ public class RStatOrgServiceImpl implements RStatOrgService { DecimalFormat df = new DecimalFormat("0.00"); @Override - public void handler(List data, String dataDate, Integer type) { switch (type) { case 1: @@ -549,16 +549,19 @@ public class RStatOrgServiceImpl implements RStatOrgService { rStatOrgQPO.setEffectiveMeasurementAverage(Double.parseDouble(value)); /*3、3、累计有效接入监测点数*/ - long count = rOperatingMonitorDPOS.stream().map(ROperatingMonitorDPO::getMeasurementPointId).distinct().count(); - rStatOrgQPO.setEffectiveMeasurementAccrued(Integer.valueOf(count+"")); + List monitorIds = rOperatingMonitorDPOS.stream().map(ROperatingMonitorDPO::getMeasurementPointId).distinct().collect(Collectors.toList()); + rStatOrgQPO.setEffectiveMeasurementAccrued(monitorIds.size()); - /*4、日均稳态超标监测点数*/ - rmpTargetWarnDPOQueryWrapper.clear(); - rmpTargetWarnDPOQueryWrapper.select("measurement_point_id"). - in("measurement_point_id",collect1). - eq("is_harmonic",1). - between("data_date",begin,end); - List rMpTargetWarnDPOS = rMpTargetWarnDMapper.selectList(rmpTargetWarnDPOQueryWrapper); + /*4、日均稳态超标监测点数 TODO 用有效监测点*/ + List rMpTargetWarnDPOS=new ArrayList<>(); + if(CollUtil.isNotEmpty(monitorIds)){ + rmpTargetWarnDPOQueryWrapper.clear(); + rmpTargetWarnDPOQueryWrapper.select("measurement_point_id"). + in("measurement_point_id",monitorIds). + eq("is_harmonic",1). + between("data_date",begin,end); + rMpTargetWarnDPOS.addAll(rMpTargetWarnDMapper.selectList(rmpTargetWarnDPOQueryWrapper)); + } String value1 = df.format((float)rMpTargetWarnDPOS.size()/ days); rStatOrgQPO.setHarmonicMeasurementAverage(Double.parseDouble(value1)); diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/send/impl/PqTypicalSourceCreatePOServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/send/impl/PqTypicalSourceCreatePOServiceImpl.java index 765585114..c121cd18b 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/send/impl/PqTypicalSourceCreatePOServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/send/impl/PqTypicalSourceCreatePOServiceImpl.java @@ -1,11 +1,13 @@ package com.njcn.prepare.harmonic.service.mysql.send.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; @@ -15,13 +17,19 @@ import com.njcn.device.pms.pojo.po.Monitor; import com.njcn.harmonic.pojo.po.RMpPartHarmonicDetailD; import com.njcn.harmonic.pojo.po.RMpSurplusHarmonicDetailD; import com.njcn.harmonic.pojo.po.send.PqTypicalSourceCreatePO; +import com.njcn.harmonic.pojo.po.upload.PmsRunStatisticD; +import com.njcn.harmonic.pojo.po.upload.PmsRunStatisticM; +import com.njcn.harmonic.pojo.po.upload.PmsRunStatisticY; import com.njcn.prepare.harmonic.mapper.mysql.line.RMpPartHarmonicDetailDMapper; import com.njcn.prepare.harmonic.mapper.mysql.line.RMpSurplusHarmonicDetailDMapper; import com.njcn.prepare.harmonic.mapper.mysql.send.PqTypicalSourceCreatePOMapper; +import com.njcn.prepare.harmonic.mapper.mysql.upload.PmsRunStatisticDMapper; import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam; import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorDPO; import com.njcn.prepare.harmonic.service.mysql.line.ROperatingMonitorService; import com.njcn.prepare.harmonic.service.mysql.send.PqTypicalSourceCreatePOService; +import com.njcn.prepare.harmonic.service.mysql.upload.IPmsRunStatisticMService; +import com.njcn.prepare.harmonic.service.mysql.upload.IPmsRunStatisticYService; import com.njcn.system.api.DicDataFeignClient; import com.njcn.system.api.DictTreeFeignClient; import com.njcn.system.enums.DicDataEnum; @@ -67,6 +75,10 @@ public class PqTypicalSourceCreatePOServiceImpl extends ServiceImpl calculatedParam) { + List pmsRunStatisticsListD = runStatisticDMapper.selectList(new LambdaQueryWrapper().eq(PmsRunStatisticD::getStatisticDate,calculatedParam.getDataDate())); + Map pmsRunStatisticMap = pmsRunStatisticsListD.stream().collect(Collectors.toMap(PmsRunStatisticD::getDeptId,Function.identity())); + + List pqTypicalSourceCreatePOList = new ArrayList<>(); LocalDate localDate = LocalDateTimeUtil.parseDate(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN); @@ -141,7 +157,17 @@ public class PqTypicalSourceCreatePOServiceImpl extends ServiceImpl supvVoltageDicList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DEV_VOLTAGE.getCode()).getData(); Map mapVoltage = supvVoltageDicList.stream().collect(Collectors.toMap(DictData::getId, Function.identity())); for (DeptGetChildrenMoreDTO deptGetChildrenMoreDTO : calculatedParam.getIdList()) { - List collect1 = deptGetChildrenMoreDTO.getLineBaseList().stream().filter(temp->Objects.equals(temp.getIsUpToGrid(),1)).map(LineDevGetDTO::getPointId).collect(Collectors.toList()); + List collect1; + if(pmsRunStatisticMap.containsKey(deptGetChildrenMoreDTO.getUnitId())){ + String typicalOnlineIds = pmsRunStatisticMap.get(deptGetChildrenMoreDTO.getUnitId()).getTypicalOnlineIds(); + if(StrUtil.isNotBlank(typicalOnlineIds)){ + collect1 = CollectionUtil.toList(typicalOnlineIds.split(StrUtil.COMMA)); + }else { + collect1 = deptGetChildrenMoreDTO.getLineBaseList().stream().filter(temp->Objects.equals(temp.getIsUpToGrid(),1)).map(LineDevGetDTO::getPointId).collect(Collectors.toList()); + } + } else { + collect1 = deptGetChildrenMoreDTO.getLineBaseList().stream().filter(temp->Objects.equals(temp.getIsUpToGrid(),1)).map(LineDevGetDTO::getPointId).collect(Collectors.toList()); + } List monitorList; if (!CollectionUtils.isEmpty(collect1)) { monitorList = monitorClient.getMonitorList(collect1).getData(); @@ -290,6 +316,11 @@ public class PqTypicalSourceCreatePOServiceImpl extends ServiceImpl pmsRunStatistic = runStatisticMService.selectListByDate(begin, end,calculatedParam.getDataDate()); + Map pmsRunStatisticMap = pmsRunStatistic.stream().collect(Collectors.toMap(PmsRunStatisticM::getDeptId,Function.identity())); + + + List sysdictreepo = dictTreeFeignClient.queryAll().getData(); List windfarm_user = Stream.of( @@ -328,7 +359,17 @@ public class PqTypicalSourceCreatePOServiceImpl extends ServiceImpl mapList = deptList.stream().collect(Collectors.toMap(PvTerminalTreeVO::getId, Function.identity())); for (DeptGetChildrenMoreDTO deptGetChildrenMoreDTO : calculatedParam.getIdList()) { - List collect1 = deptGetChildrenMoreDTO.getLineBaseList().stream().filter(temp->Objects.equals(temp.getIsUpToGrid(),1)).map(LineDevGetDTO::getPointId).collect(Collectors.toList()); + List collect1; + if(pmsRunStatisticMap.containsKey(deptGetChildrenMoreDTO.getUnitId())){ + String typicalOnlineIds = pmsRunStatisticMap.get(deptGetChildrenMoreDTO.getUnitId()).getTypicalOnlineIds(); + if(StrUtil.isNotBlank(typicalOnlineIds)){ + collect1 = CollectionUtil.toList(typicalOnlineIds.split(StrUtil.COMMA)); + }else { + collect1 = deptGetChildrenMoreDTO.getLineBaseList().stream().filter(temp->Objects.equals(temp.getIsUpToGrid(),1)).map(LineDevGetDTO::getPointId).collect(Collectors.toList()); + } + } else { + collect1 = deptGetChildrenMoreDTO.getLineBaseList().stream().filter(temp->Objects.equals(temp.getIsUpToGrid(),1)).map(LineDevGetDTO::getPointId).collect(Collectors.toList()); + } List monitorList; if (!CollectionUtils.isEmpty(collect1)) { monitorList = monitorClient.getMonitorList(collect1).getData(); @@ -450,6 +491,8 @@ public class PqTypicalSourceCreatePOServiceImpl extends ServiceImpl pmsRunStatistic = runStatisticYService.selectListByDate(begin, end,calculatedParam.getDataDate()); + Map pmsRunStatisticMap = pmsRunStatistic.stream().collect(Collectors.toMap(PmsRunStatisticY::getDeptId,Function.identity())); List sysdictreepo = dictTreeFeignClient.queryAll().getData(); @@ -489,7 +532,17 @@ public class PqTypicalSourceCreatePOServiceImpl extends ServiceImpl mapList = deptList.stream().collect(Collectors.toMap(PvTerminalTreeVO::getId, Function.identity())); for (DeptGetChildrenMoreDTO deptGetChildrenMoreDTO : calculatedParam.getIdList()) { - List collect1 = deptGetChildrenMoreDTO.getLineBaseList().stream().filter(temp->Objects.equals(temp.getIsUpToGrid(),1)).map(LineDevGetDTO::getPointId).collect(Collectors.toList()); + List collect1; + if(pmsRunStatisticMap.containsKey(deptGetChildrenMoreDTO.getUnitId())){ + String typicalOnlineIds = pmsRunStatisticMap.get(deptGetChildrenMoreDTO.getUnitId()).getTypicalOnlineIds(); + if(StrUtil.isNotBlank(typicalOnlineIds)){ + collect1 = CollectionUtil.toList(typicalOnlineIds.split(StrUtil.COMMA)); + }else { + collect1 = deptGetChildrenMoreDTO.getLineBaseList().stream().filter(temp->Objects.equals(temp.getIsUpToGrid(),1)).map(LineDevGetDTO::getPointId).collect(Collectors.toList()); + } + } else { + collect1 = deptGetChildrenMoreDTO.getLineBaseList().stream().filter(temp->Objects.equals(temp.getIsUpToGrid(),1)).map(LineDevGetDTO::getPointId).collect(Collectors.toList()); + } List monitorList; if (!CollectionUtils.isEmpty(collect1)) { monitorList = monitorClient.getMonitorList(collect1).getData(); diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/IPmsRunStatisticMService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/IPmsRunStatisticMService.java index 1db3a273e..9ddebeef4 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/IPmsRunStatisticMService.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/IPmsRunStatisticMService.java @@ -4,9 +4,11 @@ package com.njcn.prepare.harmonic.service.mysql.upload; import com.github.jeffreyning.mybatisplus.service.IMppService; import com.njcn.harmonic.pojo.po.upload.PmsRunStatisticM; +import java.util.List; + /** *

- * 服务类 + * 服务类 *

* * @author cdf @@ -15,15 +17,21 @@ import com.njcn.harmonic.pojo.po.upload.PmsRunStatisticM; public interface IPmsRunStatisticMService extends IMppService { - /** * 每日统计每月 + * * @author cdf * @date 2024/4/17 */ void statisticLedgerRunMonth(String date); - - + /** + * @param startTime + * @param endTime + * @Description: 获取每个月中的最新一天数据 + * @Author: wr + * @Date: 2024/5/9 14:21 + */ + List selectListByDate(String startTime, String endTime, String dataDate); } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/IPmsRunStatisticYService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/IPmsRunStatisticYService.java index 6cc51f38d..53536c335 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/IPmsRunStatisticYService.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/IPmsRunStatisticYService.java @@ -4,9 +4,11 @@ package com.njcn.prepare.harmonic.service.mysql.upload; import com.github.jeffreyning.mybatisplus.service.IMppService; import com.njcn.harmonic.pojo.po.upload.PmsRunStatisticY; +import java.util.List; + /** *

- * 服务类 + * 服务类 *

* * @author cdf @@ -15,13 +17,20 @@ import com.njcn.harmonic.pojo.po.upload.PmsRunStatisticY; public interface IPmsRunStatisticYService extends IMppService { - - /** * 每日统计每年 + * * @author cdf * @date 2024/4/17 */ void statisticLedgerRunYear(String date); + /** + * @param startTime + * @param endTime + * @Description: 获取每个年中的最新一天数据 + * @Author: wr + * @Date: 2024/5/9 14:21 + */ + List selectListByDate(String startTime, String endTime, String dataDate); } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/PmsRunStatisticMServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/PmsRunStatisticMServiceImpl.java index 1bc6b6bae..f89b545aa 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/PmsRunStatisticMServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/PmsRunStatisticMServiceImpl.java @@ -7,7 +7,6 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; -import com.njcn.device.pms.pojo.po.PmsMidLedger; import com.njcn.prepare.harmonic.mapper.mysql.upload.PmsRunStatisticDMapper; import com.njcn.prepare.harmonic.mapper.mysql.upload.PmsRunStatisticMMapper; import com.njcn.harmonic.pojo.po.upload.PmsRunStatisticD; @@ -23,7 +22,7 @@ import java.util.stream.Collectors; /** *

- * 服务实现类 + * 服务实现类 *

* * @author cdf @@ -120,5 +119,13 @@ public class PmsRunStatisticMServiceImpl extends MppServiceImpl selectListByDate(String startTime, String endTime, String dataDate) { + return this.list(new LambdaQueryWrapper() + .ge(StrUtil.isNotBlank(startTime), PmsRunStatisticM::getStatisticDate, DateUtil.beginOfDay(DateUtil.parse(startTime))) + .le(StrUtil.isNotBlank(endTime), PmsRunStatisticM::getStatisticDate, DateUtil.endOfDay(DateUtil.parse(endTime))) + .eq(PmsRunStatisticM::getStatDate, dataDate)); + } + } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/PmsRunStatisticYServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/PmsRunStatisticYServiceImpl.java index 777671963..bfceaed9b 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/PmsRunStatisticYServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/PmsRunStatisticYServiceImpl.java @@ -122,4 +122,12 @@ public class PmsRunStatisticYServiceImpl extends MppServiceImpl selectListByDate(String startTime, String endTime, String dataDate) { + return this.list(new LambdaQueryWrapper() + .ge(StrUtil.isNotBlank(startTime), PmsRunStatisticY::getStatisticDate, DateUtil.beginOfDay(DateUtil.parse(startTime))) + .le(StrUtil.isNotBlank(endTime), PmsRunStatisticY::getStatisticDate, DateUtil.endOfDay(DateUtil.parse(endTime))) + .eq(PmsRunStatisticY::getStatDate, dataDate)); + } + } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadEvaluationDataDServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadEvaluationDataDServiceImpl.java index ae565e663..d0f229546 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadEvaluationDataDServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadEvaluationDataDServiceImpl.java @@ -1,32 +1,37 @@ package com.njcn.prepare.harmonic.service.mysql.upload.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; import com.njcn.common.pojo.enums.common.DataStateEnum; import com.njcn.device.biz.commApi.CommTerminalGeneralClient; -import com.njcn.device.biz.pojo.dto.DeptGetBase; -import com.njcn.device.biz.pojo.dto.DeptGetBusBarDTO; -import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; -import com.njcn.device.biz.pojo.dto.LineDevGetDTO; +import com.njcn.device.biz.pojo.dto.*; import com.njcn.device.biz.pojo.param.DeptGetLineParam; import com.njcn.device.pms.pojo.po.GeneratrixWire; import com.njcn.device.pms.pojo.po.Monitor; import com.njcn.device.pms.pojo.po.PmsMidLedger; import com.njcn.harmonic.pojo.dto.LineDataDto; import com.njcn.harmonic.pojo.po.dim.RDimVoltageD; +import com.njcn.harmonic.pojo.po.upload.PmsRunStatisticD; +import com.njcn.harmonic.pojo.po.upload.PmsRunStatisticM; +import com.njcn.harmonic.pojo.po.upload.PmsRunStatisticY; import com.njcn.harmonic.pojo.po.upload.RUploadEvaluationDataD; import com.njcn.prepare.harmonic.enums.UploadEnum; import com.njcn.prepare.harmonic.mapper.mysql.dim.GeneratrixWireMapper; import com.njcn.prepare.harmonic.mapper.mysql.dim.PmsMidLedgerMapper; import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimVoltageDMapper; import com.njcn.prepare.harmonic.mapper.mysql.line.PmsMonitorMapper; +import com.njcn.prepare.harmonic.mapper.mysql.upload.PmsRunStatisticDMapper; import com.njcn.prepare.harmonic.mapper.mysql.upload.RUploadEvaluationDataDMapper; import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam; import com.njcn.prepare.harmonic.pojo.dto.BusBarDto; +import com.njcn.prepare.harmonic.service.mysql.upload.IPmsRunStatisticMService; +import com.njcn.prepare.harmonic.service.mysql.upload.IPmsRunStatisticYService; import com.njcn.prepare.harmonic.service.mysql.upload.IRUploadEvaluationDataDService; import com.njcn.system.api.DicDataFeignClient; import com.njcn.system.enums.DicDataEnum; @@ -65,38 +70,60 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl calculatedParam) { List result = new ArrayList<>(); final Double defaultValue = 3.1415926; - //获取监测点信息 - List list1 = this.getPmsMonitor(); + //首先获取pms_run_statistic表是否存在执行日期的数据 + List pmsRunStatisticsListD = runStatisticDMapper.selectList(new LambdaQueryWrapper().eq(PmsRunStatisticD::getStatisticDate, calculatedParam.getDataDate())); + //获取中台母线信息 List list2 = this.getBusBarInfo(); //获取灿能母线信息 - List list3 = this.getCnBusBarInfo(list1); + List list3; + if (CollUtil.isNotEmpty(pmsRunStatisticsListD)) { + List wireIds = pmsRunStatisticsListD.stream() + .filter(x -> StrUtil.isNotBlank(x.getOnlineBusIds())) + .flatMap(x -> CollectionUtil.toList(x.getOnlineBusIds().split(StrUtil.COMMA)).stream()).distinct().collect(Collectors.toList()); + if(CollUtil.isNotEmpty(wireIds)){ + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(GeneratrixWire::getStatus, DataStateEnum.ENABLE.getCode()) + .in(GeneratrixWire::getId, wireIds); + list3 = generatrixWireMapper.selectList(lambdaQueryWrapper); + }else{ + List list1 = this.getPmsMonitor(); + list3 = this.getCnBusBarInfo(list1); + } + } else { + //获取监测点信息 + List list1 = this.getPmsMonitor(); + list3 = this.getCnBusBarInfo(list1); + } //获取单位下各电压等级数据 DeptGetLineParam deptGetLineParam = new DeptGetLineParam(); Dept data = deptFeignClient.getRootDept().getData(); deptGetLineParam.setDeptId(data.getId()); List barDto = commTerminalGeneralClient.deptBusBar(deptGetLineParam).getData(); - List busBarList = this.getBusBarNum(list3,list2,barDto); - List allDept = this.getAllDeptLineNum(busBarList,deptGetLineParam); + List busBarList = this.getBusBarNum(list3, list2, barDto); + List allDept = this.getAllDeptLineNum(busBarList, deptGetLineParam); //获取省级单位id String provinceId = deptFeignClient.getDepSonIdByDeptId(data.getId()).getData().get(0); Dept dept = deptFeignClient.getDeptById(provinceId).getData(); //获取所有单位 List deptList = deptFeignClient.getAllDept().getData(); - Map> deptMap = deptList.stream().collect(Collectors.groupingBy(Dept::getCode)); + Map> deptMap = deptList.stream().collect(Collectors.groupingBy(Dept::getCode)); List list = calculatedParam.getIdList(); - list.forEach(item->{ - if (Objects.equals(Integer.parseInt(UploadEnum.NJCN_DEPT_LEVEL_1.getCode()),item.getDeptLevel()) + list.forEach(item -> { + if (Objects.equals(Integer.parseInt(UploadEnum.NJCN_DEPT_LEVEL_1.getCode()), item.getDeptLevel()) //市数据 //|| Objects.equals(Integer.parseInt(UploadEnum.NJCN_DEPT_LEVEL_3.getCode()),item.getDeptLevel()) //县数据 - || Objects.equals(Integer.parseInt(UploadEnum.NJCN_DEPT_LEVEL_4.getCode()),item.getDeptLevel())){ + || Objects.equals(Integer.parseInt(UploadEnum.NJCN_DEPT_LEVEL_4.getCode()), item.getDeptLevel())) { return; } RUploadEvaluationDataD rUploadEvaluationDataD = new RUploadEvaluationDataD(); @@ -107,74 +134,75 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImplObjects.equals(o.getOrgId(),item.getUnitId())).findFirst().orElse(null); + BusBarDto busBarDto = allDept.stream().filter(o -> Objects.equals(o.getOrgId(), item.getUnitId())).findFirst().orElse(null); /*** 计算无电压等级的数据*/ - RUploadEvaluationDataD dto = this.getLineNum(busBarDto,"0"); + RUploadEvaluationDataD dto = this.getLineNum(busBarDto, "0"); //电压 - RUploadEvaluationDataD dto1 = this.channelData(rUploadEvaluationDataD,defaultValue,defaultValue,UploadEnum.INDEX_TYPE_01.getCode(),0,"0",dto); + RUploadEvaluationDataD dto1 = this.channelData(rUploadEvaluationDataD, defaultValue, defaultValue, UploadEnum.INDEX_TYPE_01.getCode(), 0, "0", dto); result.add(dto1); //长时间闪变 - RUploadEvaluationDataD dto2 = this.channelData(rUploadEvaluationDataD,defaultValue,defaultValue,UploadEnum.INDEX_TYPE_02.getCode(),0,"0",dto); + RUploadEvaluationDataD dto2 = this.channelData(rUploadEvaluationDataD, defaultValue, defaultValue, UploadEnum.INDEX_TYPE_02.getCode(), 0, "0", dto); result.add(dto2); //三相电压不平衡 - RUploadEvaluationDataD dto3 = this.channelData(rUploadEvaluationDataD,defaultValue,defaultValue,UploadEnum.INDEX_TYPE_03.getCode(),0,"0",dto); + RUploadEvaluationDataD dto3 = this.channelData(rUploadEvaluationDataD, defaultValue, defaultValue, UploadEnum.INDEX_TYPE_03.getCode(), 0, "0", dto); result.add(dto3); //电压总谐波畸变率 - RUploadEvaluationDataD dto4 = this.channelData(rUploadEvaluationDataD,defaultValue,defaultValue,UploadEnum.INDEX_TYPE_04.getCode(),0,"0",dto); + RUploadEvaluationDataD dto4 = this.channelData(rUploadEvaluationDataD, defaultValue, defaultValue, UploadEnum.INDEX_TYPE_04.getCode(), 0, "0", dto); result.add(dto4); //各次谐波电压 - this.channelHarmonicData(rUploadEvaluationDataD,result,null,UploadEnum.INDEX_TYPE_05.getCode(),"0",dto,null); + this.channelHarmonicData(rUploadEvaluationDataD, result, null, UploadEnum.INDEX_TYPE_05.getCode(), "0", dto, null); //负序电流 - RUploadEvaluationDataD dto6 = this.channelData(rUploadEvaluationDataD,defaultValue,defaultValue,UploadEnum.INDEX_TYPE_06.getCode(),0,"0",dto); + RUploadEvaluationDataD dto6 = this.channelData(rUploadEvaluationDataD, defaultValue, defaultValue, UploadEnum.INDEX_TYPE_06.getCode(), 0, "0", dto); result.add(dto6); /*** 计算分电压等级的数据*/ - if (CollUtil.isNotEmpty(busBarDto.getVoltageChild())){ - busBarDto.getVoltageChild().forEach(item2->{ - RDimVoltageD rDimVoltageD = this.getDimVoltageData(item.getUnitId(),calculatedParam.getDataDate(),item2.getVoltageLevel()); + if (CollUtil.isNotEmpty(busBarDto.getVoltageChild())) { + busBarDto.getVoltageChild().forEach(item2 -> { + RDimVoltageD rDimVoltageD = this.getDimVoltageData(item.getUnitId(), calculatedParam.getDataDate(), item2.getVoltageLevel()); - RUploadEvaluationDataD dto0 = this.getLineNum(busBarDto,item2.getVoltageLevel()); + RUploadEvaluationDataD dto0 = this.getLineNum(busBarDto, item2.getVoltageLevel()); //电压 - double sd1 = this.getDimVoltageDataSd(item2.getVoltageLevel(),Objects.isNull(rDimVoltageD)?defaultValue:rDimVoltageD.getV(),calculatedParam.getDataDate(),item.getLineBaseList(),UploadEnum.INDEX_TYPE_01.getCode(),null); - RUploadEvaluationDataD dto11 = this.channelData(rUploadEvaluationDataD,Objects.isNull(rDimVoltageD)?defaultValue:rDimVoltageD.getV(),sd1,UploadEnum.INDEX_TYPE_01.getCode(),0,item2.getVoltageLevel(),dto0); + double sd1 = this.getDimVoltageDataSd(item2.getVoltageLevel(), Objects.isNull(rDimVoltageD) ? defaultValue : rDimVoltageD.getV(), calculatedParam.getDataDate(), item.getLineBaseList(), UploadEnum.INDEX_TYPE_01.getCode(), null); + RUploadEvaluationDataD dto11 = this.channelData(rUploadEvaluationDataD, Objects.isNull(rDimVoltageD) ? defaultValue : rDimVoltageD.getV(), sd1, UploadEnum.INDEX_TYPE_01.getCode(), 0, item2.getVoltageLevel(), dto0); result.add(dto11); //长时间闪变 - double sd2 = this.getDimVoltageDataSd(item2.getVoltageLevel(),Objects.isNull(rDimVoltageD)?defaultValue:rDimVoltageD.getPst(),calculatedParam.getDataDate(),item.getLineBaseList(),UploadEnum.INDEX_TYPE_02.getCode(),null); - RUploadEvaluationDataD dto22 = this.channelData(rUploadEvaluationDataD,Objects.isNull(rDimVoltageD)?defaultValue:rDimVoltageD.getPst(),sd2,UploadEnum.INDEX_TYPE_02.getCode(),0,item2.getVoltageLevel(),dto0); + double sd2 = this.getDimVoltageDataSd(item2.getVoltageLevel(), Objects.isNull(rDimVoltageD) ? defaultValue : rDimVoltageD.getPst(), calculatedParam.getDataDate(), item.getLineBaseList(), UploadEnum.INDEX_TYPE_02.getCode(), null); + RUploadEvaluationDataD dto22 = this.channelData(rUploadEvaluationDataD, Objects.isNull(rDimVoltageD) ? defaultValue : rDimVoltageD.getPst(), sd2, UploadEnum.INDEX_TYPE_02.getCode(), 0, item2.getVoltageLevel(), dto0); result.add(dto22); //三相电压不平衡 - double sd3 = this.getDimVoltageDataSd(item2.getVoltageLevel(),Objects.isNull(rDimVoltageD)?defaultValue:rDimVoltageD.getVUnbalance(),calculatedParam.getDataDate(),item.getLineBaseList(),UploadEnum.INDEX_TYPE_03.getCode(),null); - RUploadEvaluationDataD dto33 = this.channelData(rUploadEvaluationDataD,Objects.isNull(rDimVoltageD)?defaultValue:rDimVoltageD.getVUnbalance(),sd3,UploadEnum.INDEX_TYPE_03.getCode(),0,item2.getVoltageLevel(),dto0); + double sd3 = this.getDimVoltageDataSd(item2.getVoltageLevel(), Objects.isNull(rDimVoltageD) ? defaultValue : rDimVoltageD.getVUnbalance(), calculatedParam.getDataDate(), item.getLineBaseList(), UploadEnum.INDEX_TYPE_03.getCode(), null); + RUploadEvaluationDataD dto33 = this.channelData(rUploadEvaluationDataD, Objects.isNull(rDimVoltageD) ? defaultValue : rDimVoltageD.getVUnbalance(), sd3, UploadEnum.INDEX_TYPE_03.getCode(), 0, item2.getVoltageLevel(), dto0); result.add(dto33); //电压总谐波畸变率 - double sd4 = this.getDimVoltageDataSd(item2.getVoltageLevel(),Objects.isNull(rDimVoltageD)?defaultValue:rDimVoltageD.getVThd(),calculatedParam.getDataDate(),item.getLineBaseList(),UploadEnum.INDEX_TYPE_04.getCode(),null); - RUploadEvaluationDataD dto44 = this.channelData(rUploadEvaluationDataD,Objects.isNull(rDimVoltageD)?defaultValue:rDimVoltageD.getVThd(),sd4,UploadEnum.INDEX_TYPE_04.getCode(),0,item2.getVoltageLevel(),dto0); + double sd4 = this.getDimVoltageDataSd(item2.getVoltageLevel(), Objects.isNull(rDimVoltageD) ? defaultValue : rDimVoltageD.getVThd(), calculatedParam.getDataDate(), item.getLineBaseList(), UploadEnum.INDEX_TYPE_04.getCode(), null); + RUploadEvaluationDataD dto44 = this.channelData(rUploadEvaluationDataD, Objects.isNull(rDimVoltageD) ? defaultValue : rDimVoltageD.getVThd(), sd4, UploadEnum.INDEX_TYPE_04.getCode(), 0, item2.getVoltageLevel(), dto0); result.add(dto44); //各次谐波电压 List valueList = new ArrayList<>(); - if (!Objects.isNull(rDimVoltageD)){ - valueList = Arrays.asList(rDimVoltageD.getV2(),rDimVoltageD.getV3(),rDimVoltageD.getV4(),rDimVoltageD.getV5(),rDimVoltageD.getV6(),rDimVoltageD.getV7(),rDimVoltageD.getV8(),rDimVoltageD.getV9(),rDimVoltageD.getV10() - ,rDimVoltageD.getV11(),rDimVoltageD.getV12(),rDimVoltageD.getV13(),rDimVoltageD.getV14(),rDimVoltageD.getV15(),rDimVoltageD.getV16(),rDimVoltageD.getV17(),rDimVoltageD.getV18(),rDimVoltageD.getV19(),rDimVoltageD.getV20() - ,rDimVoltageD.getV21(),rDimVoltageD.getV22(),rDimVoltageD.getV23(),rDimVoltageD.getV24(),rDimVoltageD.getV25(),rDimVoltageD.getV26(),rDimVoltageD.getV27(),rDimVoltageD.getV28(),rDimVoltageD.getV29(),rDimVoltageD.getV30() - ,rDimVoltageD.getV31(),rDimVoltageD.getV32(),rDimVoltageD.getV33(),rDimVoltageD.getV34(),rDimVoltageD.getV35(),rDimVoltageD.getV36(),rDimVoltageD.getV37(),rDimVoltageD.getV38(),rDimVoltageD.getV39(),rDimVoltageD.getV40() - ,rDimVoltageD.getV41(),rDimVoltageD.getV42(),rDimVoltageD.getV43(),rDimVoltageD.getV44(),rDimVoltageD.getV45(),rDimVoltageD.getV46(),rDimVoltageD.getV47(),rDimVoltageD.getV48(),rDimVoltageD.getV49(),rDimVoltageD.getV50()); + if (!Objects.isNull(rDimVoltageD)) { + valueList = Arrays.asList(rDimVoltageD.getV2(), rDimVoltageD.getV3(), rDimVoltageD.getV4(), rDimVoltageD.getV5(), rDimVoltageD.getV6(), rDimVoltageD.getV7(), rDimVoltageD.getV8(), rDimVoltageD.getV9(), rDimVoltageD.getV10() + , rDimVoltageD.getV11(), rDimVoltageD.getV12(), rDimVoltageD.getV13(), rDimVoltageD.getV14(), rDimVoltageD.getV15(), rDimVoltageD.getV16(), rDimVoltageD.getV17(), rDimVoltageD.getV18(), rDimVoltageD.getV19(), rDimVoltageD.getV20() + , rDimVoltageD.getV21(), rDimVoltageD.getV22(), rDimVoltageD.getV23(), rDimVoltageD.getV24(), rDimVoltageD.getV25(), rDimVoltageD.getV26(), rDimVoltageD.getV27(), rDimVoltageD.getV28(), rDimVoltageD.getV29(), rDimVoltageD.getV30() + , rDimVoltageD.getV31(), rDimVoltageD.getV32(), rDimVoltageD.getV33(), rDimVoltageD.getV34(), rDimVoltageD.getV35(), rDimVoltageD.getV36(), rDimVoltageD.getV37(), rDimVoltageD.getV38(), rDimVoltageD.getV39(), rDimVoltageD.getV40() + , rDimVoltageD.getV41(), rDimVoltageD.getV42(), rDimVoltageD.getV43(), rDimVoltageD.getV44(), rDimVoltageD.getV45(), rDimVoltageD.getV46(), rDimVoltageD.getV47(), rDimVoltageD.getV48(), rDimVoltageD.getV49(), rDimVoltageD.getV50()); } - this.channelHarmonicData(rUploadEvaluationDataD,result,valueList,UploadEnum.INDEX_TYPE_05.getCode(),item2.getVoltageLevel(),dto0,item.getLineBaseList()); + this.channelHarmonicData(rUploadEvaluationDataD, result, valueList, UploadEnum.INDEX_TYPE_05.getCode(), item2.getVoltageLevel(), dto0, item.getLineBaseList()); //负序电流 - double sd6 = this.getDimVoltageDataSd(item2.getVoltageLevel(),Objects.isNull(rDimVoltageD)?defaultValue:rDimVoltageD.getINeg(),calculatedParam.getDataDate(),item.getLineBaseList(),UploadEnum.INDEX_TYPE_06.getCode(),null); - RUploadEvaluationDataD dto66 = this.channelData(rUploadEvaluationDataD,Objects.isNull(rDimVoltageD)?defaultValue:rDimVoltageD.getINeg(),sd6,UploadEnum.INDEX_TYPE_06.getCode(),0,item2.getVoltageLevel(),dto0); + double sd6 = this.getDimVoltageDataSd(item2.getVoltageLevel(), Objects.isNull(rDimVoltageD) ? defaultValue : rDimVoltageD.getINeg(), calculatedParam.getDataDate(), item.getLineBaseList(), UploadEnum.INDEX_TYPE_06.getCode(), null); + RUploadEvaluationDataD dto66 = this.channelData(rUploadEvaluationDataD, Objects.isNull(rDimVoltageD) ? defaultValue : rDimVoltageD.getINeg(), sd6, UploadEnum.INDEX_TYPE_06.getCode(), 0, item2.getVoltageLevel(), dto0); result.add(dto66); }); } }); - if (CollUtil.isNotEmpty(result)){ - this.saveOrUpdateBatchByMultiId(result,1000); + if (CollUtil.isNotEmpty(result)) { + this.saveOrUpdateBatchByMultiId(result, 1000); } } /** * 通过日表取平均值,作为月表数据 + * * @param calculatedParam */ @Override @@ -186,14 +214,33 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl list = this.baseMapper.evaluationMonthData(beginMonth,startTime,endTime,"02"); + List list = this.baseMapper.evaluationMonthData(beginMonth, startTime, endTime, "02"); - //获取监测点信息 - List list1 = this.getPmsMonitor(); + List pmsRunStatisticsList = runStatisticMService.selectListByDate(startTime, endTime,calculatedParam.getDataDate()); //获取中台母线信息 List list2 = this.getBusBarInfo(); //获取灿能母线信息 - List list3 = this.getCnBusBarInfo(list1); + List list3; + + if (CollUtil.isNotEmpty(pmsRunStatisticsList)) { + List wireIds = pmsRunStatisticsList.stream() + .filter(x -> StrUtil.isNotBlank(x.getOnlineBusIds())) + .flatMap(x -> CollectionUtil.toList(x.getOnlineBusIds().split(StrUtil.COMMA)).stream()).distinct().collect(Collectors.toList()); + if(CollUtil.isNotEmpty(wireIds)){ + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(GeneratrixWire::getStatus, DataStateEnum.ENABLE.getCode()) + .in(GeneratrixWire::getId, wireIds); + list3 = generatrixWireMapper.selectList(lambdaQueryWrapper); + }else{ + List list1 = this.getPmsMonitor(); + list3 = this.getCnBusBarInfo(list1); + } + } else { + //获取监测点信息 + List list1 = this.getPmsMonitor(); + list3 = this.getCnBusBarInfo(list1); + } + //获取单位下各电压等级数据 DeptGetLineParam deptGetLineParam = new DeptGetLineParam(); @@ -203,25 +250,25 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl busBarList = new ArrayList<>(); - for(DeptGetBusBarDTO deptGetBusBarDTO : barDto){ + for (DeptGetBusBarDTO deptGetBusBarDTO : barDto) { BusBarDto busBarDto = new BusBarDto(); busBarDto.setOrgId(deptGetBusBarDTO.getUnitId()); - Integer online = (int)list3.stream().map(GeneratrixWire::getId).filter(id ->deptGetBusBarDTO.getBusBarIds().contains(id)).distinct().count(); + Integer online = (int) list3.stream().map(GeneratrixWire::getId).filter(id -> deptGetBusBarDTO.getBusBarIds().contains(id)).distinct().count(); busBarDto.setAllMonitorBusNum(online); - Integer all = (int)list2.stream().filter(item->deptGetBusBarDTO.getUnitChildrenList().contains(item.getSectionId())).count(); + Integer all = (int) list2.stream().filter(item -> deptGetBusBarDTO.getUnitChildrenList().contains(item.getSectionId())).count(); busBarDto.setAllOnlineBusNum(all); - if(all>0){ - busBarDto.setAllMonitorRate(BigDecimal.valueOf((double) online/all).setScale(4,RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).doubleValue()); + if (all > 0) { + busBarDto.setAllMonitorRate(BigDecimal.valueOf((double) online / all).setScale(4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).doubleValue()); } busBarList.add(busBarDto); } - Map mapBus = busBarList.stream().collect(Collectors.toMap(BusBarDto::getOrgId, Function.identity())); + Map mapBus = busBarList.stream().collect(Collectors.toMap(BusBarDto::getOrgId, Function.identity())); - if (CollUtil.isNotEmpty(list)){ + if (CollUtil.isNotEmpty(list)) { - list.forEach(item->{ + list.forEach(item -> { item.setId(IdUtil.simpleUUID()); item.setComputeDate(calculatedParam.getDataDate()); @@ -250,48 +297,17 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl calculatedParam) { - //获取监测点信息 - List list1 = this.getPmsMonitor(); - //获取中台母线信息 - List list2 = this.getBusBarInfo(); - //获取灿能母线信息 - List list3 = this.getCnBusBarInfo(list1); - - //获取单位下各电压等级数据 - DeptGetLineParam deptGetLineParam = new DeptGetLineParam(); - Dept data = deptFeignClient.getRootDept().getData(); - deptGetLineParam.setDeptId(data.getId()); - List barDto = commTerminalGeneralClient.deptBusBar(deptGetLineParam).getData(); - - - List busBarList = new ArrayList<>(); - for(DeptGetBusBarDTO deptGetBusBarDTO : barDto){ - BusBarDto busBarDto = new BusBarDto(); - busBarDto.setOrgId(deptGetBusBarDTO.getUnitId()); - Integer online = (int)list3.stream().map(GeneratrixWire::getId).filter(id ->deptGetBusBarDTO.getBusBarIds().contains(id)).distinct().count(); - busBarDto.setAllMonitorBusNum(online); - Integer all = (int)list2.stream().filter(item->deptGetBusBarDTO.getUnitChildrenList().contains(item.getSectionId())).count(); - busBarDto.setAllOnlineBusNum(all); - - if(all>0){ - busBarDto.setAllMonitorRate(BigDecimal.valueOf((double) online/all).setScale(4,RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).doubleValue()); - } - busBarList.add(busBarDto); - } - Map mapBus = busBarList.stream().collect(Collectors.toMap(BusBarDto::getOrgId, Function.identity())); - - - //开始年 String begin = DateUtil.format(DateUtil.beginOfYear(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_YEAR_PATTERN)), DatePattern.NORM_YEAR_PATTERN); //起始时间 @@ -299,9 +315,58 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl list = this.baseMapper.evaluationMonthData(begin,startTime,endTime,"01"); - if (CollUtil.isNotEmpty(list)){ - list.forEach(item->{ + List list = this.baseMapper.evaluationMonthData(begin, startTime, endTime, "01"); + + List pmsRunStatisticsList = runStatisticYService.selectListByDate(startTime, endTime,calculatedParam.getDataDate()); + + //获取中台母线信息 + List list2 = this.getBusBarInfo(); + //获取灿能母线信息 + List list3; + if (CollUtil.isNotEmpty(pmsRunStatisticsList)) { + List wireIds = pmsRunStatisticsList.stream() + .filter(x -> StrUtil.isNotBlank(x.getOnlineBusIds())) + .flatMap(x -> CollectionUtil.toList(x.getOnlineBusIds().split(StrUtil.COMMA)).stream()).distinct().collect(Collectors.toList()); + if(CollUtil.isNotEmpty(wireIds)){ + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(GeneratrixWire::getStatus, DataStateEnum.ENABLE.getCode()) + .in(GeneratrixWire::getId, wireIds); + list3 = generatrixWireMapper.selectList(lambdaQueryWrapper); + }else{ + List list1 = this.getPmsMonitor(); + list3 = this.getCnBusBarInfo(list1); + } + } else { + //获取监测点信息 + List list1 = this.getPmsMonitor(); + list3 = this.getCnBusBarInfo(list1); + } + + //获取单位下各电压等级数据 + DeptGetLineParam deptGetLineParam = new DeptGetLineParam(); + Dept data = deptFeignClient.getRootDept().getData(); + deptGetLineParam.setDeptId(data.getId()); + List barDto = commTerminalGeneralClient.deptBusBar(deptGetLineParam).getData(); + + + List busBarList = new ArrayList<>(); + for (DeptGetBusBarDTO deptGetBusBarDTO : barDto) { + BusBarDto busBarDto = new BusBarDto(); + busBarDto.setOrgId(deptGetBusBarDTO.getUnitId()); + Integer online = (int) list3.stream().map(GeneratrixWire::getId).filter(id -> deptGetBusBarDTO.getBusBarIds().contains(id)).distinct().count(); + busBarDto.setAllMonitorBusNum(online); + Integer all = (int) list2.stream().filter(item -> deptGetBusBarDTO.getUnitChildrenList().contains(item.getSectionId())).count(); + busBarDto.setAllOnlineBusNum(all); + + if (all > 0) { + busBarDto.setAllMonitorRate(BigDecimal.valueOf((double) online / all).setScale(4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).doubleValue()); + } + busBarList.add(busBarDto); + } + Map mapBus = busBarList.stream().collect(Collectors.toMap(BusBarDto::getOrgId, Function.identity())); + + if (CollUtil.isNotEmpty(list)) { + list.forEach(item -> { item.setId(IdUtil.simpleUUID()); item.setComputeDate(calculatedParam.getDataDate()); @@ -329,7 +394,7 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl getPmsMonitor() { List dicDataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.LINE_STATE.getCode()).getData(); - DictData dictData = dicDataList.stream().filter(o->Objects.equals(o.getCode(), DicDataEnum.RUN.getCode())).findFirst().orElse(null); + DictData dictData = dicDataList.stream().filter(o -> Objects.equals(o.getCode(), DicDataEnum.RUN.getCode())).findFirst().orElse(null); LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(Monitor::getStatus, DataStateEnum.ENABLE.getCode()) - .eq(Monitor::getIsUpToGrid,DataStateEnum.ENABLE.getCode()) - .eq(Monitor::getMonitorState,dictData.getId()); + .eq(Monitor::getIsUpToGrid, DataStateEnum.ENABLE.getCode()) + .eq(Monitor::getMonitorState, dictData.getId()); return pmsMonitorMapper.selectList(lambdaQueryWrapper); } @@ -367,7 +432,7 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl lineList = list.stream().map(Monitor::getLineId).collect(Collectors.toList()); LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(GeneratrixWire::getStatus, DataStateEnum.ENABLE.getCode()) - .in(GeneratrixWire::getId,lineList); + .in(GeneratrixWire::getId, lineList); return generatrixWireMapper.selectList(lambdaQueryWrapper); } @@ -377,7 +442,7 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl getBusBarNum(List list1, List list2, List dto) { List result = new ArrayList<>(); //中台母线 - Map> midMap = list2.stream().collect(Collectors.groupingBy(PmsMidLedger::getSectionId)); + Map> midMap = list2.stream().collect(Collectors.groupingBy(PmsMidLedger::getSectionId)); for (DeptGetBusBarDTO item : dto) { int count = 0; List childList = new ArrayList<>(); @@ -385,31 +450,31 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl l1 = midMap.get(item.getUnitId()); - if (CollUtil.isNotEmpty(l1)){ + if (CollUtil.isNotEmpty(l1)) { dto1.setAllOnlineBusNum(l1.size()); - Map> voltageMap = l1.stream().collect(Collectors.groupingBy(PmsMidLedger::getVoltageLevel)); + Map> voltageMap = l1.stream().collect(Collectors.groupingBy(PmsMidLedger::getVoltageLevel)); for (String key : voltageMap.keySet()) { BusBarDto.VoltageChild voltageChild = new BusBarDto.VoltageChild(); List l2 = voltageMap.get(key).stream().map(PmsMidLedger::getId).collect(Collectors.toList()); voltageChild.setVoltageLevel(key); voltageChild.setOnlineBusNum(l2.size()); //匹配wire母线表数量 - if (CollUtil.isNotEmpty(item.getBusBarIds())){ - List l3 = list1.stream().filter(o->item.getBusBarIds().contains(o.getId())).collect(Collectors.toList()); - if (CollUtil.isNotEmpty(l3)){ + if (CollUtil.isNotEmpty(item.getBusBarIds())) { + List l3 = list1.stream().filter(o -> item.getBusBarIds().contains(o.getId())).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(l3)) { voltageChild.setMonitorBusNum(l3.size()); } } else { voltageChild.setMonitorBusNum(0); } - voltageChild.setMonitorRate(voltageChild.getMonitorBusNum()*100.0/voltageChild.getOnlineBusNum()); + voltageChild.setMonitorRate(voltageChild.getMonitorBusNum() * 100.0 / voltageChild.getOnlineBusNum()); childList.add(voltageChild); // count = count + voltageChild.getMonitorBusNum(); count = voltageChild.getMonitorBusNum(); } dto1.setAllMonitorBusNum(count); dto1.setVoltageChild(childList); - dto1.setAllMonitorRate(dto1.getAllMonitorRate()*100/l1.size()); + dto1.setAllMonitorRate(dto1.getAllMonitorRate() * 100 / l1.size()); } result.add(dto1); } @@ -423,35 +488,35 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl result = new ArrayList<>(); //获取所有部门信息 List deptList = commTerminalGeneralClient.getDeptChildrenByParent(deptGetLineParam).getData(); - deptList.forEach(item->{ - int count1 = 0,count2 = 0; + deptList.forEach(item -> { + int count1 = 0, count2 = 0; List children = new ArrayList<>(); List child = new ArrayList<>(); BusBarDto busBarDto = new BusBarDto(); busBarDto.setOrgId(item.getUnitId()); //获取当前部门下 包含母线数量的部门 - List newList = list.stream().filter(o->item.getUnitChildrenList().contains(o.getOrgId())).collect(Collectors.toList()); - if (CollUtil.isNotEmpty(newList)){ + List newList = list.stream().filter(o -> item.getUnitChildrenList().contains(o.getOrgId())).collect(Collectors.toList()); + if (CollUtil.isNotEmpty(newList)) { for (BusBarDto it : newList) { count1 = count1 + it.getAllMonitorBusNum(); count2 = count2 + it.getAllOnlineBusNum(); - if (CollUtil.isNotEmpty(it.getVoltageChild())){ + if (CollUtil.isNotEmpty(it.getVoltageChild())) { child.addAll(it.getVoltageChild()); } } busBarDto.setAllMonitorBusNum(count1); busBarDto.setAllOnlineBusNum(count2); - busBarDto.setAllMonitorRate(count2==0?0.0:count1*100/count2); - if (CollUtil.isNotEmpty(child)){ - Map> map = child.stream().collect(Collectors.groupingBy(BusBarDto.VoltageChild::getVoltageLevel)); - map.forEach((k,v)->{ + busBarDto.setAllMonitorRate(count2 == 0 ? 0.0 : count1 * 100 / count2); + if (CollUtil.isNotEmpty(child)) { + Map> map = child.stream().collect(Collectors.groupingBy(BusBarDto.VoltageChild::getVoltageLevel)); + map.forEach((k, v) -> { BusBarDto.VoltageChild c1 = new BusBarDto.VoltageChild(); c1.setVoltageLevel(k); int monitorBusNum = (int) v.stream().mapToDouble(BusBarDto.VoltageChild::getMonitorBusNum).average().getAsDouble(); c1.setMonitorBusNum(monitorBusNum); int online = (int) v.stream().mapToDouble(BusBarDto.VoltageChild::getOnlineBusNum).average().getAsDouble(); c1.setOnlineBusNum(online); - c1.setMonitorRate(online==0.0?0:monitorBusNum*100.0/online); + c1.setMonitorRate(online == 0.0 ? 0 : monitorBusNum * 100.0 / online); children.add(c1); }); busBarDto.setVoltageChild(children); @@ -467,10 +532,10 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl list = dto2.getVoltageChild(); - if (CollUtil.isNotEmpty(list)){ - list.forEach(item->{ + if (CollUtil.isNotEmpty(list)) { + list.forEach(item -> { // if (Objects.equals(item.getVoltageLevel(),voltage)){ // dto.setMonitorBusNum(item.getMonitorBusNum()); // dto.setOnlineBusNum(item.getOnlineBusNum()); @@ -483,7 +548,7 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl deptList, Map> map) { + public void judgeLevel(Integer level, RUploadEvaluationDataD rUploadEvaluationDataD, String id, String name, List deptList, Map> map) { String result = ""; - if (Objects.equals(level,Integer.parseInt(UploadEnum.NJCN_DEPT_LEVEL_2.getCode()))){ + if (Objects.equals(level, Integer.parseInt(UploadEnum.NJCN_DEPT_LEVEL_2.getCode()))) { result = UploadEnum.STATISTICAL_LEVEL_3.getCode(); rUploadEvaluationDataD.setCityId(""); rUploadEvaluationDataD.setCountyId(""); - } else if (Objects.equals(level,Integer.parseInt(UploadEnum.NJCN_DEPT_LEVEL_3.getCode()))) { + } else if (Objects.equals(level, Integer.parseInt(UploadEnum.NJCN_DEPT_LEVEL_3.getCode()))) { result = UploadEnum.STATISTICAL_LEVEL_4.getCode(); rUploadEvaluationDataD.setCityId(id); rUploadEvaluationDataD.setCityName(name); rUploadEvaluationDataD.setCountyId(""); - } else if (Objects.equals(level,Integer.parseInt(UploadEnum.NJCN_DEPT_LEVEL_4.getCode()))) { + } else if (Objects.equals(level, Integer.parseInt(UploadEnum.NJCN_DEPT_LEVEL_4.getCode()))) { result = UploadEnum.STATISTICAL_LEVEL_5.getCode(); List list = Arrays.stream(map.get(id).get(0).getPids().split(",")).map(String::trim).collect(Collectors.toList()); - String parentCode = deptList.stream().filter(o->Objects.equals(o.getId(),list.get(3))).findFirst().orElse(null).getCode(); + String parentCode = deptList.stream().filter(o -> Objects.equals(o.getId(), list.get(3))).findFirst().orElse(null).getCode(); rUploadEvaluationDataD.setCityId(parentCode); rUploadEvaluationDataD.setCityName(map.get(parentCode).get(0).getName()); rUploadEvaluationDataD.setCountyId(id); @@ -520,9 +585,9 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl result,List valueList, String indexType, String voltage,RUploadEvaluationDataD rUploadEvaluationDataD2,List line) { + public void channelHarmonicData(RUploadEvaluationDataD rUploadEvaluationDataD, List result, List valueList, String indexType, String voltage, RUploadEvaluationDataD rUploadEvaluationDataD2, List line) { final Double defaultValue = 3.1415926; int length; - if (!Objects.isNull(valueList)){ + if (!Objects.isNull(valueList)) { length = valueList.size(); } else { length = 49; } for (int i = 0; i < length; i++) { RUploadEvaluationDataD dto = new RUploadEvaluationDataD(); - BeanUtils.copyProperties(rUploadEvaluationDataD,dto); + BeanUtils.copyProperties(rUploadEvaluationDataD, dto); dto.setId(IdUtil.simpleUUID()); - dto.setAvgValue(CollUtil.isNotEmpty(valueList)?valueList.get(i):defaultValue); + dto.setAvgValue(CollUtil.isNotEmpty(valueList) ? valueList.get(i) : defaultValue); dto.setIndexType(indexType); - dto.setHarmonicNum(i+2); - if (Objects.equals(voltage, "0")){ + dto.setHarmonicNum(i + 2); + if (Objects.equals(voltage, "0")) { dto.setStandardDeviation(defaultValue); } else { - double sd = this.getDimVoltageDataSd(voltage,dto.getAvgValue(),dto.getStatisticalDate(),line,indexType,dto.getHarmonicNum()); + double sd = this.getDimVoltageDataSd(voltage, dto.getAvgValue(), dto.getStatisticalDate(), line, indexType, dto.getHarmonicNum()); dto.setStandardDeviation(sd); } dto.setVoltageLevel(voltage); @@ -573,8 +638,8 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(RDimVoltageD::getOrgId, orgId) - .eq(RDimVoltageD::getStatisDate,time) - .eq(RDimVoltageD::getVoltageType,voltage); + .eq(RDimVoltageD::getStatisDate, time) + .eq(RDimVoltageD::getVoltageType, voltage); return rDimVoltageDMapper.selectOne(lambdaQueryWrapper); } @@ -583,20 +648,20 @@ public class RUploadEvaluationDataDServiceImpl extends MppServiceImpl line, String type, Integer times) { double standardDeviation = 3.1415926; - if (Objects.equals(avg,standardDeviation)){ + if (Objects.equals(avg, standardDeviation)) { return standardDeviation; } //获取监测点数据 - if (CollUtil.isNotEmpty(line)){ - Map> map = line.stream().collect(Collectors.groupingBy(LineDevGetDTO::getVoltageLevel)); - if (!Objects.isNull(map.get(voltage))){ + if (CollUtil.isNotEmpty(line)) { + Map> map = line.stream().collect(Collectors.groupingBy(LineDevGetDTO::getVoltageLevel)); + if (!Objects.isNull(map.get(voltage))) { Set lineSet = map.get(voltage).stream().map(LineDevGetDTO::getPointId).collect(Collectors.toSet()); - List dataList = rDimVoltageDMapper.getLineData(time,time,lineSet); + List dataList = rDimVoltageDMapper.getLineData(time, time, lineSet); //根据平均值计算每个指标的标准差 - if (CollUtil.isNotEmpty(dataList)){ - double total = this.getDataByType(type,avg,dataList,times); + if (CollUtil.isNotEmpty(dataList)) { + double total = this.getDataByType(type, avg, dataList, times); //计算标准差 - standardDeviation = Math.sqrt(total/dataList.size()); + standardDeviation = Math.sqrt(total / dataList.size()); } } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadPointStatisticalDataDServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadPointStatisticalDataDServiceImpl.java index 64b6bfb9d..fb7544242 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadPointStatisticalDataDServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadPointStatisticalDataDServiceImpl.java @@ -8,18 +8,23 @@ import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; +import com.njcn.common.pojo.constant.BizParamConstant; import com.njcn.device.biz.commApi.CommLineClient; import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; import com.njcn.device.biz.pojo.dto.LineDTO; import com.njcn.device.biz.pojo.dto.LineDevGetDTO; import com.njcn.device.pq.pojo.po.RStatIntegrityD; +import com.njcn.harmonic.pojo.po.upload.PmsRunStatisticM; +import com.njcn.harmonic.pojo.po.upload.PmsRunStatisticY; import com.njcn.harmonic.pojo.po.upload.RUploadPointStatisticalDataD; import com.njcn.prepare.harmonic.enums.UploadEnum; import com.njcn.prepare.harmonic.mapper.mysql.day.RStatIntegrityDMapper; -import com.njcn.prepare.harmonic.mapper.mysql.line.PmsRunStatisticMapper; +import com.njcn.prepare.harmonic.mapper.mysql.upload.PmsRunStatisticDMapper; import com.njcn.prepare.harmonic.mapper.mysql.upload.RUploadPointStatisticalDataDMapper; import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam; import com.njcn.harmonic.pojo.po.upload.PmsRunStatisticD; +import com.njcn.prepare.harmonic.service.mysql.upload.IPmsRunStatisticMService; +import com.njcn.prepare.harmonic.service.mysql.upload.IPmsRunStatisticYService; import com.njcn.prepare.harmonic.service.mysql.upload.IRUploadPointStatisticalDataDService; import com.njcn.system.api.DicDataFeignClient; import com.njcn.system.api.DictTreeFeignClient; @@ -61,9 +66,10 @@ public class RUploadPointStatisticalDataDServiceImpl extends MppServiceImpl dataList = getStatIntegrityData(calculatedParam.getDataDate()); - //下面先从表里获取在运测点相关数据,当表里没数据时候再从接口获取 //首先获取pms_run_statistic表是否存在执行日期的数据 - List pmsRunStatisticsListD = pmsRunStatisticMapper.selectList(new LambdaQueryWrapper().eq(PmsRunStatisticD::getStatisticDate,calculatedParam.getDataDate())); + List pmsRunStatisticsListD = runStatisticDMapper.selectList(new LambdaQueryWrapper().eq(PmsRunStatisticD::getStatisticDate, calculatedParam.getDataDate())); //筛选国网上送监测点 List deptAll = calculatedParam.getIdList(); - Map pmsRunStatisticMap = pmsRunStatisticsListD.stream().collect(Collectors.toMap(PmsRunStatisticD::getDeptId,Function.identity())); + Map pmsRunStatisticMap = pmsRunStatisticsListD.stream().collect(Collectors.toMap(PmsRunStatisticD::getDeptId, Function.identity())); List lineDTOList; - if(pmsRunStatisticMap.containsKey(dept.getCode())){ - List monitorIds = CollectionUtil.toList(pmsRunStatisticMap.get(dept.getCode()).getRunMonitorIds().split(StrUtil.COMMA)); - lineDTOList = commLineClient.getLineDetailBatch(monitorIds).getData(); + if (pmsRunStatisticMap.containsKey(dept.getCode())) { + String runMonitorIds = pmsRunStatisticMap.get(dept.getCode()).getRunMonitorIds(); + if(StrUtil.isNotBlank(runMonitorIds)){ + List monitorIds = CollectionUtil.toList(runMonitorIds.split(StrUtil.COMMA)); + lineDTOList = commLineClient.getLineDetailBatch(monitorIds).getData(); + }else { + lineDTOList = new ArrayList<>(); + } } else { lineDTOList = new ArrayList<>(); } @@ -155,28 +165,51 @@ public class RUploadPointStatisticalDataDServiceImpl extends MppServiceImpl upDevIds =new ArrayList<>(); + List onMonitorIds=new ArrayList<>(); + if (CollectionUtil.isEmpty(pmsRunStatisticsListD)) { //正常流程 newBaseList = item.getLineBaseList().stream().filter(o -> Objects.equals(o.getIsUpToGrid(), 1)).collect(toList()); - }else { - String[] monitorTemIds = pmsRunStatisticMap.get(item.getUnitId()).getRunMonitorIds().split(StrUtil.COMMA); - List temIds = Arrays.stream(monitorTemIds).collect(toList()); + upDevIds = newBaseList.stream().map(LineDevGetDTO::getDevId).distinct().collect(toList()); + } else { + if(pmsRunStatisticMap.containsKey(item.getUnitId())){ + PmsRunStatisticD pmsRunStatisticD = pmsRunStatisticMap.get(item.getUnitId()); + if(StrUtil.isNotBlank(pmsRunStatisticD.getRunMonitorIds())){ + List temIds = Arrays.stream(pmsRunStatisticD.getRunMonitorIds().split(StrUtil.COMMA)).collect(toList()); + List collect = lineDTOList.stream().filter(o -> temIds.contains(o.getLineId())).map(it -> { + LineDevGetDTO lineDevGetDTO = new LineDevGetDTO(); + lineDevGetDTO.setPointId(it.getLineId()); + lineDevGetDTO.setDevId(it.getDevId()); + lineDevGetDTO.setObjType(it.getObjType()); + return lineDevGetDTO; + }).collect(toList()); + if(CollUtil.isEmpty(collect)){ + newBaseList = item.getLineBaseList().stream().filter(o -> Objects.equals(o.getIsUpToGrid(), 1)).collect(Collectors.toList()); + upDevIds = newBaseList.stream().map(LineDevGetDTO::getDevId).distinct().collect(toList()); + }else { + newBaseList = collect; + if(StrUtil.isNotBlank(pmsRunStatisticD.getRunDevIds())){ + upDevIds = Arrays.stream(pmsRunStatisticD.getRunDevIds().split(StrUtil.COMMA)).collect(toList()); + } + if(StrUtil.isNotBlank(pmsRunStatisticD.getOnlineMonitorIds())){ + onMonitorIds.addAll(Arrays.stream(pmsRunStatisticD.getOnlineMonitorIds().split(StrUtil.COMMA)).collect(toList())); + } + } + }else{ + newBaseList = item.getLineBaseList().stream().filter(o -> Objects.equals(o.getIsUpToGrid(), 1)).collect(toList()); + upDevIds = newBaseList.stream().map(LineDevGetDTO::getDevId).distinct().collect(toList()); + } + }else{ + newBaseList = item.getLineBaseList().stream().filter(o -> Objects.equals(o.getIsUpToGrid(), 1)).collect(toList()); + upDevIds = newBaseList.stream().map(LineDevGetDTO::getDevId).distinct().collect(toList()); + } - newBaseList = lineDTOList.stream().filter(o -> temIds.contains(o.getLineId())).map(it->{ - LineDevGetDTO lineDevGetDTO = new LineDevGetDTO(); - lineDevGetDTO.setPointId(it.getLineId()); - lineDevGetDTO.setDevId(it.getDevId()); - lineDevGetDTO.setObjType(it.getObjType()); - return lineDevGetDTO; - }).collect(Collectors.toList()); } - List upMonitorIds = newBaseList.stream().map(LineDevGetDTO::getPointId).distinct().collect(toList()); - List upDevIds = newBaseList.stream().map(LineDevGetDTO::getDevId).distinct().collect(toList()); List finalNewBaseList = newBaseList; + List finalUpDevIds = upDevIds; mapKey.forEach((key, val) -> { List keyItem = finalNewBaseList.stream().filter(o -> val.contains(o.getObjType())).collect(toList()); RUploadPointStatisticalDataD rUploadPointStatisticalDataD = new RUploadPointStatisticalDataD(); @@ -219,18 +252,21 @@ public class RUploadPointStatisticalDataDServiceImpl extends MppServiceImpl l3 = dataList.stream().filter(it -> upMonitorIds.contains(it.getLineIndex())).collect(toList()); + List l3; + if(CollUtil.isNotEmpty(onMonitorIds)){ + l3 = dataList.stream().filter(it -> onMonitorIds.contains(it.getLineIndex())).collect(toList()); + }else{ + l3 = dataList.stream().filter(it -> upMonitorIds.contains(it.getLineIndex())).collect(toList()); + } int due = l3.stream().mapToInt(RStatIntegrityD::getDueTime).sum(); int real = l3.stream().mapToInt(RStatIntegrityD::getRealTime).sum(); rUploadPointStatisticalDataD.setExpectCollectNum(due); rUploadPointStatisticalDataD.setActualCollectNum(real); long onlineCount = l3.stream().filter(me -> me.getRealTime() > 0).count(); - rUploadPointStatisticalDataD.setOnlineMonitorNum((int) onlineCount); + rUploadPointStatisticalDataD.setOnlineMonitorNum(onMonitorIds.size() == 0 ? (int) onlineCount : onMonitorIds.size()); rUploadPointStatisticalDataD.setOnlineMonitorRate(upMonitorIds.size() == 0 ? 0d : BigDecimal.valueOf(rUploadPointStatisticalDataD.getOnlineMonitorNum() * 100.0 / rUploadPointStatisticalDataD.getRunMonitorNum()).setScale(4, RoundingMode.HALF_UP).doubleValue()); @@ -289,7 +325,6 @@ public class RUploadPointStatisticalDataDServiceImpl extends MppServiceImpl lambdaQueryWrapper = new LambdaQueryWrapper<>(); @@ -310,9 +345,11 @@ public class RUploadPointStatisticalDataDServiceImpl extends MppServiceImpl pmsRunStatistic = runStatisticMService.selectListByDate(startTime, endTime,calculatedParam.getDataDate()); + Map pmsRunStatisticMap = pmsRunStatistic.stream().collect(Collectors.toMap(PmsRunStatisticM::getDeptId, Function.identity())); //数据集 List list = this.baseMapper.pointStatisticalMonthData(beginMonth, startTime, endTime, "02"); - dataProcessing(calculatedParam, list); + dataProcessing(calculatedParam, list, pmsRunStatisticMap, BizParamConstant.STAT_BIZ_MONTH); } @Override @@ -323,18 +360,19 @@ public class RUploadPointStatisticalDataDServiceImpl extends MppServiceImpl pmsRunStatistic = runStatisticYService.selectListByDate(startTime, endTime,calculatedParam.getDataDate()); + Map pmsRunStatisticMap = pmsRunStatistic.stream().collect(Collectors.toMap(PmsRunStatisticY::getDeptId, Function.identity())); //数据集 List list = this.baseMapper.pointStatisticalMonthData(beginMonth, startTime, endTime, "01"); - dataProcessing(calculatedParam, list); + dataProcessing(calculatedParam, list, pmsRunStatisticMap, BizParamConstant.STAT_BIZ_YEAR); } /** * @param calculatedParam * @param list 数据处理 */ - private void dataProcessing(CalculatedParam calculatedParam, List list) { - - /* //数据分组 + private void dataProcessing(CalculatedParam calculatedParam, List list, Map pmsRunStatisticMap, String type) { + //数据分组 Map> listMap = list.stream().collect(Collectors.groupingBy(x -> x.getProvinceId() + x.getCityId() + x.getCountyId())); //获取省级单位id Dept root = deptFeignClient.getRootDept().getData(); @@ -378,12 +416,70 @@ public class RUploadPointStatisticalDataDServiceImpl extends MppServiceImpl lineDTOList=new ArrayList<>(); + if (pmsRunStatisticMap.containsKey(dept.getCode())) { + List monitorIds; + String runMonitorIds; + if (BizParamConstant.STAT_BIZ_MONTH.equals(type)) { + runMonitorIds = ((PmsRunStatisticM) pmsRunStatisticMap.get(dept.getCode())).getRunMonitorIds(); + } else { + runMonitorIds = ((PmsRunStatisticY) pmsRunStatisticMap.get(dept.getCode())).getRunMonitorIds(); + } + if(StrUtil.isNotBlank(runMonitorIds)){ + monitorIds = CollectionUtil.toList(runMonitorIds.split(StrUtil.COMMA)); + lineDTOList = commLineClient.getLineDetailBatch(monitorIds).getData(); + } + } RUploadPointStatisticalDataD data; for (DeptGetChildrenMoreDTO item : calculatedParam.getIdList()) { //获取国网上送监测点 - List temBaseList = item.getLineBaseList().stream().filter(o -> Objects.equals(o.getIsUpToGrid(), 1)).collect(Collectors.toList()); + List temBaseList; + long devCount; + if (CollectionUtil.isEmpty(pmsRunStatisticMap)) { + //正常流程 + temBaseList = item.getLineBaseList().stream().filter(o -> Objects.equals(o.getIsUpToGrid(), 1)).collect(Collectors.toList()); + devCount = temBaseList.stream().map(LineDevGetDTO::getDevId).distinct().count(); + } else { + List temIds=new ArrayList<>(); + List onDevIds=new ArrayList<>(); + String runMonitorIds; + String devIds; + if (BizParamConstant.STAT_BIZ_MONTH.equals(type)) { + runMonitorIds = ((PmsRunStatisticM) pmsRunStatisticMap.get(item.getUnitId())).getRunMonitorIds(); + devIds = ((PmsRunStatisticM) pmsRunStatisticMap.get(item.getUnitId())).getRunDevIds(); + } else { + runMonitorIds = ((PmsRunStatisticY) pmsRunStatisticMap.get(item.getUnitId())).getRunMonitorIds(); + devIds = ((PmsRunStatisticY) pmsRunStatisticMap.get(item.getUnitId())).getRunDevIds(); + } + if(StrUtil.isNotBlank(runMonitorIds)){ + temIds = CollectionUtil.toList(runMonitorIds.split(StrUtil.COMMA)); + } + if(StrUtil.isNotBlank(devIds)){ + onDevIds = CollectionUtil.toList(devIds.split(StrUtil.COMMA)); + } + List finalTemIds = temIds; + List collect = lineDTOList.stream().filter(o -> finalTemIds.contains(o.getLineId())).map(it -> { + LineDevGetDTO lineDevGetDTO = new LineDevGetDTO(); + lineDevGetDTO.setPointId(it.getLineId()); + lineDevGetDTO.setDevId(it.getDevId()); + lineDevGetDTO.setObjType(it.getObjType()); + return lineDevGetDTO; + }).collect(toList()); + if(CollUtil.isEmpty(collect)){ + temBaseList = item.getLineBaseList().stream().filter(o -> Objects.equals(o.getIsUpToGrid(), 1)).collect(Collectors.toList()); + devCount = temBaseList.stream().map(LineDevGetDTO::getDevId).distinct().count(); + }else { + temBaseList = collect; + if(onDevIds.size()==0){ + devCount = temBaseList.stream().map(LineDevGetDTO::getDevId).distinct().count(); + }else{ + devCount = onDevIds.size(); + } + } + } + long monitorCount = temBaseList.stream().map(LineDevGetDTO::getPointId).distinct().count(); - long devCount = temBaseList.stream().map(LineDevGetDTO::getDevId).distinct().count(); + //其他类型 data = new RUploadPointStatisticalDataD(); data.setProvinceId(dept.getCode()); @@ -420,10 +516,16 @@ public class RUploadPointStatisticalDataDServiceImpl extends MppServiceImpl { item.setId(IdUtil.simpleUUID()); item.setComputeDate(calculatedParam.getDataDate()); - if(item.getOnlineMonitorNum()>item.getRunMonitorNum()){ + if (item.getOnlineMonitorNum() > item.getRunMonitorNum()) { item.setOnlineMonitorRate(100.0); item.setOnlineMonitorNum(item.getRunMonitorNum()); } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadSubstationStatisticalDataDServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadSubstationStatisticalDataDServiceImpl.java index cffc53990..f0c16d342 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadSubstationStatisticalDataDServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadSubstationStatisticalDataDServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; import com.njcn.common.pojo.enums.common.DataStateEnum; @@ -16,11 +17,15 @@ import com.njcn.device.pms.api.StatationStatClient; import com.njcn.device.pms.pojo.param.PmsStatationStatInfoParam; import com.njcn.device.pms.pojo.po.PmsMidLedger; import com.njcn.device.pms.pojo.po.StatationStat; +import com.njcn.harmonic.pojo.po.upload.PmsRunStatisticM; +import com.njcn.harmonic.pojo.po.upload.PmsRunStatisticY; import com.njcn.harmonic.pojo.po.upload.RUploadSubstationStatisticalDataD; import com.njcn.prepare.harmonic.enums.UploadEnum; import com.njcn.prepare.harmonic.mapper.mysql.dim.PmsMidLedgerMapper; import com.njcn.prepare.harmonic.mapper.mysql.upload.RUploadSubstationStatisticalDataDMapper; import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam; +import com.njcn.prepare.harmonic.service.mysql.upload.IPmsRunStatisticMService; +import com.njcn.prepare.harmonic.service.mysql.upload.IPmsRunStatisticYService; import com.njcn.prepare.harmonic.service.mysql.upload.IRUploadSubstationStatisticalDataDService; import com.njcn.user.api.DeptFeignClient; import com.njcn.user.pojo.po.Dept; @@ -29,6 +34,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -49,8 +55,15 @@ public class RUploadSubstationStatisticalDataDServiceImpl extends MppServiceImpl private final StatationStatClient statationStatClient; private final PmsMidLedgerMapper pmsMidLedgerMapper; private final CommTerminalGeneralClient commTerminalGeneralClient; + private final IPmsRunStatisticMService runStatisticMService; + private final IPmsRunStatisticYService runStatisticYService; + @Override public void insertSubStatisticalDataMonth(CalculatedParam calculatedParam) { + //起始时间 + String startTime = DateUtil.format(DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)), DatePattern.NORM_DATE_PATTERN); + //结束时间 + String endTime = DateUtil.format(DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)), DatePattern.NORM_DATE_PATTERN); List result = new ArrayList<>(); //获取省级单位id Dept data = deptFeignClient.getRootDept().getData(); @@ -63,7 +76,22 @@ public class RUploadSubstationStatisticalDataDServiceImpl extends MppServiceImpl List deptGetChildrenList = commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData(); Map> deptChildren = deptGetChildrenList.stream().collect(Collectors.groupingBy(DeptGetChildrenMoreDTO::getUnitId)); //变电站id - List subList = calculatedParam.getIdList(); + List subList ; + //获取月数据 + List pmsRunStatistics = runStatisticMService.selectListByDate(startTime, endTime,calculatedParam.getDataDate()); + Map pmsRunStatisticMap = pmsRunStatistics.stream().collect(Collectors.toMap(PmsRunStatisticM::getDeptId, Function.identity())); + + if (pmsRunStatisticMap.containsKey(dept.getCode())) { + String onlineStationIds = pmsRunStatisticMap.get(dept.getCode()).getOnlineStationIds(); + if(StrUtil.isNotBlank(onlineStationIds)){ + subList = CollectionUtil.toList(onlineStationIds.split(StrUtil.COMMA)); + }else { + subList = calculatedParam.getIdList(); + } + } else { + subList = calculatedParam.getIdList(); + } + //获取监测变电站信息 List subInfo = getSubstationInfo(subList); Map> subMap = subInfo.stream().collect(Collectors.groupingBy(StatationStat::getOrgId)); @@ -84,14 +112,26 @@ public class RUploadSubstationStatisticalDataDServiceImpl extends MppServiceImpl rUploadSubstationStatisticalDataD.setProvinceId(dept.getCode()); rUploadSubstationStatisticalDataD.setProvinceName(dept.getName()); rUploadSubstationStatisticalDataD.setUploadStatus(Integer.parseInt(UploadEnum.UPLOAD_STATUS_0.getCode())); - //计算在线监测点数 - List l = deptChildren.get(k).get(0).getLineBaseList(); - if (CollUtil.isNotEmpty(l)){ - l = l.stream().filter(o->Objects.equals(o.getIsUpToGrid(),1)).collect(Collectors.toList()); - rUploadSubstationStatisticalDataD.setOnlineMonitorNum(l.size()); - } else { - rUploadSubstationStatisticalDataD.setOnlineMonitorNum(0); + + if(pmsRunStatisticMap.containsKey(k)){ + String runMonitorIds = pmsRunStatisticMap.get(dept.getCode()).getRunMonitorIds(); + if(StrUtil.isNotBlank(runMonitorIds)){ + ArrayList list1 = CollectionUtil.toList(runMonitorIds.split(StrUtil.COMMA)); + rUploadSubstationStatisticalDataD.setOnlineMonitorNum(list1.size()); + }else { + rUploadSubstationStatisticalDataD.setOnlineMonitorNum(0); + } + }else{ + //计算在线监测点数 + List l = deptChildren.get(k).get(0).getLineBaseList(); + if (CollUtil.isNotEmpty(l)){ + l = l.stream().filter(o->Objects.equals(o.getIsUpToGrid(),1)).collect(Collectors.toList()); + rUploadSubstationStatisticalDataD.setOnlineMonitorNum(l.size()); + } else { + rUploadSubstationStatisticalDataD.setOnlineMonitorNum(0); + } } + //处理层级关系 && 处理基础数据 this.getDeptLevel(list,rUploadSubstationStatisticalDataD,deptList,deptMap,k,subMap,midSubMap); result.add(rUploadSubstationStatisticalDataD); @@ -122,6 +162,40 @@ public class RUploadSubstationStatisticalDataDServiceImpl extends MppServiceImpl String endTime = DateUtil.format(DateUtil.endOfYear(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)), DatePattern.NORM_DATE_PATTERN); //数据集 List list = this.baseMapper.substationStatisticalMonthData(beginMonth,startTime,endTime); + + List pmsRunStatistics = runStatisticYService.selectListByDate(startTime, endTime,calculatedParam.getDataDate()); + Map pmsRunStatisticMap = pmsRunStatistics.stream().collect(Collectors.toMap(PmsRunStatisticY::getDeptId, Function.identity())); + //数据分组 + Map> listMap = list.stream().collect(Collectors.groupingBy(x ->{ + String str = ""; + if(StrUtil.isNotBlank(x.getProvinceId())){ + str = x.getProvinceId(); + } + if(StrUtil.isNotBlank(x.getCityId())){ + str = x.getCityId(); + } + if(StrUtil.isNotBlank(x.getCountyId())){ + str = x.getCountyId(); + } + return str; + } + )); + listMap.forEach((key,value)->{ + if(pmsRunStatisticMap.containsKey(key)){ + PmsRunStatisticY pmsRunStatistic = pmsRunStatisticMap.get(key); + String runMonitorIds = pmsRunStatistic.getRunMonitorIds(); + if(StrUtil.isNotBlank(runMonitorIds)){ + ArrayList list1 = CollectionUtil.toList(runMonitorIds.split(StrUtil.COMMA)); + value.forEach(item->{ + item.setOnlineMonitorNum(list1.size()); + item.setMonitoringRate(Objects.isNull(item.getSubstationCount())?null:list1.size()*1.0/item.getSubstationCount()*100); + }); + + } + + } + }); + if (CollUtil.isNotEmpty(list)){ list.forEach(item->{ item.setId(IdUtil.simpleUUID()); @@ -157,7 +231,13 @@ public class RUploadSubstationStatisticalDataDServiceImpl extends MppServiceImpl * 判断当前部门的层级 * @return */ - public void getDeptLevel(List list, RUploadSubstationStatisticalDataD rUploadSubstationStatisticalDataD, List deptList, Map> map, String code, Map> subMap, Map> midSubMap) { + public void getDeptLevel(List list, + RUploadSubstationStatisticalDataD rUploadSubstationStatisticalDataD, + List deptList, + Map> map, + String code, + Map> subMap, + Map> midSubMap) { switch (list.size()) { //省级 case 2: