1.pms谐波模块保留俩位小数

2.冀北分布式光伏概览代码提交
This commit is contained in:
wr
2023-05-11 09:26:52 +08:00
parent 2e71088c8d
commit 0e4bdb62fd
28 changed files with 688 additions and 92 deletions

View File

@@ -0,0 +1,56 @@
package com.njcn.harmonic.controller.majornetwork;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.param.StatisticsBizBaseParam;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.device.pq.pojo.dto.PollutionLineDTO;
import com.njcn.harmonic.pojo.param.PVOverviewParam;
import com.njcn.harmonic.service.majornetwork.PVOverviewService;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @author wr
* @description
* @date 2023/5/10 9:25
*/
@RestController
@RequiredArgsConstructor
@Api(tags = "冀北分布式光伏-主网监测点")
@RequestMapping("/JbOverview")
public class PVOverviewController extends BaseController {
private final PVOverviewService pvOverviewService;
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getPVSynthesisCount")
@ApiOperation("冀北分布式光伏获取综合统计")
public HttpResult<List<Integer>> getPVSynthesisCount(@RequestBody StatisticsBizBaseParam param) {
String methodDescribe = getMethodDescribe("getPVSynthesisCount");
List<Integer> pvSynthesisCount = pvOverviewService.getPVSynthesisCount(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, pvSynthesisCount, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getPVPollution")
@ApiOperation("冀北分布式光伏获取污染指数统计")
public HttpResult<List<PollutionLineDTO.PVPollution>> getPVPollution(@RequestBody PVOverviewParam param) {
String methodDescribe = getMethodDescribe("getPVPollution");
List<PollutionLineDTO.PVPollution> pvPollution = pvOverviewService.getPVPollution(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, pvPollution, methodDescribe);
}
}

View File

@@ -0,0 +1,17 @@
package com.njcn.harmonic.mapper.majornetwork;
import com.njcn.common.pojo.param.StatisticsBizBaseParam;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @version 1.0.0
* @author: wr
* @date: 2023/05/10
*/
public interface PVOverviewMapper {
List<Integer> selectPVSynthesisCount(@Param("param") StatisticsBizBaseParam param,
@Param("id") List<String> id);
}

View File

@@ -0,0 +1,69 @@
<?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.harmonic.mapper.majornetwork.PVOverviewMapper">
<select id="selectPVSynthesisCount" resultType="java.lang.Integer">
SELECT
count(*)
FROM
(
SELECT
measurement_point_id,
data_date,
sum( is_v_dev_warn + is_freq_warn + is_unbalance_warn + is_v_warn + is_flicker_warn + is_sag_warn + is_interrupt_warn + is_swell_warn ) AS num
FROM
r_mp_target_warn_d
<where>
is_effective = 1 AND is_warn = 1
<if test="param!=null and param.startTime != null and param.startTime !=''">
AND rmphd.data_date >= #{param.startTime} AND rmshd.data_date >= #{param.startTime}
</if>
<if test="param!=null and param.endTime != null and param.endTime != ''">
AND rmphd.data_date &lt;= #{param.endTime} AND rmshd.data_date &lt;= #{param.endTime}
</if>
<if test="id != null and id.size > 0">
AND measurement_point_id IN
<foreach collection='id' item='item' index="index" open='(' separator=',' close=')'>
#{item}
</foreach>
</if>
</where>
GROUP BY
measurement_point_id,
data_date
HAVING
num > 1
) x UNION ALL
SELECT
count(*)
FROM
(
SELECT
measurement_point_id,
data_date,
sum( is_v_dev_warn + is_freq_warn + is_unbalance_warn + is_v_warn + is_flicker_warn + is_sag_warn + is_interrupt_warn + is_swell_warn ) AS num
FROM
r_mp_target_warn_d
<where>
is_effective = 1 AND is_harmonic = 1
<if test="param!=null and param.startTime != null and param.startTime !=''">
AND rmphd.data_date >= #{param.startTime} AND rmshd.data_date >= #{param.startTime}
</if>
<if test="param!=null and param.endTime != null and param.endTime != ''">
AND rmphd.data_date &lt;= #{param.endTime} AND rmshd.data_date &lt;= #{param.endTime}
</if>
<if test="id != null and id.size > 0">
AND measurement_point_id IN
<foreach collection='id' item='item' index="index" open='(' separator=',' close=')'>
#{item}
</foreach>
</if>
</where>
GROUP BY
measurement_point_id,
data_date
HAVING
num > 1
) x
</select>
</mapper>

View File

@@ -17,15 +17,15 @@
</resultMap>
<select id="selectInfoList" resultType="com.njcn.harmonic.pojo.po.RStatHarmonicM">
SELECT
measurement_type_class,
harmonic_type,
sum(over_limit_measurement_average)/count(*) as overLimitMeasurementAverage ,
sum(over_limit_measurement_accrued) as overLimitMeasurementAccrued,
sum(over_Day) as overDay,
sum(over_limit_measurement_ratio_average)/count(*) as overLimitMeasurementRatioAverage,
sum(over_limit_measurement_ratio_accrued) as overLimitMeasurementRatioAccrued
measurement_type_class,
harmonic_type,
ROUND( sum( over_limit_measurement_average )/ count(*), 2 ) AS overLimitMeasurementAverage,
sum( over_limit_measurement_accrued ) AS overLimitMeasurementAccrued,
sum( over_Day ) AS overDay,
ROUND( sum( over_limit_measurement_ratio_average )/ count(*), 2 ) AS overLimitMeasurementRatioAverage,
sum( over_limit_measurement_ratio_accrued ) AS overLimitMeasurementRatioAccrued
FROM
r_stat_harmonic_m
r_stat_harmonic_m
<where>
and data_Type=#{dataType}
<if test="param != null and param.ids != null and param.ids.size > 0">

View File

@@ -19,13 +19,13 @@
SELECT
measurement_type_class,
harmonic_type,
sum(over_limit_measurement_average)/count(*) as overLimitMeasurementAverage ,
sum(over_limit_measurement_accrued) as overLimitMeasurementAccrued,
sum(average_over_day)/count(*) as averageOverDay,
sum(over_limit_measurement_ratio_average)/count(*) as overLimitMeasurementRatioAverage,
sum(over_limit_measurement_ratio_accrued) as overLimitMeasurementRatioAccrued
ROUND( sum( over_limit_measurement_average )/ count(*), 2 ) AS overLimitMeasurementAverage,
sum( over_limit_measurement_accrued ) AS overLimitMeasurementAccrued,
ROUND( sum( average_over_day )/ count(*), 2 ) AS averageOverDay,
ROUND( sum( over_limit_measurement_ratio_average )/ count(*), 2 ) AS overLimitMeasurementRatioAverage,
sum( over_limit_measurement_ratio_accrued ) AS overLimitMeasurementRatioAccrued
FROM
r_stat_harmonic_q
r_stat_harmonic_q
<where>
and data_Type=#{dataType}
<if test="param != null and param.ids != null and param.ids.size > 0">

View File

@@ -21,11 +21,11 @@
measurement_type_class,
harmonic_type,
voltage_type,
sum(over_limit_measurement_average)/count(*) as overLimitMeasurementAverage ,
sum(over_limit_measurement_accrued) as overLimitMeasurementAccrued,
sum(over_Day) as overDay,
sum(over_limit_measurement_ratio_average)/count(*) as overLimitMeasurementRatioAverage,
sum(over_limit_measurement_ratio_accrued) as overLimitMeasurementRatioAccrued
ROUND( sum( over_limit_measurement_average )/ count(*), 2 ) AS overLimitMeasurementAverage,
sum( over_limit_measurement_accrued ) AS overLimitMeasurementAccrued,
sum( over_Day ) AS overDay,
ROUND( sum( over_limit_measurement_ratio_average )/ count(*), 2 ) AS overLimitMeasurementRatioAverage,
sum( over_limit_measurement_ratio_accrued ) AS overLimitMeasurementRatioAccrued
FROM
r_stat_harmonic_voltage_m
<where>

View File

@@ -19,11 +19,11 @@
SELECT
measurement_type_class,
harmonic_type,
sum(over_limit_measurement_average)/count(*) as overLimitMeasurementAverage ,
sum(over_limit_measurement_accrued) as overLimitMeasurementAccrued,
sum(average_over_day)/count(*) as averageOverDay,
sum(over_limit_measurement_ratio_average)/count(*) as overLimitMeasurementRatioAverage,
sum(over_limit_measurement_ratio_accrued) as overLimitMeasurementRatioAccrued
ROUND( sum( over_limit_measurement_average )/ count(*), 2 ) AS overLimitMeasurementAverage,
sum( over_limit_measurement_accrued ) AS overLimitMeasurementAccrued,
ROUND( sum( average_over_day )/ count(*), 2 ) AS averageOverDay,
ROUND( sum( over_limit_measurement_ratio_average )/ count(*), 2 ) AS overLimitMeasurementRatioAverage,
sum( over_limit_measurement_ratio_accrued ) AS overLimitMeasurementRatioAccrued
FROM
r_stat_harmonic_y
<where>

View File

@@ -24,15 +24,15 @@
org_no,
load_type,
v_average,
v_count/effective_measurement as vAccrued,
ROUND( v_count / effective_measurement, 2 ) AS vAccrued,
i_average,
i_count/effective_measurement as iAccrued,
ROUND( i_count / effective_measurement, 2 ) AS iAccrued,
unbalance_average,
unbalance_count/effective_measurement as unbalanceAccrued,
ROUND( unbalance_count / effective_measurement, 2 ) AS unbalanceAccrued,
i_neg_average,
i_neg_count/effective_measurement as iNegAccrued,
ROUND( i_neg_count / effective_measurement, 2 ) AS iNegAccrued,
flicker_average,
flicker_count/effective_measurement as flickerAccrued
ROUND( flicker_count / effective_measurement, 2 ) AS flickerAccrued
from
r_stat_load_type_m
<where>

View File

@@ -24,15 +24,15 @@
org_no,
load_type,
v_average,
v_count/effective_measurement as vAccrued,
ROUND( v_count / effective_measurement, 2 ) AS vAccrued,
i_average,
i_count/effective_measurement as iAccrued,
ROUND( i_count / effective_measurement, 2 ) AS iAccrued,
unbalance_average,
unbalance_count/effective_measurement as unbalanceAccrued,
ROUND( unbalance_count / effective_measurement, 2 ) AS unbalanceAccrued,
i_neg_average,
i_neg_count/effective_measurement as iNegAccrued,
ROUND( i_neg_count / effective_measurement, 2 ) AS iNegAccrued,
flicker_average,
flicker_count/effective_measurement as flickerAccrued
ROUND( flicker_count / effective_measurement, 2 ) AS flickerAccrued
from
r_stat_load_type_q
<where>

View File

@@ -24,15 +24,15 @@
org_no,
load_type,
v_average,
v_count/effective_measurement as vAccrued,
ROUND( v_count / effective_measurement, 2 ) AS vAccrued,
i_average,
i_count/effective_measurement as iAccrued,
ROUND( i_count / effective_measurement, 2 ) AS iAccrued,
unbalance_average,
unbalance_count/effective_measurement as unbalanceAccrued,
ROUND( unbalance_count / effective_measurement, 2 ) AS unbalanceAccrued,
i_neg_average,
i_neg_count/effective_measurement as iNegAccrued,
ROUND( i_neg_count / effective_measurement, 2 ) AS iNegAccrued,
flicker_average,
flicker_count/effective_measurement as flickerAccrued
ROUND( flicker_count / effective_measurement, 2 ) AS flickerAccrued
from
r_stat_load_type_y
<where>

View File

@@ -84,14 +84,14 @@
SELECT
substation_id,
effective_measurement_accrued,
freq_over_day / freq_count as 'freqAverageOverDay',
v_dev_over_day / v_dev_count as 'vDevAverageOverDay',
v_over_day / v_count as 'vAverageOverDay',
i_over_day / i_count as 'iAverageOverDay',
unbalance_over_day / unbalance_count as 'unbalanceAverageOverDay',
i_neg_over_day / i_neg_count as 'iNegAverageOverDay',
flicker_over_day / flicker_count as 'flickerAverageOverDay',
inuharm_over_day / inuharm_count as 'inuharmAverageOverDay'
ROUND(freq_over_day / freq_count,2) AS 'freqAverageOverDay',
ROUND(v_dev_over_day / v_dev_count,2) AS 'vDevAverageOverDay',
ROUND(v_over_day / v_count,2) AS 'vAverageOverDay',
ROUND(i_over_day / i_count,2) AS 'iAverageOverDay',
ROUND(unbalance_over_day / unbalance_count,2) AS 'unbalanceAverageOverDay',
ROUND(i_neg_over_day / i_neg_count,2) AS 'iNegAverageOverDay',
ROUND(flicker_over_day / flicker_count,2) AS 'flickerAverageOverDay',
ROUND(inuharm_over_day / inuharm_count,2) AS 'inuharmAverageOverDay'
FROM
r_stat_substation_m
<where>

View File

@@ -0,0 +1,30 @@
package com.njcn.harmonic.service.majornetwork;
import com.njcn.common.pojo.param.StatisticsBizBaseParam;
import com.njcn.device.pq.pojo.dto.PollutionLineDTO;
import com.njcn.harmonic.pojo.param.PVOverviewParam;
import java.util.List;
/**
* @author wr
* @description
* @date 2023/5/10 9:30
*/
public interface PVOverviewService {
/**
* 冀北分布式光伏获取综合统计
* @param param
* @return
*/
List<Integer> getPVSynthesisCount(StatisticsBizBaseParam param);
/**
* 冀北分布式光伏获取污染指数统计
* @param param
* @return
*/
List<PollutionLineDTO.PVPollution> getPVPollution(PVOverviewParam param);
}

View File

@@ -0,0 +1,117 @@
package com.njcn.harmonic.service.majornetwork.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.njcn.common.pojo.dto.SimpleDTO;
import com.njcn.common.pojo.param.StatisticsBizBaseParam;
import com.njcn.device.biz.commApi.DeptLineGeneralClient;
import com.njcn.device.biz.pojo.dto.DeptGetChildrenDTO;
import com.njcn.device.biz.pojo.param.DeptGetLineParam;
import com.njcn.device.pms.api.PmsGeneralDeviceInfoClient;
import com.njcn.device.pms.api.StatationStatClient;
import com.njcn.device.pms.pojo.dto.PmsGeneralDeviceDTO;
import com.njcn.device.pms.pojo.dto.PmsStatationStatInfoDTO;
import com.njcn.device.pms.pojo.param.PmsDeviceInfoParam;
import com.njcn.device.pms.pojo.param.PmsStatationStatInfoParam;
import com.njcn.device.pq.pojo.dto.PollutionLineDTO;
import com.njcn.harmonic.mapper.RStatPollutionSubstationDPOMapper;
import com.njcn.harmonic.mapper.majornetwork.PVOverviewMapper;
import com.njcn.harmonic.pojo.param.PVOverviewParam;
import com.njcn.harmonic.pojo.po.RStatPollutionSubstationDPO;
import com.njcn.harmonic.service.majornetwork.PVOverviewService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @author wr
* @description
* @date 2023/5/10 9:30
*/
@Service
@RequiredArgsConstructor
public class PVOverviewServiceImpl implements PVOverviewService {
private final PVOverviewMapper pvOverviewMapper;
private final DeptLineGeneralClient deptLineGeneralClient;
private final RStatPollutionSubstationDPOMapper pollutionSubstationDPOMapper;
private final StatationStatClient statationStatClient;
private final PmsGeneralDeviceInfoClient pmsGeneralDeviceInfoClient;
@Override
public List<Integer> getPVSynthesisCount(StatisticsBizBaseParam param) {
DeptGetLineParam deptGetLineParam=new DeptGetLineParam();
deptGetLineParam.setDeptId(param.getId());
List<DeptGetChildrenDTO> data = deptLineGeneralClient.deptGetLineList(deptGetLineParam).getData();
if(CollUtil.isNotEmpty(data)){
List<String> monitorIds = data.stream().flatMap(dto -> dto.getLineIds().stream()).collect(Collectors.toList());
return pvOverviewMapper.selectPVSynthesisCount(param, monitorIds);
}
return new ArrayList<Integer>(2){{add(0);add(0);}};
}
@Override
public List<PollutionLineDTO.PVPollution> getPVPollution(PVOverviewParam param) {
List<PollutionLineDTO.PVPollution> info=new ArrayList<>();
//查询主网台账信息获取遍变电站信息
PmsDeviceInfoParam pmsDeviceInfoParam = new PmsDeviceInfoParam();
pmsDeviceInfoParam.setStatisticalType(new SimpleDTO());
pmsDeviceInfoParam.setDeptIndex(param.getId());
List<PmsGeneralDeviceDTO> data = pmsGeneralDeviceInfoClient.getPmsDeviceInfoWithInOrg(pmsDeviceInfoParam).getData();
List<String> powers= data.stream().flatMap(dto -> dto.getPowerrIdList().stream()).collect(Collectors.toList());
if(CollUtil.isEmpty(powers)){
return info;
}
//数据查询
List<RStatPollutionSubstationDPO> substationDPOS = pollutionSubstationDPOMapper.selectList(new LambdaQueryWrapper<RStatPollutionSubstationDPO>()
.in(RStatPollutionSubstationDPO::getSubstationId,powers)
.eq(StrUtil.isNotBlank(param.getSteadyStatis()), RStatPollutionSubstationDPO::getPollutionType, param.getSteadyStatis())
.ge(StrUtil.isNotBlank(param.getStartTime()), RStatPollutionSubstationDPO::getDataDate,DateUtil.beginOfDay(DateUtil.parse(param.getStartTime())))
.le(StrUtil.isNotBlank(param.getEndTime()), RStatPollutionSubstationDPO::getDataDate, DateUtil.endOfDay(DateUtil.parse(param.getEndTime())))
.orderByDesc(RStatPollutionSubstationDPO::getValue)
.last("limit "+param.getSum()));
if(CollUtil.isNotEmpty(substationDPOS)){
List<String> powerIds = substationDPOS.stream().map(RStatPollutionSubstationDPO::getSubstationId).collect(Collectors.toList());
PmsStatationStatInfoParam statInfoParam=new PmsStatationStatInfoParam();
statInfoParam.setPowerIds(powerIds);
List<PmsStatationStatInfoDTO> powerList = statationStatClient.getStatationStatInfo(statInfoParam).getData();
if(CollUtil.isNotEmpty(powerList)){
Map<String, PmsStatationStatInfoDTO> powerDetail = powerList.stream().collect(Collectors.toMap(PmsStatationStatInfoDTO::getPowerId, Function.identity(), (key1, key2) -> key1));
for (RStatPollutionSubstationDPO substationDPO : substationDPOS) {
if(powerDetail.containsKey(substationDPO.getSubstationId())){
PmsStatationStatInfoDTO power = powerDetail.get((substationDPO.getSubstationId()));
info.add (getPollutionLineDTO(substationDPO,power)) ;
}
}
}
}
return info;
}
/**
* 属性赋值
* @param substationDPO
* @param power
* @return
*/
public PollutionLineDTO.PVPollution getPollutionLineDTO(RStatPollutionSubstationDPO substationDPO,PmsStatationStatInfoDTO power) {
PollutionLineDTO.PVPollution dto=new PollutionLineDTO.PVPollution();
dto.setId(power.getMonitorId());
dto.setName(power.getMonitorName());
dto.setPowerCompany(power.getOrgName());
dto.setSubstation(power.getPowerName());
dto.setSubstationId(power.getPowerId());
dto.setBusBar(power.getGeneratrixName());
dto.setPowerVoltageLevel(power.getPowerVoltageLevel());
dto.setData(substationDPO.getValue());
return dto;
}
}