Merge remote-tracking branch 'origin/liaoning' into liaoning
This commit is contained in:
@@ -20,7 +20,7 @@ public enum LineBaseEnum {
|
||||
PROVINCE_LEVEL(1, "省份"),
|
||||
GD_LEVEL(2, "供电公司"),
|
||||
SUB_LEVEL(3, "变电站"),
|
||||
DEVICE_LEVEL(4, "设备"),
|
||||
DEVICE_LEVEL(4, "终端"),
|
||||
SUB_V_LEVEL(5, "母线"),
|
||||
LINE_LEVEL(6, "监测点"),
|
||||
USER_LEVEL(7,"用户"),
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
package com.njcn.device.pq.pojo.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: cdf
|
||||
* @CreateTime: 2025-04-25
|
||||
* @Description: 区分电网侧非电网侧信息台账信息
|
||||
*/
|
||||
@Data
|
||||
public class MonitorPowerDTO {
|
||||
|
||||
private List<MonitorBase> userMonitorList;
|
||||
|
||||
private List<MonitorBase> powerMonitorList;
|
||||
|
||||
|
||||
private List<MonitorBase> userStationList;
|
||||
|
||||
private List<MonitorBase> powerStationList;
|
||||
|
||||
@Data
|
||||
public static class MonitorBase{
|
||||
|
||||
private String id;
|
||||
|
||||
private String pid;
|
||||
|
||||
private String pids;
|
||||
|
||||
private String name;
|
||||
|
||||
private Integer sort;
|
||||
|
||||
private String objId;
|
||||
|
||||
private String bigObjType;
|
||||
|
||||
private String smallObjType;
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -24,6 +24,8 @@ public class OverLimitLineDTO {
|
||||
|
||||
private String lineObjectName;
|
||||
|
||||
private String objId;
|
||||
|
||||
private String monitorNumber;
|
||||
|
||||
private String subName;
|
||||
|
||||
@@ -56,6 +56,10 @@ public class DeviceParam {
|
||||
@NotNull(message = "前置机索引不能为空")
|
||||
private String nodeId;
|
||||
|
||||
@ApiModelProperty(name = "nodeId",value = "所属前置机机进程",required = true)
|
||||
@NotNull(message = "所属前置机机进程不能为空")
|
||||
private Integer processNum;
|
||||
|
||||
@ApiModelProperty(name = "series",value = "装置识别码,采用3ds加密")
|
||||
private String series;
|
||||
|
||||
|
||||
@@ -59,6 +59,13 @@ public class NodeParam {
|
||||
@NotNull(message = "前置机支持最大装置数不可为空")
|
||||
private Integer nodeDevNum;
|
||||
|
||||
/**
|
||||
* 前置机支持最大进程数量
|
||||
*/
|
||||
@ApiModelProperty(name = "nodeDevNum",value = "前置机支持最大进程数量")
|
||||
@NotNull(message = "前置机支持最大进程数量")
|
||||
private Integer maxProcessNum;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
@@ -131,6 +132,8 @@ public class DeviceVO implements Serializable {
|
||||
|
||||
@ApiModelProperty(name = "sort",value = "排序",required = true)
|
||||
private Integer sort;
|
||||
@ApiModelProperty(value = "所属前置机机进程")
|
||||
private Integer processNum;
|
||||
|
||||
|
||||
@ApiModelProperty(name = "subVoltageVOList",value = "母线集合")
|
||||
|
||||
@@ -738,7 +738,7 @@
|
||||
A1.Name lineName,
|
||||
C1.Name lineScale,
|
||||
C2.Name loadType,
|
||||
D.Obj_Name lineObjectName,
|
||||
D.Obj_Id objId,
|
||||
D.Monitor_Id monitorNumber,
|
||||
A4.Name subName,
|
||||
C3.Name subScale,
|
||||
|
||||
@@ -25,6 +25,7 @@ import com.njcn.device.pq.enums.LineBaseEnum;
|
||||
import com.njcn.device.pq.mapper.*;
|
||||
import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO;
|
||||
import com.njcn.device.biz.pojo.dto.PollutionLineDTO;
|
||||
import com.njcn.device.pq.pojo.dto.MonitorPowerDTO;
|
||||
import com.njcn.device.pq.pojo.dto.PollutionParamDTO;
|
||||
import com.njcn.device.pq.pojo.dto.PollutionSubstationDTO;
|
||||
import com.njcn.device.pq.pojo.param.*;
|
||||
@@ -772,6 +773,8 @@ public class LineServiceImpl extends ServiceImpl<LineMapper, Line> implements Li
|
||||
return pollutionLineInfoDTOList;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public List<Overlimit> getOverLimitByList(PollutionParamDTO pollutionParamDTO) {
|
||||
return overlimitMapper.selectBatchIds(pollutionParamDTO.getLineList());
|
||||
|
||||
@@ -290,37 +290,37 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
|
||||
coderM3d(deviceDetail, false);
|
||||
deviceMapper.insert(deviceDetail);
|
||||
//添加装置进程号
|
||||
Node nodeById = nodeService.getNodeById(deviceDetail.getNodeId());
|
||||
List<Device> devices = deviceMapper.selectList(new QueryWrapper<Device>().lambda().eq(Device::getNodeId, deviceDetail.getNodeId()));
|
||||
Integer maxNodeDevNum = nodeById.getNodeDevNum();
|
||||
Integer maxProcessNum = nodeById.getMaxProcessNum();
|
||||
if (devices.size() >= maxNodeDevNum) {
|
||||
throw new BusinessException(PvDeviceResponseEnum.OVER_LIMIT);
|
||||
}
|
||||
List<String> deviceIdList = devices.stream().map(Device::getId).collect(Collectors.toList());
|
||||
List<DeviceProcess> deviceProcessList = deviceProcessService.lambdaQuery().in(DeviceProcess::getId, deviceIdList).list();
|
||||
Map<Integer, Integer> processCountMap = null;
|
||||
if (Objects.nonNull(maxProcessNum)) {
|
||||
processCountMap = new HashMap<>();
|
||||
for (int i = 0; i < maxProcessNum; i++) {
|
||||
Integer processNum = i + 1;
|
||||
long count = deviceProcessList.stream().filter(temp -> Objects.equals(temp.getProcessNo(), processNum)).count();
|
||||
Integer processCount = Math.toIntExact(count);
|
||||
processCountMap.put(processNum, processCount);
|
||||
}
|
||||
|
||||
}else{
|
||||
processCountMap = new HashMap<>();
|
||||
}
|
||||
|
||||
//获取数量最少的线程号
|
||||
Optional<Integer> minKey = processCountMap.entrySet()
|
||||
.stream()
|
||||
.min(Comparator.comparingInt(e -> e.getValue()))
|
||||
.map(Map.Entry::getKey);
|
||||
// Node nodeById = nodeService.getNodeById(deviceDetail.getNodeId());
|
||||
// List<Device> devices = deviceMapper.selectList(new QueryWrapper<Device>().lambda().eq(Device::getNodeId, deviceDetail.getNodeId()));
|
||||
// Integer maxNodeDevNum = nodeById.getNodeDevNum();
|
||||
// Integer maxProcessNum = nodeById.getMaxProcessNum();
|
||||
// if (devices.size() >= maxNodeDevNum) {
|
||||
// throw new BusinessException(PvDeviceResponseEnum.OVER_LIMIT);
|
||||
// }
|
||||
// List<String> deviceIdList = devices.stream().map(Device::getId).collect(Collectors.toList());
|
||||
// List<DeviceProcess> deviceProcessList = deviceProcessService.lambdaQuery().in(DeviceProcess::getId, deviceIdList).list();
|
||||
// Map<Integer, Integer> processCountMap = null;
|
||||
// if (Objects.nonNull(maxProcessNum)) {
|
||||
// processCountMap = new HashMap<>();
|
||||
// for (int i = 0; i < maxProcessNum; i++) {
|
||||
// Integer processNum = i + 1;
|
||||
// long count = deviceProcessList.stream().filter(temp -> Objects.equals(temp.getProcessNo(), processNum)).count();
|
||||
// Integer processCount = Math.toIntExact(count);
|
||||
// processCountMap.put(processNum, processCount);
|
||||
// }
|
||||
//
|
||||
// }else{
|
||||
// processCountMap = new HashMap<>();
|
||||
// }
|
||||
//
|
||||
// //获取数量最少的线程号
|
||||
// Optional<Integer> minKey = processCountMap.entrySet()
|
||||
// .stream()
|
||||
// .min(Comparator.comparingInt(e -> e.getValue()))
|
||||
// .map(Map.Entry::getKey);
|
||||
DeviceProcess deviceProcess = new DeviceProcess();
|
||||
deviceProcess.setId(device.getId());
|
||||
deviceProcess.setProcessNo(minKey.orElse(1));
|
||||
deviceProcess.setProcessNo(deviceParam.getProcessNum());
|
||||
deviceProcessService.saveOrUpdate(deviceProcess);
|
||||
//装置功能
|
||||
List<DictData> funList = dicDataFeignClient.getDicDataByTypeName(DicDataTypeEnum.DEV_FUN.getName()).getData();
|
||||
@@ -469,7 +469,6 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
|
||||
LineDetail lineDetail = new LineDetail();
|
||||
BeanUtils.copyProperties(lineParam, lineDetail);
|
||||
lineDetail.setId(line.getId());
|
||||
|
||||
//判断国网监测点id
|
||||
if (StrUtil.isNotBlank(lineDetail.getMonitorId())) {
|
||||
lineDetail.setMonitorFlag(1);
|
||||
@@ -1224,6 +1223,10 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
|
||||
//decoderM3d(deviceDetail);
|
||||
BeanUtils.copyProperties(deviceDetail, deviceVO);
|
||||
deviceVO.setDevIndex(obj.getId());
|
||||
DeviceProcess deviceProcess = deviceProcessService.lambdaQuery().eq(DeviceProcess::getId, obj.getId()).one();
|
||||
if(Objects.nonNull(deviceProcess)){
|
||||
deviceVO.setProcessNum(deviceProcess.getProcessNo());
|
||||
}
|
||||
|
||||
lineLambdaQueryWrapper.clear();
|
||||
lineLambdaQueryWrapper.eq(Line::getPid, obj.getId())
|
||||
@@ -1320,6 +1323,11 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
|
||||
//decoderM3d(deviceDetail);
|
||||
BeanUtils.copyProperties(deviceDetail, deviceVO);
|
||||
deviceVO.setDevIndex(device.getId());
|
||||
DeviceProcess deviceProcess = deviceProcessService.lambdaQuery().eq(DeviceProcess::getId, device.getId()).one();
|
||||
if(Objects.nonNull(deviceProcess)){
|
||||
deviceVO.setProcessNum(deviceProcess.getProcessNo());
|
||||
}
|
||||
|
||||
|
||||
deviceVO.setSubVoltageVOList(subvList);
|
||||
deviceVOList.add(deviceVO);
|
||||
@@ -1371,6 +1379,11 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
|
||||
//decoderM3d(deviceDetail);
|
||||
BeanUtils.copyProperties(deviceDetail, deviceVO);
|
||||
deviceVO.setDevIndex(device.getId());
|
||||
DeviceProcess deviceProcess = deviceProcessService.lambdaQuery().eq(DeviceProcess::getId, device.getId()).one();
|
||||
if(Objects.nonNull(deviceProcess)){
|
||||
deviceVO.setProcessNum(deviceProcess.getProcessNo());
|
||||
}
|
||||
|
||||
|
||||
deviceVO.setSubVoltageVOList(subVoltageVOS);
|
||||
deviceVOList.add(deviceVO);
|
||||
@@ -1508,10 +1521,6 @@ public class TerminalBaseServiceImpl extends ServiceImpl<LineMapper, Line> imple
|
||||
deleteMonitoringPoints(pointIds,logsList);
|
||||
|
||||
// 2. 通知设备重启
|
||||
/* String[] pids = getById(busbarId).getPids().split(",");
|
||||
if (pids.length > 4) {
|
||||
askRestartDevice(pids[4], DeviceRebootType.LEDGER_MODIFY);
|
||||
}*/
|
||||
}
|
||||
|
||||
private void deleteMonitoringPoints(List<String> pointIds,List<Line> logsList) {
|
||||
|
||||
@@ -230,6 +230,12 @@ public class TerminalTreeServiceImpl implements TerminalTreeService {
|
||||
if (CollectionUtil.isNotEmpty(generalDeviceDTOList)) {
|
||||
// 创建集合
|
||||
List<TerminalTree> taiZhang = new ArrayList<>();
|
||||
// 获取用户
|
||||
UserReportParam userReportParam = new UserReportParam();
|
||||
List<UserLedgerVO> userReportPOList = userLedgerFeignClient.selectUserList(userReportParam).getData();
|
||||
userReportPOList = userReportPOList.stream().filter(it -> StrUtil.isNotBlank(it.getStationId())).collect(Collectors.toList());
|
||||
Map<String, UserLedgerVO> userMap = userReportPOList.stream().collect(Collectors.toMap(UserLedgerVO::getId, Function.identity()));
|
||||
|
||||
// 遍历集合
|
||||
for (GeneralDeviceDTO generalDeviceDTO : generalDeviceDTOList) {
|
||||
// 创建实体类
|
||||
@@ -253,10 +259,6 @@ public class TerminalTreeServiceImpl implements TerminalTreeService {
|
||||
Map<String,List<TerminalTree>> temMap = new HashMap<>();
|
||||
if(CollUtil.isNotEmpty(userLineList)) {
|
||||
Map<String, List<TerminalTree>> objMap = userLineList.stream().collect(Collectors.groupingBy(TerminalTree::getObjId));
|
||||
UserReportParam userReportParam = new UserReportParam();
|
||||
List<UserLedgerVO> userReportPOList = userLedgerFeignClient.selectUserList(userReportParam).getData();
|
||||
userReportPOList = userReportPOList.stream().filter(it -> StrUtil.isNotBlank(it.getStationId())).collect(Collectors.toList());
|
||||
Map<String, UserLedgerVO> userMap = userReportPOList.stream().collect(Collectors.toMap(UserLedgerVO::getId, Function.identity()));
|
||||
List<TerminalTree> temList = new ArrayList<>();
|
||||
objMap.forEach((objId, monitorList) -> {
|
||||
UserLedgerVO userLedgerVO = userMap.get(objId);
|
||||
@@ -275,7 +277,6 @@ public class TerminalTreeServiceImpl implements TerminalTreeService {
|
||||
tree.setPids(String.valueOf(devSize));
|
||||
temList.add(tree);
|
||||
});
|
||||
|
||||
temMap = temList.stream().collect(Collectors.groupingBy(TerminalTree::getPid));
|
||||
}
|
||||
|
||||
|
||||
@@ -20,4 +20,7 @@ public class HarmonicPublicParam extends DeviceInfoParam.BusinessParam{
|
||||
|
||||
@ApiModelProperty(name = "type", value = "区分(0:pq 1:pms)")
|
||||
private Integer type=0;
|
||||
|
||||
@ApiModelProperty(name = "stationType", value = "(0:变电站 1:非变电站场站)")
|
||||
private Integer stationType;
|
||||
}
|
||||
|
||||
@@ -35,7 +35,13 @@ public class SteadyQualifyVO implements Serializable {
|
||||
* 父级id集合
|
||||
*/
|
||||
@ApiModelProperty("父级id集合")
|
||||
private String pidS;
|
||||
private String pids;
|
||||
|
||||
@ApiModelProperty("排序")
|
||||
private Integer sort;
|
||||
|
||||
@ApiModelProperty("监测对象id")
|
||||
private String objId;
|
||||
/**
|
||||
* 电压等级
|
||||
*/
|
||||
|
||||
@@ -112,12 +112,20 @@
|
||||
<artifactId>cs-device-api</artifactId>
|
||||
<version>1.0.0</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.njcn.platform</groupId>
|
||||
<artifactId>data-processing-api</artifactId>
|
||||
<version>1.0.0</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.njcn</groupId>
|
||||
<artifactId>supervision-api</artifactId>
|
||||
<version>1.0.0</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
||||
@@ -54,6 +54,18 @@ public class PollutionSubstationController extends BaseController {
|
||||
return HttpResultUtil.assembleCommonResponseResult (CommonResponseEnum.SUCCESS, list, methodDescribe);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/getEnergyStationPollution")
|
||||
@ApiOperation("新能源场站污区图")
|
||||
@ApiImplicitParam(name = "pollutionSubstationQuryParam", value = "污染指标查询参数", required = true)
|
||||
public HttpResult<List<PollutionSubstationVO>> getEnergyStationPollution(@RequestBody @Validated PollutionSubstationQuryParam pollutionSubstationQuryParam) {
|
||||
String methodDescribe = getMethodDescribe ("getEnergyStationPollution");
|
||||
List<PollutionSubstationVO> list = pollutionSubstationService.getEnergyStationPollution(pollutionSubstationQuryParam);
|
||||
return HttpResultUtil.assembleCommonResponseResult (CommonResponseEnum.SUCCESS, list, methodDescribe);
|
||||
}
|
||||
|
||||
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
|
||||
@PostMapping("/deptSubstationRelations")
|
||||
@ApiOperation("污区图-部门变电站关系")
|
||||
|
||||
@@ -9,12 +9,15 @@
|
||||
A.Pid,
|
||||
A.Pids,
|
||||
A.Name name,
|
||||
A.sort,
|
||||
C.Name voltageLevel,
|
||||
D.IP networkParam,
|
||||
C1.Name factoryName,
|
||||
A.Name lineName
|
||||
A.Name lineName,
|
||||
detail.obj_id
|
||||
FROM
|
||||
pq_line A,
|
||||
pq_line_detail detail,
|
||||
pq_voltage B,
|
||||
sys_dict_data C,
|
||||
pq_device D,
|
||||
@@ -25,6 +28,7 @@
|
||||
<foreach item="item" collection="list" separator="," open="(" close=")">
|
||||
#{item}
|
||||
</foreach>
|
||||
AND A.id = detail.id
|
||||
AND A.Pid = B.Id
|
||||
AND B.Scale = C.Id
|
||||
AND A.Pid = A1.Id
|
||||
@@ -37,7 +41,8 @@
|
||||
Id,
|
||||
Pid,
|
||||
Pids,
|
||||
Name
|
||||
Name,
|
||||
sort
|
||||
FROM
|
||||
pq_line
|
||||
WHERE
|
||||
|
||||
@@ -36,6 +36,10 @@ public interface PollutionSubstationService extends IService<RStatPollutionSubst
|
||||
* @Date: 2022/10/13
|
||||
*/
|
||||
List<PollutionSubstationVO> getPollutionSubstationData(PollutionSubstationQuryParam pollutionSubstationQuryParam);
|
||||
|
||||
|
||||
List<PollutionSubstationVO> getEnergyStationPollution(PollutionSubstationQuryParam pollutionSubstationQuryParam);
|
||||
|
||||
/**
|
||||
* @Description: getDeptSubstationRelations
|
||||
* @Param: [param]
|
||||
|
||||
@@ -37,6 +37,9 @@ import com.njcn.harmonic.pojo.vo.OverAreaVO;
|
||||
import com.njcn.harmonic.pojo.vo.WarningSubstationVO;
|
||||
import com.njcn.harmonic.service.IAnalyzeService;
|
||||
import com.njcn.poi.excel.ExcelUtil;
|
||||
import com.njcn.supervision.api.UserLedgerFeignClient;
|
||||
import com.njcn.supervision.pojo.param.user.UserReportParam;
|
||||
import com.njcn.supervision.pojo.vo.user.UserLedgerVO;
|
||||
import com.njcn.system.api.DicDataFeignClient;
|
||||
import com.njcn.system.enums.DicDataEnum;
|
||||
import com.njcn.system.enums.DicDataTypeEnum;
|
||||
@@ -83,6 +86,8 @@ public class AnalyzeServiceImpl implements IAnalyzeService {
|
||||
private final EventDetailFeignClient eventDetailFeignClient;
|
||||
private final DicDataFeignClient dicDataFeignClient;
|
||||
|
||||
private final UserLedgerFeignClient userLedgerFeignClient;
|
||||
|
||||
@Override
|
||||
public Page<OverAreaLimitVO> getAreaData(OverAreaVO param) {
|
||||
Page<OverAreaLimitVO> page = new Page<>();
|
||||
@@ -317,10 +322,17 @@ public class AnalyzeServiceImpl implements IAnalyzeService {
|
||||
.in("r_stat_limit_target_d.my_index", list).between("r_stat_limit_target_d.time_id", DateUtil.beginOfDay(DateUtil.parse(param.getSearchBeginTime())),
|
||||
DateUtil.endOfDay(DateUtil.parse(param.getSearchEndTime()))));
|
||||
Map<String, List<RStatLimitTargetDPO>> rsMap = rStatLimitTargetDPOS.stream().collect(Collectors.groupingBy(RStatLimitTargetDPO::getLineId));
|
||||
|
||||
|
||||
List<UserLedgerVO> userLedgerVOList = userLedgerFeignClient.selectUserList(new UserReportParam()).getData();
|
||||
Map<String,UserLedgerVO> userLedgerVOMap = userLedgerVOList.stream().collect(Collectors.toMap(UserLedgerVO::getId,Function.identity()));
|
||||
|
||||
for (OverLimitLineDTO vo : overLimitLineList) {
|
||||
MonitorOverLimitVO monitorOverLimitVO = new MonitorOverLimitVO();
|
||||
BeanUtil.copyProperties(vo, monitorOverLimitVO);
|
||||
MonitorOverLimitVO source = monMap.get(vo.getId()).get(0);
|
||||
UserLedgerVO userLedgerVO = userLedgerVOMap.getOrDefault(vo.getObjId(),null);
|
||||
monitorOverLimitVO.setLineObjectName(Objects.nonNull(userLedgerVO)?userLedgerVO.getProjectName():"/");
|
||||
monitorOverLimitVO.setOverDay(source.getOverDay());
|
||||
monitorOverLimitVO.setVolDevOverDay(source.getVolDevOverDay());
|
||||
monitorOverLimitVO.setFreqOverDay(source.getFreqOverDay());
|
||||
|
||||
@@ -15,6 +15,7 @@ import com.njcn.common.pojo.constant.BizParamConstant;
|
||||
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
|
||||
import com.njcn.common.pojo.exception.BusinessException;
|
||||
import com.njcn.device.biz.commApi.CommTerminalGeneralClient;
|
||||
import com.njcn.device.biz.enums.RunFlagEnum;
|
||||
import com.njcn.device.biz.pojo.dto.*;
|
||||
import com.njcn.device.biz.pojo.param.DeptGetLineParam;
|
||||
import com.njcn.device.pms.api.MonitorClient;
|
||||
@@ -28,9 +29,11 @@ import com.njcn.device.pms.pojo.po.Monitor;
|
||||
import com.njcn.device.pq.api.GeneralDeviceInfoClient;
|
||||
import com.njcn.device.pq.api.LineFeignClient;
|
||||
import com.njcn.device.pq.api.SubstationFeignClient;
|
||||
import com.njcn.device.pq.enums.LineBaseEnum;
|
||||
import com.njcn.device.pq.pojo.dto.*;
|
||||
import com.njcn.device.pq.pojo.param.GridDiagramParam;
|
||||
import com.njcn.device.pq.pojo.param.LineBaseQueryParam;
|
||||
import com.njcn.device.pq.pojo.po.Line;
|
||||
import com.njcn.device.pq.pojo.po.LineDetail;
|
||||
import com.njcn.device.pq.pojo.vo.GridDiagramVO;
|
||||
import com.njcn.harmonic.constant.Param;
|
||||
@@ -45,6 +48,10 @@ import com.njcn.harmonic.pojo.vo.PollutionSubstationVO;
|
||||
import com.njcn.harmonic.pojo.vo.PollutionVO;
|
||||
import com.njcn.harmonic.pojo.vo.SubstationVo;
|
||||
import com.njcn.harmonic.service.PollutionSubstationService;
|
||||
import com.njcn.supervision.api.UserLedgerFeignClient;
|
||||
import com.njcn.supervision.pojo.param.user.UserReportParam;
|
||||
import com.njcn.supervision.pojo.vo.user.NewUserReportVO;
|
||||
import com.njcn.supervision.pojo.vo.user.UserLedgerVO;
|
||||
import com.njcn.system.api.DicDataFeignClient;
|
||||
import com.njcn.system.enums.DicDataEnum;
|
||||
import com.njcn.user.api.DeptFeignClient;
|
||||
@@ -111,6 +118,8 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
|
||||
private final DicDataFeignClient dicDataFeignClient;
|
||||
private final RStatLimitRateDMapper rStatLimitRateDMapper;
|
||||
|
||||
private final UserLedgerFeignClient userLedgerFeignClient;
|
||||
|
||||
/**
|
||||
* @param pollutionSubstationQuryParam
|
||||
* @Description: getPollutionSubstationData
|
||||
@@ -186,6 +195,32 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PollutionSubstationVO> getEnergyStationPollution(PollutionSubstationQuryParam pollutionSubstationQuryParam) {
|
||||
List<PollutionSubstationVO> result = new ArrayList<>();
|
||||
DeptGetLineParam deptGetLineParam = new DeptGetLineParam();
|
||||
deptGetLineParam.setDeptId(pollutionSubstationQuryParam.getDeptIndex());
|
||||
deptGetLineParam.setLineRunFlag(RunFlagEnum.RUNNING.getStatus());
|
||||
List<DeptGetChildrenMoreDTO> deptLineList = commTerminalGeneralClient.deptGetLine(deptGetLineParam).getData();
|
||||
if(CollUtil.isNotEmpty(deptLineList)){
|
||||
UserReportParam userReportParam = new UserReportParam();
|
||||
List<UserLedgerVO> userLedgerList = userLedgerFeignClient.selectUserList(userReportParam).getData();
|
||||
Map<String,UserLedgerVO> userMap = userLedgerList.stream().collect(Collectors.toMap(UserLedgerVO::getId,Function.identity()));
|
||||
|
||||
for(DeptGetChildrenMoreDTO dto : deptLineList){
|
||||
List<LineDevGetDTO> monitorList = dto.getLineBaseList();
|
||||
if(CollUtil.isEmpty(monitorList)){
|
||||
continue;
|
||||
}
|
||||
List<String> objIds = monitorList.stream().map(LineDevGetDTO::getObjId).distinct().collect(Collectors.toList());
|
||||
//List<UserLedgerVO>userLedgerList.stream().filter(it->objIds.contains(it.getId())).collect(Collectors.toList());
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: getDeptSubstationRelations
|
||||
* @Param: [param]
|
||||
@@ -201,8 +236,12 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
|
||||
if (StringUtils.isBlank(RequestUtil.getDeptIndex())) {
|
||||
return list;
|
||||
}
|
||||
|
||||
List<UserLedgerVO> userLedgerVOList = userLedgerFeignClient.selectUserList(new UserReportParam()).getData();
|
||||
Map<String,UserLedgerVO> userLedgerVOMap = userLedgerVOList.stream().collect(Collectors.toMap(UserLedgerVO::getId,Function.identity()));
|
||||
|
||||
if (harmonicPublicParam.getType() != 0) {
|
||||
PmsDeviceInfoParam pmsDeviceInfoParam = new PmsDeviceInfoParam();
|
||||
/* PmsDeviceInfoParam pmsDeviceInfoParam = new PmsDeviceInfoParam();
|
||||
pmsDeviceInfoParam.setDeptIndex(harmonicPublicParam.getDeptIndex());
|
||||
//获取统计类型
|
||||
pmsDeviceInfoParam.setStatisticalType(harmonicPublicParam.getStatisticalType());
|
||||
@@ -246,7 +285,7 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
|
||||
pollutionVO.setChildren(powersVO);
|
||||
}
|
||||
list.add(pollutionVO);
|
||||
});
|
||||
});*/
|
||||
|
||||
} else {
|
||||
harmonicPublicParam.setServerName(generalInfo.getMicroServiceName());
|
||||
@@ -264,18 +303,48 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
|
||||
pollutionVO.setName(name + "\n(" + temp.getLineIndexes().size() + ")");
|
||||
pollutionVO.setData(3.14159);
|
||||
setData(harmonicPublicParam, pollutionType, searchBeginTime, harmonicPublicParam.getSearchEndTime(), pollutionVO, detpid);
|
||||
|
||||
|
||||
List<PollutionVO> subPollutionVO = new ArrayList<>();
|
||||
subIndexes.forEach(subIndex -> {
|
||||
|
||||
List<LineDetail> lineDetailList = lineFeignClient.getLineDetail(temp.getLineIndexes()).getData();
|
||||
if(CollUtil.isNotEmpty(lineDetailList)){
|
||||
List<LineDetail> userLedgerList = lineDetailList.stream().filter(it->StrUtil.isNotBlank(it.getObjId())).collect(Collectors.toList());
|
||||
List<LineDetail> powerLedgerList = lineDetailList.stream().filter(it->StrUtil.isBlank(it.getObjId())).collect(Collectors.toList());
|
||||
if(CollUtil.isNotEmpty(userLedgerList)){
|
||||
List<String> objIds = userLedgerList.stream().map(LineDetail::getObjId).distinct().collect(Collectors.toList());
|
||||
objIds.forEach(obj->{
|
||||
PollutionVO pollutionsubVO = new PollutionVO();
|
||||
PollutionSubstationDTO pollutionSubstationDTO = lineFeignClient.getSubstationInfo(subIndex).getData();
|
||||
String id = pollutionSubstationDTO.getId();
|
||||
pollutionsubVO.setId(id);
|
||||
pollutionsubVO.setName(pollutionSubstationDTO.getName());
|
||||
if(userLedgerVOMap.containsKey(obj)){
|
||||
UserLedgerVO userLedgerVO = userLedgerVOMap.get(obj);
|
||||
pollutionsubVO.setId(userLedgerVO.getId());
|
||||
pollutionsubVO.setName(userLedgerVO.getProjectName());
|
||||
pollutionsubVO.setPid(temp.getIndex());
|
||||
pollutionsubVO.setData(3.14159);
|
||||
setSubData(harmonicPublicParam, pollutionType, searchBeginTime, harmonicPublicParam.getSearchEndTime(), pollutionsubVO, id);
|
||||
setSubData(harmonicPublicParam, pollutionType, searchBeginTime, harmonicPublicParam.getSearchEndTime(), pollutionsubVO, userLedgerVO.getId());
|
||||
subPollutionVO.add(pollutionsubVO);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if(CollUtil.isNotEmpty(powerLedgerList)){
|
||||
List<String> ids = powerLedgerList.stream().map(LineDetail::getId).collect(Collectors.toList());
|
||||
List<Line> lineList = lineFeignClient.getBaseLineList(ids).getData();
|
||||
List<String> subIds = lineList.stream().map(it->it.getPids().split(StrUtil.COMMA)[LineBaseEnum.SUB_LEVEL.getCode()]).distinct().collect(Collectors.toList());
|
||||
List<Line> subList = lineFeignClient.getBaseLineList(subIds).getData();
|
||||
subList.forEach(station->{
|
||||
PollutionVO pollutionsubVO = new PollutionVO();
|
||||
pollutionsubVO.setId(station.getId());
|
||||
pollutionsubVO.setName(station.getName());
|
||||
pollutionsubVO.setPid(temp.getIndex());
|
||||
pollutionsubVO.setData(3.14159);
|
||||
setSubData(harmonicPublicParam, pollutionType, searchBeginTime, harmonicPublicParam.getSearchEndTime(), pollutionsubVO, station.getId());
|
||||
subPollutionVO.add(pollutionsubVO);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
pollutionVO.setChildren(subPollutionVO);
|
||||
list.add(pollutionVO);
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.njcn.device.pq.api.GeneralDeviceInfoClient;
|
||||
import com.njcn.device.pq.enums.LineBaseEnum;
|
||||
import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO;
|
||||
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
|
||||
import com.njcn.device.pq.pojo.vo.TerminalTree;
|
||||
import com.njcn.harmonic.mapper.SteadyQualifyMapper;
|
||||
import com.njcn.harmonic.pojo.dto.SteadyQualifyDTO;
|
||||
import com.njcn.harmonic.pojo.po.day.RStatLimitRateDPO;
|
||||
@@ -18,12 +19,16 @@ import com.njcn.harmonic.pojo.vo.SteadyQualifyVO;
|
||||
import com.njcn.harmonic.service.IRStatLimitRateDService;
|
||||
import com.njcn.harmonic.service.SteadyQualifyService;
|
||||
import com.njcn.harmonic.utils.PubUtils;
|
||||
import com.njcn.supervision.api.UserLedgerFeignClient;
|
||||
import com.njcn.supervision.pojo.param.user.UserReportParam;
|
||||
import com.njcn.supervision.pojo.vo.user.UserLedgerVO;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -41,25 +46,29 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService {
|
||||
|
||||
private final IRStatLimitRateDService rateDService;
|
||||
|
||||
private final UserLedgerFeignClient userLedgerFeignClient;
|
||||
|
||||
@Override
|
||||
public List<SteadyQualifyVO> getSteadyQualifyData(DeviceInfoParam.BusinessParam steadyParam) {
|
||||
List<SteadyQualifyVO> steadyQualifyList = new ArrayList<>();
|
||||
|
||||
UserReportParam userReportParam = new UserReportParam();
|
||||
List<UserLedgerVO> userLedgerList = userLedgerFeignClient.selectUserList(userReportParam).getData();
|
||||
Map<String, UserLedgerVO> userMap = userLedgerList.stream().collect(Collectors.toMap(UserLedgerVO::getId, Function.identity()));
|
||||
|
||||
//按照条件获取实际运行终端综合信息
|
||||
List<GeneralDeviceDTO> deviceDataList = generalDeviceInfoClient.getPracticalRunDeviceInfo(steadyParam).getData();
|
||||
//组装监测点Top层集合
|
||||
for (GeneralDeviceDTO generalDeviceDTO : deviceDataList) {
|
||||
List<String> lineIndexes = generalDeviceDTO.getLineIndexes();
|
||||
if (CollectionUtils.isEmpty(lineIndexes)) {
|
||||
if (CollectionUtils.isEmpty(generalDeviceDTO.getLineIndexes())) {
|
||||
continue;
|
||||
}
|
||||
SteadyQualifyVO steadyQualifyVO = new SteadyQualifyVO();
|
||||
steadyQualifyVO.setId(generalDeviceDTO.getIndex());
|
||||
steadyQualifyVO.setName(generalDeviceDTO.getName());
|
||||
// List<SteadyQualifyVO> lineData = steadyQualifyMapper.getSteadyQualifyData(lineIndexes);
|
||||
List<SteadyQualifyDTO> qualifiesRate = getQualifiesRate(lineIndexes, steadyParam.getSearchBeginTime(), steadyParam.getSearchEndTime());
|
||||
List<SteadyQualifyDTO> qualifiesRate = getQualifiesRate(generalDeviceDTO.getLineIndexes(), steadyParam.getSearchBeginTime(), steadyParam.getSearchEndTime());
|
||||
//组装子集级数据树
|
||||
List<SteadyQualifyVO> treeList = getTreeData(qualifiesRate, lineIndexes);
|
||||
List<SteadyQualifyVO> treeList = getTreeData(qualifiesRate, generalDeviceDTO,userMap);
|
||||
if (CollectionUtil.isNotEmpty(treeList)) {
|
||||
List<SteadyQualifyVO> flicker = treeList.stream().filter(s -> s.getFlicker() != 3.14159).collect(Collectors.toList());
|
||||
List<SteadyQualifyVO> freqOffset = treeList.stream().filter(s -> s.getFreqOffset() != 3.14159).collect(Collectors.toList());
|
||||
@@ -205,20 +214,10 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService {
|
||||
/**
|
||||
* 获取父级每层数据
|
||||
*/
|
||||
private List<SteadyQualifyVO> getTreeData(List<SteadyQualifyDTO> qualifiesRate, List<String> lineIndexes) {
|
||||
private List<SteadyQualifyVO> getTreeData(List<SteadyQualifyDTO> qualifiesRate, GeneralDeviceDTO generalDeviceDTO,Map<String, UserLedgerVO> userMap) {
|
||||
//监测点集合
|
||||
List<SteadyQualifyVO> monitorList = steadyQualifyMapper.getSteadyQualifyData(lineIndexes);
|
||||
//母线集合
|
||||
List<SteadyQualifyVO> busBarList = steadyQualifyMapper.getLineInfoByList(monitorList.stream().map(SteadyQualifyVO::getPid).distinct().collect(Collectors.toList()));
|
||||
//终端集合
|
||||
List<SteadyQualifyVO> deviceList = steadyQualifyMapper.getLineInfoByList(busBarList.stream().map(SteadyQualifyVO::getPid).distinct().collect(Collectors.toList()));
|
||||
//变电站集合
|
||||
List<SteadyQualifyVO> substationList = steadyQualifyMapper.getLineInfoByList(deviceList.stream().map(SteadyQualifyVO::getPid).distinct().collect(Collectors.toList()));
|
||||
//供电公司集合
|
||||
List<SteadyQualifyVO> powerCompanyList = steadyQualifyMapper.getLineInfoByList(substationList.stream().map(SteadyQualifyVO::getPid).distinct().collect(Collectors.toList()));
|
||||
|
||||
// List<SteadyQualifyDTO> qualifiesRate = getQualifiesRate(lineIndexes, steadyParam.getSearchBeginTime(), steadyParam.getSearchEndTime());
|
||||
monitorList.forEach(steadyQualifyVO -> {
|
||||
List<SteadyQualifyVO> treeMonitorList = steadyQualifyMapper.getSteadyQualifyData(generalDeviceDTO.getLineIndexes());
|
||||
treeMonitorList.forEach(steadyQualifyVO -> {
|
||||
SteadyQualifyVO dataSingleMonitorMoreDay = getDataSingleMonitorMoreDay(qualifiesRate, steadyQualifyVO.getId());
|
||||
steadyQualifyVO.setFlicker(PubUtils.dataLimits(dataSingleMonitorMoreDay.getFlicker()));
|
||||
steadyQualifyVO.setFreqOffset(PubUtils.dataLimits(dataSingleMonitorMoreDay.getFreqOffset()));
|
||||
@@ -229,21 +228,85 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService {
|
||||
steadyQualifyVO.setHarmonicCurrent(PubUtils.dataLimits(dataSingleMonitorMoreDay.getHarmonicCurrent()));
|
||||
steadyQualifyVO.setInterHarmonic(PubUtils.dataLimits(dataSingleMonitorMoreDay.getInterHarmonic()));
|
||||
});
|
||||
setChildesList(substationList, monitorList);
|
||||
setFatherDistortion(substationList);
|
||||
|
||||
powerCompanyList.stream().peek(item -> item.setChildren(getChildCategoryList(item, substationList))).collect(Collectors.toList());
|
||||
setFatherDistortion(powerCompanyList);
|
||||
List<SteadyQualifyVO> userLineList = treeMonitorList.stream().filter(it->StrUtil.isNotBlank(it.getObjId())).collect(Collectors.toList());
|
||||
List<SteadyQualifyVO> otherLineList = treeMonitorList.stream().filter(it->StrUtil.isBlank(it.getObjId())).collect(Collectors.toList());
|
||||
|
||||
Map<String,List<SteadyQualifyVO>> temMap = new HashMap<>();
|
||||
if(CollUtil.isNotEmpty(userLineList)) {
|
||||
Map<String, List<SteadyQualifyVO>> objMap = userLineList.stream().collect(Collectors.groupingBy(SteadyQualifyVO::getObjId));
|
||||
List<SteadyQualifyVO> temList = new ArrayList<>();
|
||||
objMap.forEach((objId, monitorList) -> {
|
||||
UserLedgerVO userLedgerVO = userMap.get(objId);
|
||||
SteadyQualifyVO tree = new SteadyQualifyVO();
|
||||
tree.setPid(userLedgerVO.getStationId());
|
||||
tree.setId(userLedgerVO.getId());
|
||||
tree.setChildren(monitorList);
|
||||
tree.setName(userLedgerVO.getProjectName());
|
||||
setFatherDistortion(tree,monitorList);
|
||||
temList.add(tree);
|
||||
});
|
||||
temMap = temList.stream().collect(Collectors.groupingBy(SteadyQualifyVO::getPid));
|
||||
}
|
||||
//变电站集合
|
||||
List<SteadyQualifyVO> substationList = steadyQualifyMapper.getLineInfoByList(generalDeviceDTO.getSubIndexes());
|
||||
//供电公司集合
|
||||
List<SteadyQualifyVO> powerCompanyList = steadyQualifyMapper.getLineInfoByList(generalDeviceDTO.getGdIndexes());
|
||||
|
||||
dealChildrenData(substationList,otherLineList,temMap,true);
|
||||
|
||||
dealChildrenData(powerCompanyList,substationList,temMap,false);
|
||||
|
||||
return powerCompanyList;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 处理变电站
|
||||
*
|
||||
* @param targetData
|
||||
* @param childrenData
|
||||
* @param isLine
|
||||
*/
|
||||
private void dealChildrenData(List<SteadyQualifyVO> targetData, List<SteadyQualifyVO> childrenData, Map<String,List<SteadyQualifyVO>> userLineMap, boolean isLine) {
|
||||
// 创建一个map集合,用于封装对象
|
||||
Map<String, List<SteadyQualifyVO>> groupLine;
|
||||
if (isLine) {
|
||||
// 通过stream流分组
|
||||
groupLine = childrenData.stream().collect(Collectors.groupingBy(terminalTree -> {
|
||||
// 获取父id字符串,通过 逗号 分割 成一个数组
|
||||
String[] pid = terminalTree.getPids().split(StrUtil.COMMA);
|
||||
return pid[LineBaseEnum.SUB_LEVEL.getCode()];
|
||||
}));
|
||||
} else {
|
||||
groupLine = childrenData.stream().collect(Collectors.groupingBy(SteadyQualifyVO::getPid));
|
||||
}
|
||||
//变电站
|
||||
targetData.forEach(terminalTree -> {
|
||||
List<SteadyQualifyVO> terminalTrees = new ArrayList<>();
|
||||
if(groupLine.containsKey(terminalTree.getId())) {
|
||||
terminalTrees.addAll(groupLine.get(terminalTree.getId()).stream().sorted(Comparator.comparing(SteadyQualifyVO::getSort)).collect(Collectors.toList()));
|
||||
}
|
||||
if (isLine) {
|
||||
//变电站集合
|
||||
if(userLineMap.containsKey(terminalTree.getId())){
|
||||
List<SteadyQualifyVO> userList = userLineMap.get(terminalTree.getId());
|
||||
terminalTrees.addAll(userList);
|
||||
}
|
||||
terminalTree.setChildren(terminalTrees);
|
||||
} else {
|
||||
terminalTree.setChildren(terminalTrees);
|
||||
}
|
||||
setFatherDistortion(terminalTree,terminalTrees);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 计算父级合格率
|
||||
*/
|
||||
private void setFatherDistortion(List<SteadyQualifyVO> list) {
|
||||
list.forEach(steadyQualifyVO -> {
|
||||
List<SteadyQualifyVO> children = steadyQualifyVO.getChildren();
|
||||
private void setFatherDistortion(SteadyQualifyVO steadyQualifyVO,List<SteadyQualifyVO> children) {
|
||||
List<SteadyQualifyVO> flicker = children.stream().filter(child -> !Objects.equals(child.getFlicker(), 3.14159)).collect(Collectors.toList());
|
||||
List<SteadyQualifyVO> freqOffset = children.stream().filter(child -> !Objects.equals(child.getFreqOffset(), 3.14159)).collect(Collectors.toList());
|
||||
List<SteadyQualifyVO> voltageOffset = children.stream().filter(child -> !Objects.equals(child.getVoltageOffset(), 3.14159)).collect(Collectors.toList());
|
||||
@@ -276,7 +339,6 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService {
|
||||
if (!CollectionUtils.isEmpty(InterHarmonic)) {
|
||||
steadyQualifyVO.setInterHarmonic(PubUtils.dataLimits(NumberUtil.round(InterHarmonic.stream().mapToDouble(SteadyQualifyVO::getInterHarmonic).average().orElse(100), 2).doubleValue()));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -289,12 +351,14 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService {
|
||||
private void setChildesList(List<SteadyQualifyVO> item, List<SteadyQualifyVO> childes) {
|
||||
Map<String, List<SteadyQualifyVO>> groupLine;
|
||||
groupLine = childes.stream().collect(Collectors.groupingBy(steadyQualifyVO -> {
|
||||
String[] pid = steadyQualifyVO.getPidS().split(",");
|
||||
String[] pid = steadyQualifyVO.getPids().split(",");
|
||||
return pid[LineBaseEnum.SUB_LEVEL.getCode()];
|
||||
}));
|
||||
item.stream().peek(steadyQualifyVO -> {
|
||||
if (!CollectionUtils.isEmpty(groupLine.get(steadyQualifyVO.getId()))) {
|
||||
steadyQualifyVO.setChildren(groupLine.get(steadyQualifyVO.getId()));
|
||||
setFatherDistortion(steadyQualifyVO,steadyQualifyVO.getChildren());
|
||||
|
||||
}
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
@@ -671,7 +735,6 @@ public class SteadyQualifyServiceImpl implements SteadyQualifyService {
|
||||
steadyQualifyVO.setInterHarmonic(PubUtils.dataLimits(dataSingleMonitorMoreDay.getInterHarmonic()));
|
||||
});
|
||||
setChildesList(substationList, monitorList);
|
||||
setFatherDistortion(substationList);
|
||||
|
||||
|
||||
return substationList;
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.njcn.harmonic.service.report;
|
||||
|
||||
import com.njcn.harmonic.pojo.param.ReportSearchParam;
|
||||
import com.njcn.harmonic.pojo.po.ExcelRptTemp;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
public interface CnCustomReportService {
|
||||
|
||||
|
||||
/**
|
||||
* 根据id获取模板
|
||||
* @author qijian
|
||||
* @date 2022/10/18
|
||||
*/
|
||||
void getCustomReport(ReportSearchParam reportSearchParam, HttpServletResponse response);
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user