1.算法调整

2.bug修改
This commit is contained in:
wr
2024-03-14 18:04:45 +08:00
parent c9e369e7bd
commit fd57278abe
9 changed files with 226 additions and 239 deletions

View File

@@ -17,8 +17,7 @@
</resultMap>
<select id="getMstatOrgBusbarVoltageVO" resultType="com.njcn.harmonic.pojo.vo.RStatOrgBusbarVoltageVO">
SELECT aa.org_no,
aa.station_name powerStationName,
aa.scale busbarVoltageLevel,
aa.busbarId ,
ifnull(aa.average,0) average,
ifnull(aa.accrued,0) accrued,
ifnull(aa.unbalanceAverage,0) unbalanceAverage,
@@ -34,68 +33,60 @@
FROM
(
SELECT b.org_no org_no,
a.Station_Name station_name,
a.scale scale,
b.busbar_id busbarId,
avg(b.v_average) AS average,
sum(b.v_accrued) AS accrued,
avg(b.unbalance_average) unbalanceAverage,
sum(b.unbalance_accrued) unbalanceAccrued,
avg(b.flicker_average) flickerAverage,
sum(b.flicker_average) flickerAccrued
FROM r_stat_org_busbar_voltage_m b,
pms_generatrix_wire a
WHERE
a.id = b.busbar_id
<if test="param != null and param.ids != null and param.ids.size > 0">
AND b.org_no IN
<foreach collection='param.ids' item='item' index="index" open='(' separator=',' close=')'>
#{item}
</foreach>
</if>
<if test="param != null and param.startTime != null and param.startTime != ''">
AND b.data_date >= #{param.startTime}
</if>
<if test="param != null and param.endTime != null and param.endTime != ''">
AND b.data_date &lt;= #{param.endTime}
</if>
FROM r_stat_org_busbar_voltage_m b
<where>
<if test="param != null and param.ids != null and param.ids.size > 0">
AND b.org_no IN
<foreach collection='param.ids' item='item' index="index" open='(' separator=',' close=')'>
#{item}
</foreach>
</if>
<if test="param != null and param.startTime != null and param.startTime != ''">
AND b.data_date >= #{param.startTime}
</if>
<if test="param != null and param.endTime != null and param.endTime != ''">
AND b.data_date &lt;= #{param.endTime}
</if>
</where>
GROUP BY org_no,
station_name,
scale
) aa
LEFT JOIN (
busbar_id
) aa
LEFT JOIN (
SELECT b.org_no org_no,
a.Station_Name station_name,
a.scale scale,
b.busbar_id busbarId,
avg(b.v_average) AS averageSame,
sum(b.v_accrued) AS accruedSame,
avg(b.unbalance_average) unbalanceAverageSame,
sum(b.unbalance_accrued) unbalanceAccruedSame,
avg(b.flicker_average) flickerAverageSame,
sum(b.flicker_average) flickerAccruedSame
FROM r_stat_org_busbar_voltage_m b,
pms_generatrix_wire a
WHERE
a.id = b.busbar_id
<if test="param != null and param.ids != null and param.ids.size > 0">
AND b.org_no IN
<foreach collection='param.ids' item='item' index="index" open='(' separator=',' close=')'>
#{item}
</foreach>
</if>
<if test="param != null and param.startTime != null and param.startTime != ''">
AND (b.data_date >= date(
FROM r_stat_org_busbar_voltage_m b
<where>
<if test="param != null and param.ids != null and param.ids.size > 0">
AND b.org_no IN
<foreach collection='param.ids' item='item' index="index" open='(' separator=',' close=')'>
#{item}
</foreach>
</if>
<if test="param != null and param.startTime != null and param.startTime != ''">
AND (b.data_date >= date(
DATE_ADD(#{param.startTime}, INTERVAL - 1 YEAR)))
</if>
<if test="param != null and param.endTime != null and param.endTime != ''">
AND (b.data_date &lt;= date(
</if>
<if test="param != null and param.endTime != null and param.endTime != ''">
AND (b.data_date &lt;= date(
DATE_ADD(#{param.endTime}, INTERVAL - 1 YEAR)))
</if>
</if>
</where>
GROUP BY b.org_no,
a.Station_Name,
a.scale
) bb ON aa.org_no = bb.org_no
AND aa.station_name = bb.station_name
AND aa.scale = bb.scale
b.busbar_id
) bb ON aa.org_no = bb.org_no AND aa.busbarId = bb.busbarId
</select>
</mapper>

View File

@@ -17,85 +17,76 @@
</resultMap>
<select id="getQstatOrgBusbarVoltageVO" resultType="com.njcn.harmonic.pojo.vo.RStatOrgBusbarVoltageVO">
SELECT aa.org_no,
aa.station_name powerStationName,
aa.scale busbarVoltageLevel,
ifnull(aa.average,0) average,
ifnull(aa.accrued,0) accrued,
ifnull(aa.unbalanceAverage,0) unbalanceAverage,
ifnull(aa.unbalanceAccrued,0) unbalanceAccrued,
ifnull(aa.flickerAverage,0) flickerAverage,
ifnull(aa.flickerAccrued,0) flickerAccrued,
ifnull(bb.averageSame,0) averageSame,
ifnull(bb.accruedSame,0) accruedSame,
ifnull(bb.unbalanceAverageSame,0) unbalanceAverageSame,
ifnull(bb.unbalanceAccruedSame,0) unbalanceAccruedSame,
ifnull(bb.flickerAverageSame,0) flickerAverageSame,
ifnull(bb.flickerAccruedSame,0) flickerAccruedSame
FROM
(
SELECT b.org_no org_no,
a.Station_Name station_name,
a.scale scale,
avg(b.v_average) AS average,
sum(b.v_accrued) AS accrued,
avg(b.unbalance_average) unbalanceAverage,
sum(b.unbalance_accrued) unbalanceAccrued,
avg(b.flicker_average) flickerAverage,
sum(b.flicker_average) flickerAccrued
FROM r_stat_org_busbar_voltage_q b,
pms_generatrix_wire a
WHERE
a.id = b.busbar_id
<if test="param != null and param.ids != null and param.ids.size > 0">
AND b.org_no IN
<foreach collection='param.ids' item='item' index="index" open='(' separator=',' close=')'>
#{item}
</foreach>
</if>
<if test="param != null and param.startTime != null and param.startTime != ''">
AND b.data_date >= #{param.startTime}
</if>
<if test="param != null and param.endTime != null and param.endTime != ''">
AND b.data_date &lt;= #{param.endTime}
</if>
aa.busbarId ,
ifnull(aa.average,0) average,
ifnull(aa.accrued,0) accrued,
ifnull(aa.unbalanceAverage,0) unbalanceAverage,
ifnull(aa.unbalanceAccrued,0) unbalanceAccrued,
ifnull(aa.flickerAverage,0) flickerAverage,
ifnull(aa.flickerAccrued,0) flickerAccrued,
ifnull(bb.averageSame,0) averageSame,
ifnull(bb.accruedSame,0) accruedSame,
ifnull(bb.unbalanceAverageSame,0) unbalanceAverageSame,
ifnull(bb.unbalanceAccruedSame,0) unbalanceAccruedSame,
ifnull(bb.flickerAverageSame,0) flickerAverageSame,
ifnull(bb.flickerAccruedSame,0) flickerAccruedSame
FROM
(
SELECT b.org_no org_no,
b.busbar_id busbarId,
avg(b.v_average) AS average,
sum(b.v_accrued) AS accrued,
avg(b.unbalance_average) unbalanceAverage,
sum(b.unbalance_accrued) unbalanceAccrued,
avg(b.flicker_average) flickerAverage,
sum(b.flicker_average) flickerAccrued
FROM r_stat_org_busbar_voltage_q b
<where>
<if test="param != null and param.ids != null and param.ids.size > 0">
AND b.org_no IN
<foreach collection='param.ids' item='item' index="index" open='(' separator=',' close=')'>
#{item}
</foreach>
</if>
<if test="param != null and param.startTime != null and param.startTime != ''">
AND b.data_date >= #{param.startTime}
</if>
<if test="param != null and param.endTime != null and param.endTime != ''">
AND b.data_date &lt;= #{param.endTime}
</if>
</where>
GROUP BY org_no,
station_name,
scale
) aa
LEFT JOIN (
SELECT b.org_no org_no,
a.Station_Name station_name,
a.scale scale,
avg(b.v_average) AS averageSame,
sum(b.v_accrued) AS accruedSame,
avg(b.unbalance_average) unbalanceAverageSame,
sum(b.unbalance_accrued) unbalanceAccruedSame,
avg(b.flicker_average) flickerAverageSame,
sum(b.flicker_average) flickerAccruedSame
FROM r_stat_org_busbar_voltage_q b,
pms_generatrix_wire a
WHERE
a.id = b.busbar_id
<if test="param != null and param.ids != null and param.ids.size > 0">
AND b.org_no IN
<foreach collection='param.ids' item='item' index="index" open='(' separator=',' close=')'>
#{item}
</foreach>
</if>
<if test="param != null and param.startTime != null and param.startTime != ''">
AND (b.data_date >= date(
DATE_ADD(#{param.startTime}, INTERVAL - 1 YEAR)))
</if>
<if test="param != null and param.endTime != null and param.endTime != ''">
AND (b.data_date &lt;= date(
DATE_ADD(#{param.endTime}, INTERVAL - 1 YEAR)))
</if>
busbar_id
) aa
LEFT JOIN (
SELECT b.org_no org_no,
b.busbar_id busbarId,
avg(b.v_average) AS averageSame,
sum(b.v_accrued) AS accruedSame,
avg(b.unbalance_average) unbalanceAverageSame,
sum(b.unbalance_accrued) unbalanceAccruedSame,
avg(b.flicker_average) flickerAverageSame,
sum(b.flicker_average) flickerAccruedSame
FROM r_stat_org_busbar_voltage_q b
<where>
<if test="param != null and param.ids != null and param.ids.size > 0">
AND b.org_no IN
<foreach collection='param.ids' item='item' index="index" open='(' separator=',' close=')'>
#{item}
</foreach>
</if>
<if test="param != null and param.startTime != null and param.startTime != ''">
AND (b.data_date >= date(
DATE_ADD(#{param.startTime}, INTERVAL - 1 YEAR)))
</if>
<if test="param != null and param.endTime != null and param.endTime != ''">
AND (b.data_date &lt;= date(
DATE_ADD(#{param.endTime}, INTERVAL - 1 YEAR)))
</if>
</where>
GROUP BY b.org_no,
a.Station_Name,
a.scale
) bb ON aa.org_no = bb.org_no
AND aa.station_name = bb.station_name
AND aa.scale = bb.scale
b.busbar_id
) bb ON aa.org_no = bb.org_no AND aa.busbarId = bb.busbarId
</select>

View File

@@ -16,84 +16,75 @@
</resultMap>
<select id="getYstatOrgBusbarVoltageVO" resultType="com.njcn.harmonic.pojo.vo.RStatOrgBusbarVoltageVO">
SELECT aa.org_no,
aa.station_name powerStationName,
aa.scale busbarVoltageLevel,
ifnull(aa.average,0) average,
ifnull(aa.accrued,0) accrued,
ifnull(aa.unbalanceAverage,0) unbalanceAverage,
ifnull(aa.unbalanceAccrued,0) unbalanceAccrued,
ifnull(aa.flickerAverage,0) flickerAverage,
ifnull(aa.flickerAccrued,0) flickerAccrued,
ifnull(bb.averageSame,0) averageSame,
ifnull(bb.accruedSame,0) accruedSame,
ifnull(bb.unbalanceAverageSame,0) unbalanceAverageSame,
ifnull(bb.unbalanceAccruedSame,0) unbalanceAccruedSame,
ifnull(bb.flickerAverageSame,0) flickerAverageSame,
ifnull(bb.flickerAccruedSame,0) flickerAccruedSame
aa.busbarId ,
ifnull(aa.average,0) average,
ifnull(aa.accrued,0) accrued,
ifnull(aa.unbalanceAverage,0) unbalanceAverage,
ifnull(aa.unbalanceAccrued,0) unbalanceAccrued,
ifnull(aa.flickerAverage,0) flickerAverage,
ifnull(aa.flickerAccrued,0) flickerAccrued,
ifnull(bb.averageSame,0) averageSame,
ifnull(bb.accruedSame,0) accruedSame,
ifnull(bb.unbalanceAverageSame,0) unbalanceAverageSame,
ifnull(bb.unbalanceAccruedSame,0) unbalanceAccruedSame,
ifnull(bb.flickerAverageSame,0) flickerAverageSame,
ifnull(bb.flickerAccruedSame,0) flickerAccruedSame
FROM
(
SELECT b.org_no org_no,
a.Station_Name station_name,
a.scale scale,
avg(b.v_average) AS average,
sum(b.v_accrued) AS accrued,
avg(b.unbalance_average) unbalanceAverage,
sum(b.unbalance_accrued) unbalanceAccrued,
avg(b.flicker_average) flickerAverage,
sum(b.flicker_average) flickerAccrued
FROM r_stat_org_busbar_voltage_y b,
pms_generatrix_wire a
WHERE
a.id = b.busbar_id
<if test="param != null and param.ids != null and param.ids.size > 0">
AND b.org_no IN
<foreach collection='param.ids' item='item' index="index" open='(' separator=',' close=')'>
#{item}
</foreach>
</if>
<if test="param != null and param.startTime != null and param.startTime != ''">
AND b.data_date >= #{param.startTime}
</if>
<if test="param != null and param.endTime != null and param.endTime != ''">
AND b.data_date &lt;= #{param.endTime}
</if>
b.busbar_id busbarId,
avg(b.v_average) AS average,
sum(b.v_accrued) AS accrued,
avg(b.unbalance_average) unbalanceAverage,
sum(b.unbalance_accrued) unbalanceAccrued,
avg(b.flicker_average) flickerAverage,
sum(b.flicker_average) flickerAccrued
FROM r_stat_org_busbar_voltage_y b
<where>
<if test="param != null and param.ids != null and param.ids.size > 0">
AND b.org_no IN
<foreach collection='param.ids' item='item' index="index" open='(' separator=',' close=')'>
#{item}
</foreach>
</if>
<if test="param != null and param.startTime != null and param.startTime != ''">
AND b.data_date >= #{param.startTime}
</if>
<if test="param != null and param.endTime != null and param.endTime != ''">
AND b.data_date &lt;= #{param.endTime}
</if>
</where>
GROUP BY org_no,
station_name,
scale
) aa
LEFT JOIN (
SELECT b.org_no org_no,
a.Station_Name station_name,
a.scale scale,
avg(b.v_average) AS averageSame,
sum(b.v_accrued) AS accruedSame,
avg(b.unbalance_average) unbalanceAverageSame,
sum(b.unbalance_accrued) unbalanceAccruedSame,
avg(b.flicker_average) flickerAverageSame,
sum(b.flicker_average) flickerAccruedSame
FROM r_stat_org_busbar_voltage_y b,
pms_generatrix_wire a
WHERE
a.id = b.busbar_id
<if test="param != null and param.ids != null and param.ids.size > 0">
AND b.org_no IN
<foreach collection='param.ids' item='item' index="index" open='(' separator=',' close=')'>
#{item}
</foreach>
</if>
<if test="param != null and param.startTime != null and param.startTime != ''">
AND (b.data_date >= date(
DATE_ADD(#{param.startTime}, INTERVAL - 1 YEAR)))
</if>
<if test="param != null and param.endTime != null and param.endTime != ''">
AND (b.data_date &lt;= date(
DATE_ADD(#{param.endTime}, INTERVAL - 1 YEAR)))
</if>
busbar_id
) aa
LEFT JOIN (
SELECT b.org_no org_no,
b.busbar_id busbarId,
avg(b.v_average) AS averageSame,
sum(b.v_accrued) AS accruedSame,
avg(b.unbalance_average) unbalanceAverageSame,
sum(b.unbalance_accrued) unbalanceAccruedSame,
avg(b.flicker_average) flickerAverageSame,
sum(b.flicker_average) flickerAccruedSame
FROM r_stat_org_busbar_voltage_y b
<where>
<if test="param != null and param.ids != null and param.ids.size > 0">
AND b.org_no IN
<foreach collection='param.ids' item='item' index="index" open='(' separator=',' close=')'>
#{item}
</foreach>
</if>
<if test="param != null and param.startTime != null and param.startTime != ''">
AND (b.data_date >= date(
DATE_ADD(#{param.startTime}, INTERVAL - 1 YEAR)))
</if>
<if test="param != null and param.endTime != null and param.endTime != ''">
AND (b.data_date &lt;= date(
DATE_ADD(#{param.endTime}, INTERVAL - 1 YEAR)))
</if>
</where>
GROUP BY b.org_no,
a.Station_Name,
a.scale
) bb ON aa.org_no = bb.org_no
AND aa.station_name = bb.station_name
AND aa.scale = bb.scale
b.busbar_id
) bb ON aa.org_no = bb.org_no AND aa.busbarId = bb.busbarId
</select>
</mapper>

View File

@@ -1,10 +1,13 @@
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 com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.common.pojo.constant.BizParamConstant;
import com.njcn.device.pms.api.PmsGeneratrixClient;
import com.njcn.device.pms.pojo.dto.GeneratrixAndPowerStationDTO;
import com.njcn.device.pms.pojo.param.PmsGeneratrixParam;
import com.njcn.harmonic.mapper.majornetwork.RStatOrgBusbarVoltageMMapper;
import com.njcn.harmonic.mapper.majornetwork.RStatOrgBusbarVoltageQMapper;
import com.njcn.harmonic.mapper.majornetwork.RStatOrgBusbarVoltageYMapper;
@@ -14,10 +17,12 @@ import com.njcn.harmonic.pojo.vo.RStatOrgBusbarVoltageVO;
import com.njcn.harmonic.service.majornetwork.RStatOrgBusbarVoltageService;
import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.pojo.dto.DeptDTO;
import com.njcn.web.utils.WebUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
@@ -44,8 +49,7 @@ public class RStatOrgBusbarVoltageServiceImpl extends ServiceImpl<RStatOrgBusbar
@Override
public List<RStatOrgBusbarVoltageVO> getRStatOrgBusbarVoltage(StatSubstationBizBaseParam param) {
//获取部门信息
List<DeptDTO> data = deptFeignClient.getDepSonDetailByDeptId(param.getId()).getData();
List<DeptDTO> data = deptFeignClient.getDeptDescendantIndexes(param.getId(), WebUtil.filterDeptType()).getData();
Map<String, DeptDTO> deptMap = data.stream().collect(Collectors.toMap(DeptDTO::getCode, Function.identity()));
//获取部门id集合
@@ -73,12 +77,35 @@ public class RStatOrgBusbarVoltageServiceImpl extends ServiceImpl<RStatOrgBusbar
break;
}
}
temp= temp.stream ().map (rStatOrgBusbarVoltageVO -> {
DeptDTO deptDTO = deptMap.get (rStatOrgBusbarVoltageVO.getOrgNo ( ));
rStatOrgBusbarVoltageVO.setOrgName (deptDTO.getName ());
return rStatOrgBusbarVoltageVO;
}).collect(Collectors.toList());
return temp;
if (CollectionUtil.isNotEmpty(temp)) {
//获取母线集合
List<String> busbarIds = temp.stream().map(RStatOrgBusbarVoltageVO::getBusbarId).collect(Collectors.toList());
PmsGeneratrixParam generatrixParam=new PmsGeneratrixParam();
generatrixParam.setGeneratrixIds(busbarIds);
generatrixParam.setGeneratrixVoltageLevel(param.getIds());
List<GeneratrixAndPowerStationDTO> generatrixDTO = pmsGeneratrixClient.getGeneratrixAndPowerStationInfo(generatrixParam).getData();
//根据母线信息
Map<String, GeneratrixAndPowerStationDTO> generatrixMap = generatrixDTO.stream().collect(
Collectors.toMap(GeneratrixAndPowerStationDTO::getGeneratrixId, Function.identity()));
Map<String, RStatOrgBusbarVoltageVO> orgMap = temp.stream().collect(Collectors.toMap(x-> x.getOrgNo()+"_"+x.getBusbarId(), Function.identity()));
orgMap.forEach((key, value) -> {
String[] split = key.split("_");
if (deptMap.containsKey(split[0])) {
DeptDTO deptDTO = deptMap.get(split[0]);
value.setOrgName(deptDTO.getName());
if(generatrixMap.containsKey(split[1])){
GeneratrixAndPowerStationDTO dto = generatrixMap.get(split[1]);
value.setBusbarVoltageLevel(dto.getGeneratrixVoltageLevel());
value.setPowerStationName(dto.getPowerName());
info.add(value);
}
}
});
}
if(CollUtil.isNotEmpty(info)){
info.sort(Comparator.comparing(RStatOrgBusbarVoltageVO::getOrgNo));
}
return info;
}
}