添加中间表算法

This commit is contained in:
huangzj
2023-11-23 11:17:47 +08:00
parent 612f599eff
commit 1e0e9c9daa
8 changed files with 202 additions and 4 deletions

View File

@@ -40,6 +40,8 @@ public class RDimBusbarHarmnicDPO {
@MppMultiId(value = "BusBar_Id") @MppMultiId(value = "BusBar_Id")
private String busbarId; private String busbarId;
@TableField(exist = false)
private String powerId;
/** /**
* 稳态指标类型 * 稳态指标类型
*/ */

View File

@@ -0,0 +1,71 @@
package com.njcn.harmonic.pojo.po.dim;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDate;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.Data;
/**
*
* Description:
* Date: 2023/11/23 9:26【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Data
@TableName(value = "r_dim_station_harmnic_d")
public class RDimStationHarmnicDPO {
/**
* 单位code
*/
@MppMultiId(value = "Org_Id")
private String orgId;
/**
* 统计时间 yyyy-mm-dd
*/
@MppMultiId(value = "Statis_Date")
private LocalDate statisDate;
/**
* 电站id
*/
@MppMultiId(value = "Station_Id")
private String stationId;
/**
* 稳态/暂态指标类型
*/
@MppMultiId(value = "Target_type")
private String targetType;
/**
* 0稳态指标1.暂态指标
*/
@MppMultiId(value = "Level")
private Integer level;
/**
* 电压等级
*/
@TableField(value = "Voltage_level")
private String voltageLevel;
/**
* 超标次数
*/
@TableField(value = "limit_count")
private Integer limitCount;
/**
* 稳态总统计次数
*/
@TableField(value = "Statis_count")
private Integer statisCount;
}

View File

@@ -10,10 +10,7 @@ import com.njcn.prepare.harmonic.service.mysql.area.RStatHarmonicOrgService;
import com.njcn.prepare.harmonic.service.mysql.area.RStatHarmonicService; import com.njcn.prepare.harmonic.service.mysql.area.RStatHarmonicService;
import com.njcn.prepare.harmonic.service.mysql.area.RStatHarmonicVoltageService; import com.njcn.prepare.harmonic.service.mysql.area.RStatHarmonicVoltageService;
import com.njcn.prepare.harmonic.service.mysql.area.RStatOrgService; import com.njcn.prepare.harmonic.service.mysql.area.RStatOrgService;
import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusTargetDPOService; import com.njcn.prepare.harmonic.service.mysql.dim.*;
import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusTargetMPOService;
import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusTargetYPOService;
import com.njcn.prepare.harmonic.service.mysql.dim.RDimBusbarHarmnicDPOService;
import com.njcn.prepare.harmonic.service.mysql.line.PollutionService; import com.njcn.prepare.harmonic.service.mysql.line.PollutionService;
import com.njcn.prepare.harmonic.service.mysql.newalgorithm.*; import com.njcn.prepare.harmonic.service.mysql.newalgorithm.*;
import com.yomahub.liteflow.annotation.LiteflowComponent; import com.yomahub.liteflow.annotation.LiteflowComponent;
@@ -50,6 +47,7 @@ public class OrgPointExecutor extends BaseExecutor{
private final RAlarmCountService rAlarmCountService; private final RAlarmCountService rAlarmCountService;
private final RDimBusbarHarmnicDPOService rDimBusbarHarmnicDPOService; private final RDimBusbarHarmnicDPOService rDimBusbarHarmnicDPOService;
private final RDimStationHarmnicDPOService rDimStationHarmnicDPOService;
private final RDimStationTargetDPOService rDimStationTargetDPOService; private final RDimStationTargetDPOService rDimStationTargetDPOService;
private final RDimStationTargetMPOService rDimStationTargetMPOService; private final RDimStationTargetMPOService rDimStationTargetMPOService;
@@ -442,6 +440,8 @@ public class OrgPointExecutor extends BaseExecutor{
} }
} }
/** /**
* 河北主网新增算法表r_dim_station_target_d/m/y * 河北主网新增算法表r_dim_station_target_d/m/y
*/ */

View File

@@ -0,0 +1,16 @@
package com.njcn.prepare.harmonic.mapper.mysql.dim;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.njcn.harmonic.pojo.po.dim.RDimStationHarmnicDPO;
/**
*
* Description:
* Date: 2023/11/23 9:26【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface RDimStationHarmnicDPOMapper extends MppBaseMapper<RDimStationHarmnicDPO> {
}

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njcn.prepare.harmonic.mapper.mysql.dim.RDimStationHarmnicDPOMapper">
<resultMap id="BaseResultMap" type="com.njcn.harmonic.pojo.po.dim.RDimStationHarmnicDPO">
<!--@mbg.generated-->
<!--@Table r_dim_station_harmnic_d-->
<id column="Org_Id" jdbcType="CHAR" property="orgId" />
<id column="Statis_Date" jdbcType="DATE" property="statisDate" />
<id column="Station Id" jdbcType="CHAR" property="stationId" />
<id column="Target_type" jdbcType="CHAR" property="targetType" />
<id column="Level" jdbcType="BIT" property="level" />
<result column="Voltage_level" jdbcType="CHAR" property="voltageLevel" />
<result column="limit_count" jdbcType="INTEGER" property="limitCount" />
<result column="Statis_count" jdbcType="INTEGER" property="statisCount" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
Org_Id, Statis_Date, `Station Id`, Target_type, `Level`, Monitor_Tag, Voltage_level,
limit_count, Statis_count
</sql>
</mapper>

View File

@@ -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.RDimStationHarmnicDPO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
/**
*
* Description:
* Date: 2023/11/23 9:26【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface RDimStationHarmnicDPOService extends IMppService<RDimStationHarmnicDPO> {
}

View File

@@ -2,17 +2,24 @@ package com.njcn.prepare.harmonic.service.mysql.dim.impl;
import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.date.LocalDateTimeUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO; import com.njcn.device.biz.pojo.dto.DeptGetChildrenMoreDTO;
import com.njcn.device.biz.pojo.dto.LineDevGetDTO; import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
import com.njcn.device.pms.api.StatationStatClient;
import com.njcn.device.pms.pojo.dto.PmsStatationStatInfoDTO;
import com.njcn.device.pms.pojo.param.PmsStatationStatInfoParam;
import com.njcn.device.pms.pojo.po.Monitor; import com.njcn.device.pms.pojo.po.Monitor;
import com.njcn.device.pms.pojo.po.StatationStat;
import com.njcn.harmonic.pojo.po.RMpEventDetailDPO; import com.njcn.harmonic.pojo.po.RMpEventDetailDPO;
import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO; import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO;
import com.njcn.harmonic.pojo.po.dim.RDimStationHarmnicDPO;
import com.njcn.prepare.harmonic.mapper.mysql.line.PmsMonitorMapper; import com.njcn.prepare.harmonic.mapper.mysql.line.PmsMonitorMapper;
import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam; import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam;
import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorDPO; import com.njcn.prepare.harmonic.pojo.mysql.ROperatingMonitorDPO;
import com.njcn.prepare.harmonic.service.mysql.day.IRStatLimitRateDService; import com.njcn.prepare.harmonic.service.mysql.day.IRStatLimitRateDService;
import com.njcn.prepare.harmonic.service.mysql.dim.RDimStationHarmnicDPOService;
import com.njcn.prepare.harmonic.service.mysql.line.RMpEventDetailDService; import com.njcn.prepare.harmonic.service.mysql.line.RMpEventDetailDService;
import com.njcn.prepare.harmonic.service.mysql.line.ROperatingMonitorService; import com.njcn.prepare.harmonic.service.mysql.line.ROperatingMonitorService;
import com.njcn.system.api.DicDataFeignClient; import com.njcn.system.api.DicDataFeignClient;
@@ -48,6 +55,8 @@ public class RDimBusbarHarmnicDPOServiceImpl extends MppServiceImpl<RDimBusbarHa
private final IRStatLimitRateDService irStatLimitRateDService; private final IRStatLimitRateDService irStatLimitRateDService;
private final ROperatingMonitorService rOperatingMonitorService; private final ROperatingMonitorService rOperatingMonitorService;
private final RMpEventDetailDService rMpEventDetailDService; private final RMpEventDetailDService rMpEventDetailDService;
private final RDimStationHarmnicDPOService rMpStationHarmnicDPOService;
private final StatationStatClient statationStatClient;
//咨询后直接用Mapper查询这个算法只用pms补考虑pq后续不知道要不要改 //咨询后直接用Mapper查询这个算法只用pms补考虑pq后续不知道要不要改
private final PmsMonitorMapper pmsMonitorMapper; private final PmsMonitorMapper pmsMonitorMapper;
@@ -107,6 +116,7 @@ public class RDimBusbarHarmnicDPOServiceImpl extends MppServiceImpl<RDimBusbarHa
RDimBusbarHarmnicDPO rDimBusbarHarmnicDPO = new RDimBusbarHarmnicDPO(); RDimBusbarHarmnicDPO rDimBusbarHarmnicDPO = new RDimBusbarHarmnicDPO();
rDimBusbarHarmnicDPO.setOrgId(deptGetChildrenMoreDTO.getUnitId()); rDimBusbarHarmnicDPO.setOrgId(deptGetChildrenMoreDTO.getUnitId());
rDimBusbarHarmnicDPO.setStatisDate(localDate); rDimBusbarHarmnicDPO.setStatisDate(localDate);
rDimBusbarHarmnicDPO.setPowerId(busbar.getPowerrId());
rDimBusbarHarmnicDPO.setBusbarId(busbar.getLineId()); rDimBusbarHarmnicDPO.setBusbarId(busbar.getLineId());
rDimBusbarHarmnicDPO.setTargetType(temp.getId()); rDimBusbarHarmnicDPO.setTargetType(temp.getId());
rDimBusbarHarmnicDPO.setLevel(0); rDimBusbarHarmnicDPO.setLevel(0);
@@ -164,6 +174,40 @@ public class RDimBusbarHarmnicDPOServiceImpl extends MppServiceImpl<RDimBusbarHa
} }
if (!CollectionUtils.isEmpty(rDimBusbarHarmnicDPOList)) { if (!CollectionUtils.isEmpty(rDimBusbarHarmnicDPOList)) {
this.saveOrUpdateBatchByMultiId(rDimBusbarHarmnicDPOList, 500); this.saveOrUpdateBatchByMultiId(rDimBusbarHarmnicDPOList, 500);
Map<String, Map<Integer, Map<String, Map<String, List<RDimBusbarHarmnicDPO>>>>> collect = rDimBusbarHarmnicDPOList.stream().collect(Collectors.groupingBy(RDimBusbarHarmnicDPO::getOrgId,
Collectors.groupingBy(RDimBusbarHarmnicDPO::getLevel,
Collectors.groupingBy(RDimBusbarHarmnicDPO::getTargetType,
Collectors.groupingBy(RDimBusbarHarmnicDPO::getPowerId)))));
List<RDimStationHarmnicDPO> rDimStationHarmnicDPOList = new ArrayList<>();
List<String> powerIdList = rDimBusbarHarmnicDPOList.stream().map(RDimBusbarHarmnicDPO::getPowerId).distinct().collect(Collectors.toList());
PmsStatationStatInfoParam param = new PmsStatationStatInfoParam();
param.setPowerIds(powerIdList);
List<PmsStatationStatInfoDTO> data = statationStatClient.getStatationStatInfo(param).getData();
collect.forEach((orgId,map)->{
map.forEach((level,map1)->{
map1.forEach((targetType,map2)->{
map2.forEach((powerId,map3)->{
RDimStationHarmnicDPO rDimStationHarmnicDPO = new RDimStationHarmnicDPO();
rDimStationHarmnicDPO.setOrgId(orgId);
rDimStationHarmnicDPO.setStatisDate(localDate);
rDimStationHarmnicDPO.setTargetType(targetType);
rDimStationHarmnicDPO.setStationId(powerId);
rDimStationHarmnicDPO.setLevel(level);
int sum = map3.stream().mapToInt(RDimBusbarHarmnicDPO::getStatisCount).sum();
rDimStationHarmnicDPO.setStatisCount(sum);
int limitSum = map3.stream().mapToInt(RDimBusbarHarmnicDPO::getLimitCount).sum();
rDimStationHarmnicDPO.setLimitCount(limitSum);
rDimStationHarmnicDPO.setVoltageLevel(data.stream().filter(temp->Objects.equals(temp.getPowerId(),powerId)).map(PmsStatationStatInfoDTO::getPowerVoltageLevel).findFirst().orElse("3.14159"));
rDimStationHarmnicDPOList.add(rDimStationHarmnicDPO);
});
});
});
});
if (!CollectionUtils.isEmpty(rDimStationHarmnicDPOList) ) {
rMpStationHarmnicDPOService.saveOrUpdateBatchByMultiId(rDimStationHarmnicDPOList,500);
}
} }
} }

View File

@@ -0,0 +1,24 @@
package com.njcn.prepare.harmonic.service.mysql.dim.impl;
import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.njcn.prepare.harmonic.mapper.mysql.dim.RDimStationHarmnicDPOMapper;
import com.njcn.harmonic.pojo.po.dim.RDimStationHarmnicDPO;
import com.njcn.prepare.harmonic.service.mysql.dim.RDimStationHarmnicDPOService;
/**
*
* Description:
* Date: 2023/11/23 9:26【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
@RequiredArgsConstructor
public class RDimStationHarmnicDPOServiceImpl extends MppServiceImpl<RDimStationHarmnicDPOMapper, RDimStationHarmnicDPO> implements RDimStationHarmnicDPOService{
}