From 2cd5cbcff5dfbdc1b476d6bad454e0c7f51634a5 Mon Sep 17 00:00:00 2001 From: xy <748613699@qq.com> Date: Fri, 12 Apr 2024 13:28:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=B0=83=E6=95=B4-=E5=85=BC?= =?UTF-8?q?=E5=AE=B9=E4=BE=BF=E6=90=BA=E5=BC=8F=E8=AE=BE=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pojo/po/CsEquipmentDeliveryPO.java | 2 +- .../com/njcn/csdevice/pojo/po/CsLinePO.java | 2 + .../controller/ledger/WlLedgerController.java | 55 +++++++++ .../csdevice/service/CsLinePOService.java | 2 +- .../csdevice/service/IWlLedgerService.java | 29 +++++ .../impl/CsEquipmentDeliveryServiceImpl.java | 113 +++++++++--------- .../service/impl/IWlLedgerServiceImpl.java | 111 +++++++++++++++++ 7 files changed, 253 insertions(+), 61 deletions(-) create mode 100644 cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/ledger/WlLedgerController.java create mode 100644 cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/IWlLedgerService.java create mode 100644 cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/IWlLedgerServiceImpl.java diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsEquipmentDeliveryPO.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsEquipmentDeliveryPO.java index 4b57ab7..a5b25da 100644 --- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsEquipmentDeliveryPO.java +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsEquipmentDeliveryPO.java @@ -103,7 +103,7 @@ public class CsEquipmentDeliveryPO extends BaseEntity { private String qrPath; /** - * 设备当前流程(1:设备登记,2:功能调试,3:出厂调试),4:设备投运) + * 设备当前流程(1:设备登记,2:功能调试,3:出厂调试,4:设备投运) */ @TableField(value = "process") private Integer process; diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsLinePO.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsLinePO.java index dba8c62..07d97fd 100644 --- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsLinePO.java +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/po/CsLinePO.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.njcn.db.bo.BaseEntity; import lombok.Data; +import lombok.EqualsAndHashCode; /** * @@ -15,6 +16,7 @@ import lombok.Data; * @author clam * @version V1.0.0 */ +@EqualsAndHashCode(callSuper = true) @Data @TableName(value = "cs_line") public class CsLinePO extends BaseEntity { diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/ledger/WlLedgerController.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/ledger/WlLedgerController.java new file mode 100644 index 0000000..a0666ad --- /dev/null +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/ledger/WlLedgerController.java @@ -0,0 +1,55 @@ +package com.njcn.csdevice.controller.ledger; + +import com.njcn.common.pojo.annotation.OperateInfo; +import com.njcn.common.pojo.enums.common.LogEnum; +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.common.utils.HttpResultUtil; +import com.njcn.csdevice.pojo.vo.CsLedgerVO; +import com.njcn.csdevice.service.IWlLedgerService; +import com.njcn.web.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 类的介绍: + * + * @author xuyang + * @version 1.0.0 + * @createTime 2024/4/9 14:42 + */ +@RestController +@RequestMapping("/wlLedger") +@Slf4j +@Api(tags = "便携式终端台账") +@AllArgsConstructor +public class WlLedgerController extends BaseController { + + private final IWlLedgerService wlLedgerService; + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/wlDevice") + @ApiOperation("设备列表") + public HttpResult> getWlDevice(){ + String methodDescribe = getMethodDescribe("getWlDevice"); + List list = wlLedgerService.getWlDevice(); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); + } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/wlDeviceTree") + @ApiOperation("二层设备树(设备-监测点)") + public HttpResult> getWlDeviceTree(){ + String methodDescribe = getMethodDescribe("getWlDeviceTree"); + List list = wlLedgerService.getWlDeviceTree(); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); + } + +} diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/CsLinePOService.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/CsLinePOService.java index 7723eac..5b1b786 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/CsLinePOService.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/CsLinePOService.java @@ -24,7 +24,7 @@ public interface CsLinePOService extends IService{ List getLineByDev(List list); - List queryByDevId(String devId); + List queryByDevId(String devId); /** diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/IWlLedgerService.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/IWlLedgerService.java new file mode 100644 index 0000000..862171e --- /dev/null +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/IWlLedgerService.java @@ -0,0 +1,29 @@ +package com.njcn.csdevice.service; + +import com.njcn.csdevice.pojo.vo.CsLedgerVO; + +import java.util.List; + +/** + * 类的介绍: + * + * @author xuyang + * @version 1.0.0 + * @createTime 2024/4/9 14:45 + */ + +public interface IWlLedgerService { + + /** + * 便携式设备列表 + * @return + */ + List getWlDevice(); + + /** + * 便携式设备两层树(装置-监测点) + * @return + */ + List getWlDeviceTree(); + +} diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsEquipmentDeliveryServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsEquipmentDeliveryServiceImpl.java index c83b080..c6212cb 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsEquipmentDeliveryServiceImpl.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsEquipmentDeliveryServiceImpl.java @@ -5,6 +5,7 @@ import cn.afterturn.easypoi.excel.ExcelImportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; import cn.afterturn.easypoi.excel.entity.ImportParams; import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.text.StrPool; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -36,6 +37,7 @@ import com.njcn.redis.pojo.enums.AppRedisKey; import com.njcn.system.api.DicDataFeignClient; import com.njcn.system.api.DictTreeFeignClient; import com.njcn.system.enums.DicDataEnum; +import com.njcn.system.enums.DicTreeEnum; import com.njcn.system.pojo.vo.DictTreeVO; import com.njcn.web.factory.PageFactory; import com.njcn.web.utils.RequestUtil; @@ -274,76 +276,69 @@ public class CsEquipmentDeliveryServiceImpl extends ServiceImpl dataSetList = new ArrayList<>(); - CsEquipmentDeliveryPO csEquipmentDeliveryPo = this.lambdaQuery().eq(CsEquipmentDeliveryPO::getId,deviceId).one(); - if (Objects.isNull(lineId) || StringUtils.isBlank(lineId)){ + CsEquipmentDeliveryPO csEquipmentDeliveryPo = this.lambdaQuery().eq(CsEquipmentDeliveryPO::getId, deviceId).one(); + if (lineId == null || lineId.isEmpty()) { List dataSet = new ArrayList<>(); List modelId = csDevModelRelationService.findModelByDevId(deviceId); - modelId.forEach(item->{ - dataSet.addAll(csDataSetService.findDataSetByModelId(item.getModelId())); - }); - BeanUtils.copyProperties(csEquipmentDeliveryPo,deviceManagerVo); - dataSet.forEach(item->{ - DeviceManagerVO.DataSetVO dataSetVO = new DeviceManagerVO.DataSetVO(); - dataSetVO.setId(item.getId()); - dataSetVO.setName(item.getAnotherName()); - dataSetVO.setType("rt"); - dataSetList.add(dataSetVO); - if (Objects.equals(type,"history")){ - DeviceManagerVO.DataSetVO dataSetVo2 = new DeviceManagerVO.DataSetVO(); - dataSetVo2.setId(item.getId()); - dataSetVo2.setName("历史"+item.getAnotherName()); - dataSetVo2.setType("history"); - dataSetList.add(dataSetVo2); + if (CollUtil.isNotEmpty(modelId)){ + for (CsDevModelRelationPO item : modelId) { + dataSet.addAll(csDataSetService.findDataSetByModelId(item.getModelId())); } - }); - deviceManagerVo.setDataSetList(dataSetList); - CsLedger csLedger = csLedgerService.findDataById(deviceId); - deviceManagerVo.setTime(csLedger.getCreateTime()); + } + setDataSetValues(csEquipmentDeliveryPo, dataSet, dataSetList, type, deviceManagerVo); } else { - CsLinePO line = csLinePOService.listByIds(Collections.singletonList(lineId)).get(0); - String code = dicDataFeignClient.getDicDataById(line.getPosition()).getData().getCode(); - String modelId = null; - List dataSet = new ArrayList<>(); - //治理监测点 - if (Objects.equals(code, DicDataEnum.OUTPUT_SIDE.getCode())){ - modelId = csDevModelRelationService.getModelByType(deviceId,0); - dataSet = csDataSetService.findDataSetByModelId(modelId,0); - } - //电网侧监测点 - else if (Objects.equals(code, DicDataEnum.GRID_SIDE.getCode())){ - modelId = csDevModelRelationService.getModelByType(deviceId,1); - dataSet = csDataSetService.findDataSetByModelId(modelId,1); - } - //负载侧监测点 - else if (Objects.equals(code, DicDataEnum.LOAD_SIDE.getCode())){ - modelId = csDevModelRelationService.getModelByType(deviceId,1); - dataSet = csDataSetService.findDataSetByModelId(modelId,2); - } - BeanUtils.copyProperties(csEquipmentDeliveryPo,deviceManagerVo); - dataSet.forEach(item->{ - DeviceManagerVO.DataSetVO dataSetVO = new DeviceManagerVO.DataSetVO(); - dataSetVO.setId(item.getId()); - dataSetVO.setName(item.getAnotherName()); - dataSetVO.setType("rt"); - dataSetList.add(dataSetVO); - if (Objects.equals(type,"history")){ - DeviceManagerVO.DataSetVO dataSetVo2 = new DeviceManagerVO.DataSetVO(); - dataSetVo2.setId(item.getId()); - dataSetVo2.setName("历史"+item.getAnotherName()); - dataSetVo2.setType("history"); - dataSetList.add(dataSetVo2); + String devTypeCode = dictTreeFeignClient.queryById(csEquipmentDeliveryPo.getDevType()).getData().getCode(); + if (Objects.equals(devTypeCode, DicDataEnum.CONNECT_DEV.getCode())) { + CsLinePO line = csLinePOService.getById(lineId); + String code = dicDataFeignClient.getDicDataById(line.getPosition()).getData().getCode(); + String modelId = ""; + List dataSet = new ArrayList<>(); + //治理监测点 + if (Objects.equals(code, DicDataEnum.OUTPUT_SIDE.getCode())){ + modelId = csDevModelRelationService.getModelByType(deviceId,0); + dataSet = csDataSetService.findDataSetByModelId(modelId,0); } - }); - deviceManagerVo.setDataSetList(dataSetList); - CsLedger csLedger = csLedgerService.findDataById(deviceId); - deviceManagerVo.setTime(csLedger.getCreateTime()); + //电网侧监测点 + else if (Objects.equals(code, DicDataEnum.GRID_SIDE.getCode())){ + modelId = csDevModelRelationService.getModelByType(deviceId,1); + dataSet = csDataSetService.findDataSetByModelId(modelId,1); + } + //负载侧监测点 + else if (Objects.equals(code, DicDataEnum.LOAD_SIDE.getCode())){ + modelId = csDevModelRelationService.getModelByType(deviceId,1); + dataSet = csDataSetService.findDataSetByModelId(modelId,2); + } + setDataSetValues(csEquipmentDeliveryPo, dataSet, dataSetList, type, deviceManagerVo); + } } return deviceManagerVo; } + private void setDataSetValues(CsEquipmentDeliveryPO csEquipmentDeliveryPo, List dataSet, List dataSetList, String type, DeviceManagerVO deviceManagerVo) { + BeanUtils.copyProperties(csEquipmentDeliveryPo, deviceManagerVo); + if (CollUtil.isNotEmpty(dataSet)) { + for (CsDataSet item : dataSet) { + DeviceManagerVO.DataSetVO dataSetVO = new DeviceManagerVO.DataSetVO(); + dataSetVO.setId(item.getId()); + dataSetVO.setName(item.getAnotherName()); + dataSetVO.setType("rt"); + dataSetList.add(dataSetVO); + if (Objects.equals(type, "history")) { + DeviceManagerVO.DataSetVO dataSetVo2 = new DeviceManagerVO.DataSetVO(); + dataSetVo2.setId(item.getId()); + dataSetVo2.setName("历史" + item.getAnotherName()); + dataSetVo2.setType("history"); + dataSetList.add(dataSetVo2); + } + } + deviceManagerVo.setDataSetList(dataSetList); + deviceManagerVo.setTime(csLinePOService.findByNdid(csEquipmentDeliveryPo.getNdid()).get(0).getCreateTime()); + } + } + @Override public void updateSoftInfoBynDid(String nDid, String id, Integer module) { LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/IWlLedgerServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/IWlLedgerServiceImpl.java new file mode 100644 index 0000000..7c16951 --- /dev/null +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/IWlLedgerServiceImpl.java @@ -0,0 +1,111 @@ +package com.njcn.csdevice.service.impl; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.njcn.csdevice.mapper.CsEquipmentDeliveryMapper; +import com.njcn.csdevice.mapper.CsLinePOMapper; +import com.njcn.csdevice.pojo.po.CsEquipmentDeliveryPO; +import com.njcn.csdevice.pojo.po.CsLinePO; +import com.njcn.csdevice.pojo.vo.CsLedgerVO; +import com.njcn.csdevice.service.IWlLedgerService; +import com.njcn.system.api.DictTreeFeignClient; +import com.njcn.system.enums.DicDataEnum; +import com.njcn.system.pojo.vo.DictTreeVO; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.stream.Collectors; + +/** + * 类的介绍: + * + * @author xuyang + * @version 1.0.0 + * @createTime 2024/4/9 14:45 + */ +@Service +@RequiredArgsConstructor +public class IWlLedgerServiceImpl implements IWlLedgerService { + private final DictTreeFeignClient dictTreeFeignClient; + private final CsEquipmentDeliveryMapper csEquipmentDeliveryMapper; + private final CsLinePOMapper csLinePOMapper; + + @Override + public List getWlDevice() { + List result = new ArrayList<>(); + // 获取便携式设备字典 + DictTreeVO vo = Optional.ofNullable(dictTreeFeignClient.queryByCode(DicDataEnum.PORTABLE.getCode()).getData()).orElse(null); + if (vo == null) { + return result; + } + // 获取便携设备列表 + List devList = csEquipmentDeliveryMapper.selectList( + new LambdaQueryWrapper() + .eq(CsEquipmentDeliveryPO::getDevType, vo.getId()) + .ne(CsEquipmentDeliveryPO::getRunStatus, 0) + ); + if (CollUtil.isEmpty(devList)) { + return result; + } + // 组装结果返回 + result = devList.stream().map(dev -> { + CsLedgerVO csLedgerVO = new CsLedgerVO(); + csLedgerVO.setId(dev.getId()); + csLedgerVO.setName(dev.getName()); + csLedgerVO.setLevel(0); + csLedgerVO.setComFlag(dev.getRunStatus()); + return csLedgerVO; + }).collect(Collectors.toList()); + return result; + } + + @Override + public List getWlDeviceTree() { + List result = new ArrayList<>(); + // 获取便携式设备字典 + DictTreeVO vo = Optional.ofNullable(dictTreeFeignClient.queryByCode(DicDataEnum.PORTABLE.getCode()).getData()).orElse(null); + if (vo == null) { + return result; + } + // 获取便携设备列表 + List devList = csEquipmentDeliveryMapper.selectList( + new LambdaQueryWrapper() + .eq(CsEquipmentDeliveryPO::getDevType, vo.getId()) + .ne(CsEquipmentDeliveryPO::getRunStatus, 0) + ); + if (CollUtil.isEmpty(devList)) { + return result; + } + // 获取监测点列表 + List devIds = devList.stream().map(CsEquipmentDeliveryPO::getId).collect(Collectors.toList()); + List lineList = csLinePOMapper.selectList( + new LambdaQueryWrapper() + .in(CsLinePO::getDeviceId, devIds) + ); + // 组装结果返回 + result = devList.stream().map(dev -> { + CsLedgerVO csLedgerVO = new CsLedgerVO(); + csLedgerVO.setId(dev.getId()); + csLedgerVO.setName(dev.getName()); + csLedgerVO.setLevel(0); + csLedgerVO.setComFlag(dev.getRunStatus()); + List children = lineList.stream() + .filter(line -> Objects.equals(dev.getId(), line.getDeviceId())) + .map(line -> { + CsLedgerVO vo2 = new CsLedgerVO(); + vo2.setId(line.getLineId()); + vo2.setPid(dev.getId()); + vo2.setName(line.getName()); + vo2.setLevel(1); + return vo2; + }).collect(Collectors.toList()); + csLedgerVO.setChildren(children); + return csLedgerVO; + }).collect(Collectors.toList()); + return result; + } +}