代码调整

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

@@ -43,7 +43,9 @@
<include refid="query_field"></include>
FROM
r_stat_org_y AS rso
LEFT JOIN r_stat_event_org_y AS rseo ON rso.org_no = rseo.org_no and rso.data_date = rseo.data_date
LEFT JOIN r_stat_event_y AS rseo ON rso.org_no = rseo.org_no
and rso.data_date = rseo.data_date
and rso.measurement_type_class = rseo.measurement_type_class
WHERE
<include refid="query_where"></include>
</select>
@@ -54,7 +56,9 @@
<include refid="query_field"></include>
FROM
r_stat_org_q AS rso
LEFT JOIN r_stat_event_org_q AS rseo ON rso.org_no = rseo.org_no and rso.data_date = rseo.data_date
LEFT JOIN r_stat_event_q AS rseo ON rso.org_no = rseo.org_no
and rso.data_date = rseo.data_date
and rso.measurement_type_class = rseo.measurement_type_class
WHERE
<include refid="query_where"></include>
</select>
@@ -65,7 +69,9 @@
<include refid="query_field"></include>
FROM
r_stat_org_m AS rso
LEFT JOIN r_stat_event_org_m AS rseo ON rso.org_no = rseo.org_no and rso.data_date = rseo.data_date
LEFT JOIN r_stat_event_m AS rseo ON rso.org_no = rseo.org_no
and rso.data_date = rseo.data_date
and rso.measurement_type_class = rseo.measurement_type_class
WHERE
<include refid="query_where"></include>
</select>

View File

@@ -47,7 +47,9 @@
<include refid="query_rStatEventOrg_field"></include>
FROM
r_stat_org_y AS rso
LEFT JOIN r_stat_event_org_y AS rseo ON rso.org_no = rseo.org_no and rso.data_date = rseo.data_date
LEFT JOIN r_stat_event_y AS rseo ON rso.org_no = rseo.org_no
and rso.data_date = rseo.data_date
and rso.measurement_type_class = rseo.measurement_type_class
WHERE
<include refid="query_rStatEventOrg_where"></include>
</select>
@@ -59,7 +61,9 @@
<include refid="query_rStatEventOrg_field"></include>
FROM
r_stat_org_q AS rso
LEFT JOIN r_stat_event_org_q AS rseo ON rso.org_no = rseo.org_no and rso.data_date = rseo.data_date
LEFT JOIN r_stat_event_q AS rseo ON rso.org_no = rseo.org_no
and rso.data_date = rseo.data_date
and rso.measurement_type_class = rseo.measurement_type_class
WHERE
<include refid="query_rStatEventOrg_where"></include>
</select>
@@ -71,7 +75,9 @@
<include refid="query_rStatEventOrg_field"></include>
FROM
r_stat_org_m AS rso
LEFT JOIN r_stat_event_org_m AS rseo ON rso.org_no = rseo.org_no and rso.data_date = rseo.data_date
LEFT JOIN r_stat_event_m AS rseo ON rso.org_no = rseo.org_no
and rso.data_date = rseo.data_date
and rso.measurement_type_class = rseo.measurement_type_class
WHERE
<include refid="query_rStatEventOrg_where"></include>
</select>

View File

@@ -91,10 +91,10 @@ public class RStatSubstationOrg2VO implements Serializable {
private Integer tAccrued;
private Float oAverage;
private Float oAccrued;
private Integer chainAverage;
private Integer chainAccrued;
private Integer sameAverage;
private Integer sameAccrued;
private Float chainAverage;
private Float chainAccrued;
private Float sameAverage;
private Float sameAccrued;
private Float averageOverDay;
/**
@@ -104,10 +104,10 @@ public class RStatSubstationOrg2VO implements Serializable {
private Integer tAccrued1;
private Float oAverage1;
private Float oAccrued1;
private Integer chainAverage1;
private Integer chainAccrued1;
private Integer sameAverage1;
private Integer sameAccrued1;
private Float chainAverage1;
private Float chainAccrued1;
private Float sameAverage1;
private Float sameAccrued1;
private Float averageOverDay1;
/**
@@ -117,10 +117,10 @@ public class RStatSubstationOrg2VO implements Serializable {
private Integer tAccrued2;
private Float oAverage2;
private Float oAccrued2;
private Integer chainAverage2;
private Integer chainAccrued2;
private Integer sameAverage2;
private Integer sameAccrued2;
private Float chainAverage2;
private Float chainAccrued2;
private Float sameAverage2;
private Float sameAccrued2;
private Float averageOverDay2;
/**
@@ -130,10 +130,10 @@ public class RStatSubstationOrg2VO implements Serializable {
private Integer tAccrued3;
private Float oAverage3;
private Float oAccrued3;
private Integer chainAverage3;
private Integer chainAccrued3;
private Integer sameAverage3;
private Integer sameAccrued3;
private Float chainAverage3;
private Float chainAccrued3;
private Float sameAverage3;
private Float sameAccrued3;
private Float averageOverDay3;
/**
@@ -143,10 +143,10 @@ public class RStatSubstationOrg2VO implements Serializable {
private Integer tAccrued4;
private Float oAverage4;
private Float oAccrued4;
private Integer chainAverage4;
private Integer chainAccrued4;
private Integer sameAverage4;
private Integer sameAccrued4;
private Float chainAverage4;
private Float chainAccrued4;
private Float sameAverage4;
private Float sameAccrued4;
private Float averageOverDay4;
@@ -157,10 +157,10 @@ public class RStatSubstationOrg2VO implements Serializable {
private Integer tAccrued5;
private Float oAverage5;
private Float oAccrued5;
private Integer chainAverage5;
private Integer chainAccrued5;
private Integer sameAverage5;
private Integer sameAccrued5;
private Float chainAverage5;
private Float chainAccrued5;
private Float sameAverage5;
private Float sameAccrued5;
private Float averageOverDay5;
@@ -171,10 +171,10 @@ public class RStatSubstationOrg2VO implements Serializable {
private Integer tAccrued6;
private Float oAverage6;
private Float oAccrued6;
private Integer chainAverage6;
private Integer chainAccrued6;
private Integer sameAverage6;
private Integer sameAccrued6;
private Float chainAverage6;
private Float chainAccrued6;
private Float sameAverage6;
private Float sameAccrued6;
private Float averageOverDay6;
/**
@@ -184,10 +184,10 @@ public class RStatSubstationOrg2VO implements Serializable {
private Integer tAccrued7;
private Float oAverage7;
private Float oAccrued7;
private Integer chainAverage7;
private Integer chainAccrued7;
private Integer sameAverage7;
private Integer sameAccrued7;
private Float chainAverage7;
private Float chainAccrued7;
private Float sameAverage7;
private Float sameAccrued7;
private Float averageOverDay7;
/**
@@ -197,10 +197,10 @@ public class RStatSubstationOrg2VO implements Serializable {
private Integer tAccrued8;
private Float oAverage8;
private Float oAccrued8;
private Integer chainAverage8;
private Integer chainAccrued8;
private Integer sameAverage8;
private Integer sameAccrued8;
private Float chainAverage8;
private Float chainAccrued8;
private Float sameAverage8;
private Float sameAccrued8;
private Float averageOverDay8;
@Data

View File

@@ -116,16 +116,13 @@ public class RStatSubstationOrgVO implements Serializable {
private Float overLimitMeasurementRatioAccrued;
//同比日均
private Integer chainAverage;
private Float chainAverage;
//同比累计
private Integer chainAccrued;
private Float chainAccrued;
//环比日均
private Integer sameAverage;
private Float sameAverage;
//环比累计
private Integer sameAccrued;
private Float sameAccrued;
//平均天数
private Float averageOverDay;

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_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
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 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
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,
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;
}
}