pms获取部门下面所有监测点

This commit is contained in:
wr
2023-04-26 13:50:02 +08:00
parent 98185dc1b2
commit 26bc511536
5 changed files with 174 additions and 4 deletions

View File

@@ -0,0 +1,31 @@
package com.njcn.device.biz.pojo.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @author wr
* @description
* @date 2023/4/26 10:08
*/
@Data
public class PmsDeptGetChildrenDTO {
@ApiModelProperty(name = "deptId",value = "部门id")
private String deptId;
@ApiModelProperty(name = "deptId",value = "部门名称")
private String deptName;
@ApiModelProperty(name = "deptChildren",value = "子集部门code集合")
private List<String> deptChildren;
@ApiModelProperty(name = "monitorIds",value = "主网监测点信息")
private List<String> monitorIds;
@ApiModelProperty(name = "pwMonitorIds",value = "配网监测点信息")
private List<String> pwMonitorIds;
}

View File

@@ -0,0 +1,18 @@
package com.njcn.device.biz.pojo.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @author wr
* @description
* @date 2023/4/26 10:37
*/
@Data
public class PmsDeptGetLineParam {
@NotBlank(message = "部门id不可为空")
@ApiModelProperty(name = "deptId",value = "部门id")
private String deptId;
}

View File

@@ -0,0 +1,53 @@
package com.njcn.device.pms.controller.ledgerManger;
import cn.hutool.core.date.TimeInterval;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.device.biz.pojo.dto.PmsDeptGetChildrenDTO;
import com.njcn.device.biz.pojo.param.PmsDeptGetLineParam;
import com.njcn.device.pms.service.majornetwork.IMonitorService;
import com.njcn.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @author wr
* @description
* @date 2023/4/26 10:00
*/
@RestController
@RequestMapping("/commTerminal")
@RequiredArgsConstructor
@Slf4j
@Api(tags = "通用台账-所有子孙部门以及监测点")
public class DeptMonitorController extends BaseController {
private final IMonitorService monitorService;
/**
* 通过部门获取所有子集部门所拥有的监测点
*
* @author wr
* @date 2023/4/26
*/
@PostMapping("/deptGetLineIds")
@ApiImplicitParam(name = "param", value = "请求参数", required = true)
public HttpResult<List<PmsDeptGetChildrenDTO>> deptGetLineList(@RequestBody @Validated PmsDeptGetLineParam param) {
TimeInterval timer = new TimeInterval();
String methodDescribe = getMethodDescribe("deptGetLineList");
List<PmsDeptGetChildrenDTO> monitor = monitorService.deptMonitor(param);
log.info("运行时长" + timer.intervalRestart());
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, monitor, methodDescribe);
}
}

View File

@@ -3,6 +3,8 @@ package com.njcn.device.pms.service.majornetwork;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.common.pojo.dto.SimpleDTO;
import com.njcn.device.biz.pojo.dto.PmsDeptGetChildrenDTO;
import com.njcn.device.biz.pojo.param.PmsDeptGetLineParam;
import com.njcn.device.pms.pojo.dto.PmsMonitorBaseDTO;
import com.njcn.device.pms.pojo.dto.PmsMonitorDTO;
import com.njcn.device.pms.pojo.dto.PmsMonitorInfoDTO;
@@ -14,6 +16,7 @@ import com.njcn.device.pq.pojo.po.Overlimit;
import java.util.List;
import java.util.Map;
/**
* <p>
@@ -133,4 +136,11 @@ public interface IMonitorService extends IService<Monitor> {
* @return MonitorVO
*/
MonitorVO monitorTerminal(MonitorTerminalParam param);
/**
* 根据部门id获取监测点信息
* @return
*/
List<PmsDeptGetChildrenDTO> deptMonitor(PmsDeptGetLineParam param);
}

View File

@@ -1,6 +1,7 @@
package com.njcn.device.pms.service.majornetwork.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -9,9 +10,12 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.common.pojo.dto.SimpleDTO;
import com.njcn.common.pojo.enums.common.DataStateEnum;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.device.biz.pojo.dto.PmsDeptGetChildrenDTO;
import com.njcn.device.biz.pojo.param.PmsDeptGetLineParam;
import com.njcn.device.biz.utils.COverlimit;
import com.njcn.device.pms.enums.PmsDeviceResponseEnum;
import com.njcn.device.pms.mapper.majornetwork.*;
import com.njcn.device.pms.pojo.dto.PmsGeneralDeviceDTO;
import com.njcn.device.pms.pojo.dto.PmsMonitorBaseDTO;
import com.njcn.device.pms.pojo.dto.PmsMonitorDTO;
import com.njcn.device.pms.pojo.dto.PmsMonitorInfoDTO;
@@ -28,6 +32,7 @@ import com.njcn.device.pq.pojo.po.Overlimit;
import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.enums.SystemResponseEnum;
import com.njcn.system.pojo.po.DictData;
import com.njcn.user.pojo.dto.DeptDTO;
import com.njcn.user.pojo.po.Dept;
import com.njcn.web.factory.PageFactory;
import lombok.RequiredArgsConstructor;
@@ -37,12 +42,10 @@ import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* <p>
@@ -321,6 +324,61 @@ public class MonitorServiceImpl extends ServiceImpl<MonitorMapper, Monitor> impl
return monitorTerminal;
}
@Override
public List<PmsDeptGetChildrenDTO> deptMonitor(PmsDeptGetLineParam param) {
//返回主网和配网监测信息
List<PmsDeptGetChildrenDTO> deviceInfos = new ArrayList<>();
List<DeptDTO> deptInfos = deptFeignClient.getDeptDescendantIndexes(param.getDeptId(), Stream.of(0,1).collect(Collectors.toList())).getData();
List<DeptDTO> directDeptInfos = deptInfos.stream()
.filter(deptDTO -> deptDTO.getPid().equals(param.getDeptId()))
.collect(Collectors.toList());
if (CollUtil.isEmpty(directDeptInfos)) {
//没有直接子部门,获取当前部门所有信息
List<DeptDTO> dept = deptInfos.stream()
.filter(deptDTO -> deptDTO.getId().equals(param.getDeptId()))
.collect(Collectors.toList());
deviceInfos.add(getPmsMonitor(dept.get(0), Collections.singletonList(dept.get(0).getCode())));
}else{
for (DeptDTO deptDTO : directDeptInfos) {
//筛选上级部门pids包含该id的所有部门
List<DeptDTO> descendantDeptDTO = deptInfos.stream()
.filter(d -> d.getPids().contains(deptDTO.getId()))
.collect(Collectors.toList());
//形成需要查询监测点的部门索引
List<String> deptIdList = descendantDeptDTO.stream()
.map(DeptDTO::getCode)
.distinct()
.collect(Collectors.toList());
deptIdList.add(deptDTO.getCode());
deviceInfos.add(getPmsMonitor(deptDTO, deptIdList));
}
}
return deviceInfos;
}
private PmsDeptGetChildrenDTO getPmsMonitor(DeptDTO deptDTO, List<String> deptIdList) {
PmsDeptGetChildrenDTO pmsDeptGetChildrenDTO = new PmsDeptGetChildrenDTO();
pmsDeptGetChildrenDTO.setDeptId(deptDTO.getCode());
if (deptDTO.getType() == 0) {
pmsDeptGetChildrenDTO.setDeptName(deptDTO.getArea());
} else {
pmsDeptGetChildrenDTO.setDeptName(deptDTO.getName());
}
pmsDeptGetChildrenDTO.setDeptChildren(deptIdList);
if(CollUtil.isNotEmpty(deptIdList)){
//主网监测点
List<Monitor> monitorList = this.list(new LambdaQueryWrapper<Monitor>().in(CollUtil.isNotEmpty(deptIdList),Monitor::getOrgId, deptIdList));
//配网监测点
List<PmsMonitorBaseDTO> pwMonitorList = iDistributionMonitorService.getMonitorByCondition(deptIdList,null);
pmsDeptGetChildrenDTO.setMonitorIds(monitorList.stream().map(Monitor::getId).distinct().collect(Collectors.toList()));
pmsDeptGetChildrenDTO.setPwMonitorIds(pwMonitorList.stream().map(PmsMonitorBaseDTO::getMonitorId).distinct().collect(Collectors.toList()));
}else{
pmsDeptGetChildrenDTO.setMonitorIds(new ArrayList<>());
pmsDeptGetChildrenDTO.setPwMonitorIds(new ArrayList<>());
}
return pmsDeptGetChildrenDTO;
}
private void checkParam(MonitorParam monitorParam, boolean update) {