diff --git a/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/LineDevGetDTO.java b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/LineDevGetDTO.java index 595c5cfe5..22de124d8 100644 --- a/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/LineDevGetDTO.java +++ b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/LineDevGetDTO.java @@ -60,6 +60,11 @@ public class LineDevGetDTO { */ private String lineTag; + /** + * 监测点对象类型 + */ + private String objType; + /** * 装置通讯状态 */ diff --git a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/impl/CommTerminalServiceImpl.java b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/impl/CommTerminalServiceImpl.java index 4a0ab493b..9164bd6af 100644 --- a/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/impl/CommTerminalServiceImpl.java +++ b/pqs-device/pms-device/pms-device-boot/src/main/java/com/njcn/device/pms/service/ledgerManger/impl/CommTerminalServiceImpl.java @@ -157,6 +157,7 @@ public class CommTerminalServiceImpl implements CommTerminalService { lineDevGetDTO.setType(1); lineDevGetDTO.setLineType(1); lineDevGetDTO.setLineTag(it.getMonitorTag()); + lineDevGetDTO.setObjType(it.getObjType()); //预处理模块需要的id修改value为id lineDevGetDTO.setVoltageLevel(it.getVoltageLevel()); lineDevGetDTO.setIsUpToGrid(it.getIsUpToGrid()); diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/upload/RUploadPointStatisticalDataD.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/upload/RUploadPointStatisticalDataD.java index 5100e6627..87ece3ada 100644 --- a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/upload/RUploadPointStatisticalDataD.java +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/po/upload/RUploadPointStatisticalDataD.java @@ -94,6 +94,7 @@ public class RUploadPointStatisticalDataD { /** * 所属站别 */ + @MppMultiId private String stationType; /** diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadPointStatisticalDataDServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadPointStatisticalDataDServiceImpl.java index 55b6a40b1..89004474e 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadPointStatisticalDataDServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/upload/impl/RUploadPointStatisticalDataDServiceImpl.java @@ -16,6 +16,14 @@ import com.njcn.prepare.harmonic.mapper.mysql.upload.RUploadPointStatisticalData import com.njcn.prepare.harmonic.pojo.bo.CalculatedParam; import com.njcn.prepare.harmonic.pojo.dto.UploadPointStatisticalParam; import com.njcn.prepare.harmonic.service.mysql.upload.IRUploadPointStatisticalDataDService; +import com.njcn.system.api.DicDataFeignClient; +import com.njcn.system.api.DictTreeFeignClient; +import com.njcn.system.enums.DicDataEnum; +import com.njcn.system.enums.DicDataTypeEnum; +import com.njcn.system.enums.DicTreeEnum; +import com.njcn.system.pojo.po.DictData; +import com.njcn.system.pojo.po.SysDicTreePO; +import com.njcn.system.pojo.vo.DictTreeVO; import com.njcn.user.api.DeptFeignClient; import com.njcn.user.pojo.po.Dept; import lombok.RequiredArgsConstructor; @@ -24,6 +32,7 @@ import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -42,6 +51,10 @@ public class RUploadPointStatisticalDataDServiceImpl extends MppServiceImpl l1 = calculatedParam.getIdList(); - l1.forEach(item->{ - List newList = item.getLineBaseList().stream().filter(o ->Objects.equals(o.getIsUpToGrid(),1)).collect(Collectors.toList()); - item.setLineBaseList(newList); - UploadPointStatisticalParam uploadPointStatisticalParam = new UploadPointStatisticalParam(); - uploadPointStatisticalParam.setOrgId(item.getUnitId()); - List lineInfo = item.getLineBaseList(); - uploadPointStatisticalParam.setOnlineMonitorNum(lineInfo.size()); - uploadPointStatisticalParam.setRunMonitorNum(lineInfo.size()); - uploadPointStatisticalParam.setRunTerminalNum((int)lineInfo.stream().map(LineDevGetDTO::getDevId).distinct().count()); - paramList.add(uploadPointStatisticalParam); - }); - Map> devMap = paramList.stream().collect(Collectors.groupingBy(UploadPointStatisticalParam::getOrgId)); - //获取数据个数 - List dataList = getStatIntegrityData(calculatedParam.getDataDate()); + + //查询所有一级树字典 + List sysDicTreePOList = dictTreeFeignClient.queryAll().getData(); + + + List temTreeList = sysDicTreePOList.stream().filter(item -> Objects.equals(item.getCode(), DicTreeEnum.Trans_Sub.getCode()) + || Objects.equals(item.getCode(), DicTreeEnum.Converter.getCode()) || Objects.equals(item.getCode(), DicTreeEnum.Ele_Railways.getCode()) + || Objects.equals(item.getCode(), DicTreeEnum.Wind_Farms.getCode()) || Objects.equals(item.getCode(), DicTreeEnum.Power_Station.getCode()) + || Objects.equals(item.getCode(), DicTreeEnum.Smelting_Load.getCode()) || Objects.equals(item.getCode(), DicTreeEnum.Imp_Users.getCode()) + ).collect(Collectors.toList()); + + Map> mapKey = new HashMap<>(); + List otherIds = new ArrayList<>(); + for(SysDicTreePO sysDicTreePO : temTreeList){ + List temList = sysDicTreePOList.stream().filter(item->item.getPid().equals(sysDicTreePO.getId())).collect(Collectors.toList()); + List ids = temList.stream().map(SysDicTreePO::getId).distinct().collect(Collectors.toList()); + ids.add(sysDicTreePO.getId()); + mapKey.put(sysDicTreePO.getCode(),ids); + otherIds.addAll(ids); + } + + + + + + List dictDataList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.Station_Type.getCode()).getData(); + Map dictDataMap = dictDataList.stream().collect(Collectors.toMap(DictData::getCode,Function.identity())); + + //获取所有单位 List deptList = deptFeignClient.getAllDept().getData(); - Map> deptMap = deptList.stream().collect(Collectors.groupingBy(Dept::getCode)); - l1.forEach(item->{ - if (Objects.equals(Integer.parseInt(UploadEnum.NJCN_DEPT_LEVEL_1.getCode()),item.getDeptLevel())){ + Map> deptMap = deptList.stream().collect(Collectors.groupingBy(Dept::getCode)); + //筛选国网上送监测点 + List l1 = calculatedParam.getIdList(); + + //获取数据个数 + List dataList = getStatIntegrityData(calculatedParam.getDataDate()); + l1.forEach(item -> { + + if (Objects.equals(Integer.parseInt(UploadEnum.NJCN_DEPT_LEVEL_1.getCode()), item.getDeptLevel())) { return; } + + + List newList = item.getLineBaseList().stream().filter(o -> Objects.equals(o.getIsUpToGrid(), 1)).collect(Collectors.toList()); + item.setLineBaseList(newList); + + + List otherMonitor = item.getLineBaseList().stream().filter(me->!otherIds.contains(me.getObjType())).collect(Collectors.toList()); + + + mapKey.forEach((key, val) -> { + + List keyItem = item.getLineBaseList().stream().filter(o -> val.contains(o.getObjType())).collect(Collectors.toList()); + RUploadPointStatisticalDataD rUploadPointStatisticalDataD = new RUploadPointStatisticalDataD(); + switch (key){ + case "2100": + rUploadPointStatisticalDataD.setStationType(dictDataMap.get(DicDataEnum.Trans_Sub.getCode()).getId()); + break; + case "1200": + rUploadPointStatisticalDataD.setStationType(dictDataMap.get(DicDataEnum.Converter.getCode()).getId()); + break; + case "1300": + rUploadPointStatisticalDataD.setStationType(dictDataMap.get(DicDataEnum.Ele_Railways.getCode()).getId()); + break; + case "1401": + rUploadPointStatisticalDataD.setStationType(dictDataMap.get(DicDataEnum.Wind_Farms.getCode()).getId()); + break; + case "1402": + rUploadPointStatisticalDataD.setStationType(dictDataMap.get(DicDataEnum.Power_Station.getCode()).getId()); + break; + case "2600": + rUploadPointStatisticalDataD.setStationType(dictDataMap.get(DicDataEnum.Smelting_Load.getCode()).getId()); + break; + case "2400": + rUploadPointStatisticalDataD.setStationType(dictDataMap.get(DicDataEnum.Imp_Users.getCode()).getId()); + break; + } + + + rUploadPointStatisticalDataD.setId(IdUtil.simpleUUID()); + rUploadPointStatisticalDataD.setProvinceId(dept.getCode()); + rUploadPointStatisticalDataD.setProvinceName(dept.getName()); + rUploadPointStatisticalDataD.setStatisticalDate(calculatedParam.getDataDate()); + rUploadPointStatisticalDataD.setStatisticalType(UploadEnum.STATISTICAL_TYPE_03.getCode()); + rUploadPointStatisticalDataD.setUploadStatus(Integer.parseInt(UploadEnum.UPLOAD_STATUS_0.getCode())); + //fixme 主配网标识文档中没有,先随便定义一个,后期调整 + rUploadPointStatisticalDataD.setDistributionFlag(UploadEnum.DISTRIBUTION_FLAG_01.getCode()); + //fixme over + judgeLevel(item.getDeptLevel(), rUploadPointStatisticalDataD, item.getUnitId(), item.getUnitName(), deptList, deptMap); + + + long pointCount = keyItem.stream().map(LineDevGetDTO::getPointId).distinct().count(); + long devCount = keyItem.stream().map(LineDevGetDTO::getDevId).distinct().count(); + rUploadPointStatisticalDataD.setRunTerminalNum((int) devCount); + rUploadPointStatisticalDataD.setOnlineMonitorNum((int) pointCount); + rUploadPointStatisticalDataD.setRunMonitorNum((int) pointCount); + rUploadPointStatisticalDataD.setOnlineMonitorRate(pointCount == 0 ? 0d : BigDecimal.valueOf(rUploadPointStatisticalDataD.getOnlineMonitorNum() * 100.0 / rUploadPointStatisticalDataD.getRunMonitorNum()).setScale(4, RoundingMode.HALF_UP).doubleValue()); + + + List l3 = dataList.stream().filter(it -> keyItem.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList()).contains(it.getLineIndex())).collect(Collectors.toList()); + int due = l3.stream().mapToInt(RStatIntegrityD::getDueTime).sum(); + int real = l3.stream().mapToInt(RStatIntegrityD::getRealTime).sum(); + rUploadPointStatisticalDataD.setExpectCollectNum(due); + rUploadPointStatisticalDataD.setActualCollectNum(real); + + if (due == 0 || real == 0) { + rUploadPointStatisticalDataD.setDataFullRate(BigDecimal.valueOf(0).setScale(4, RoundingMode.HALF_UP).doubleValue()); + } else { + rUploadPointStatisticalDataD.setDataFullRate(BigDecimal.valueOf(real * 100.0 / due).setScale(4, RoundingMode.HALF_UP).doubleValue()); + } + rUploadPointStatisticalDataD.setStationMonitorNum(l3.size()); + + + + result.add(rUploadPointStatisticalDataD); + + + }); + + + //其他 RUploadPointStatisticalDataD rUploadPointStatisticalDataD = new RUploadPointStatisticalDataD(); + rUploadPointStatisticalDataD.setStationType(dictDataMap.get(DicDataEnum.Station_Other.getCode()).getId()); + rUploadPointStatisticalDataD.setId(IdUtil.simpleUUID()); rUploadPointStatisticalDataD.setProvinceId(dept.getCode()); rUploadPointStatisticalDataD.setProvinceName(dept.getName()); rUploadPointStatisticalDataD.setStatisticalDate(calculatedParam.getDataDate()); rUploadPointStatisticalDataD.setStatisticalType(UploadEnum.STATISTICAL_TYPE_03.getCode()); rUploadPointStatisticalDataD.setUploadStatus(Integer.parseInt(UploadEnum.UPLOAD_STATUS_0.getCode())); - //fixme 主配网标识文档中没有,先随便定义一个,后期调整 + //fixme 主配网标识文档中没有,先随便定义一个,后期调整 rUploadPointStatisticalDataD.setDistributionFlag(UploadEnum.DISTRIBUTION_FLAG_01.getCode()); //fixme over - judgeLevel(item.getDeptLevel(),rUploadPointStatisticalDataD,item.getUnitId(),item.getUnitName(),deptList,deptMap); - List l11 = devMap.get(item.getUnitId()); - if (CollectionUtil.isNotEmpty(l11)){ - UploadPointStatisticalParam po = l11.get(0); - rUploadPointStatisticalDataD.setRunTerminalNum(po.getRunTerminalNum()); - rUploadPointStatisticalDataD.setOnlineMonitorNum(po.getOnlineMonitorNum()); - rUploadPointStatisticalDataD.setRunMonitorNum(po.getRunMonitorNum()); - rUploadPointStatisticalDataD.setOnlineMonitorRate(po.getOnlineMonitorNum()==0?0d:BigDecimal.valueOf(po.getOnlineMonitorNum()*100.0/po.getRunMonitorNum()).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue()); - } - //获取当前单位下所有的监测点,匹配监测点数据 - List l2 = item.getLineBaseList(); - if (CollectionUtil.isNotEmpty(l2)){ - List l3 = dataList.stream().filter(it -> l2.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList()).contains(it.getLineIndex())).collect(Collectors.toList()); + judgeLevel(item.getDeptLevel(), rUploadPointStatisticalDataD, item.getUnitId(), item.getUnitName(), deptList, deptMap); + + + long pointCount = otherMonitor.stream().map(LineDevGetDTO::getPointId).distinct().count(); + long devCount = otherMonitor.stream().map(LineDevGetDTO::getDevId).distinct().count(); + rUploadPointStatisticalDataD.setRunTerminalNum((int) devCount); + rUploadPointStatisticalDataD.setOnlineMonitorNum((int) pointCount); + rUploadPointStatisticalDataD.setRunMonitorNum((int) pointCount); + rUploadPointStatisticalDataD.setOnlineMonitorRate(pointCount == 0 ? 0d : BigDecimal.valueOf(rUploadPointStatisticalDataD.getOnlineMonitorNum() * 100.0 / rUploadPointStatisticalDataD.getRunMonitorNum()).setScale(4, RoundingMode.HALF_UP).doubleValue()); + + + List l3 = dataList.stream().filter(it -> otherMonitor.stream().map(LineDevGetDTO::getPointId).collect(Collectors.toList()).contains(it.getLineIndex())).collect(Collectors.toList()); int due = l3.stream().mapToInt(RStatIntegrityD::getDueTime).sum(); int real = l3.stream().mapToInt(RStatIntegrityD::getRealTime).sum(); rUploadPointStatisticalDataD.setExpectCollectNum(due); rUploadPointStatisticalDataD.setActualCollectNum(real); - if(due == 0 || real == 0){ + if (due == 0 || real == 0) { rUploadPointStatisticalDataD.setDataFullRate(BigDecimal.valueOf(0).setScale(4, RoundingMode.HALF_UP).doubleValue()); - }else { - rUploadPointStatisticalDataD.setDataFullRate(BigDecimal.valueOf(real*100.0/due).setScale(4, RoundingMode.HALF_UP).doubleValue()); + } else { + rUploadPointStatisticalDataD.setDataFullRate(BigDecimal.valueOf(real * 100.0 / due).setScale(4, RoundingMode.HALF_UP).doubleValue()); } rUploadPointStatisticalDataD.setStationMonitorNum(l3.size()); - } + result.add(rUploadPointStatisticalDataD); + + + + }); - if (CollectionUtil.isNotEmpty(result)){ + + if (CollectionUtil.isNotEmpty(result)) { //查询数据如果有数据,将data_id置为null,这样就保留之前的唯一id LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(RUploadPointStatisticalDataD::getStatisticalDate,calculatedParam.getDataDate()); + lambdaQueryWrapper.eq(RUploadPointStatisticalDataD::getStatisticalDate, calculatedParam.getDataDate()); List oldData = this.list(lambdaQueryWrapper); - if (CollectionUtil.isNotEmpty(oldData)){ - result.forEach(item->{ - item.setId(null); - }); + if (CollectionUtil.isNotEmpty(oldData)) { + result.forEach(it -> it.setId(null)); } this.saveOrUpdateBatchByMultiId(result); - } - } - /** - * r_operating_index_d表中获取终端、监测点个数 - */ - public List getOperatingIndexData(String time) { - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(ROperatingIndexDPO::getDataDate,time); - return rOperatingIndexDPOMapper.selectList(lambdaQueryWrapper); + } } /** @@ -144,28 +252,29 @@ public class RUploadPointStatisticalDataDServiceImpl extends MppServiceImpl getStatIntegrityData(String time) { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(RStatIntegrityD::getTimeId,time); + lambdaQueryWrapper.eq(RStatIntegrityD::getTimeId, time); return rStatIntegrityDMapper.selectList(lambdaQueryWrapper); } + /** * 判断单位层级 */ - public void judgeLevel(Integer level, RUploadPointStatisticalDataD rUploadPointStatisticalDataD, String id, String name, List deptList, Map> map) { + public void judgeLevel(Integer level, RUploadPointStatisticalDataD rUploadPointStatisticalDataD, String id, String name, List deptList, Map> map) { String result = ""; - if (Objects.equals(level,Integer.parseInt(UploadEnum.NJCN_DEPT_LEVEL_2.getCode()))){ + if (Objects.equals(level, Integer.parseInt(UploadEnum.NJCN_DEPT_LEVEL_2.getCode()))) { result = UploadEnum.STATISTICAL_LEVEL_3.getCode(); rUploadPointStatisticalDataD.setCityId(""); rUploadPointStatisticalDataD.setCountyId(""); - } else if (Objects.equals(level,Integer.parseInt(UploadEnum.NJCN_DEPT_LEVEL_3.getCode()))) { + } else if (Objects.equals(level, Integer.parseInt(UploadEnum.NJCN_DEPT_LEVEL_3.getCode()))) { result = UploadEnum.STATISTICAL_LEVEL_4.getCode(); rUploadPointStatisticalDataD.setCityId(id); rUploadPointStatisticalDataD.setCityName(name); rUploadPointStatisticalDataD.setCountyId(""); - } else if (Objects.equals(level,Integer.parseInt(UploadEnum.NJCN_DEPT_LEVEL_4.getCode()))) { + } else if (Objects.equals(level, Integer.parseInt(UploadEnum.NJCN_DEPT_LEVEL_4.getCode()))) { result = UploadEnum.STATISTICAL_LEVEL_5.getCode(); List list = Arrays.stream(map.get(id).get(0).getPids().split(",")).map(String::trim).collect(Collectors.toList()); - String parentCode = deptList.stream().filter(o->Objects.equals(o.getId(),list.get(3))).findFirst().orElse(null).getCode(); + String parentCode = deptList.stream().filter(o -> Objects.equals(o.getId(), list.get(3))).findFirst().orElse(null).getCode(); rUploadPointStatisticalDataD.setCityId(parentCode); rUploadPointStatisticalDataD.setCityName(map.get(parentCode).get(0).getName()); rUploadPointStatisticalDataD.setCountyId(id); diff --git a/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicDataEnum.java b/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicDataEnum.java index 13b3a0d75..3085132aa 100644 --- a/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicDataEnum.java +++ b/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicDataEnum.java @@ -540,6 +540,17 @@ public enum DicDataEnum { ELECTRIFIED_RAILWAY("电气化铁路","1300"), + /** + * 所属站别类型 + */ + Trans_Sub("变电站","Trans_Sub"), + Converter("换流站","Converter"), + Ele_Railways("电气化铁路","Ele_Railways"), + Wind_Farms("风电场","Wind_Farms"), + Power_Station("光伏电站","Power_Station"), + Smelting_Load("冶炼负荷","Smelting_Load"), + Imp_Users("重要敏感用户","Imp_Users"), + Station_Other("其他","Other"), @@ -562,7 +573,8 @@ public enum DicDataEnum { DicDataEnum(String name, String code) { this.name = name; this.code = code; - this.value = null; + this.value = + null; } public static DicDataEnum getDicDataEnumValue(String code) { diff --git a/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicDataTypeEnum.java b/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicDataTypeEnum.java index 3509f6bcc..97dfc06ae 100644 --- a/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicDataTypeEnum.java +++ b/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicDataTypeEnum.java @@ -105,6 +105,8 @@ public enum DicDataTypeEnum { file_type("附件分类"," file_type"), problem_level_type("问题等级"," problem_level_type"), + Station_Type("所属站别类型","Station_Type"), + APP_BASE_INFORMATION_TYPE("app基础信息类型","appInformationType"), diff --git a/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicTreeEnum.java b/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicTreeEnum.java new file mode 100644 index 000000000..f31338561 --- /dev/null +++ b/pqs-system/system-api/src/main/java/com/njcn/system/enums/DicTreeEnum.java @@ -0,0 +1,43 @@ +package com.njcn.system.enums; + +import lombok.Getter; + + +/** + * + * @author cdf + * @date 2024/2/23 + */ +@Getter +public enum DicTreeEnum { + /** + * 字典树 + */ + Trans_Sub("各类重要变电站","2100"), + Converter("换流站","1200"), + Ele_Railways("电气化铁路","1300"), + Wind_Farms("风电场","1401"), + Power_Station("光伏电站","1402"), + Smelting_Load("冶炼负荷","2600"), + Imp_Users("敏感/重要/高危用户","2400"), + + + + + + ; + + + + + + private final String name; + private final String code; + + + DicTreeEnum(String name, String code){ + this.name=name; + this.code=code; + } + +} diff --git a/pqs-system/system-boot/src/main/java/com/njcn/system/service/impl/SysDicTreePOServiceImpl.java b/pqs-system/system-boot/src/main/java/com/njcn/system/service/impl/SysDicTreePOServiceImpl.java index 5b7c81f70..9c506657b 100644 --- a/pqs-system/system-boot/src/main/java/com/njcn/system/service/impl/SysDicTreePOServiceImpl.java +++ b/pqs-system/system-boot/src/main/java/com/njcn/system/service/impl/SysDicTreePOServiceImpl.java @@ -67,7 +67,7 @@ public class SysDicTreePOServiceImpl extends ServiceImpl { DictTreeVO resultVO = new DictTreeVO(); BeanUtils.copyProperties(temp, resultVO); - resultVO.setPname(byId.getName()); + resultVO.setPname(Objects.nonNull(byId)?byId.getName():"最高级"); return resultVO; }).collect(Collectors.toList()); }