diff --git a/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/mapper/DeviceSignalMapper.java b/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/mapper/DeviceSignalMapper.java index 0d13d93..a6d1908 100644 --- a/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/mapper/DeviceSignalMapper.java +++ b/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/mapper/DeviceSignalMapper.java @@ -18,4 +18,6 @@ public interface DeviceSignalMapper extends BaseMapper { DeviceSignal selectOneDeviceSignal(String slaveIp, String type, String address); Map selectDeviceSignalMap(String slaveIp, String type, String address); + + List> getDeviceSignalMaps(String mainDeviceId, String signalName); } diff --git a/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/service/IDeviceSignalService.java b/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/service/IDeviceSignalService.java index 3dbfce3..84ed0b4 100644 --- a/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/service/IDeviceSignalService.java +++ b/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/service/IDeviceSignalService.java @@ -5,6 +5,8 @@ import com.yfd.platform.modules.auxcontrol.domain.DeviceSignal; import com.baomidou.mybatisplus.extension.service.IService; import java.text.ParseException; +import java.util.List; +import java.util.Map; /** *

@@ -50,4 +52,6 @@ public interface IDeviceSignalService extends IService { * 返回值说明: com.baomidou.mybatisplus.extension.plugins.pagination.Page ***********************************/ Page getDeviceSignalPage(String deviceId, String signalName, Page page); + + List> getDeviceSignalMaps(String mainDeviceId, String signalName); } diff --git a/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/service/impl/DeviceSignalServiceImpl.java b/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/service/impl/DeviceSignalServiceImpl.java index 6157b6f..76fc586 100644 --- a/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/service/impl/DeviceSignalServiceImpl.java +++ b/riis-system/src/main/java/com/yfd/platform/modules/auxcontrol/service/impl/DeviceSignalServiceImpl.java @@ -19,6 +19,7 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; +import java.util.Map; /** *

@@ -126,4 +127,9 @@ public class DeviceSignalServiceImpl extends ServiceImpl> getDeviceSignalMaps(String mainDeviceId, String signalName) { + return deviceSignalMapper.getDeviceSignalMaps(mainDeviceId, signalName); + } } diff --git a/riis-system/src/main/java/com/yfd/platform/modules/basedata/controller/SubstationMaindeviceController.java b/riis-system/src/main/java/com/yfd/platform/modules/basedata/controller/SubstationMaindeviceController.java index 17100ca..0f47ab0 100644 --- a/riis-system/src/main/java/com/yfd/platform/modules/basedata/controller/SubstationMaindeviceController.java +++ b/riis-system/src/main/java/com/yfd/platform/modules/basedata/controller/SubstationMaindeviceController.java @@ -459,4 +459,11 @@ public class SubstationMaindeviceController { TreeNode treeNode = substationMaindeviceService.getSubstationMainTree(stationCode, mainDeviceName); return ResponseResult.successData(treeNode); } + + @GetMapping("/getDeviceSignalTree") + @ApiOperation("获取信号树(前台)") + public ResponseResult getDeviceSignalTree(String mainDeviceId,String signalName) { + List treeNodes = substationMaindeviceService.getDeviceSignalTree(mainDeviceId,signalName); + return ResponseResult.successData(treeNodes); + } } diff --git a/riis-system/src/main/java/com/yfd/platform/modules/basedata/service/ISubstationMaindeviceService.java b/riis-system/src/main/java/com/yfd/platform/modules/basedata/service/ISubstationMaindeviceService.java index b566585..9b3d151 100644 --- a/riis-system/src/main/java/com/yfd/platform/modules/basedata/service/ISubstationMaindeviceService.java +++ b/riis-system/src/main/java/com/yfd/platform/modules/basedata/service/ISubstationMaindeviceService.java @@ -123,4 +123,6 @@ public interface ISubstationMaindeviceService extends IService> getSubstationMainDeviceTree(String stationCode,String mainDeviceName); TreeNode getSubstationMainTree(String stationCode, String mainDeviceName); + + List getDeviceSignalTree(String mainDeviceId,String signalName); } diff --git a/riis-system/src/main/java/com/yfd/platform/modules/basedata/service/impl/SubstationMaindeviceServiceImpl.java b/riis-system/src/main/java/com/yfd/platform/modules/basedata/service/impl/SubstationMaindeviceServiceImpl.java index 5c4949e..f12ba69 100644 --- a/riis-system/src/main/java/com/yfd/platform/modules/basedata/service/impl/SubstationMaindeviceServiceImpl.java +++ b/riis-system/src/main/java/com/yfd/platform/modules/basedata/service/impl/SubstationMaindeviceServiceImpl.java @@ -3,6 +3,8 @@ package com.yfd.platform.modules.basedata.service.impl; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.yfd.platform.modules.auxcontrol.domain.DeviceSignal; +import com.yfd.platform.modules.auxcontrol.service.IDeviceSignalService; import com.yfd.platform.modules.basedata.domain.*; import com.yfd.platform.modules.basedata.mapper.*; import com.yfd.platform.modules.basedata.service.ISubstationMaindeviceService; @@ -61,6 +63,9 @@ public class SubstationMaindeviceServiceImpl extends ServiceImpl> list = this.listMaps(queryWrapper); List> mapList = list.stream().distinct().collect(Collectors.toList()); List treeNodes = this.buildTree(mapList); return treeNodes.get(0); } + @Override + public List getDeviceSignalTree(String mainDeviceId, String signalName) { + List> dataList = deviceSignalService.getDeviceSignalMaps(mainDeviceId, signalName); + List treeNodes = this.buildSignalTree(dataList); + if (treeNodes.size() <= 0) { + return treeNodes; + } + return treeNodes.get(0).getChildren(); + } + + public List buildSignalTree(List> dataList) { + // 存储所有节点(使用ID作为键) + Map nodeMap = new HashMap<>(); + // 存储最终返回的根节点列表 + List roots = new ArrayList<>(); + // 遍历原始数据 + for (Map data : dataList) { + // 1. 解析各层级信息(根据实际字段名称调整) + String mainDeviceId = (String) data.get("mainDeviceId"); + String mainDeviceName = (String) data.get("mainDeviceName"); + String componentId = (String) data.get("componentId"); + String componentName = (String) data.get("componentName"); + String signalId = (String) data.get("signalId"); + String signalName = (String) data.get("signalName"); + + // 处理变电站层级 + TreeNode mainDeviceNode = nodeMap.computeIfAbsent(mainDeviceId, + k -> { + TreeNode node = new TreeNode(mainDeviceId, mainDeviceName); + roots.add(node); // 将变电站作为根节点 + return node; + }); + + if (StrUtil.isNotBlank(componentId)) { + TreeNode componentNode = nodeMap.computeIfAbsent(componentId, + k -> { + TreeNode node = new TreeNode(componentId, componentName); + mainDeviceNode.getChildren().add(node); + return node; + }); + + // 处理间隔层级 + if (StrUtil.isNotBlank(signalId)) { + TreeNode signalNode = nodeMap.computeIfAbsent(signalId, + k -> { + TreeNode node = new TreeNode(signalId, signalName); + componentNode.getChildren().add(node); + return node; + }); + + } + } + } + return roots; + } public List buildTree(List> dataList) { // 存储所有节点(使用ID作为键) diff --git a/riis-system/src/main/resources/mapper/auxcontrol/DeviceSignalMapper.xml b/riis-system/src/main/resources/mapper/auxcontrol/DeviceSignalMapper.xml index 41a7089..be521bd 100644 --- a/riis-system/src/main/resources/mapper/auxcontrol/DeviceSignalMapper.xml +++ b/riis-system/src/main/resources/mapper/auxcontrol/DeviceSignalMapper.xml @@ -37,7 +37,7 @@ JOIN fk_gateway_device c ON ( a.netdevice_ip = c.ip_addr ) WHERE - c.ip_addr = #{slaveIp} + c.ip_addr = #{slaveIp} and b.yx_addr = #{address} @@ -47,5 +47,26 @@ limit 1 +