diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimBusStationEventStartisDPO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimBusStationEventStartisDPO.java new file mode 100644 index 000000000..33be55e0e --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimBusStationEventStartisDPO.java @@ -0,0 +1,53 @@ +package com.njcn.harmonic.pojo.po.dim; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.github.jeffreyning.mybatisplus.anno.MppMultiId; +import lombok.Data; + +import java.time.LocalDate; + +/** + * + * Description: + * Date: 2023/11/27 15:09【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Data +@TableName(value = "r_dim_bus_station_event_startis_d") +public class RDimBusStationEventStartisDPO { + @MppMultiId(value = "Org_Id") + private String orgId; + + @MppMultiId(value = "Statis_Date") + private LocalDate statisDate; + + @MppMultiId(value = "Startis_Type") + private String startisType; + + /** + * 监测到暂态指标的变电站母线占比(%) + */ + @TableField(value = "Limit_Rate") + private Double limitRate; + + /** + * 变电站母线暂态指标发生频次(次/线) + */ + @TableField(value = "Limit_Freq") + private Double limitFreq; + + /** + * 监测到暂态指标的变电站占比(%) + */ + @TableField(value = "Station_Limit_Rate") + private Double stationLimitRate; + + /** + * 变电站暂态指标发生频次(次/站) + */ + @TableField(value = "Station_Freq") + private Double stationFreq; +} \ No newline at end of file diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimBusStationEventStartisMPO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimBusStationEventStartisMPO.java new file mode 100644 index 000000000..1a90d3c3f --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimBusStationEventStartisMPO.java @@ -0,0 +1,53 @@ +package com.njcn.harmonic.pojo.po.dim; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.github.jeffreyning.mybatisplus.anno.MppMultiId; +import lombok.Data; + +import java.time.LocalDate; + +/** + * + * Description: + * Date: 2023/11/27 15:09【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Data +@TableName(value = "r_dim_bus_station_event_startis_m") +public class RDimBusStationEventStartisMPO { + @MppMultiId(value = "Org_Id") + private String orgId; + + @MppMultiId(value = "Statis_Date") + private LocalDate statisDate; + + @MppMultiId(value = "Startis_Type") + private String startisType; + + /** + * 监测到暂态指标的变电站母线占比(%) + */ + @TableField(value = "Limit_Rate") + private Double limitRate; + + /** + * 变电站母线暂态指标发生频次(次/线) + */ + @TableField(value = "Limit_Freq") + private Double limitFreq; + + /** + * 监测到暂态指标的变电站占比(%) + */ + @TableField(value = "Station_Limit_Rate") + private Double stationLimitRate; + + /** + * 变电站暂态指标发生频次(次/站) + */ + @TableField(value = "Station_Freq") + private Double stationFreq; +} \ No newline at end of file diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimBusStationEventStartisYPO.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimBusStationEventStartisYPO.java new file mode 100644 index 000000000..55257ccdd --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/dim/RDimBusStationEventStartisYPO.java @@ -0,0 +1,53 @@ +package com.njcn.harmonic.pojo.po.dim; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.github.jeffreyning.mybatisplus.anno.MppMultiId; +import lombok.Data; + +import java.time.LocalDate; + +/** + * + * Description: + * Date: 2023/11/27 15:10【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Data +@TableName(value = "r_dim_bus_station_event_startis_y") +public class RDimBusStationEventStartisYPO { + @MppMultiId(value = "Org_Id") + private String orgId; + + @MppMultiId(value = "Statis_Date") + private LocalDate statisDate; + + @MppMultiId(value = "Startis_Type") + private String startisType; + + /** + * 监测到暂态指标的变电站母线占比(%) + */ + @TableField(value = "Limit_Rate") + private Double limitRate; + + /** + * 变电站母线暂态指标发生频次(次/线) + */ + @TableField(value = "Limit_Freq") + private Double limitFreq; + + /** + * 监测到暂态指标的变电站占比(%) + */ + @TableField(value = "Station_Limit_Rate") + private Double stationLimitRate; + + /** + * 变电站暂态指标发生频次(次/站) + */ + @TableField(value = "Station_Freq") + private Double stationFreq; +} \ No newline at end of file diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/bo/CalculatedParam.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/bo/CalculatedParam.java index 65bfa691d..8c968310d 100644 --- a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/bo/CalculatedParam.java +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/bo/CalculatedParam.java @@ -20,7 +20,7 @@ public class CalculatedParam implements Serializable { * 是否全链路执行算法 * 非全链路执行时,tag集合必须非空 */ - @ApiModelProperty(name = "repair",value = "是否全链执行") + @ApiModelProperty(name = "fullChain",value = "是否全链执行") private boolean fullChain; /** diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/OrgPointExecutor.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/OrgPointExecutor.java index 67dfca3d6..52dc324d5 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/OrgPointExecutor.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/executor/OrgPointExecutor.java @@ -64,8 +64,9 @@ public class OrgPointExecutor extends BaseExecutor{ private final IRDimObjGlobalMService irDimObjGlobalMService; private final IRDimObjGlobalYService irDimObjGlobalYService; - - + private final RDimBusStationEventStartisDPOService rDimBusStationEventStartisDPOService; + private final RDimBusStationEventStartisMPOService rDimBusStationEventStartisMPOService; + private final RDimBusStationEventStartisYPOService rDimBusStationEventStartisYPOService; /** * * 3.3.2. 单位标数据质量 @@ -565,5 +566,34 @@ public class OrgPointExecutor extends BaseExecutor{ } } + /** + * 河北主网新增算法表r_dim_obj_target_d/m/y + */ + @LiteflowMethod(value = LiteFlowMethodEnum.IS_ACCESS, nodeId = "rDimObjBusStationEventStartis", nodeType = NodeTypeEnum.COMMON) + public boolean processRDimObjBusStationEventStartisAccess(NodeComponent bindCmp) { + return isAccess(bindCmp); + } + @LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "rDimObjBusStationEventStartis", nodeType = NodeTypeEnum.COMMON) + public void processDimObjBusStationEventStartisProcess(NodeComponent bindCmp) { + String tag = bindCmp.getTag(); + CalculatedParam calculatedParam = bindCmp.getRequestData(); + if (tag.equalsIgnoreCase("r_dim_bus_station_event_startis_d")) { + //日表 + rDimBusStationEventStartisDPOService.handleDay(calculatedParam); + } else if (tag.equalsIgnoreCase("r_dim_bus_station_event_startis_m")) { + //数据补招不执行非日表算法 + if (!calculatedParam.isRepair()) { + //月表 + rDimBusStationEventStartisMPOService.handleMonth(calculatedParam); + } + }else if (tag.equalsIgnoreCase("r_dim_bus_station_event_startis_y")) { + //数据补招不执行非日表算法 + if (!calculatedParam.isRepair()) { + //年表 + rDimBusStationEventStartisYPOService.handleYear(calculatedParam); + } + } + } + } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimBusStationEventStartisDPOMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimBusStationEventStartisDPOMapper.java new file mode 100644 index 000000000..1fd74232f --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimBusStationEventStartisDPOMapper.java @@ -0,0 +1,15 @@ +package com.njcn.prepare.harmonic.mapper.mysql.dim; + +import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; +import com.njcn.harmonic.pojo.po.dim.RDimBusStationEventStartisDPO; + +/** + * + * Description: + * Date: 2023/11/27 15:09【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface RDimBusStationEventStartisDPOMapper extends MppBaseMapper { +} \ No newline at end of file diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimBusStationEventStartisMPOMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimBusStationEventStartisMPOMapper.java new file mode 100644 index 000000000..ef91bb7b2 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimBusStationEventStartisMPOMapper.java @@ -0,0 +1,15 @@ +package com.njcn.prepare.harmonic.mapper.mysql.dim; + +import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; +import com.njcn.harmonic.pojo.po.dim.RDimBusStationEventStartisMPO; + +/** + * + * Description: + * Date: 2023/11/27 15:09【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface RDimBusStationEventStartisMPOMapper extends MppBaseMapper { +} \ No newline at end of file diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimBusStationEventStartisYPOMapper.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimBusStationEventStartisYPOMapper.java new file mode 100644 index 000000000..0294632fa --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/RDimBusStationEventStartisYPOMapper.java @@ -0,0 +1,15 @@ +package com.njcn.prepare.harmonic.mapper.mysql.dim; + +import com.github.jeffreyning.mybatisplus.base.MppBaseMapper; +import com.njcn.harmonic.pojo.po.dim.RDimBusStationEventStartisYPO; + +/** + * + * Description: + * Date: 2023/11/27 15:10【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface RDimBusStationEventStartisYPOMapper extends MppBaseMapper { +} \ No newline at end of file diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/mapping/RDimBusStationEventStartisDPOMapper.xml b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/mapping/RDimBusStationEventStartisDPOMapper.xml new file mode 100644 index 000000000..fea53b2eb --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/mapping/RDimBusStationEventStartisDPOMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + Org_Id, Statis_Date, Startis_Type, Limit_Rate, Limit_Freq, Station_Limit_Rate, Station_Freq + + \ No newline at end of file diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/mapping/RDimBusStationEventStartisMPOMapper.xml b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/mapping/RDimBusStationEventStartisMPOMapper.xml new file mode 100644 index 000000000..7963caf4c --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/mapping/RDimBusStationEventStartisMPOMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + Org_Id, Statis_Date, Startis_Type, Limit_Rate, Limit_Freq, Station_Limit_Rate, Station_Freq + + \ No newline at end of file diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/mapping/RDimBusStationEventStartisYPOMapper.xml b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/mapping/RDimBusStationEventStartisYPOMapper.xml new file mode 100644 index 000000000..2948d5937 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/mapper/mysql/dim/mapping/RDimBusStationEventStartisYPOMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + Org_Id, Statis_Date, Startis_Type, Limit_Rate, Limit_Freq, Station_Limit_Rate, Station_Freq + + \ No newline at end of file diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/RDimBusStationEventStartisDPOService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/RDimBusStationEventStartisDPOService.java new file mode 100644 index 000000000..58747e2fd --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/RDimBusStationEventStartisDPOService.java @@ -0,0 +1,20 @@ +package com.njcn.prepare.harmonic.service.mysql.dim; + +import com.github.jeffreyning.mybatisplus.service.IMppService; +import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; +import com.njcn.harmonic.pojo.po.dim.RDimBusStationEventStartisDPO; +import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam; + +/** + * + * Description: + * Date: 2023/11/27 15:09【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface RDimBusStationEventStartisDPOService extends IMppService { + + + void handleDay(CalculatedParam calculatedParam); + } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/RDimBusStationEventStartisMPOService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/RDimBusStationEventStartisMPOService.java new file mode 100644 index 000000000..fa4487bed --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/RDimBusStationEventStartisMPOService.java @@ -0,0 +1,20 @@ +package com.njcn.prepare.harmonic.service.mysql.dim; + +import com.github.jeffreyning.mybatisplus.service.IMppService; +import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; +import com.njcn.harmonic.pojo.po.dim.RDimBusStationEventStartisMPO; +import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam; + +/** + * + * Description: + * Date: 2023/11/27 15:09【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface RDimBusStationEventStartisMPOService extends IMppService { + + + void handleMonth(CalculatedParam calculatedParam); + } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/RDimBusStationEventStartisYPOService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/RDimBusStationEventStartisYPOService.java new file mode 100644 index 000000000..dbc5ab3f4 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/RDimBusStationEventStartisYPOService.java @@ -0,0 +1,20 @@ +package com.njcn.prepare.harmonic.service.mysql.dim; + +import com.github.jeffreyning.mybatisplus.service.IMppService; +import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; +import com.njcn.harmonic.pojo.po.dim.RDimBusStationEventStartisYPO; +import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam; + +/** + * + * Description: + * Date: 2023/11/27 15:10【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +public interface RDimBusStationEventStartisYPOService extends IMppService { + + + void handleYear(CalculatedParam calculatedParam); + } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimBusStationEventStartisDPOServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimBusStationEventStartisDPOServiceImpl.java new file mode 100644 index 000000000..7897aca97 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimBusStationEventStartisDPOServiceImpl.java @@ -0,0 +1,123 @@ +package com.njcn.prepare.harmonic.service.mysql.dim.impl; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; +import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; +import com.njcn.harmonic.pojo.po.dim.RDimBusStationEventStartisDPO; +import com.njcn.harmonic.pojo.po.dim.RDimBusbarHarmnicDPO; +import com.njcn.harmonic.pojo.po.dim.RDimStationHarmnicDPO; +import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimBusStationEventStartisDPOMapper; +import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam; +import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusStationEventStartisDPOService; +import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusbarHarmnicDPOService; +import com.njcn.prepare.harmonic.service.mysql.dim.RDimStationHarmnicDPOService; +import com.njcn.system.api.DicDataFeignClient; +import com.njcn.system.enums.DicDataEnum; +import com.njcn.system.enums.DicDataTypeEnum; +import com.njcn.system.pojo.po.DictData; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * + * Description: + * Date: 2023/11/27 15:09【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Service +@RequiredArgsConstructor +public class RDimBusStationEventStartisDPOServiceImpl extends MppServiceImpl implements RDimBusStationEventStartisDPOService{ + + private final RDimBusbarHarmnicDPOService rDimBusbarHarmnicDPOService; + private final RDimStationHarmnicDPOService rDimStationHarmnicDPOService; + private final DicDataFeignClient dicDataFeignClient; + + @Override + public void handleDay(CalculatedParam calculatedParam) { + + List poList = new ArrayList<>(); + LocalDate date = LocalDate.parse(calculatedParam.getDataDate()); + List eventStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_STATIS.getCode()).getData(); + + + for (DeptGetChildrenMoreDTO deptGetChildrenMoreDTO : calculatedParam.getIdList()) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(RDimBusbarHarmnicDPO::getOrgId,deptGetChildrenMoreDTO.getUnitId()) + .eq(RDimBusbarHarmnicDPO::getStatisDate,date) + .eq(RDimBusbarHarmnicDPO::getLevel,1); + List rDimBusbarHarmnicDPOList = rDimBusbarHarmnicDPOService.list(lambdaQueryWrapper); + List rDimStationHarmnicDPOList = rDimStationHarmnicDPOService.lambdaQuery().eq(RDimStationHarmnicDPO::getOrgId, deptGetChildrenMoreDTO.getUnitId()) + .eq(RDimStationHarmnicDPO::getStatisDate, date) + .eq(RDimStationHarmnicDPO::getLevel, 1).list(); + + //暂态 + 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; + } + RDimBusStationEventStartisDPO rDimBusStationEventStartisDPO = new RDimBusStationEventStartisDPO(); + rDimBusStationEventStartisDPO.setOrgId(deptGetChildrenMoreDTO.getUnitId()); + rDimBusStationEventStartisDPO.setStatisDate(date); + rDimBusStationEventStartisDPO.setStartisType(dictData.getId()); + + + List rDimBusbarHarmnicDPOListBytag = rDimBusbarHarmnicDPOList.stream().filter(temp -> Objects.equals(temp.getTargetType(), dictData.getId())).collect(Collectors.toList()); + List rDimStationHarmnicDPOListBytag = rDimStationHarmnicDPOList.stream().filter(temp -> Objects.equals(temp.getTargetType(), dictData.getId())).collect(Collectors.toList()); + if(CollUtil.isEmpty(rDimBusbarHarmnicDPOListBytag)){ + rDimBusStationEventStartisDPO.setLimitRate(0.00); + rDimBusStationEventStartisDPO.setLimitFreq(0.00); + }else { + long allBus = rDimBusbarHarmnicDPOListBytag.stream().map(RDimBusbarHarmnicDPO::getBusbarId).distinct().count(); + List limitBus = rDimBusbarHarmnicDPOListBytag.stream().filter(item->item.getLimitCount()>0).collect(Collectors.toList()); + + long limit = rDimBusbarHarmnicDPOListBytag.stream().map(RDimBusbarHarmnicDPO::getBusbarId).distinct().count(); + rDimBusStationEventStartisDPO.setLimitRate(Double.valueOf((float)limit/allBus)); + + int sum = limitBus.stream().mapToInt(RDimBusbarHarmnicDPO::getLimitCount).sum(); + rDimBusStationEventStartisDPO.setLimitFreq(Double.valueOf((float)sum/allBus)); + + } + if(CollUtil.isEmpty(rDimStationHarmnicDPOListBytag)){ + rDimBusStationEventStartisDPO.setStationFreq(0.00); + rDimBusStationEventStartisDPO.setStationLimitRate(0.00); + }else { + long allBus = rDimStationHarmnicDPOListBytag.stream().map(RDimStationHarmnicDPO::getStationId).distinct().count(); + List limitstation = rDimStationHarmnicDPOListBytag.stream().filter(item->item.getLimitCount()>0).collect(Collectors.toList()); + + long limit = rDimStationHarmnicDPOListBytag.stream().map(RDimStationHarmnicDPO::getStationId).distinct().count(); + rDimBusStationEventStartisDPO.setLimitRate(Double.valueOf((float)limit/allBus)); + + int sum = limitstation.stream().mapToInt(RDimStationHarmnicDPO::getLimitCount).sum(); + rDimBusStationEventStartisDPO.setLimitFreq(Double.valueOf((float)sum/allBus)); + + } + + poList.add(rDimBusStationEventStartisDPO); + + }); + + + } + if (!CollectionUtils.isEmpty(poList) ) { + this.saveOrUpdateBatchByMultiId(poList,500); + } + + + + + + } +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimBusStationEventStartisMPOServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimBusStationEventStartisMPOServiceImpl.java new file mode 100644 index 000000000..446ff6eb4 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimBusStationEventStartisMPOServiceImpl.java @@ -0,0 +1,126 @@ +package com.njcn.prepare.harmonic.service.mysql.dim.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; +import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; +import com.njcn.harmonic.pojo.po.dim.RDimBusStationEventStartisMPO; +import com.njcn.harmonic.pojo.po.dim.RDimBusbarHarmnicDPO; +import com.njcn.harmonic.pojo.po.dim.RDimStationHarmnicDPO; +import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimBusStationEventStartisMPOMapper; +import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam; +import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusStationEventStartisMPOService; +import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusbarHarmnicDPOService; +import com.njcn.prepare.harmonic.service.mysql.dim.RDimStationHarmnicDPOService; +import com.njcn.system.api.DicDataFeignClient; +import com.njcn.system.enums.DicDataEnum; +import com.njcn.system.enums.DicDataTypeEnum; +import com.njcn.system.pojo.po.DictData; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * + * Description: + * Date: 2023/11/27 15:09【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Service +@RequiredArgsConstructor +public class RDimBusStationEventStartisMPOServiceImpl extends MppServiceImpl implements RDimBusStationEventStartisMPOService{ + + + private final RDimBusbarHarmnicDPOService rDimBusbarHarmnicDPOService; + private final RDimStationHarmnicDPOService rDimStationHarmnicDPOService; + private final DicDataFeignClient dicDataFeignClient; + + @Override + public void handleMonth(CalculatedParam calculatedParam) { + List poList = new ArrayList<>(); + LocalDate date = LocalDate.parse(calculatedParam.getDataDate()); + //获取日期 + DateTime begin = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)); + DateTime end = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)); + List eventStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_STATIS.getCode()).getData(); + + + for (DeptGetChildrenMoreDTO deptGetChildrenMoreDTO : calculatedParam.getIdList()) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(RDimBusbarHarmnicDPO::getOrgId,deptGetChildrenMoreDTO.getUnitId()) + .between(RDimBusbarHarmnicDPO::getStatisDate,begin,end) + .eq(RDimBusbarHarmnicDPO::getLevel,1); + List rDimBusbarHarmnicDPOList = rDimBusbarHarmnicDPOService.list(lambdaQueryWrapper); + List rDimStationHarmnicDPOList = rDimStationHarmnicDPOService.lambdaQuery().eq(RDimStationHarmnicDPO::getOrgId, deptGetChildrenMoreDTO.getUnitId()) + .between(RDimStationHarmnicDPO::getStatisDate,begin,end) + .eq(RDimStationHarmnicDPO::getLevel, 1).list(); + + //暂态 + 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; + } + RDimBusStationEventStartisMPO rDimBusStationEventStartisMPO = new RDimBusStationEventStartisMPO(); + rDimBusStationEventStartisMPO.setOrgId(deptGetChildrenMoreDTO.getUnitId()); + rDimBusStationEventStartisMPO.setStatisDate(date); + rDimBusStationEventStartisMPO.setStartisType(dictData.getId()); + + + List rDimBusbarHarmnicDPOListBytag = rDimBusbarHarmnicDPOList.stream().filter(temp -> Objects.equals(temp.getTargetType(), dictData.getId())).collect(Collectors.toList()); + List rDimStationHarmnicDPOListBytag = rDimStationHarmnicDPOList.stream().filter(temp -> Objects.equals(temp.getTargetType(), dictData.getId())).collect(Collectors.toList()); + if(CollUtil.isEmpty(rDimBusbarHarmnicDPOListBytag)){ + rDimBusStationEventStartisMPO.setLimitRate(0.00); + rDimBusStationEventStartisMPO.setLimitFreq(0.00); + }else { + long allBus = rDimBusbarHarmnicDPOListBytag.stream().map(RDimBusbarHarmnicDPO::getBusbarId).distinct().count(); + List limitBus = rDimBusbarHarmnicDPOListBytag.stream().filter(item->item.getLimitCount()>0).collect(Collectors.toList()); + + long limit = rDimBusbarHarmnicDPOListBytag.stream().map(RDimBusbarHarmnicDPO::getBusbarId).distinct().count(); + rDimBusStationEventStartisMPO.setLimitRate(Double.valueOf((float)limit/allBus)); + + int sum = limitBus.stream().mapToInt(RDimBusbarHarmnicDPO::getLimitCount).sum(); + rDimBusStationEventStartisMPO.setLimitFreq(Double.valueOf((float)sum/allBus)); + + } + if(CollUtil.isEmpty(rDimStationHarmnicDPOListBytag)){ + rDimBusStationEventStartisMPO.setStationFreq(0.00); + rDimBusStationEventStartisMPO.setStationLimitRate(0.00); + }else { + long allBus = rDimStationHarmnicDPOListBytag.stream().map(RDimStationHarmnicDPO::getStationId).distinct().count(); + List limitstation = rDimStationHarmnicDPOListBytag.stream().filter(item->item.getLimitCount()>0).collect(Collectors.toList()); + + long limit = rDimStationHarmnicDPOListBytag.stream().map(RDimStationHarmnicDPO::getStationId).distinct().count(); + rDimBusStationEventStartisMPO.setLimitRate(Double.valueOf((float)limit/allBus)); + + int sum = limitstation.stream().mapToInt(RDimStationHarmnicDPO::getLimitCount).sum(); + rDimBusStationEventStartisMPO.setLimitFreq(Double.valueOf((float)sum/allBus)); + + } + + poList.add(rDimBusStationEventStartisMPO); + + }); + + + } + if (!CollectionUtils.isEmpty(poList) ) { + this.saveOrUpdateBatchByMultiId(poList,500); + } + + + } +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimBusStationEventStartisYPOServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimBusStationEventStartisYPOServiceImpl.java new file mode 100644 index 000000000..ce9cdbe96 --- /dev/null +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/dim/impl/RDimBusStationEventStartisYPOServiceImpl.java @@ -0,0 +1,124 @@ +package com.njcn.prepare.harmonic.service.mysql.dim.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; +import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; +import com.njcn.harmonic.pojo.po.dim.RDimBusStationEventStartisYPO; +import com.njcn.harmonic.pojo.po.dim.RDimBusbarHarmnicDPO; +import com.njcn.harmonic.pojo.po.dim.RDimStationHarmnicDPO; +import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimBusStationEventStartisYPOMapper; +import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam; +import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusStationEventStartisYPOService; +import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusbarHarmnicDPOService; +import com.njcn.prepare.harmonic.service.mysql.dim.RDimStationHarmnicDPOService; +import com.njcn.system.api.DicDataFeignClient; +import com.njcn.system.enums.DicDataEnum; +import com.njcn.system.enums.DicDataTypeEnum; +import com.njcn.system.pojo.po.DictData; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * + * Description: + * Date: 2023/11/27 15:10【需求编号】 + * + * @author clam + * @version V1.0.0 + */ +@Service +@RequiredArgsConstructor +public class RDimBusStationEventStartisYPOServiceImpl extends MppServiceImpl implements RDimBusStationEventStartisYPOService{ + + + private final RDimBusbarHarmnicDPOService rDimBusbarHarmnicDPOService; + private final RDimStationHarmnicDPOService rDimStationHarmnicDPOService; + private final DicDataFeignClient dicDataFeignClient; + + @Override + public void handleYear(CalculatedParam calculatedParam) { + List poList = new ArrayList<>(); + LocalDate date = LocalDate.parse(calculatedParam.getDataDate()); + //获取日期 + DateTime begin = DateUtil.beginOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)); + DateTime end = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)); + List eventStatis = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.EVENT_STATIS.getCode()).getData(); + + + for (DeptGetChildrenMoreDTO deptGetChildrenMoreDTO : calculatedParam.getIdList()) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(RDimBusbarHarmnicDPO::getOrgId,deptGetChildrenMoreDTO.getUnitId()) + .between(RDimBusbarHarmnicDPO::getStatisDate,begin,end) + .eq(RDimBusbarHarmnicDPO::getLevel,1); + List rDimBusbarHarmnicDPOList = rDimBusbarHarmnicDPOService.list(lambdaQueryWrapper); + List rDimStationHarmnicDPOList = rDimStationHarmnicDPOService.lambdaQuery().eq(RDimStationHarmnicDPO::getOrgId, deptGetChildrenMoreDTO.getUnitId()) + .between(RDimStationHarmnicDPO::getStatisDate,begin,end) + .eq(RDimStationHarmnicDPO::getLevel, 1).list(); + + //暂态 + 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; + } + RDimBusStationEventStartisYPO rDimBusStationEventStartisYPO = new RDimBusStationEventStartisYPO(); + rDimBusStationEventStartisYPO.setOrgId(deptGetChildrenMoreDTO.getUnitId()); + rDimBusStationEventStartisYPO.setStatisDate(date); + rDimBusStationEventStartisYPO.setStartisType(dictData.getId()); + + + List rDimBusbarHarmnicDPOListBytag = rDimBusbarHarmnicDPOList.stream().filter(temp -> Objects.equals(temp.getTargetType(), dictData.getId())).collect(Collectors.toList()); + List rDimStationHarmnicDPOListBytag = rDimStationHarmnicDPOList.stream().filter(temp -> Objects.equals(temp.getTargetType(), dictData.getId())).collect(Collectors.toList()); + if(CollUtil.isEmpty(rDimBusbarHarmnicDPOListBytag)){ + rDimBusStationEventStartisYPO.setLimitRate(0.00); + rDimBusStationEventStartisYPO.setLimitFreq(0.00); + }else { + long allBus = rDimBusbarHarmnicDPOListBytag.stream().map(RDimBusbarHarmnicDPO::getBusbarId).distinct().count(); + List limitBus = rDimBusbarHarmnicDPOListBytag.stream().filter(item->item.getLimitCount()>0).collect(Collectors.toList()); + + long limit = rDimBusbarHarmnicDPOListBytag.stream().map(RDimBusbarHarmnicDPO::getBusbarId).distinct().count(); + rDimBusStationEventStartisYPO.setLimitRate(Double.valueOf((float)limit/allBus)); + + int sum = limitBus.stream().mapToInt(RDimBusbarHarmnicDPO::getLimitCount).sum(); + rDimBusStationEventStartisYPO.setLimitFreq(Double.valueOf((float)sum/allBus)); + + } + if(CollUtil.isEmpty(rDimStationHarmnicDPOListBytag)){ + rDimBusStationEventStartisYPO.setStationFreq(0.00); + rDimBusStationEventStartisYPO.setStationLimitRate(0.00); + }else { + long allBus = rDimStationHarmnicDPOListBytag.stream().map(RDimStationHarmnicDPO::getStationId).distinct().count(); + List limitstation = rDimStationHarmnicDPOListBytag.stream().filter(item->item.getLimitCount()>0).collect(Collectors.toList()); + + long limit = rDimStationHarmnicDPOListBytag.stream().map(RDimStationHarmnicDPO::getStationId).distinct().count(); + rDimBusStationEventStartisYPO.setLimitRate(Double.valueOf((float)limit/allBus)); + + int sum = limitstation.stream().mapToInt(RDimStationHarmnicDPO::getLimitCount).sum(); + rDimBusStationEventStartisYPO.setLimitFreq(Double.valueOf((float)sum/allBus)); + + } + + poList.add(rDimBusStationEventStartisYPO); + + }); + + + } + if (!CollectionUtils.isEmpty(poList) ) { + this.saveOrUpdateBatchByMultiId(poList,500); + } + } +}