From 1af77ab5f7c11a4b3d59c1989b51b9fca29679ce Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期二, 18 十月 2022 22:18:49 +0800 Subject: [PATCH] Merge pull request #645 from IKangXu/wvp-28181-2.0 --- 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 7ba2c4e..ca7da6f 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 @@ -362,10 +362,10 @@ return null; } // 浣跨敤琛屾斂鍖哄垝灞曠ず鏍� - if (parentId.length() > 10) { - // TODO 鍙兘鏄鏀垮尯鍒掍笌涓氬姟鍒嗙粍娣锋潅鐨勬儏褰� - return null; - } +// if (parentId.length() > 10) { +// // TODO 鍙兘鏄鏀垮尯鍒掍笌涓氬姟鍒嗙粍娣锋潅鐨勬儏褰� +// return null; +// } if (parentId.length() == 10 ) { if (onlyCatalog) { @@ -380,7 +380,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