diff --git a/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/enums/DeviceResponseEnum.java b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/enums/DeviceResponseEnum.java index 7f4341155..3ccf38814 100644 --- a/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/enums/DeviceResponseEnum.java +++ b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/enums/DeviceResponseEnum.java @@ -97,7 +97,10 @@ public enum DeviceResponseEnum { LINE_GRADE_INDEX_ERR("A0362","异常等级索引"), LINE_GRADE_LESS("A0363","监测点等级策略缺失"), FLOW_UPDATE("A0364","默认类型必须存在一个"), - NEWSTATION_IS_BIND_LINE("A0365","已绑定监测点") + NEWSTATION_IS_BIND_LINE("A0365","已绑定监测点"), + + LINE_USER_EMPTY("A0366","用户侧监测点用户对象名称不可为空"), + LINE_NO_USER_EMPTY("A0367","电网侧监测点无需绑定用户对象") ; diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/enums/LineBaseEnum.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/enums/LineBaseEnum.java index 49a580062..f5794db75 100644 --- a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/enums/LineBaseEnum.java +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/enums/LineBaseEnum.java @@ -39,7 +39,13 @@ public enum LineBaseEnum { * 电网标志 */ POWER_FLAG(0,"电网侧"), - POWER_FLAG_NOT(1,"非电网侧") + POWER_FLAG_NOT(1,"非电网侧"), + + + RUN(0,"在运"), + WAITE_RUN(1,"调试"), + STOP_RUN(2,"停运") + ; diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/param/LineParam.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/param/LineParam.java index b7a058d6d..c4147179c 100644 --- a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/param/LineParam.java +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/param/LineParam.java @@ -124,9 +124,11 @@ public class LineParam { private String objId; @ApiModelProperty(name = "bigObjType",value = "对象大类") + @NotBlank(message = "对象大类不可为空") private String bigObjType; @ApiModelProperty(name = "smallObjType",value = "对象小类") + @NotBlank(message = "对象小类不可为空") private String smallObjType; /** diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/param/dataClean/MonitorBaseParam.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/param/dataClean/MonitorBaseParam.java new file mode 100644 index 000000000..366896123 --- /dev/null +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/param/dataClean/MonitorBaseParam.java @@ -0,0 +1,22 @@ +package com.njcn.device.pq.pojo.param.dataClean; + +import com.njcn.web.pojo.param.BaseParam; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @Author: cdf + * @CreateTime: 2025-03-26 + * @Description: + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class MonitorBaseParam extends BaseParam { + + private String deptId; + + private String objType; + + + +} diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/DataVerify.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/DataVerify.java new file mode 100644 index 000000000..7ad74af98 --- /dev/null +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/po/DataVerify.java @@ -0,0 +1,76 @@ +package com.njcn.device.pq.pojo.po; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.njcn.db.bo.BaseEntity; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author cdf + * @since 2025-03-26 + */ +@Getter +@Setter +@TableName("pq_data_verify") +public class DataVerify { + + + /** + * 监测点id + */ + private String lineId; + + /** + * 异常数据时间 + */ + private LocalDateTime time; + + /** + * 数据类型(最大值:max、最小值:min、平均值:avg、95值:cp95) + */ + private String valueType; + + /** + * 相别:"A" "B" "C" "ABC" "T" + */ + private String phasicType; + + /** + * 指标code + */ + private String indexCode; + + /** + * 指标名称 + */ + private String indexName; + + /** + * 指标表名 + */ + private String indexTable; + + /** + * 异常值 + */ + private BigDecimal abnormalValue; + + /** + * 指标上限 + */ + private BigDecimal minValue; + + /** + * 指标下限 + */ + private BigDecimal maxValue; + + +} diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/dataClean/VerifyMonitorVO.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/dataClean/VerifyMonitorVO.java new file mode 100644 index 000000000..80970d7ef --- /dev/null +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/pojo/vo/dataClean/VerifyMonitorVO.java @@ -0,0 +1,17 @@ +package com.njcn.device.pq.pojo.vo.dataClean; + +import lombok.Data; + +/** + * @Author: cdf + * @CreateTime: 2025-03-26 + * @Description: 异常测点 + */ +@Data +public class VerifyMonitorVO { + + private Integer runNum; + + private Integer abnormalNum; + +} diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/AbnormalDataController.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/AbnormalDataController.java new file mode 100644 index 000000000..ea00d13e9 --- /dev/null +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/AbnormalDataController.java @@ -0,0 +1,9 @@ +package com.njcn.device.pq.controller; + +/** + * @Author: cdf + * @CreateTime: 2025-03-26 + * @Description: 异常数据清洗 + */ +public class AbnormalDataController { +} diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/DataVerifyController.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/DataVerifyController.java new file mode 100644 index 000000000..39f4c6930 --- /dev/null +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/DataVerifyController.java @@ -0,0 +1,69 @@ +package com.njcn.device.pq.controller; + + +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.device.pq.pojo.param.dataClean.MonitorBaseParam; +import com.njcn.device.pq.pojo.vo.AlarmStrategyVO; +import com.njcn.device.pq.pojo.vo.dataClean.VerifyMonitorVO; +import com.njcn.device.pq.service.IDataVerifyService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +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 com.njcn.web.controller.BaseController; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 异常数据功能 + *

+ * + * @author cdf + * @since 2025-03-26 + */ +@RestController +@RequestMapping("/dataVerify") +@RequiredArgsConstructor +@Api(tags = "异常数据功能") +public class DataVerifyController extends BaseController { + + private final IDataVerifyService iDataVerifyService; + + + /** + * 获取异常监测点相关信息 + */ + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getMonitorVerifyData") + @ApiOperation("获取异常监测点相关信息") + public HttpResult getMonitorVerifyData(@RequestBody MonitorBaseParam monitorBaseParam){ + String methodDescribe = getMethodDescribe("getMonitorVerifyData"); + VerifyMonitorVO verifyMonitorVO = iDataVerifyService.getMonitorVerifyData(monitorBaseParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, verifyMonitorVO, methodDescribe); + } + + + /** + * 获取时间范围异常测点数量 + */ + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getRangeAbnormalMonitor") + @ApiOperation("获取异常监测点相关信息") + public HttpResult>> getRangeAbnormalMonitor(@RequestBody MonitorBaseParam monitorBaseParam){ + String methodDescribe = getMethodDescribe("getRangeAbnormalMonitor"); + List> verifyMonitorVO = iDataVerifyService.getRangeAbnormalMonitor(monitorBaseParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, verifyMonitorVO, methodDescribe); + } + +} + diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/DataVerifyMapper.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/DataVerifyMapper.java new file mode 100644 index 000000000..0e7423604 --- /dev/null +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/DataVerifyMapper.java @@ -0,0 +1,17 @@ +package com.njcn.device.pq.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.njcn.device.pq.pojo.po.DataVerify; + +/** + *

+ * Mapper 接口 + *

+ * + * @author cdf + * @since 2025-03-26 + */ +public interface DataVerifyMapper extends BaseMapper { + +} diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/CommTerminalService.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/CommTerminalService.java index cd7396621..e3824897d 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/CommTerminalService.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/CommTerminalService.java @@ -86,4 +86,9 @@ public interface CommTerminalService { List deptSubStationInfo(DeptGetLineParam deptGetLineParam); List tagOrIdGetSub(SubstationParam substationParam); + + /** + * 通过部门id获取在运测点 + */ + List getRunMonitorByDept(String deptId); } diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/IDataVerifyService.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/IDataVerifyService.java new file mode 100644 index 000000000..f8da631f9 --- /dev/null +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/IDataVerifyService.java @@ -0,0 +1,27 @@ +package com.njcn.device.pq.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.njcn.device.pq.pojo.param.dataClean.MonitorBaseParam; +import com.njcn.device.pq.pojo.po.DataVerify; +import com.njcn.device.pq.pojo.vo.dataClean.VerifyMonitorVO; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 服务类 + *

+ * + * @author cdf + * @since 2025-03-26 + */ +public interface IDataVerifyService extends IService { + + + VerifyMonitorVO getMonitorVerifyData(MonitorBaseParam monitorBaseParam); + + + List> getRangeAbnormalMonitor(MonitorBaseParam monitorBaseParam); + +} diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/CommTerminalServiceImpl.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/CommTerminalServiceImpl.java index a92a4f0d8..8e781260a 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/CommTerminalServiceImpl.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/CommTerminalServiceImpl.java @@ -9,11 +9,13 @@ import com.njcn.common.utils.EnumUtils; import com.njcn.device.biz.pojo.dto.*; import com.njcn.device.biz.pojo.param.DeptGetLineParam; import com.njcn.device.biz.pojo.param.SubstationParam; +import com.njcn.device.pq.enums.LineBaseEnum; import com.njcn.device.pq.mapper.LineMapper; import com.njcn.device.pq.mapper.OverlimitMapper; import com.njcn.device.pq.service.CommTerminalService; import com.njcn.device.pq.service.DeptLineService; import com.njcn.redis.utils.RedisUtil; +import com.njcn.system.enums.DicDataEnum; import com.njcn.user.api.DeptFeignClient; import com.njcn.user.pojo.dto.DeptDTO; import com.njcn.user.pojo.po.Dept; @@ -289,6 +291,13 @@ public class CommTerminalServiceImpl implements CommTerminalService { return subStationList; } + @Override + public List getRunMonitorByDept(String deptId) { + List ids = deptFeignClient.getDepSonIdtByDeptId(deptId).getData(); + List monitorIds = deptLineService.getLineByDeptIds(ids,Stream.of(LineBaseEnum.RUN.getCode()).collect(Collectors.toList()),Stream.of(0,1,2).collect(Collectors.toList())); + return monitorIds; + } + private List filterDataTypeNew(String serverName) { List devType = new ArrayList<>(); diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/DataVerifyServiceImpl.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/DataVerifyServiceImpl.java new file mode 100644 index 000000000..719a06da0 --- /dev/null +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/DataVerifyServiceImpl.java @@ -0,0 +1,95 @@ +package com.njcn.device.pq.service.impl; + + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.*; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njcn.device.pq.mapper.DataVerifyMapper; +import com.njcn.device.pq.mapper.LineMapper; +import com.njcn.device.pq.pojo.param.dataClean.MonitorBaseParam; +import com.njcn.device.pq.pojo.po.DataVerify; +import com.njcn.device.pq.pojo.vo.dataClean.VerifyMonitorVO; +import com.njcn.device.pq.service.CommTerminalService; +import com.njcn.device.pq.service.IDataVerifyService; +import com.njcn.device.pq.service.LineService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.text.DateFormat; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.stream.Collectors; + +/** + *

+ * 服务实现类 + *

+ * + * @author cdf + * @since 2025-03-26 + */ +@Service +@RequiredArgsConstructor +public class DataVerifyServiceImpl extends ServiceImpl implements IDataVerifyService { + + private final CommTerminalService commTerminalService; + + @Override + public VerifyMonitorVO getMonitorVerifyData(MonitorBaseParam monitorBaseParam) { + List monitorIds = commTerminalService.getRunMonitorByDept(monitorBaseParam.getDeptId()); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.select(DataVerify::getLineId).between(DataVerify::getTime, DateUtil.beginOfDay(DateUtil.parse(monitorBaseParam.getSearchBeginTime())),DateUtil.endOfDay(DateUtil.parse(monitorBaseParam.getSearchEndTime()))) + .in(DataVerify::getLineId,monitorIds).groupBy(DataVerify::getLineId); + List list = this.list(lambdaQueryWrapper); + VerifyMonitorVO verifyMonitorVO = new VerifyMonitorVO(); + verifyMonitorVO.setRunNum(monitorIds.size()); + verifyMonitorVO.setAbnormalNum(list.size()); + return verifyMonitorVO; + } + + @Override + public List> getRangeAbnormalMonitor(MonitorBaseParam monitorBaseParam) { + List> result = new ArrayList<>(); + + List monitorIds = commTerminalService.getRunMonitorByDept(monitorBaseParam.getDeptId()); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.between(DataVerify::getTime, DateUtil.beginOfDay(DateUtil.parse(monitorBaseParam.getSearchBeginTime())),DateUtil.endOfDay(DateUtil.parse(monitorBaseParam.getSearchEndTime()))) + .in(DataVerify::getLineId,monitorIds); + List dataVerifyList = this.list(lambdaQueryWrapper); + + DateTime startTime = DateUtil.parse(monitorBaseParam.getSearchBeginTime()); + DateTime endTime = DateUtil.parse(monitorBaseParam.getSearchEndTime()); + if(startTime.year() == endTime.year() && startTime.month() == endTime.month()){ + DateRange ranged = DateUtil.range(DateUtil.parse(monitorBaseParam.getSearchBeginTime()),DateUtil.parse(monitorBaseParam.getSearchEndTime()), DateField.DAY_OF_MONTH); + + Map map = dataVerifyList.stream().collect(Collectors.groupingBy(it->it.getTime().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)), + Collectors.mapping(DataVerify::getLineId, Collectors.collectingAndThen(Collectors.toSet(), Set::size)))); + for (DateTime dateTime : ranged) { + Map rangeMap = new HashMap<>(); + String time = DateUtil.format(dateTime, DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)); + rangeMap.put("time", time); + rangeMap.put("val", map.getOrDefault(time, 0)); + result.add(rangeMap); + } + + }else { + //不在一个月则展示月数据 + DateRange ranged = DateUtil.range(DateUtil.parse(monitorBaseParam.getSearchBeginTime()),DateUtil.parse(monitorBaseParam.getSearchEndTime()), DateField.MONTH); + if(CollUtil.isNotEmpty(dataVerifyList)){ + Map map = dataVerifyList.stream().collect(Collectors.groupingBy(it->it.getTime().format(DateTimeFormatter.ofPattern(DatePattern.NORM_MONTH_PATTERN)), + Collectors.mapping(DataVerify::getLineId, Collectors.collectingAndThen(Collectors.toSet(), Set::size)))); + for (DateTime dateTime : ranged) { + Map rangeMap = new HashMap<>(); + String time = DateUtil.format(dateTime, DateTimeFormatter.ofPattern(DatePattern.NORM_MONTH_PATTERN)); + rangeMap.put("time", time); + rangeMap.put("val", map.getOrDefault(time, 0)); + result.add(rangeMap); + } + } + } + + + return result; + } +} diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/TerminalBaseServiceImpl.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/TerminalBaseServiceImpl.java index 2d65be649..340a077f2 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/TerminalBaseServiceImpl.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/TerminalBaseServiceImpl.java @@ -479,6 +479,17 @@ public class TerminalBaseServiceImpl extends ServiceImpl imple lineDetail.setMonitorFlag(0); } + if(lineDetail.getPowerFlag() == 1){ + //用户侧,objId不可为空 + if(StrUtil.isBlank(lineDetail.getObjId())){ + throw new BusinessException(DeviceResponseEnum.LINE_USER_EMPTY); + } + }else { + if(StrUtil.isNotBlank(lineDetail.getObjId())){ + throw new BusinessException(DeviceResponseEnum.LINE_NO_USER_EMPTY); + } + } + lineDetailMapper.insert(lineDetail); if(StrUtil.isNotBlank(lineDetail.getObjId())){ userLedgerFeignClient.bindUserStation(lineDetail.getObjId(),subIndex); @@ -802,6 +813,17 @@ public class TerminalBaseServiceImpl extends ServiceImpl imple } else { lineDetail.setMonitorFlag(0); } + if(lineDetail.getPowerFlag() == 1){ + //用户侧,objId不可为空 + if(StrUtil.isBlank(lineDetail.getObjId())){ + throw new BusinessException(DeviceResponseEnum.LINE_USER_EMPTY); + } + }else { + if(StrUtil.isNotBlank(lineDetail.getObjId())){ + throw new BusinessException(DeviceResponseEnum.LINE_NO_USER_EMPTY); + } + } + lineDetailMapper.updateById(lineDetail); if(StrUtil.isNotBlank(lineDetail.getObjId())){ diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/TerminalTreeServiceImpl.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/TerminalTreeServiceImpl.java index 99258e847..390bcd679 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/TerminalTreeServiceImpl.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/TerminalTreeServiceImpl.java @@ -76,7 +76,6 @@ public class TerminalTreeServiceImpl implements TerminalTreeService { */ @Override public List getTerminalTree() { - List taiZhang = new ArrayList<>(); List allList = lineMapper.getAllList(); List projectList = allList.stream().filter(item -> item.getLevel().equals(LineBaseEnum.PROJECT_LEVEL.getCode())).sorted(Comparator.comparing(TerminalTree::getSort)).collect(Collectors.toList()); List provinceList = lineMapper.getProvinceList(null, 0); @@ -88,22 +87,33 @@ public class TerminalTreeServiceImpl implements TerminalTreeService { //处理存在用户的台账 List newLineList = lineMapper.getLineAndLineDetail(); + //用户侧测点 List userLineList = newLineList.stream().filter(it->StrUtil.isNotBlank(it.getObjId())).collect(Collectors.toList()); - List otherLineList = newLineList.stream().filter(it->StrUtil.isBlank(it.getObjId())).collect(Collectors.toList()); + //用户侧装置 List devIds = userLineList.stream().map(it->it.getPids().split(StrUtil.COMMA)[LineBaseEnum.DEVICE_LEVEL.getCode()]).distinct().collect(Collectors.toList()); - - - List subvUserList = subvList.stream().filter(it->devIds.contains(it.getPid())).collect(Collectors.toList()); - List busBarIds = subvUserList.stream().map(TerminalTree::getId).distinct().collect(Collectors.toList()); - List devUserList = devList.stream().filter(it->devIds.contains(it.getId())).collect(Collectors.toList()); + //用户侧线路 + List subvUserList = subvList.stream().filter(it->devIds.contains(it.getPid())).collect(Collectors.toList()); + + + //电网侧测点 + List otherLineList = newLineList.stream().filter(it->StrUtil.isBlank(it.getObjId())).collect(Collectors.toList()); + + //电网侧装置 + List devOtherIds = otherLineList.stream().map(it->it.getPids().split(StrUtil.COMMA)[LineBaseEnum.DEVICE_LEVEL.getCode()]).distinct().collect(Collectors.toList()); + List devOtherList = devList.stream().filter(it->devOtherIds.contains(it.getId())).collect(Collectors.toList()); + + //电网侧线路 + List subvOtherList = subvList.stream().filter(it->devOtherIds.contains(it.getPid())).collect(Collectors.toList()); + + //其他的台账默认时电网侧台账 - List subvOtherList = subvList.stream().filter(it->!busBarIds.contains(it.getId())).collect(Collectors.toList()); + /* List subvOtherList = subvList.stream().filter(it->!busBarIds.contains(it.getId())).collect(Collectors.toList()); List devOtherList = devList.stream().filter(it->!devIds.contains(it.getId())).collect(Collectors.toList()); - +*/ UserReportParam userReportParam = new UserReportParam(); List userReportPOList = userLedgerFeignClient.selectUserList(userReportParam).getData(); userReportPOList = userReportPOList.stream().filter(it->StrUtil.isNotBlank(it.getStationId())).collect(Collectors.toList());