From 26bc51153690c6317572f0219689422738b70c7c Mon Sep 17 00:00:00 2001 From: wr <1754607820@qq.com> Date: Wed, 26 Apr 2023 13:50:02 +0800 Subject: [PATCH] =?UTF-8?q?pms=E8=8E=B7=E5=8F=96=E9=83=A8=E9=97=A8?= =?UTF-8?q?=E4=B8=8B=E9=9D=A2=E6=89=80=E6=9C=89=E7=9B=91=E6=B5=8B=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../biz/pojo/dto/PmsDeptGetChildrenDTO.java | 31 +++++++++ .../biz/pojo/param/PmsDeptGetLineParam.java | 18 +++++ .../ledgerManger/DeptMonitorController.java | 53 +++++++++++++++ .../service/majornetwork/IMonitorService.java | 10 +++ .../majornetwork/impl/MonitorServiceImpl.java | 66 +++++++++++++++++-- 5 files changed, 174 insertions(+), 4 deletions(-) create mode 100644 pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/PmsDeptGetChildrenDTO.java create mode 100644 pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/param/PmsDeptGetLineParam.java create mode 100644 pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/DeptMonitorController.java diff --git a/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/PmsDeptGetChildrenDTO.java b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/PmsDeptGetChildrenDTO.java new file mode 100644 index 000000000..ac2b4ea7c --- /dev/null +++ b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/PmsDeptGetChildrenDTO.java @@ -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 deptChildren; + + @ApiModelProperty(name = "monitorIds",value = "主网监测点信息") + private List monitorIds; + + @ApiModelProperty(name = "pwMonitorIds",value = "配网监测点信息") + private List pwMonitorIds; + +} diff --git a/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/param/PmsDeptGetLineParam.java b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/param/PmsDeptGetLineParam.java new file mode 100644 index 000000000..365d4c91b --- /dev/null +++ b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/param/PmsDeptGetLineParam.java @@ -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; +} diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/DeptMonitorController.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/DeptMonitorController.java new file mode 100644 index 000000000..4ae07c604 --- /dev/null +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/controller/ledgerManger/DeptMonitorController.java @@ -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> deptGetLineList(@RequestBody @Validated PmsDeptGetLineParam param) { + TimeInterval timer = new TimeInterval(); + String methodDescribe = getMethodDescribe("deptGetLineList"); + List monitor = monitorService.deptMonitor(param); + log.info("运行时长" + timer.intervalRestart()); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, monitor, methodDescribe); + } + +} diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/IMonitorService.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/IMonitorService.java index fa5671017..0019b8117 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/IMonitorService.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/IMonitorService.java @@ -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; /** *

@@ -133,4 +136,11 @@ public interface IMonitorService extends IService { * @return MonitorVO */ MonitorVO monitorTerminal(MonitorTerminalParam param); + + + /** + * 根据部门id获取监测点信息 + * @return + */ + List deptMonitor(PmsDeptGetLineParam param); } diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/impl/MonitorServiceImpl.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/impl/MonitorServiceImpl.java index 0bea99c69..5edb2f3c7 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/impl/MonitorServiceImpl.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/majornetwork/impl/MonitorServiceImpl.java @@ -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; /** *

@@ -321,6 +324,61 @@ public class MonitorServiceImpl extends ServiceImpl impl return monitorTerminal; } + @Override + public List deptMonitor(PmsDeptGetLineParam param) { + //返回主网和配网监测信息 + List deviceInfos = new ArrayList<>(); + List deptInfos = deptFeignClient.getDeptDescendantIndexes(param.getDeptId(), Stream.of(0,1).collect(Collectors.toList())).getData(); + List directDeptInfos = deptInfos.stream() + .filter(deptDTO -> deptDTO.getPid().equals(param.getDeptId())) + .collect(Collectors.toList()); + if (CollUtil.isEmpty(directDeptInfos)) { + //没有直接子部门,获取当前部门所有信息 + List 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 descendantDeptDTO = deptInfos.stream() + .filter(d -> d.getPids().contains(deptDTO.getId())) + .collect(Collectors.toList()); + //形成需要查询监测点的部门索引 + List 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 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 monitorList = this.list(new LambdaQueryWrapper().in(CollUtil.isNotEmpty(deptIdList),Monitor::getOrgId, deptIdList)); + //配网监测点 + List 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) {