敏感用户污染值统计

This commit is contained in:
xy
2025-12-13 20:33:08 +08:00
parent 3a97f01383
commit 12cfecac7e
12 changed files with 235 additions and 9 deletions

View File

@@ -9,6 +9,12 @@ import java.io.Serializable;
@Data @Data
public class PowerFlagPollution implements Serializable { public class PowerFlagPollution implements Serializable {
/**
* 变电站名称
*/
@Excel(name = "变电站名称", width = 35, replace = "/_null")
@ApiModelProperty("变电站名称")
private String subName;
/** /**
* 监测点名称 * 监测点名称

View File

@@ -38,6 +38,10 @@ public class SubstationPollution implements Serializable {
@ApiModelProperty("电站谐波污染值") @ApiModelProperty("电站谐波污染值")
private String subVStationValue; private String subVStationValue;
@Excel(name = "项目名称", width = 25, needMerge = true)
@ApiModelProperty("项目名称")
private String projectName;
/** /**
* 电网侧&非电网侧 * 电网侧&非电网侧

View File

@@ -36,4 +36,10 @@ public class StatSubstationBizBaseParam extends StatisticsBizBaseParam {
@ApiModelProperty("电网侧标识") @ApiModelProperty("电网侧标识")
@Range(min = 0, max = 2, message = "电网侧标识" + ValidMessage.PARAM_FORMAT_ERROR) @Range(min = 0, max = 2, message = "电网侧标识" + ValidMessage.PARAM_FORMAT_ERROR)
private Integer powerFlag; private Integer powerFlag;
@ApiModelProperty("部门id")
private String deptId;
@ApiModelProperty("搜索值")
private String searchValue;
} }

View File

@@ -185,4 +185,17 @@ public class PollutionSubstationController extends BaseController {
List<AreaPollution> areaPollution = pollutionSubstationService.getAreaPollution(param); List<AreaPollution> areaPollution = pollutionSubstationService.getAreaPollution(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, areaPollution, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, areaPollution, methodDescribe);
} }
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@ApiOperation(value ="敏感用户谐波污染值列表")
@PostMapping(value ="/downPollutionSensitiveUser")
public HttpResult<List<SubstationPollution>> downPollutionSensitiveUser(@RequestBody StatSubstationBizBaseParam param) {
String methodDescribe = getMethodDescribe("downPollutionSensitiveUser");
param.setStartTime(DateUtil.beginOfDay(DateUtil.parse(param.getStartTime())).toString());
param.setEndTime(DateUtil.endOfDay(DateUtil.parse(param.getEndTime())).toString());
List<SubstationPollution> linePollutions = pollutionSubstationService.downPollutionSensitiveUser(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, linePollutions, methodDescribe);
}
} }

View File

@@ -2,8 +2,8 @@ package com.njcn.harmonic.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.device.pq.pojo.dto.PollutionGridDiagramDTO;
import com.njcn.device.biz.pojo.dto.PollutionLineDTO; import com.njcn.device.biz.pojo.dto.PollutionLineDTO;
import com.njcn.device.pq.pojo.dto.PollutionGridDiagramDTO;
import com.njcn.device.pq.pojo.dto.PollutionSubstationDTO; import com.njcn.device.pq.pojo.dto.PollutionSubstationDTO;
import com.njcn.device.pq.pojo.param.GridDiagramParam; import com.njcn.device.pq.pojo.param.GridDiagramParam;
import com.njcn.device.pq.pojo.param.OnlineRateParam; import com.njcn.device.pq.pojo.param.OnlineRateParam;
@@ -131,4 +131,6 @@ public interface PollutionSubstationService extends IService<RStatPollutionSubst
* @Date: 2025/12/10 17:53 * @Date: 2025/12/10 17:53
*/ */
List<AreaPollution> getAreaPollution(StatSubstationBizBaseParam param); List<AreaPollution> getAreaPollution(StatSubstationBizBaseParam param);
List<SubstationPollution> downPollutionSensitiveUser(StatSubstationBizBaseParam param);
} }

View File

@@ -14,6 +14,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.common.config.GeneralInfo; import com.njcn.common.config.GeneralInfo;
import com.njcn.common.pojo.constant.BizParamConstant; import com.njcn.common.pojo.constant.BizParamConstant;
import com.njcn.common.pojo.dto.SimpleDTO; import com.njcn.common.pojo.dto.SimpleDTO;
import com.njcn.common.pojo.enums.common.ServerEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.utils.PubUtils; import com.njcn.common.utils.PubUtils;
@@ -57,12 +58,14 @@ import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO;
import com.njcn.harmonic.pojo.vo.PollutionSubstationVO; import com.njcn.harmonic.pojo.vo.PollutionSubstationVO;
import com.njcn.harmonic.pojo.vo.PollutionVO; import com.njcn.harmonic.pojo.vo.PollutionVO;
import com.njcn.harmonic.pojo.vo.SubstationVo; import com.njcn.harmonic.pojo.vo.SubstationVo;
import com.njcn.harmonic.pojo.vo.hebeinorth.AssessVo;
import com.njcn.harmonic.rstatlimitrate.mapper.RStatLimitRateDMapper; import com.njcn.harmonic.rstatlimitrate.mapper.RStatLimitRateDMapper;
import com.njcn.harmonic.service.PollutionSubstationService; import com.njcn.harmonic.service.PollutionSubstationService;
import com.njcn.poi.excel.ExcelUtil; import com.njcn.poi.excel.ExcelUtil;
import com.njcn.supervision.api.UserLedgerFeignClient; import com.njcn.supervision.api.UserLedgerFeignClient;
import com.njcn.supervision.api.UserReportManageFeignClient;
import com.njcn.supervision.pojo.param.SensitiveUserParam;
import com.njcn.supervision.pojo.param.user.UserReportParam; import com.njcn.supervision.pojo.param.user.UserReportParam;
import com.njcn.supervision.pojo.po.user.UserReportPO;
import com.njcn.supervision.pojo.vo.user.UserLedgerVO; import com.njcn.supervision.pojo.vo.user.UserLedgerVO;
import com.njcn.system.api.DicDataFeignClient; import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.enums.DicDataEnum; import com.njcn.system.enums.DicDataEnum;
@@ -70,6 +73,12 @@ import com.njcn.user.api.DeptFeignClient;
import com.njcn.user.pojo.dto.DeptDTO; import com.njcn.user.pojo.dto.DeptDTO;
import com.njcn.user.pojo.po.Dept; import com.njcn.user.pojo.po.Dept;
import com.njcn.web.utils.RequestUtil; import com.njcn.web.utils.RequestUtil;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
@@ -79,13 +88,6 @@ import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
/** /**
* Description: * Description:
@@ -131,6 +133,7 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
private final UserLedgerFeignClient userLedgerFeignClient; private final UserLedgerFeignClient userLedgerFeignClient;
private final RmpEventDetailFeignClient detailFeignClient; private final RmpEventDetailFeignClient detailFeignClient;
private final CommLineClient commLineClient; private final CommLineClient commLineClient;
private final UserReportManageFeignClient userReportManageFeignClient;
/** /**
* @param pollutionSubstationQuryParam * @param pollutionSubstationQuryParam
@@ -1216,6 +1219,7 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
PowerFlagPollution pollution1; PowerFlagPollution pollution1;
for (PollutionLineInfoDTO lineDetail : lineDetails) { for (PollutionLineInfoDTO lineDetail : lineDetails) {
pollution1 = new PowerFlagPollution(); pollution1 = new PowerFlagPollution();
pollution1.setSubName(lineDetail.getSubStationName());
pollution1.setLineName(lineDetail.getLineName()); pollution1.setLineName(lineDetail.getLineName());
pollution1.setDevName(lineDetail.getDevName()); pollution1.setDevName(lineDetail.getDevName());
pollution1.setManufacturer(lineDetail.getManufacturer()); pollution1.setManufacturer(lineDetail.getManufacturer());
@@ -1235,6 +1239,68 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
return info; return info;
} }
@Override
public List<SubstationPollution> downPollutionSensitiveUser(StatSubstationBizBaseParam param) {
List<SubstationPollution> result = new ArrayList<>();
DeptGetLineParam deptGetLineParam = new DeptGetLineParam();
deptGetLineParam.setDeptId(param.getDeptId());
deptGetLineParam.setLineRunFlag(0);
deptGetLineParam.setServerName(ServerEnum.HARMONIC.getName());
List<DeptGetChildrenMoreDTO> list = commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData();
List<String> lineList = list.stream()
.flatMap(dto -> dto.getLineBaseList().stream().map(LineDevGetDTO::getPointId))
.distinct()
.collect(Collectors.toList());
//全部监测点污染值
List<LinePollution> finalLinePollutionList = pollutionCalcList(param,lineList);
//根据变电站分组
Map<String, List<LinePollution>> linePollutionMap = finalLinePollutionList.stream().collect(Collectors.groupingBy(LinePollution::getSubStationName));
//获取部门id
SensitiveUserParam sensitiveUserParam = new SensitiveUserParam();
sensitiveUserParam.setDeptId(param.getDeptId());
sensitiveUserParam.setProjectName(param.getSearchValue());
List<UserReportPO> userReportPOList = userReportManageFeignClient.getSensitiveUserByDept(sensitiveUserParam).getData();
if (CollectionUtil.isNotEmpty(userReportPOList)) {
userReportPOList.forEach(item -> {
if (ObjectUtil.isNotNull(item.getSubstation()) && !Objects.equals(item.getSubstation(), "")) {
List<BigDecimal> value = new ArrayList<>();
List<PowerFlagPollution> ll = new ArrayList<>();
String[] parts = item.getSubstation().split("");
for (String part : parts) {
// 移除数字+kV和"变电站"
String name = part.replaceAll("\\d+kV", "").replace("变电站", "");
//根据变电站名称获取污染值
for (Map.Entry<String, List<LinePollution>> entry : linePollutionMap.entrySet()) {
if (entry.getKey().contains(name)) {
BigDecimal v = BigDecimal.valueOf(entry.getValue().stream().mapToDouble(LinePollution::getHarmonicValue).average().getAsDouble());
value.add(v);
for (LinePollution pojo : entry.getValue()) {
PowerFlagPollution lineItemPollution = new PowerFlagPollution();
BeanUtil.copyProperties(pojo, lineItemPollution, true);
lineItemPollution.setVHarmonicValue(pojo.getHarmonicValue());
ll.add(lineItemPollution);
}
}
}
}
SubstationPollution linePollution = new SubstationPollution();
linePollution.setGdName(item.getCity());
linePollution.setSubStationName(item.getSubstation());
linePollution.setProjectName(item.getProjectName());
linePollution.setSubVStationValue(String.valueOf(BigDecimal.valueOf(value.stream()
.mapToDouble(BigDecimal::doubleValue)
.average()
.orElse(0.0)).setScale(2, RoundingMode.HALF_UP).doubleValue()));
result.add(linePollution);
linePollution.setPowerFlagPollutionList(ll);
}
});
}
return result;
}
private List<String> addList(List<RMpPollutionDPO> pollLinelist, List<SubGetBase> notNum) { private List<String> addList(List<RMpPollutionDPO> pollLinelist, List<SubGetBase> notNum) {
List<String> info = new ArrayList<>(); List<String> info = new ArrayList<>();

View File

@@ -0,0 +1,28 @@
package com.njcn.supervision.api;
import com.njcn.common.pojo.constant.ServerInfo;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.supervision.api.fallback.UserReportFeignClientFallbackFactory;
import com.njcn.supervision.pojo.param.SensitiveUserParam;
import com.njcn.supervision.pojo.po.user.UserReportPO;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
/**
*
* @author 徐扬
*/
@FeignClient(value = ServerInfo.SUPERVISION, path = "/userReport", fallbackFactory = UserReportFeignClientFallbackFactory.class)
public interface UserReportManageFeignClient {
@PostMapping("/getSensitiveUserByDept")
@ApiOperation("根据部门获取敏感用户信息")
HttpResult<List<UserReportPO>> getSensitiveUserByDept(@RequestBody @Validated SensitiveUserParam param) ;
}

View File

@@ -0,0 +1,38 @@
package com.njcn.supervision.api.fallback;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.supervision.api.UserReportManageFeignClient;
import com.njcn.supervision.pojo.param.SensitiveUserParam;
import com.njcn.supervision.pojo.po.user.UserReportPO;
import com.njcn.supervision.utils.SupervisionEnumUtil;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.util.List;
@Slf4j
@Component
public class UserReportFeignClientFallbackFactory implements FallbackFactory<UserReportManageFeignClient> {
@Override
public UserReportManageFeignClient create(Throwable throwable) {
//判断抛出异常是否为解码器抛出的业务异常
Enum<?> exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK;
if (throwable.getCause() instanceof BusinessException) {
BusinessException businessException = (BusinessException) throwable.getCause();
exceptionEnum = SupervisionEnumUtil.getExceptionEnum(businessException.getResult());
}
Enum<?> finalExceptionEnum = exceptionEnum;
return new UserReportManageFeignClient() {
@Override
public HttpResult<List<UserReportPO>> getSensitiveUserByDept(SensitiveUserParam param) {
log.error("{}异常,降级处理,异常为:{}", "根据部门获取敏感用户信息异常", throwable.toString());
throw new BusinessException(finalExceptionEnum);
}
};
}
}

View File

@@ -0,0 +1,30 @@
package com.njcn.supervision.pojo.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Set;
/**
* @author xy
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SensitiveUserParam implements Serializable {
@ApiModelProperty("部门id")
private String deptId;
@ApiModelProperty("项目名称")
private String projectName;
}

View File

@@ -8,7 +8,9 @@ import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil; import com.njcn.common.utils.HttpResultUtil;
import com.njcn.supervision.pojo.param.SensitiveUserParam;
import com.njcn.supervision.pojo.param.user.UserReportParam; import com.njcn.supervision.pojo.param.user.UserReportParam;
import com.njcn.supervision.pojo.po.user.UserReportPO;
import com.njcn.supervision.pojo.vo.user.NewUserReportVO; import com.njcn.supervision.pojo.vo.user.NewUserReportVO;
import com.njcn.supervision.pojo.vo.user.UserLedgerVO; import com.njcn.supervision.pojo.vo.user.UserLedgerVO;
import com.njcn.supervision.pojo.vo.user.UserReportVO; import com.njcn.supervision.pojo.vo.user.UserReportVO;
@@ -291,5 +293,15 @@ public class UserReportManageController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, userReportByIds, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, userReportByIds, methodDescribe);
} }
//根据部门查询敏感用户信息
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getSensitiveUserByDept")
@ApiOperation("根据部门获取敏感用户信息")
@ApiImplicitParam(name = "userReportQueryParam", value = "参数", required = true)
public HttpResult<List<UserReportPO>> getSensitiveUserByDept(@RequestBody @Validated SensitiveUserParam param) {
String methodDescribe = getMethodDescribe("getSensitiveUserByDept");
List<UserReportPO> list = userReportPOService.getSensitiveUserByDept(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
} }

View File

@@ -3,6 +3,7 @@ package com.njcn.supervision.service.user;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.bpm.pojo.param.instance.BpmProcessInstanceCancelParam; import com.njcn.bpm.pojo.param.instance.BpmProcessInstanceCancelParam;
import com.njcn.bpm.service.IBpmService; import com.njcn.bpm.service.IBpmService;
import com.njcn.supervision.pojo.param.SensitiveUserParam;
import com.njcn.supervision.pojo.param.user.UserReportParam; import com.njcn.supervision.pojo.param.user.UserReportParam;
import com.njcn.supervision.pojo.po.user.UserReportPO; import com.njcn.supervision.pojo.po.user.UserReportPO;
import com.njcn.supervision.pojo.vo.user.UserLedgerVO; import com.njcn.supervision.pojo.vo.user.UserLedgerVO;
@@ -69,4 +70,7 @@ public interface UserReportPOService extends IBpmService<UserReportPO> {
Page<UserReportVO> getUserLedgerPage(UserReportParam.UserReportQueryParam userReportQueryParam); Page<UserReportVO> getUserLedgerPage(UserReportParam.UserReportQueryParam userReportQueryParam);
List<UserReportPO> getSensitiveUserByDept(SensitiveUserParam param);
} }

View File

@@ -41,6 +41,7 @@ import com.njcn.supervision.mapper.user.UserReportNormalMapper;
import com.njcn.supervision.mapper.user.UserReportPOMapper; import com.njcn.supervision.mapper.user.UserReportPOMapper;
import com.njcn.supervision.pojo.dto.SensitiveReportExcel; import com.njcn.supervision.pojo.dto.SensitiveReportExcel;
import com.njcn.supervision.pojo.dto.SensitiveUserSExcel; import com.njcn.supervision.pojo.dto.SensitiveUserSExcel;
import com.njcn.supervision.pojo.param.SensitiveUserParam;
import com.njcn.supervision.pojo.param.user.UserReportParam; import com.njcn.supervision.pojo.param.user.UserReportParam;
import com.njcn.supervision.pojo.po.device.SupervisionTempLineReport; import com.njcn.supervision.pojo.po.device.SupervisionTempLineReport;
import com.njcn.supervision.pojo.po.user.*; import com.njcn.supervision.pojo.po.user.*;
@@ -1282,6 +1283,22 @@ public class UserReportPOServiceImpl extends ServiceImpl<UserReportPOMapper, Use
return page; return page;
} }
@Override
public List<UserReportPO> getSensitiveUserByDept(SensitiveUserParam param) {
QueryWrapper<UserReportPO> userReportVOQueryWrapper = new QueryWrapper<>();
List<String> data = deptFeignClient.getDepSonIdtByDeptId(param.getDeptId()).getData();
//此处仅查询敏感及重要用户
userReportVOQueryWrapper.and(wrapper ->
wrapper.in("supervision_user_report.org_id", data)
)
.eq("supervision_user_report.state", DataStateEnum.ENABLE.getCode())
.eq("supervision_user_report.user_type", UserNatureEnum.SENSITIVE_USER.getCode())
.in("supervision_user_report.status", Arrays.asList(FlowStatusEnum.AUDIT.getCode(), FlowStatusEnum.APPROVE.getCode()));
userReportVOQueryWrapper.like(StringUtils.isNotBlank(param.getProjectName()), "supervision_user_report.project_name", param.getProjectName());
userReportVOQueryWrapper.orderByDesc("supervision_user_report.create_time");
return this.baseMapper.selectList(userReportVOQueryWrapper);
}
public Map<String, String> getTreeString(String name, List<SysDicTreePO> treeVOS) { public Map<String, String> getTreeString(String name, List<SysDicTreePO> treeVOS) {
Map<String, String> info = new LinkedHashMap<>(); Map<String, String> info = new LinkedHashMap<>();
for (SysDicTreePO sysMenuDtoChild : treeVOS) { for (SysDicTreePO sysMenuDtoChild : treeVOS) {