河北pms接口慢问题解决

This commit is contained in:
2023-09-14 09:00:02 +08:00
parent 28de2aa63d
commit 84e3825bbc
46 changed files with 686 additions and 248 deletions

View File

@@ -1,6 +1,7 @@
package com.njcn.harmonic.controller.distribution;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.common.pojo.annotation.OperateInfo;
import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
@@ -77,9 +78,9 @@ public class PwRStatOrgController extends BaseController {
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@ApiOperation("稳态指标超标明细表")
@ApiImplicitParam(name = "param", value = "超标明细参数", required = true)
public HttpResult<List<RMpPartHarmonicDetailVO.PwRMpPartHarmonicDetailDVO>> getPwRMpPartHarmonicDetail(@RequestBody RStatOrgParam.PwRStatOrgParam param) {
public HttpResult<Page<RMpPartHarmonicDetailVO.PwRMpPartHarmonicDetailDVO>> getPwRMpPartHarmonicDetail(@RequestBody RStatOrgParam.PwRStatOrgParam param) {
String methodDescribe = getMethodDescribe("getPwRMpPartHarmonicDetail");
List<RMpPartHarmonicDetailVO.PwRMpPartHarmonicDetailDVO> rMpPartHarmonicDetail = pwRStatOrgService.getRMpPartHarmonicDetail(param);
Page<RMpPartHarmonicDetailVO.PwRMpPartHarmonicDetailDVO> rMpPartHarmonicDetail = pwRStatOrgService.getRMpPartHarmonicDetail(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, rMpPartHarmonicDetail, methodDescribe);
}
@@ -123,11 +124,11 @@ public class PwRStatOrgController extends BaseController {
*/
@PostMapping("/getPwRMpPassRateInfo")
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@ApiOperation("稳态指标合格率明细表")
@ApiOperation("配网稳态指标合格率明细表")
@ApiImplicitParam(name = "param", value = "超标合格率明细参数", required = true)
public HttpResult<List<PwRStatOrgVO.PwRStatOrgDetailVO>> getPwRMpPassRateInfo(@RequestBody RStatOrgParam.PwRStatOrgParam param) {
public HttpResult<Page<PwRStatOrgVO.PwRStatOrgDetailVO>> getPwRMpPassRateInfo(@RequestBody RStatOrgParam.PwRStatOrgParam param) {
String methodDescribe = getMethodDescribe("getPwRMpPassRateInfo");
List<PwRStatOrgVO.PwRStatOrgDetailVO> rStatOrg = pwRStatOrgService.getRMpPassRateInfo(param);
Page<PwRStatOrgVO.PwRStatOrgDetailVO> rStatOrg = pwRStatOrgService.getRMpPassRateInfo(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, rStatOrg, methodDescribe);
}

View File

@@ -1,5 +1,6 @@
package com.njcn.harmonic.mapper.majornetwork;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.harmonic.pojo.param.StatSubstationBizBaseParam;
import com.njcn.harmonic.pojo.po.RMpPassRateM;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -24,4 +25,6 @@ public interface RMpPassRateMMapper extends BaseMapper<RMpPassRateM> {
* @return
*/
List<RStatOrgIndexVO> getMonthPassRate(@Param("param") StatSubstationBizBaseParam baseParam);
Page<RStatOrgIndexVO> getPwMonthPassRate(@Param("page") Page<RStatOrgIndexVO> page, @Param("param") StatSubstationBizBaseParam baseParam);
}

View File

@@ -1,5 +1,6 @@
package com.njcn.harmonic.mapper.majornetwork;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.harmonic.pojo.param.StatSubstationBizBaseParam;
import com.njcn.harmonic.pojo.po.RMpPassRateQ;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -24,4 +25,6 @@ public interface RMpPassRateQMapper extends BaseMapper<RMpPassRateQ> {
* @return
*/
List<RStatOrgIndexVO> getQuarterPassRate(@Param("param") StatSubstationBizBaseParam baseParam);
Page<RStatOrgIndexVO> getPwQuarterPassRate(@Param("page")Page<RStatOrgIndexVO> page,@Param("param") StatSubstationBizBaseParam baseParam);
}

View File

@@ -1,5 +1,6 @@
package com.njcn.harmonic.mapper.majornetwork;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.harmonic.pojo.param.StatSubstationBizBaseParam;
import com.njcn.harmonic.pojo.po.RMpPassRateY;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -24,4 +25,6 @@ public interface RMpPassRateYMapper extends BaseMapper<RMpPassRateY> {
* @return
*/
List<RStatOrgIndexVO> getYearPassRate(@Param("param") StatSubstationBizBaseParam baseParam);
Page<RStatOrgIndexVO> getPageYearPassRate(Page<RStatOrgIndexVO> page, @Param("param") StatSubstationBizBaseParam baseParam);
}

View File

@@ -1,5 +1,6 @@
package com.njcn.harmonic.mapper.majornetwork;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.harmonic.pojo.param.StatSubstationBizBaseParam;
import com.njcn.harmonic.pojo.po.RMpSurplusHarmonicDetailM;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -24,4 +25,8 @@ public interface RMpSurplusHarmonicDetailMMapper extends BaseMapper<RMpSurplusHa
* @return
*/
List<RMpPartHarmonicDetailVO> getRMpPartHarmonicDetail(@Param("param") StatSubstationBizBaseParam param);
Page<RMpPartHarmonicDetailVO> getPwRMpPartHarmonicDetail(Page<RMpPartHarmonicDetailVO> page,@Param("param") StatSubstationBizBaseParam param);
}

View File

@@ -35,4 +35,28 @@
</where>
</select>
<select id="getPwMonthPassRate" resultType="com.njcn.harmonic.pojo.vo.RStatOrgIndexVO">
SELECT
measurement_point_id,
data_date,
freq_pass_rate,
v_dev_pass_rate,
flicker_pass_rate
FROM
r_mp_pass_rate_m
<where>
<if test="param != null and param.ids != null and param.ids.size > 0">
AND measurement_point_id 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 data_date >= #{param.startTime}
</if>
<if test="param!=null and param.endTime != null and param.endTime != ''">
AND data_date &lt;= #{param.endTime}
</if>
</where>
</select>
</mapper>

View File

@@ -35,4 +35,30 @@
</where>
</select>
<select id="getPwQuarterPassRate" resultType="com.njcn.harmonic.pojo.vo.RStatOrgIndexVO">
SELECT
measurement_point_id,
data_date,
freq_pass_rate,
v_dev_pass_rate,
flicker_pass_rate
FROM
r_mp_pass_rate_q
<where>
<if test="param != null and param.ids != null and param.ids.size > 0">
AND measurement_point_id 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 data_date >= #{param.startTime}
</if>
<if test="param!=null and param.endTime != null and param.endTime != ''">
AND data_date &lt;= #{param.endTime}
</if>
</where>
</select>
</mapper>

View File

@@ -35,4 +35,30 @@
</where>
</select>
<select id="getPageYearPassRate" resultType="com.njcn.harmonic.pojo.vo.RStatOrgIndexVO">
SELECT
measurement_point_id,
data_date,
freq_pass_rate,
v_dev_pass_rate,
flicker_pass_rate
FROM
r_mp_pass_rate_y
<where>
<if test="param != null and param.ids != null and param.ids.size > 0">
AND measurement_point_id 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 data_date >= #{param.startTime}
</if>
<if test="param!=null and param.endTime != null and param.endTime != ''">
AND data_date &lt;= #{param.endTime}
</if>
</where>
</select>
</mapper>

View File

@@ -167,4 +167,114 @@
</where>
</select>
<select id="getPwRMpPartHarmonicDetail" resultType="com.njcn.harmonic.pojo.vo.RMpPartHarmonicDetailVO">
select
rms.measurement_point_id,
rmphdm.data_date,
rms.inuharm_over_day,
rms.inuharm_1_over_day,
rms.inuharm_2_over_day,
rms.inuharm_3_over_day,
rms.inuharm_4_over_day,
rms.inuharm_5_over_day,
rms.inuharm_6_over_day,
rms.inuharm_7_over_day,
rms.inuharm_8_over_day,
rms.inuharm_9_over_day,
rms.inuharm_10_over_day,
rms.inuharm_11_over_day,
rms.inuharm_12_over_day,
rms.inuharm_13_over_day,
rms.inuharm_14_over_day,
rms.inuharm_15_over_day,
rms.inuharm_16_over_day,
rms.inuharm_17_over_day,
rms.inuharm_18_over_day,
rms.inuharm_19_over_day,
rms.inuharm_20_over_day,
rms.inuharm_21_over_day,
rms.inuharm_22_over_day,
rms.inuharm_23_over_day,
rms.inuharm_24_over_day,
rms.flicker_over_day,
rmphdm.measurement_point_id,
rmphdm.measurement_over_day,
rmphdm.freq_over_day,
rmphdm.v_dev_up_over_day,
rmphdm.v_dev_low_over_day,
rmphdm.v_dev_over_day,
rmphdm.v_thd_over_day,
rmphdm.v_over_day,
rmphdm.i_over_day,
rmphdm.v_2_over_day,
rmphdm.v_3_over_day,
rmphdm.v_4_over_day,
rmphdm.v_5_over_day,
rmphdm.v_6_over_day,
rmphdm.v_7_over_day,
rmphdm.v_8_over_day,
rmphdm.v_9_over_day,
rmphdm.v_10_over_day,
rmphdm.v_11_over_day,
rmphdm.v_12_over_day,
rmphdm.v_13_over_day,
rmphdm.v_14_over_day,
rmphdm.v_15_over_day,
rmphdm.v_16_over_day,
rmphdm.v_17_over_day,
rmphdm.v_18_over_day,
rmphdm.v_19_over_day,
rmphdm.v_20_over_day,
rmphdm.v_21_over_day,
rmphdm.v_22_over_day,
rmphdm.v_23_over_day,
rmphdm.v_24_over_day,
rmphdm.v_25_over_day,
rmphdm.i_2_over_day,
rmphdm.i_3_over_day,
rmphdm.i_4_over_day,
rmphdm.i_5_over_day,
rmphdm.i_6_over_day,
rmphdm.i_7_over_day,
rmphdm.i_8_over_day,
rmphdm.i_9_over_day,
rmphdm.i_10_over_day,
rmphdm.i_11_over_day,
rmphdm.i_12_over_day,
rmphdm.i_13_over_day,
rmphdm.i_14_over_day,
rmphdm.i_15_over_day,
rmphdm.i_16_over_day,
rmphdm.i_17_over_day,
rmphdm.i_18_over_day,
rmphdm.i_19_over_day,
rmphdm.i_20_over_day,
rmphdm.i_21_over_day,
rmphdm.i_22_over_day,
rmphdm.i_23_over_day,
rmphdm.i_24_over_day,
rmphdm.i_25_over_day,
rmphdm.unbalance_over_day,
rmphdm.i_neg_over_day
from r_mp_surplus_harmonic_detail_m rms
right join r_mp_part_harmonic_detail_m rmphdm on rms.measurement_point_id = rmphdm.measurement_point_id
and rms.data_date=rmphdm.data_date
<where>
<if test="param != null and param.ids != null and param.ids.size > 0">
AND rmphdm.measurement_point_id 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 rmphdm.data_date >= #{param.startTime} AND rms.data_date >= #{param.startTime}
</if>
<if test="param!=null and param.endTime != null and param.endTime != ''">
AND rmphdm.data_date &lt;= #{param.endTime} AND rms.data_date &lt;= #{param.endTime}
</if>
</where>
</select>
</mapper>

View File

@@ -1,5 +1,6 @@
package com.njcn.harmonic.service.distribution;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.harmonic.pojo.param.RStatOrgParam;
import com.njcn.harmonic.pojo.param.StatSubstationBizBaseParam;
@@ -40,7 +41,7 @@ public interface PwRStatOrgService extends IService<RStatOrgQ> {
* @param param
* @return
*/
List<PwRStatOrgVO.PwRStatOrgDetailVO> getRMpPassRateInfo(RStatOrgParam.PwRStatOrgParam param);
Page<PwRStatOrgVO.PwRStatOrgDetailVO> getRMpPassRateInfo(RStatOrgParam.PwRStatOrgParam param);
/**
* 配网区域稳态指标超标分类统计表
@@ -56,7 +57,7 @@ public interface PwRStatOrgService extends IService<RStatOrgQ> {
* @param param
* @return
*/
List<RMpPartHarmonicDetailVO.PwRMpPartHarmonicDetailDVO> getRMpPartHarmonicDetail(RStatOrgParam.PwRStatOrgParam param);
Page<RMpPartHarmonicDetailVO.PwRMpPartHarmonicDetailDVO> getRMpPartHarmonicDetail(RStatOrgParam.PwRStatOrgParam param);
/**
* 变电站稳态指标超标分类统计表

View File

@@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.device.pms.api.DistributionMonitorClient;
import com.njcn.device.pms.api.PmsGeneralDeviceInfoClient;
import com.njcn.device.pms.api.PwMonitorClient;
import com.njcn.device.pms.pojo.dto.PwPmsMonitorDTO;
import com.njcn.device.pms.pojo.param.PwPmsMonitorParam;
@@ -37,6 +39,10 @@ public class PwRMpBenchmarkLevelMServiceImpl extends ServiceImpl<PwRMpBenchmarkL
private final PwMonitorClient pwMonitorClient;
private final PmsGeneralDeviceInfoClient pmsGeneralDeviceInfoClient;
private final DistributionMonitorClient distributionMonitorClient;
/***
* 配网-全网基准水平
@@ -47,6 +53,8 @@ public class PwRMpBenchmarkLevelMServiceImpl extends ServiceImpl<PwRMpBenchmarkL
*/
@Override
public Page<PwRMpBenchmarkLevelVO> getPwRMpBenchmarkLevelList(RMpBenchmarkLevelParam rMpBenchmarkLevelParam) {
Page<PwRMpBenchmarkLevelVO> pageResult = new Page<>(rMpBenchmarkLevelParam.getPageNum(),rMpBenchmarkLevelParam.getPageSize());
//提取查询条件
String id = rMpBenchmarkLevelParam.getId(); //单位id
if (StringUtils.isBlank(id)) {
@@ -62,25 +70,33 @@ public class PwRMpBenchmarkLevelMServiceImpl extends ServiceImpl<PwRMpBenchmarkL
PwPmsMonitorParam pwPmsMonitorParam = new PwPmsMonitorParam();
pwPmsMonitorParam.setOrgId(id); //单位id
pwPmsMonitorParam.setVoltageLevels(voltageLevelParamList); //电压等级
List<PwPmsMonitorDTO> pwMonitorList = pwMonitorClient.getPwMonitorList(pwPmsMonitorParam).getData();
if (CollUtil.isEmpty(pwMonitorList)) {
List<String> monitorIds = pmsGeneralDeviceInfoClient.getPwPmsMonitorIds(pwPmsMonitorParam).getData();
if (CollUtil.isEmpty(monitorIds)) {
return new Page<>();
}
//监测点id集合
List<String> monitorIdList = pwMonitorList.stream().map(PwPmsMonitorDTO::getMonitorId).collect(Collectors.toList());
//监测点map key:监测点id value:监测点实体
Map<String, PwPmsMonitorDTO> monitorMap = pwMonitorList.stream().collect(Collectors.toMap(PwPmsMonitorDTO::getMonitorId, Function.identity(), (key1, key2) -> key1));
//查询【基准水平-月】数据
/*组装条件where measurement_point_id in (monitorIdList) and data_date >= startTime
and data_date <= endTime and voltage_level
*/
LambdaQueryWrapper<RMpBenchmarkLevelM> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.in(CollUtil.isNotEmpty(monitorIdList), RMpBenchmarkLevelM::getMeasurementPointId, monitorIdList)
lambdaQueryWrapper.in(RMpBenchmarkLevelM::getMeasurementPointId, monitorIds)
.ge(StringUtils.isNotBlank(startTime), RMpBenchmarkLevelM::getDataDate, startTime)
.le(StringUtils.isNotBlank(endTime), RMpBenchmarkLevelM::getDataDate, endTime);
Page<RMpBenchmarkLevelM> listPage = this.page(new Page<>(pageNum, pageSize), lambdaQueryWrapper);
List<PwRMpBenchmarkLevelVO> resultList = listPage.getRecords().stream().map(item -> {
List<RMpBenchmarkLevelM> temList = listPage.getRecords();
if(CollUtil.isEmpty(temList)){
pageResult.setTotal(listPage.getTotal());
return pageResult;
}
//监测点id集合
List<String> monitorIdList = temList.stream().map(RMpBenchmarkLevelM::getMeasurementPointId).distinct().collect(Collectors.toList());
List<PwPmsMonitorDTO> pwMonitorList = distributionMonitorClient.pwMonitorAreaDetailInfo(monitorIdList).getData();
//监测点map key:监测点id value:监测点实体
Map<String, PwPmsMonitorDTO> monitorMap = pwMonitorList.stream().collect(Collectors.toMap(PwPmsMonitorDTO::getMonitorId, Function.identity(), (key1, key2) -> key1));
List<PwRMpBenchmarkLevelVO> resultList = temList.stream().map(item -> {
//封装前端需要的对象
PwRMpBenchmarkLevelVO rMpBenchmarkLevelVO = new PwRMpBenchmarkLevelVO();
BeanUtils.copyProperties(item, rMpBenchmarkLevelVO);

View File

@@ -6,14 +6,19 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.device.pms.api.DistributionMonitorClient;
import com.njcn.device.pms.api.PmsGeneralDeviceInfoClient;
import com.njcn.device.pms.api.PwMonitorClient;
import com.njcn.device.pms.pojo.dto.PwPmsMonitorDTO;
import com.njcn.device.pms.pojo.param.PwPmsMonitorParam;
import com.njcn.device.pms.pojo.vo.PwRMpMonitorAlarmCountMVO;
import com.njcn.harmonic.mapper.distribution.PwRMpBenchmarkLevelQMapper;
import com.njcn.harmonic.pojo.param.RMpBenchmarkLevelParam;
import com.njcn.harmonic.pojo.po.RMpBenchmarkLevelM;
import com.njcn.harmonic.pojo.po.RMpBenchmarkLevelQ;
import com.njcn.harmonic.pojo.vo.PwRMpBenchmarkLevelVO;
import com.njcn.harmonic.service.distribution.PwRMpBenchmarkLevelQService;
import com.njcn.web.factory.PageFactory;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
@@ -37,6 +42,11 @@ implements PwRMpBenchmarkLevelQService {
private final PwMonitorClient pwMonitorClient;
private final PmsGeneralDeviceInfoClient pmsGeneralDeviceInfoClient;
private final DistributionMonitorClient distributionMonitorClient;
/***
* 配网-全网基准水平
* @author jianghaifei
@@ -46,6 +56,8 @@ implements PwRMpBenchmarkLevelQService {
*/
@Override
public Page<PwRMpBenchmarkLevelVO> getPwRMpBenchmarkLevelList(RMpBenchmarkLevelParam rMpBenchmarkLevelParam) {
Page<PwRMpBenchmarkLevelVO> pageResult = new Page<>(rMpBenchmarkLevelParam.getPageNum(),rMpBenchmarkLevelParam.getPageSize());
//提取查询条件
String id = rMpBenchmarkLevelParam.getId(); //单位id
if (StringUtils.isBlank(id)) {
@@ -61,24 +73,30 @@ implements PwRMpBenchmarkLevelQService {
PwPmsMonitorParam pwPmsMonitorParam = new PwPmsMonitorParam();
pwPmsMonitorParam.setOrgId(id); //单位id
pwPmsMonitorParam.setVoltageLevels(voltageLevelParamList); //电压等级
List<PwPmsMonitorDTO> pwMonitorList = pwMonitorClient.getPwMonitorList(pwPmsMonitorParam).getData();
if (CollUtil.isEmpty(pwMonitorList)) {
List<String> monitorIds = pmsGeneralDeviceInfoClient.getPwPmsMonitorIds(pwPmsMonitorParam).getData();
if (CollUtil.isEmpty(monitorIds)) {
return new Page<>();
}
//监测点id集合
List<String> monitorIdList = pwMonitorList.stream().map(PwPmsMonitorDTO::getMonitorId).collect(Collectors.toList());
//监测点map key:监测点id value:监测点实体
Map<String, PwPmsMonitorDTO> monitorMap = pwMonitorList.stream().collect(Collectors.toMap(PwPmsMonitorDTO::getMonitorId, Function.identity(), (key1, key2)->key1));
//查询【基准水平-季】数据
/*组装条件where measurement_point_id in (monitorIdList) and data_date >= startTime
and data_date <= endTime and voltage_level
*/
LambdaQueryWrapper<RMpBenchmarkLevelQ> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.in(CollUtil.isNotEmpty(monitorIdList), RMpBenchmarkLevelQ::getMeasurementPointId, monitorIdList)
lambdaQueryWrapper.in(RMpBenchmarkLevelQ::getMeasurementPointId, monitorIds)
.ge(StringUtils.isNotBlank(startTime), RMpBenchmarkLevelQ::getDataDate, startTime)
.le(StringUtils.isNotBlank(endTime), RMpBenchmarkLevelQ::getDataDate, endTime);
Page<RMpBenchmarkLevelQ> listPage = this.page(new Page<>(pageNum, pageSize), lambdaQueryWrapper);
List<RMpBenchmarkLevelQ> temList = listPage.getRecords();
if(CollUtil.isEmpty(temList)){
pageResult.setTotal(listPage.getTotal());
return pageResult;
}
//监测点id集合
List<String> monitorIdList = temList.stream().map(RMpBenchmarkLevelQ::getMeasurementPointId).distinct().collect(Collectors.toList());
List<PwPmsMonitorDTO> pwMonitorList = distributionMonitorClient.pwMonitorAreaDetailInfo(monitorIdList).getData();
//监测点map key:监测点id value:监测点实体
Map<String, PwPmsMonitorDTO> monitorMap = pwMonitorList.stream().collect(Collectors.toMap(PwPmsMonitorDTO::getMonitorId, Function.identity(), (key1, key2)->key1));
List<PwRMpBenchmarkLevelVO> resultList = listPage.getRecords().stream().map(item -> {
//封装前端需要的对象
PwRMpBenchmarkLevelVO rMpBenchmarkLevelVO = new PwRMpBenchmarkLevelVO();

View File

@@ -6,11 +6,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.device.pms.api.DistributionMonitorClient;
import com.njcn.device.pms.api.PmsGeneralDeviceInfoClient;
import com.njcn.device.pms.api.PwMonitorClient;
import com.njcn.device.pms.pojo.dto.PwPmsMonitorDTO;
import com.njcn.device.pms.pojo.param.PwPmsMonitorParam;
import com.njcn.harmonic.mapper.distribution.PwRMpBenchmarkLevelYMapper;
import com.njcn.harmonic.pojo.param.RMpBenchmarkLevelParam;
import com.njcn.harmonic.pojo.po.RMpBenchmarkLevelM;
import com.njcn.harmonic.pojo.po.RMpBenchmarkLevelY;
import com.njcn.harmonic.pojo.vo.PwRMpBenchmarkLevelVO;
import com.njcn.harmonic.service.distribution.PwRMpBenchmarkLevelYService;
@@ -38,6 +41,11 @@ implements PwRMpBenchmarkLevelYService {
private final PwMonitorClient pwMonitorClient;
private final PmsGeneralDeviceInfoClient pmsGeneralDeviceInfoClient;
private final DistributionMonitorClient distributionMonitorClient;
/***
* 配网-全网基准水平
* @author jianghaifei
@@ -47,6 +55,8 @@ implements PwRMpBenchmarkLevelYService {
*/
@Override
public Page<PwRMpBenchmarkLevelVO> getPwRMpBenchmarkLevelList(RMpBenchmarkLevelParam rMpBenchmarkLevelParam) {
Page<PwRMpBenchmarkLevelVO> pageResult = new Page<>(rMpBenchmarkLevelParam.getPageNum(),rMpBenchmarkLevelParam.getPageSize());
//提取查询条件
String id = rMpBenchmarkLevelParam.getId(); //单位id
if (StringUtils.isBlank(id)) {
@@ -58,29 +68,39 @@ implements PwRMpBenchmarkLevelYService {
Integer pageNum = rMpBenchmarkLevelParam.getPageNum() != null && rMpBenchmarkLevelParam.getPageNum() != 0 ? rMpBenchmarkLevelParam.getPageNum() : 1; //页码
Integer pageSize = rMpBenchmarkLevelParam.getPageSize() != null && rMpBenchmarkLevelParam.getPageSize() != 0 ? rMpBenchmarkLevelParam.getPageSize() : 10; //页面尺寸
//根据条件查询单位下面的所有配网监测点
PwPmsMonitorParam pwPmsMonitorParam = new PwPmsMonitorParam();
pwPmsMonitorParam.setOrgId(id); //单位id
pwPmsMonitorParam.setVoltageLevels(voltageLevelParamList); //电压等级
List<PwPmsMonitorDTO> pwMonitorList = pwMonitorClient.getPwMonitorList(pwPmsMonitorParam).getData();
if (CollUtil.isEmpty(pwMonitorList)) {
List<String> monitorIds = pmsGeneralDeviceInfoClient.getPwPmsMonitorIds(pwPmsMonitorParam).getData();
if (CollUtil.isEmpty(monitorIds)) {
return new Page<>();
}
//监测点id集合
List<String> monitorIdList = pwMonitorList.stream().map(PwPmsMonitorDTO::getMonitorId).collect(Collectors.toList());
//监测点map key:监测点id value:监测点实体
Map<String, PwPmsMonitorDTO> monitorMap = pwMonitorList.stream().collect(
Collectors.toMap(PwPmsMonitorDTO::getMonitorId, Function.identity(), (key1, key2) -> key1));
//查询【基准水平-年】数据
/*组装条件where measurement_point_id in (monitorIdList) and data_date >= startTime
and data_date <= endTime and voltage_level
*/
LambdaQueryWrapper<RMpBenchmarkLevelY> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.in(CollUtil.isNotEmpty(monitorIdList), RMpBenchmarkLevelY::getMeasurementPointId, monitorIdList)
lambdaQueryWrapper.in(RMpBenchmarkLevelY::getMeasurementPointId, monitorIds)
.ge(StringUtils.isNotBlank(startTime), RMpBenchmarkLevelY::getDataDate, startTime)
.le(StringUtils.isNotBlank(endTime), RMpBenchmarkLevelY::getDataDate, endTime);
Page<RMpBenchmarkLevelY> listPage = this.page(new Page<>(pageNum, pageSize), lambdaQueryWrapper);
List<RMpBenchmarkLevelY> temList = listPage.getRecords();
if(CollUtil.isEmpty(temList)){
pageResult.setTotal(listPage.getTotal());
return pageResult;
}
//监测点id集合
List<String> monitorIdList = temList.stream().map(RMpBenchmarkLevelY::getMeasurementPointId).distinct().collect(Collectors.toList());
List<PwPmsMonitorDTO> pwMonitorList = distributionMonitorClient.pwMonitorAreaDetailInfo(monitorIdList).getData();
//监测点map key:监测点id value:监测点实体
Map<String, PwPmsMonitorDTO> monitorMap = pwMonitorList.stream().collect(
Collectors.toMap(PwPmsMonitorDTO::getMonitorId, Function.identity(), (key1, key2) -> key1));
List<PwRMpBenchmarkLevelVO> resultList = listPage.getRecords().stream().map(item -> {
//封装前端需要的对象

View File

@@ -3,9 +3,11 @@ 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 com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.common.pojo.constant.BizParamConstant;
import com.njcn.common.pojo.dto.SimpleDTO;
import com.njcn.device.pms.api.DistributionMonitorClient;
import com.njcn.device.pms.api.MonitorClient;
import com.njcn.device.pms.api.PmsGeneralDeviceInfoClient;
import com.njcn.device.pms.api.PwMonitorClient;
@@ -69,6 +71,8 @@ public class PwRStatOrgServiceImpl extends ServiceImpl<PwRStatOrgMapper, RStatOr
private final MonitorClient monitorClient;
private final PmsGeneralDeviceInfoClient pmsGeneralDeviceInfoClient;
private final DistributionMonitorClient distributionMonitorClient;
@Override
public List<RStatOrgVO.PwRStatOrgVO> getRStatHarmonicAll(StatSubstationBizBaseParam param) {
//获取当前部门下所有部门信息
@@ -161,7 +165,8 @@ public class PwRStatOrgServiceImpl extends ServiceImpl<PwRStatOrgMapper, RStatOr
}
@Override
public List<PwRStatOrgVO.PwRStatOrgDetailVO> getRMpPassRateInfo(RStatOrgParam.PwRStatOrgParam param) {
public Page<PwRStatOrgVO.PwRStatOrgDetailVO> getRMpPassRateInfo(RStatOrgParam.PwRStatOrgParam param) {
Page<PwRStatOrgVO.PwRStatOrgDetailVO> pageResult = new Page<>(param.getPageNum(),param.getPageSize());
//初始化对象
List<RStatOrgIndexVO> info = new ArrayList<>();
// 获取当前用户的部门的子部门信息
@@ -176,34 +181,41 @@ public class PwRStatOrgServiceImpl extends ServiceImpl<PwRStatOrgMapper, RStatOr
pwPmsMonitorParam.setMonitorSort(param.getMonitorSort());
//监测点名称
pwPmsMonitorParam.setMonitorName(param.getMonitorName());
List<PwPmsMonitorDTO> monitorDTOList = pwMonitorClient.getPwMonitorList(pwPmsMonitorParam).getData();
List<String> monitorIds = pmsGeneralDeviceInfoClient.getPwPmsMonitorIds(pwPmsMonitorParam).getData();
if (CollectionUtil.isNotEmpty(monitorIds)) {
if (CollectionUtil.isNotEmpty(monitorDTOList)) {
Map<String, PwPmsMonitorDTO> monitorDTOMap = monitorDTOList.stream().collect(
Collectors.toMap(PwPmsMonitorDTO::getMonitorId, Function.identity(), (key1, key2) -> key2));
//获取最新过滤的监测点id
List<String> ids = monitorDTOList.stream().map(PwPmsMonitorDTO::getMonitorId).collect(Collectors.toList());
StatSubstationBizBaseParam baseParam = BeanUtil.copyProperties(param, StatSubstationBizBaseParam.class);
baseParam.setIds(ids);
baseParam.setIds(monitorIds);
// 类型1年 2季度 3月份
Page<RStatOrgIndexVO> temPage = new Page<>();
switch (param.getType().toString()) {
case BizParamConstant.STAT_BIZ_YEAR:
// 获取年稳态指标合格率明细表
info = rMpPassRateYMapper.getYearPassRate(baseParam);
temPage = rMpPassRateYMapper.getPageYearPassRate(new Page<>(param.getPageNum(),param.getPageSize()),baseParam);
break;
case BizParamConstant.STAT_BIZ_QUARTER:
// 获取季稳态指标合格率明细表
info = rMpPassRateQMapper.getQuarterPassRate(baseParam);
temPage = rMpPassRateQMapper.getPwQuarterPassRate(new Page<>(param.getPageNum(),param.getPageSize()),baseParam);
break;
case BizParamConstant.STAT_BIZ_MONTH:
// 获取月稳态指标合格率明细表
info = rMpPassRateMMapper.getMonthPassRate(baseParam);
temPage = rMpPassRateMMapper.getPwMonthPassRate(new Page<>(param.getPageNum(),param.getPageSize()),baseParam);
break;
default:
break;
}
info = temPage.getRecords();
if (CollectionUtil.isNotEmpty(info)) {
List<String> ids = info.stream().map(RStatOrgIndexVO::getMeasurementPointId).distinct().collect(Collectors.toList());
List<PwPmsMonitorDTO> pwPmsMonitorDTOList = distributionMonitorClient.pwMonitorAreaDetailInfo(ids).getData();
Map<String, PwPmsMonitorDTO> monitorDTOMap = pwPmsMonitorDTOList.stream().collect(
Collectors.toMap(PwPmsMonitorDTO::getMonitorId, Function.identity(), (key1, key2) -> key2));
//初始化
List<PwRStatOrgVO.PwRStatOrgDetailVO> temp = new ArrayList<>();
//便利对象
@@ -227,10 +239,10 @@ public class PwRStatOrgServiceImpl extends ServiceImpl<PwRStatOrgMapper, RStatOr
temp.add(pwRStatOrgVO);
}
});
return temp;
return pageResult.setRecords(temp);
}
}
return new ArrayList<>();
return pageResult;
}
@Override
@@ -402,7 +414,9 @@ public class PwRStatOrgServiceImpl extends ServiceImpl<PwRStatOrgMapper, RStatOr
}
@Override
public List<RMpPartHarmonicDetailVO.PwRMpPartHarmonicDetailDVO> getRMpPartHarmonicDetail(RStatOrgParam.PwRStatOrgParam param) {
public Page<RMpPartHarmonicDetailVO.PwRMpPartHarmonicDetailDVO> getRMpPartHarmonicDetail(RStatOrgParam.PwRStatOrgParam param) {
Page<RMpPartHarmonicDetailVO.PwRMpPartHarmonicDetailDVO> pageResult = new Page<>(param.getPageNum(),param.getPageSize());
PwPmsMonitorParam pwPmsMonitorParam = new PwPmsMonitorParam();
//部门id
pwPmsMonitorParam.setOrgId(param.getId());
@@ -413,40 +427,40 @@ public class PwRStatOrgServiceImpl extends ServiceImpl<PwRStatOrgMapper, RStatOr
//监测点名称
pwPmsMonitorParam.setMonitorName(param.getMonitorName());
//获取配网监测点信息
List<PwPmsMonitorDTO> pwPmsMonitorDTOS = pwMonitorClient.getPwMonitorList(pwPmsMonitorParam).getData();
Map<String, PwPmsMonitorDTO> pwPmsMonitorDTOMap = pwPmsMonitorDTOS.stream().collect(
Collectors.toMap(PwPmsMonitorDTO::getMonitorId, Function.identity(), (key1, key2) -> key2));
List<String> monitorIds = pmsGeneralDeviceInfoClient.getPwPmsMonitorIds(pwPmsMonitorParam).getData();
if (CollectionUtil.isNotEmpty(pwPmsMonitorDTOS)) {
if (CollectionUtil.isNotEmpty(monitorIds)) {
//获取监测点id
List<String> ids = pwPmsMonitorDTOS.stream().map(PwPmsMonitorDTO::getMonitorId).collect(Collectors.toList());
//筛选出数据库对应监测点
StatSubstationBizBaseParam baseParam = BeanUtil.copyProperties(param, StatSubstationBizBaseParam.class);
baseParam.setIds(ids);
List<RMpPartHarmonicDetailVO> rMpPartHarmonicDetail = rMpSurplusHarmonicDetailMMapper.getRMpPartHarmonicDetail(baseParam);
List<RMpPartHarmonicDetailVO.PwRMpPartHarmonicDetailDVO> newList = BeanUtil.copyToList(
rMpPartHarmonicDetail, RMpPartHarmonicDetailVO.PwRMpPartHarmonicDetailDVO.class);
if (CollectionUtil.isNotEmpty(newList)) {
//因为只有月表,数据进行查询可能出现重复数据。进行分组
Map<String, List<RMpPartHarmonicDetailVO.PwRMpPartHarmonicDetailDVO>> detailVOMap = newList.stream()
.collect(Collectors.groupingBy(RMpPartHarmonicDetailVO.PwRMpPartHarmonicDetailDVO::getMeasurementPointId));
detailVOMap.forEach((Key, value) -> {
if (pwPmsMonitorDTOMap.containsKey(Key)) {
PwPmsMonitorDTO dto1 = pwPmsMonitorDTOMap.get(Key);
for (RMpPartHarmonicDetailVO.PwRMpPartHarmonicDetailDVO rmp : value) {
rmp.setOrgName(dto1.getOrgName());
rmp.setPowerrName(dto1.getPowerName());
rmp.setMeasurementPointName(dto1.getMonitorName());
rmp.setMonitorSort(dto1.getMonitorSort());
rmp.setMonitorVoltageName(dto1.getVoltageLevel());
}
}
});
baseParam.setIds(monitorIds);
Page<RMpPartHarmonicDetailVO> rMpPartHarmonicDetail = rMpSurplusHarmonicDetailMMapper.getPwRMpPartHarmonicDetail(new Page<>(param.getPageNum(),param.getPageSize()),baseParam);
List<RMpPartHarmonicDetailVO> tmpList = rMpPartHarmonicDetail.getRecords();
if(CollUtil.isEmpty(tmpList)){
return pageResult;
}
List<RMpPartHarmonicDetailVO.PwRMpPartHarmonicDetailDVO> newList = BeanUtil.copyToList(
tmpList, RMpPartHarmonicDetailVO.PwRMpPartHarmonicDetailDVO.class);
List<String> ids = tmpList.stream().map(RMpPartHarmonicDetailVO::getMeasurementPointId).distinct().collect(Collectors.toList());
List<PwPmsMonitorDTO> pwPmsMonitorDTOList = distributionMonitorClient.pwMonitorAreaDetailInfo(ids).getData();
Map<String,PwPmsMonitorDTO> monitorDTOMap = pwPmsMonitorDTOList.stream().collect(Collectors.toMap(PwPmsMonitorDTO::getMonitorId,Function.identity()));
if (CollectionUtil.isNotEmpty(newList)) {
newList = newList.stream().peek(item->{
if (monitorDTOMap.containsKey(item.getMeasurementPointId())) {
PwPmsMonitorDTO dto1 = monitorDTOMap.get(item.getMeasurementPointId());
item.setOrgName(dto1.getOrgName());
item.setPowerrName(dto1.getPowerName());
item.setMeasurementPointName(dto1.getMonitorName());
item.setMonitorSort(dto1.getMonitorSort());
item.setMonitorVoltageName(dto1.getVoltageLevel());
}
}).collect(Collectors.toList());
pageResult.setRecords(newList);
}
return newList;
}
return Lists.newArrayList();
return pageResult;
}
@Override

View File

@@ -3,7 +3,10 @@ package com.njcn.harmonic.service.distribution.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.device.pms.api.DistributionMonitorClient;
import com.njcn.device.pms.api.PmsGeneralDeviceInfoClient;
import com.njcn.device.pms.api.PwMonitorClient;
import com.njcn.device.pms.pojo.dto.PmsMonitorDTO;
import com.njcn.device.pms.pojo.dto.PwPmsMonitorDTO;
import com.njcn.device.pms.pojo.param.PwPmsMonitorParam;
import com.njcn.harmonic.mapper.distribution.RStatPwPermeabilityMMapper;
@@ -37,6 +40,11 @@ public class RStatPwPermeabilityMServiceImpl extends ServiceImpl<RStatPwPermeabi
private final DicDataFeignClient dicDataFeignClient;
private final PmsGeneralDeviceInfoClient pmsGeneralDeviceInfoClient;
private final DistributionMonitorClient distributionMonitorClient;
/***
* 获取各渗透率光伏台区基准水平
@@ -47,6 +55,8 @@ public class RStatPwPermeabilityMServiceImpl extends ServiceImpl<RStatPwPermeabi
*/
@Override
public Page<RStatPwPermeabilityMVO> getPwPermeabilityList(RStatPwPermeabilityMParam rStatPwPermeabilityMParam) {
Page<RStatPwPermeabilityMVO> pageResult = new Page<>(rStatPwPermeabilityMParam.getPageNum(),rStatPwPermeabilityMParam.getPageSize());
//提起参数
String id = rStatPwPermeabilityMParam.getId(); //单位id
String psrName = rStatPwPermeabilityMParam.getPsrName(); //台区名称
@@ -58,25 +68,34 @@ public class RStatPwPermeabilityMServiceImpl extends ServiceImpl<RStatPwPermeabi
//根据条件查询单位下面的所有配网监测点
PwPmsMonitorParam pwPmsMonitorParam = new PwPmsMonitorParam();
pwPmsMonitorParam.setOrgId(id); //单位id
pwPmsMonitorParam.setMonitorName(psrName); //台区名称(监测点名称)
List<PwPmsMonitorDTO> pwMonitorList = pwMonitorClient.getPwMonitorList(pwPmsMonitorParam).getData();
if (CollUtil.isEmpty(pwMonitorList)) {
List<String> monitorIds = pmsGeneralDeviceInfoClient.getPwPmsMonitorIds(pwPmsMonitorParam).getData();
if (CollUtil.isEmpty(monitorIds)) {
return new Page<>();
}
//监测点id集合
List<String> monitorIdList = pwMonitorList.stream().map(PwPmsMonitorDTO::getMonitorId).collect(Collectors.toList());
//监测点map key:监测点id value:监测点实体
Map<String, PwPmsMonitorDTO> monitorMap = pwMonitorList.stream().collect(Collectors.toMap(PwPmsMonitorDTO::getMonitorId, Function.identity(),(key1, key2)->key1));
//获取各渗透率字典
List<DictData> rateList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.PERMEABILITY_TYPE.getCode()).getData();
Map<String, Object> condMap = rateList.stream().collect(Collectors.toMap(DictData::getCode, DictData::getId));
condMap.put("startTime", startTime);
condMap.put("endTime", endTime);
condMap.put("idList", monitorIdList);
condMap.put("idList", monitorIds);
Page<RStatPwPermeabilityMVO> listPage = this.baseMapper.getPwPermeabilityList(new Page<>(pageNum, pageSize), condMap);
List<RStatPwPermeabilityMVO> list = listPage.getRecords().stream().peek(item -> {
Page<RStatPwPermeabilityMVO> listPage = this.baseMapper.getPwPermeabilityList(
new Page<>(pageNum, pageSize), condMap);
List<RStatPwPermeabilityMVO> temList = listPage.getRecords();
if(CollUtil.isEmpty(temList)){
pageResult.setTotal(listPage.getTotal());
return pageResult;
}
//监测点id集合
List<String>ids = temList.stream().map(RStatPwPermeabilityMVO::getPsrId).distinct().collect(Collectors.toList());
List<PwPmsMonitorDTO> pwMonitorList = distributionMonitorClient.pwMonitorAreaDetailInfo(ids).getData();
//监测点map key:监测点id value:监测点实体
Map<String, PwPmsMonitorDTO> monitorMap = pwMonitorList.stream().collect(Collectors.toMap(PwPmsMonitorDTO::getMonitorId, Function.identity(),(key1, key2)->key1));
List<RStatPwPermeabilityMVO> list = temList.stream().peek(item -> {
item.setOrgName(monitorMap.get(item.getPsrId()).getOrgName()); //单位名称
item.setPsrName(monitorMap.get(item.getPsrId()).getMonitorName()); //台区名称
}).collect(Collectors.toList());