From 58b9dab89fef80076e79e43c8eafe811a644415c Mon Sep 17 00:00:00 2001 From: IKangXu <xukang@emapgis.com> Date: 星期二, 18 十月 2022 09:27:12 +0800 Subject: [PATCH] 优化 分屏设备与电子地图中树结构展示信息 优化 国标设备中通道内查看的逻辑,保证与分屏与电子地图中树结构的数据一致 --- src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java | 21 ++++++++++++++++----- src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java | 8 +++++--- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java index a6b9cc5..29b8bcb 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java @@ -398,10 +398,10 @@ return null; } // 浣跨敤琛屾斂鍖哄垝灞曠ず鏍� - if (parentId.length() > 10) { - // TODO 鍙兘鏄鏀垮尯鍒掍笌涓氬姟鍒嗙粍娣锋潅鐨勬儏褰� - return null; - } +// if (parentId.length() > 10) { +// // TODO 鍙兘鏄鏀垮尯鍒掍笌涓氬姟鍒嗙粍娣锋潅鐨勬儏褰� +// return null; +// } if (parentId.length() == 10 ) { if (onlyCatalog) { @@ -416,7 +416,18 @@ List<DeviceChannel> channelsForCivilCode = deviceChannelMapper.getChannelsWithCivilCodeAndLength(deviceId, parentId, parentId.length() + 2); if (!onlyCatalog) { List<DeviceChannel> channels = deviceChannelMapper.getChannelsByCivilCode(deviceId, parentId); - channelsForCivilCode.addAll(channels); + + for(DeviceChannel channel : channels) { + boolean flag = false; + for(DeviceChannel deviceChannel : channelsForCivilCode) { + if(channel.getChannelId().equals(deviceChannel.getChannelId())) { + flag = true; + } + } + if(!flag) { + channelsForCivilCode.add(channel); + } + } } List<BaseTree<DeviceChannel>> trees = transportChannelsToTree(channelsForCivilCode, parentId); return trees; diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java index 3ef412d..9b2a099 100644 --- a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceChannelMapper.java @@ -71,7 +71,7 @@ "WHERE " + "dc.deviceId = #{deviceId} " + " <if test='query != null'> AND (dc.channelId LIKE '%${query}%' OR dc.name LIKE '%${query}%' OR dc.name LIKE '%${query}%')</if> " + - " <if test='parentChannelId != null'> AND dc.parentId=#{parentChannelId} </if> " + + " <if test='parentChannelId != null'> AND (dc.parentId=#{parentChannelId} OR dc.civilCode = #{parentChannelId}) </if> " + " <if test='online == true' > AND dc.status=1</if>" + " <if test='online == false' > AND dc.status=0</if>" + " <if test='hasSubChannel == true' > AND dc.subCount > 0 </if>" + @@ -309,8 +309,10 @@ "select * " + "from device_channel " + "where deviceId=#{deviceId}" + - " <if test='parentId != null' > and left(channelId, ${parentId.length()}) = #{parentId}</if>" + - " <if test='length != null' > and length(channelId)=${length}</if>" + + " <if test='parentId != null and length != null' > and parentId = #{parentId} or left(channelId, ${parentId.length()}) = #{parentId} and length(channelId)=${length} </if>" + + " <if test='parentId == null and length != null' > and parentId = #{parentId} or length(channelId)=${length} </if>" + + " <if test='parentId == null and length == null' > and parentId = #{parentId} </if>" + + " <if test='parentId != null and length == null' > and parentId = #{parentId} or left(channelId, ${parentId.length()}) = #{parentId} </if>" + " </script>"}) List<DeviceChannel> getChannelsWithCivilCodeAndLength(String deviceId, String parentId, Integer length); -- Gitblit v1.8.0