代码调整

This commit is contained in:
wr
2024-02-23 13:23:43 +08:00
parent 7c278892a3
commit 6ab679caf2
9 changed files with 183 additions and 305 deletions

View File

@@ -38,93 +38,14 @@
rso.harmonic_measurement_ratio_average as harmonicMeasurementRatioAverage,
TRUNCATE(rso.harmonic_measurement_accrued/rso.effective_measurement_accrued ,2)as harmonicMeasurementRatioAccrued,
c.harmonic_type,
c.over_limit_measurement_average,
TRUNCATE(c.over_limit_measurement_average,2) as overLimitMeasurementAverage,
c.over_limit_measurement_accrued,
c.over_limit_measurement_ratio_average,
c.over_limit_measurement_ratio_accrued,
(
SELECT
over_limit_measurement_average
FROM
r_stat_harmonic_org_m a
WHERE
a.org_no=c.org_no
and a.data_Type = #{dataType}
and
a.harmonic_type=c.harmonic_type
<if test="param!=null and param.startTime != null and param.startTime !=''">
AND (data_date >= date(
DATE_ADD( #{param.startTime}, INTERVAL - 1 YEAR )))
</if>
<if test="param!=null and param.endTime != null and param.endTime !=''">
AND (data_date &lt;= date(
DATE_ADD( #{param.endTime}, INTERVAL - 1 YEAR )))
</if>
) chainAverage ,
(
SELECT
over_limit_measurement_accrued
FROM
r_stat_harmonic_org_m a
WHERE
a.org_no=c.org_no
and a.data_Type = #{dataType}
and
a.harmonic_type=c.harmonic_type
<if test="param!=null and param.startTime != null and param.startTime !=''">
AND (data_date >= date(
DATE_ADD( #{param.startTime}, INTERVAL - 1 YEAR )))
</if>
<if test="param!=null and param.endTime != null and param.endTime !=''">
AND (data_date &lt;= date(
DATE_ADD( #{param.endTime}, INTERVAL - 1 YEAR )))
</if>
) chainAccrued ,
(
SELECT
over_limit_measurement_average
FROM
r_stat_harmonic_org_m a
WHERE
a.org_no=c.org_no
and a.data_Type = #{dataType}
and
a.harmonic_type=c.harmonic_type
<if test="param!=null and param.startTime != null and param.startTime !=''">
AND (data_date >= date(
DATE_ADD( #{param.startTime}, INTERVAL - 1 MONTH )))
</if>
<if test="param!=null and param.endTime != null and param.endTime !=''">
AND (data_date &lt;= date(
DATE_ADD( #{param.endTime}, INTERVAL - 1 MONTH )))
</if>
) sameAverage,
(
SELECT
over_limit_measurement_accrued
FROM
r_stat_harmonic_org_m a
WHERE
a.org_no=c.org_no
and a.data_Type = #{dataType}
and
a.harmonic_type=c.harmonic_type
<if test="param!=null and param.startTime != null and param.startTime !=''">
AND (data_date >= date(
DATE_ADD( #{param.startTime}, INTERVAL - 1 MONTH )))
</if>
<if test="param!=null and param.endTime != null and param.endTime !=''">
AND (data_date &lt;= date(
DATE_ADD( #{param.endTime}, INTERVAL - 1 MONTH )))
</if>
) sameAccrued ,
TRUNCATE( c.over_day / c.over_limit_measurement_accrued, 2)as averageOverDay
TRUNCATE(c.over_limit_measurement_ratio_average,2) as overLimitMeasurementRatioAverage,
TRUNCATE(c.over_limit_measurement_ratio_accrued,2) as overLimitMeasurementRatioAccrued,
TRUNCATE( c.over_day / c.over_limit_measurement_accrued, 2)as averageOverDay
FROM
r_stat_harmonic_org_m c
RIGHT JOIN r_stat_org_m AS rso ON rso.org_no = c.org_no
r_stat_harmonic_m c
RIGHT JOIN r_stat_org_m AS rso ON rso.org_no = c.org_no and c.measurement_type_class = rso.measurement_type_class
<where>
c.data_Type=#{dataType} and rso.data_Type=#{dataType}
<if test="param != null and param.ids != null and param.ids.size > 0">

View File

@@ -38,91 +38,13 @@
rso.harmonic_measurement_ratio_average as harmonicMeasurementRatioAverage,
TRUNCATE(rso.harmonic_measurement_accrued/rso.effective_measurement_accrued ,2)as harmonicMeasurementRatioAccrued,
c.harmonic_type,
c.over_limit_measurement_average,
TRUNCATE(c.over_limit_measurement_average,2) as overLimitMeasurementAverage,
c.over_limit_measurement_accrued,
c.over_limit_measurement_ratio_average,
c.over_limit_measurement_ratio_accrued,
(
SELECT
over_limit_measurement_average
FROM
r_stat_harmonic_org_q a
WHERE
a.org_no=c.org_no
and a.data_Type = #{dataType}
and
a.harmonic_type=c.harmonic_type
<if test="param!=null and param.startTime != null and param.startTime !=''">
AND (data_date >= date(
DATE_ADD( #{param.startTime}, INTERVAL - 1 YEAR )))
</if>
<if test="param!=null and param.endTime != null and param.endTime !=''">
AND (data_date &lt;= date(
DATE_ADD( #{param.endTime}, INTERVAL - 1 YEAR )))
</if>
) chainAverage ,
(
SELECT
over_limit_measurement_accrued
FROM
r_stat_harmonic_org_q a
WHERE
a.org_no=c.org_no
and a.data_Type = #{dataType}
and
a.harmonic_type=c.harmonic_type
<if test="param!=null and param.startTime != null and param.startTime !=''">
AND (data_date >= date(
DATE_ADD( #{param.startTime}, INTERVAL - 1 YEAR )))
</if>
<if test="param!=null and param.endTime != null and param.endTime !=''">
AND (data_date &lt;= date(
DATE_ADD( #{param.endTime}, INTERVAL - 1 YEAR )))
</if>
) chainAccrued ,
(
SELECT
over_limit_measurement_average
FROM
r_stat_harmonic_org_q a
WHERE
a.org_no=c.org_no
and a.data_Type = #{dataType}
and
a.harmonic_type=c.harmonic_type
<if test="param!=null and param.startTime != null and param.startTime !=''">
AND (data_date >= date(
DATE_ADD( #{param.startTime}, INTERVAL - 3 MONTH )))
</if>
<if test="param!=null and param.endTime != null and param.endTime !=''">
AND (data_date &lt;= date(
DATE_ADD( #{param.endTime}, INTERVAL - 3 MONTH )))
</if>
) sameAverage,
(
SELECT
over_limit_measurement_accrued
FROM
r_stat_harmonic_org_q a
WHERE
a.org_no=c.org_no
and a.data_Type = #{dataType}
and
a.harmonic_type=c.harmonic_type
<if test="param!=null and param.startTime != null and param.startTime !=''">
AND (data_date >= date(
DATE_ADD( #{param.startTime}, INTERVAL - 3 MONTH )))
</if>
<if test="param!=null and param.endTime != null and param.endTime !=''">
AND (data_date &lt;= date(
DATE_ADD( #{param.endTime}, INTERVAL - 3 MONTH )))
</if>
) sameAccrued,
c.average_over_day
TRUNCATE(c.over_limit_measurement_ratio_average,2) as overLimitMeasurementRatioAverage,
TRUNCATE(c.over_limit_measurement_ratio_accrued,2) as overLimitMeasurementRatioAccrued,
TRUNCATE( c.average_over_day, 2)as averageOverDay
FROM
r_stat_harmonic_org_q c
r_stat_harmonic_q c
RIGHT JOIN r_stat_org_q AS rso ON rso.org_no = c.org_no
<where>
c.data_Type=#{dataType} and rso.data_Type=#{dataType}

View File

@@ -36,93 +36,15 @@
rso.over_limit_measurement_average AS harmonicMeasurementAverage,
rso.over_limit_measurement_accrued AS harmonicMeasurementAccrued,
rso.harmonic_measurement_ratio_average as harmonicMeasurementRatioAverage,
TRUNCATE(rso.harmonic_measurement_accrued/rso.effective_measurement_accrued ,2)as harmonicMeasurementRatioAccrued,
TRUNCATE(rso.over_limit_measurement_accrued/rso.effective_measurement_accrued ,2)as harmonicMeasurementRatioAccrued,
c.harmonic_type,
c.over_limit_measurement_average,
TRUNCATE(c.over_limit_measurement_average,2) as overLimitMeasurementAverage,
c.over_limit_measurement_accrued,
c.over_limit_measurement_ratio_average,
c.over_limit_measurement_ratio_accrued,
(
SELECT
over_limit_measurement_average
FROM
r_stat_harmonic_org_y a
WHERE
a.org_no=c.org_no
and a.data_Type = #{dataType}
and
a.harmonic_type=c.harmonic_type
<if test="param!=null and param.startTime != null and param.startTime !=''">
AND (data_date >= date(
DATE_ADD( #{param.startTime}, INTERVAL - 1 YEAR )))
</if>
<if test="param!=null and param.endTime != null and param.endTime !=''">
AND (data_date &lt;= date(
DATE_ADD( #{param.endTime}, INTERVAL - 1 YEAR )))
</if>
) chainAverage ,
(
SELECT
over_limit_measurement_accrued
FROM
r_stat_harmonic_org_y a
WHERE
a.org_no=c.org_no
and a.data_Type = #{dataType}
and
a.harmonic_type=c.harmonic_type
<if test="param!=null and param.startTime != null and param.startTime !=''">
AND (data_date >= date(
DATE_ADD( #{param.startTime}, INTERVAL - 1 YEAR )))
</if>
<if test="param!=null and param.endTime != null and param.endTime !=''">
AND (data_date &lt;= date(
DATE_ADD( #{param.endTime}, INTERVAL - 1 YEAR )))
</if>
) chainAccrued ,
(
SELECT
over_limit_measurement_average
FROM
r_stat_harmonic_org_y a
WHERE
a.org_no=c.org_no
and a.data_Type = #{dataType}
and
a.harmonic_type=c.harmonic_type
<if test="param!=null and param.startTime != null and param.startTime !=''">
AND (data_date >= date(
DATE_ADD( #{param.startTime}, INTERVAL - 1 YEAR )))
</if>
<if test="param!=null and param.endTime != null and param.endTime !=''">
AND (data_date &lt;= date(
DATE_ADD( #{param.endTime}, INTERVAL - 1 YEAR )))
</if>
) sameAverage,
(
SELECT
over_limit_measurement_accrued
FROM
r_stat_harmonic_org_y a
WHERE
a.org_no=c.org_no
and a.data_Type = #{dataType}
and
a.harmonic_type=c.harmonic_type
<if test="param!=null and param.startTime != null and param.startTime !=''">
AND (data_date >= date(
DATE_ADD( #{param.startTime}, INTERVAL - 1 YEAR )))
</if>
<if test="param!=null and param.endTime != null and param.endTime !=''">
AND (data_date &lt;= date(
DATE_ADD( #{param.endTime}, INTERVAL - 1 YEAR )))
</if>
) sameAccrued,
c.average_over_day
TRUNCATE(c.over_limit_measurement_ratio_average,2) as overLimitMeasurementRatioAverage,
TRUNCATE(c.over_limit_measurement_ratio_accrued,2) as overLimitMeasurementRatioAccrued,
c.average_over_day
FROM
r_stat_harmonic_org_y c
r_stat_harmonic_y c
RIGHT JOIN r_stat_org_y AS rso ON rso.org_no = c.org_no
<where>
c.data_Type=#{dataType} and rso.data_Type=#{dataType}

View File

@@ -3,6 +3,8 @@ package com.njcn.harmonic.service.distribution.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.common.pojo.constant.BizParamConstant;
@@ -262,6 +264,16 @@ public class PwRStatOrgServiceImpl extends ServiceImpl<PwRStatOrgMapper, RStatOr
List<DictData> steadyStatis = dicDataFeignClient.getDicDataByTypeCode(
DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
List<RStatSubstationOrgVO> temp = new ArrayList<>();
List<RStatSubstationOrgVO> tb;
List<RStatSubstationOrgVO> hb;
String startTime = param.getStartTime();
String endTime = param.getEndTime();
//同比(上一年)
String tStarTime = DateUtil.offset(DateUtil.parse(startTime), DateField.YEAR, -1).toString();
String tEndTime = DateUtil.offset(DateUtil.parse(endTime), DateField.YEAR, -1).toString();
//环比(上个月)
String hStarTime = DateUtil.offset(DateUtil.parse(startTime), DateField.MONTH, -1).toString();
String hEndTime = DateUtil.offset(DateUtil.parse(endTime), DateField.MONTH, -1).toString();
//获取配网信息
DictData distributionData = dicDataFeignClient.getDicDataByCode(DicDataEnum.DISTRIBUTION_POINT.getCode()).getData();
//选择数据时间范围
@@ -269,14 +281,35 @@ public class PwRStatOrgServiceImpl extends ServiceImpl<PwRStatOrgMapper, RStatOr
case BizParamConstant.STAT_BIZ_YEAR:
// 获取年区域暂态指标分类统计表
temp = rStatOrgYMapper.getYearRStatHarmonicOrgInfo(param, deptIds, distributionData.getId());
param.setStartTime(tStarTime);
param.setEndTime(tEndTime);
tb = rStatOrgYMapper.getYearRStatHarmonicOrgInfo(param, deptIds, distributionData.getId());
param.setStartTime(hStarTime);
param.setEndTime(hEndTime);
hb = rStatOrgYMapper.getYearRStatHarmonicOrgInfo(param, deptIds, distributionData.getId());
assemble(temp,tb,hb);
break;
case BizParamConstant.STAT_BIZ_QUARTER:
// 获取季区域暂态指标分类统计表
temp = rStatOrgQMapper.getQuarterRStatHarmonicOrgInfo(param, deptIds, distributionData.getId());
param.setStartTime(tStarTime);
param.setEndTime(tEndTime);
tb = rStatOrgQMapper.getQuarterRStatHarmonicOrgInfo(param, deptIds, distributionData.getId());
param.setStartTime(hStarTime);
param.setEndTime(hEndTime);
hb = rStatOrgQMapper.getQuarterRStatHarmonicOrgInfo(param, deptIds, distributionData.getId());
assemble(temp,tb,hb);
break;
case BizParamConstant.STAT_BIZ_MONTH:
// 获取月区域暂态指标分类统计表
temp = rStatOrgMMapper.getMonthRStatHarmonicOrgInfo(param, deptIds, distributionData.getId());
param.setStartTime(tStarTime);
param.setEndTime(tEndTime);
tb = rStatOrgMMapper.getMonthRStatHarmonicOrgInfo(param, deptIds, distributionData.getId());
param.setStartTime(hStarTime);
param.setEndTime(hEndTime);
hb = rStatOrgMMapper.getMonthRStatHarmonicOrgInfo(param, deptIds, distributionData.getId());
assemble(temp,tb,hb);
break;
default:
break;
@@ -538,4 +571,24 @@ public class PwRStatOrgServiceImpl extends ServiceImpl<PwRStatOrgMapper, RStatOr
}
return new ArrayList<>();
}
private List<RStatSubstationOrgVO> assemble(List<RStatSubstationOrgVO> temp,List<RStatSubstationOrgVO> hb,List<RStatSubstationOrgVO> tb){
Map<String, RStatSubstationOrgVO> map = temp.stream().collect(Collectors.toMap(x -> x.getOrgNo() + ";" + x.getMeasurementTypeClass() + ";" + x.getHarmonicType(), Function.identity()));
Map<String, RStatSubstationOrgVO> tbMap = hb.stream().collect(Collectors.toMap(x -> x.getOrgNo() + ";" + x.getMeasurementTypeClass() + ";" + x.getHarmonicType(), Function.identity()));
Map<String, RStatSubstationOrgVO> hbMap = tb.stream().collect(Collectors.toMap(x -> x.getOrgNo() + ";" + x.getMeasurementTypeClass() + ";" + x.getHarmonicType(), Function.identity()));
map.forEach((key,value)->{
RStatSubstationOrgVO rStatSubstationOrgVO;
if(tbMap.containsKey(key)){
rStatSubstationOrgVO = tbMap.get(key);
value.setChainAverage(rStatSubstationOrgVO.getOverLimitMeasurementAverage());
value.setChainAccrued(rStatSubstationOrgVO.getOverLimitMeasurementRatioAccrued());
}
if(hbMap.containsKey(key)){
rStatSubstationOrgVO = hbMap.get(key);
value.setSameAverage(rStatSubstationOrgVO.getOverLimitMeasurementAverage());
value.setSameAccrued(rStatSubstationOrgVO.getOverLimitMeasurementRatioAccrued());
}
});
return temp;
}
}

View File

@@ -3,6 +3,8 @@ package com.njcn.harmonic.service.majornetwork.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateField;
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.constant.BizParamConstant;
@@ -38,10 +40,7 @@ import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -138,24 +137,56 @@ public class RStatOrgYServiceImpl extends ServiceImpl<RStatOrgYMapper, RStatOrgY
List<DictData> eventStatis = dicDataFeignClient.getDicDataByTypeCode(
DicDataTypeEnum.STEADY_STATIS.getCode()).getData();
List<RStatSubstationOrgVO> temp = new ArrayList<>();
List<RStatSubstationOrgVO> tb;
List<RStatSubstationOrgVO> hb;
// 过滤出部门id
List<String> deptIds = data.stream().map(DeptDTO::getCode).collect(Collectors.toList());
//获取主网id信息
DictData mainnetData = dicDataFeignClient.getDicDataByCode(DicDataEnum.MAINNET_POINT.getCode()).getData();
String startTime = param.getStartTime();
String endTime = param.getEndTime();
//同比(上一年)
String tStarTime = DateUtil.offset(DateUtil.parse(startTime), DateField.YEAR, -1).toString();
String tEndTime = DateUtil.offset(DateUtil.parse(endTime), DateField.YEAR, -1).toString();
//环比(上个月)
String hStarTime = DateUtil.offset(DateUtil.parse(startTime), DateField.MONTH, -1).toString();
String hEndTime = DateUtil.offset(DateUtil.parse(endTime), DateField.MONTH, -1).toString();
param.getStartTime();
// 类型1年 2季度 3月份 4日
switch (param.getType().toString()) {
case BizParamConstant.STAT_BIZ_YEAR:
// 获取年区域暂态指标分类统计表
temp = rStatOrgYMapper.getYearRStatHarmonicOrgInfo(param, deptIds, mainnetData.getId());
param.setStartTime(tStarTime);
param.setEndTime(tEndTime);
tb = rStatOrgYMapper.getYearRStatHarmonicOrgInfo(param, deptIds, mainnetData.getId());
param.setStartTime(hStarTime);
param.setEndTime(hEndTime);
hb = rStatOrgYMapper.getYearRStatHarmonicOrgInfo(param, deptIds, mainnetData.getId());
assemble(temp,tb,hb);
break;
case BizParamConstant.STAT_BIZ_QUARTER:
// 获取季区域暂态指标分类统计表
temp = rStatOrgQMapper.getQuarterRStatHarmonicOrgInfo(param, deptIds, mainnetData.getId());
param.setStartTime(tStarTime);
param.setEndTime(tEndTime);
tb = rStatOrgQMapper.getQuarterRStatHarmonicOrgInfo(param, deptIds, mainnetData.getId());
param.setStartTime(hStarTime);
param.setEndTime(hEndTime);
hb = rStatOrgQMapper.getQuarterRStatHarmonicOrgInfo(param, deptIds, mainnetData.getId());
assemble(temp,tb,hb);
break;
case BizParamConstant.STAT_BIZ_MONTH:
// 获取月区域暂态指标分类统计表
temp = rStatOrgMMapper.getMonthRStatHarmonicOrgInfo(param, deptIds, mainnetData.getId());
param.setStartTime(tStarTime);
param.setEndTime(tEndTime);
tb = rStatOrgMMapper.getMonthRStatHarmonicOrgInfo(param, deptIds, mainnetData.getId());
param.setStartTime(hStarTime);
param.setEndTime(hEndTime);
hb = rStatOrgMMapper.getMonthRStatHarmonicOrgInfo(param, deptIds, mainnetData.getId());
assemble(temp,tb,hb);
break;
default:
break;
@@ -422,5 +453,25 @@ public class RStatOrgYServiceImpl extends ServiceImpl<RStatOrgYMapper, RStatOrgY
return info;
}
private List<RStatSubstationOrgVO> assemble(List<RStatSubstationOrgVO> temp,List<RStatSubstationOrgVO> hb,List<RStatSubstationOrgVO> tb){
Map<String, RStatSubstationOrgVO> map = temp.stream().collect(Collectors.toMap(x -> x.getOrgNo() + ";" + x.getMeasurementTypeClass() + ";" + x.getHarmonicType(), Function.identity()));
Map<String, RStatSubstationOrgVO> tbMap = hb.stream().collect(Collectors.toMap(x -> x.getOrgNo() + ";" + x.getMeasurementTypeClass() + ";" + x.getHarmonicType(), Function.identity()));
Map<String, RStatSubstationOrgVO> hbMap = tb.stream().collect(Collectors.toMap(x -> x.getOrgNo() + ";" + x.getMeasurementTypeClass() + ";" + x.getHarmonicType(), Function.identity()));
map.forEach((key,value)->{
RStatSubstationOrgVO rStatSubstationOrgVO;
if(tbMap.containsKey(key)){
rStatSubstationOrgVO = tbMap.get(key);
value.setChainAverage(rStatSubstationOrgVO.getOverLimitMeasurementAverage());
value.setChainAccrued(rStatSubstationOrgVO.getOverLimitMeasurementRatioAccrued());
}
if(hbMap.containsKey(key)){
rStatSubstationOrgVO = hbMap.get(key);
value.setSameAverage(rStatSubstationOrgVO.getOverLimitMeasurementAverage());
value.setSameAccrued(rStatSubstationOrgVO.getOverLimitMeasurementRatioAccrued());
}
});
return temp;
}
}