From 0caf5a86e73618242ec573854b5b73ff6379dad9 Mon Sep 17 00:00:00 2001 From: lin <648540858@qq.com> Date: Wed, 6 May 2026 10:44:34 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dsql=E6=B3=A8=E5=85=A5?= =?UTF-8?q?=E6=BC=8F=E6=B4=9E=20#2137?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vmp/gb28181/dao/DeviceChannelMapper.java | 2 +- .../iot/vmp/gb28181/dao/DeviceMapper.java | 4 +- .../gb28181/dao/provider/ChannelProvider.java | 118 +++++++----------- .../dao/provider/DeviceChannelProvider.java | 8 +- .../dao/provider/JTChannelProvider.java | 4 +- .../dao/provider/StreamProxyProvider.java | 21 ++-- 6 files changed, 60 insertions(+), 97 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/DeviceChannelMapper.java b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/DeviceChannelMapper.java index b41cf183b..3dd6df65b 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/DeviceChannelMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/DeviceChannelMapper.java @@ -145,7 +145,7 @@ public interface DeviceChannelMapper { " LEFT JOIN wvp_device de ON dc.data_device_id = de.id " + " WHERE dc.data_type = 1 " + " AND de.device_id = #{deviceId} " + - " AND (dc.device_id LIKE '%${query}%' OR dc.name LIKE '%${query}%' OR dc.name LIKE '%${query}%') " + + " AND (dc.device_id LIKE concat('%',#{query},'%') OR dc.name LIKE concat('%',#{query},'%') OR dc.name LIKE concat('%',#{query},'%')) " + " AND dc.parent_id=#{parentChannelId} " + " AND dc.status='ON'" + " AND dc.status='OFF'" + diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/DeviceMapper.java b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/DeviceMapper.java index a14528352..e69bb708d 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/DeviceMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/DeviceMapper.java @@ -173,7 +173,7 @@ public interface DeviceMapper { "media_server_id,"+ "(SELECT count(0) FROM wvp_device_channel dc WHERE dc.data_type = #{dataType} and dc.data_device_id= de.id) as channel_count " + "FROM wvp_device de" + - " where de.on_line=${online}"+ + " where de.on_line=#{online}"+ " order by de.create_time desc "+ " " ) @@ -366,7 +366,7 @@ public interface DeviceMapper { ",(SELECT count(0) FROM wvp_device_channel dc WHERE dc.data_type = #{dataType} and dc.data_device_id= de.id) as channel_count " + " FROM wvp_device de" + " where 1 = 1 "+ - " AND de.on_line=${status}"+ + " AND de.on_line=#{status}"+ " AND (" + " coalesce(custom_name, name) LIKE concat('%',#{query},'%') escape '/' " + " OR device_id LIKE concat('%',#{query},'%') escape '/' " + diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/provider/ChannelProvider.java b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/provider/ChannelProvider.java index 8158f9e56..a76d5b6aa 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/provider/ChannelProvider.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/provider/ChannelProvider.java @@ -360,16 +360,15 @@ public class ChannelProvider { sqlBuild.append("where channel_type = 0 and coalesce(gb_device_id, device_id) in ( "); Collection ids = (Collection)params.get("deviceIds"); - boolean first = true; - for (String id : ids) { - if (!first) { + int index = 0; + for (String ignored : ids) { + if (index > 0) { sqlBuild.append(","); } - sqlBuild.append("'"); - sqlBuild.append(id); - sqlBuild.append("'"); - first = false; + sqlBuild.append("#{deviceIds[").append(index).append("]}"); + index++; } + sqlBuild.append(" )"); return sqlBuild.toString() ; } @@ -445,13 +444,13 @@ public class ChannelProvider { sqlBuild.append(" where channel_type = 0 and gb_parent_id in ( "); Collection ids = (Collection)params.get("groupList"); - boolean first = true; + int index = 0; for (Group group : ids) { - if (!first) { + if (index > 0) { sqlBuild.append(","); } - sqlBuild.append(group.getDeviceId()); - first = false; + sqlBuild.append("#{groupList[").append(index).append("].deviceId}"); + index++; } sqlBuild.append(" )"); @@ -610,13 +609,11 @@ public class ChannelProvider { List deviceList = (List)params.get("deviceList"); if (deviceList != null && !deviceList.isEmpty()) { sqlBuild.append(" AND data_device_id in ("); - boolean first = true; - for (Device device : deviceList) { - if (!first) { + for (int i = 0; i < deviceList.size(); i++) { + if (i > 0) { sqlBuild.append(","); } - sqlBuild.append("'" + device.getId() + "'"); - first = false; + sqlBuild.append("#{deviceList[").append(i).append("].id}"); } sqlBuild.append(" )"); } @@ -648,13 +645,11 @@ public class ChannelProvider { List groupList = (List)params.get("groupList"); if (groupList != null && !groupList.isEmpty()) { sqlBuild.append(" AND coalesce(wdc.gb_parent_id, wdc.parent_id) in ("); - boolean first = true; - for (CameraGroup group : groupList) { - if (!first) { + for (int i = 0; i < groupList.size(); i++) { + if (i > 0) { sqlBuild.append(","); } - sqlBuild.append("'" + group.getDeviceId() + "'"); - first = false; + sqlBuild.append("#{groupList[").append(i).append("].deviceId}"); } sqlBuild.append(" )"); } @@ -719,15 +714,12 @@ public class ChannelProvider { sqlBuild.append(" where wdc.channel_type = 0 AND wdc.data_type != 2 AND (wdc.gb_ptz_type is null or ( wdc.gb_ptz_type != 98 AND wdc.gb_ptz_type != 99)) " + " AND coalesce(wdc.gb_parent_id, wdc.parent_id) in ("); - sqlBuild.append(" "); List groupList = (List)params.get("groupList"); - boolean first = true; - for (CameraGroup group : groupList) { - if (!first) { + for (int i = 0; i < groupList.size(); i++) { + if (i > 0) { sqlBuild.append(","); } - sqlBuild.append("'" + group.getDeviceId() + "'"); - first = false; + sqlBuild.append("#{groupList[").append(i).append("].deviceId}"); } sqlBuild.append(" )"); @@ -747,21 +739,16 @@ public class ChannelProvider { sqlBuild.append(" where wdc.channel_type = 0 AND wdc.data_type != 2 AND (wdc.gb_ptz_type is null or ( wdc.gb_ptz_type != 98 AND wdc.gb_ptz_type != 99)) " + " AND coalesce(wdc.gb_parent_id, wdc.parent_id) in ("); - sqlBuild.append(" "); List groupList = (List)params.get("groupList"); - boolean first = true; - for (CameraGroup group : groupList) { - if (!first) { + for (int i = 0; i < groupList.size(); i++) { + if (i > 0) { sqlBuild.append(","); } - sqlBuild.append("'" + group.getDeviceId() + "'"); - first = false; + sqlBuild.append("#{groupList[").append(i).append("].deviceId}"); } sqlBuild.append(" )"); - String geomTextBuilder = "point(" + params.get("centerLongitude") + " " + params.get("centerLatitude") + ")"; - - sqlBuild.append("AND ST_Distance_Sphere(point(coalesce(wdc.gb_longitude, wdc.longitude), coalesce(wdc.gb_latitude, wdc.latitude)), ST_GeomFromText('").append(geomTextBuilder).append("')) < #{radius}"); + sqlBuild.append("AND ST_Distance_Sphere(point(coalesce(wdc.gb_longitude, wdc.longitude), coalesce(wdc.gb_latitude, wdc.latitude)), ST_GeomFromText(CONCAT('point(', #{centerLongitude}, ' ', #{centerLatitude}, ')'))) < #{radius}"); if (params.get("level") != null) { sqlBuild.append(" AND ( map_level <= #{level} or map_level is null )"); @@ -776,21 +763,16 @@ public class ChannelProvider { sqlBuild.append(" where wdc.channel_type = 0 AND wdc.data_type != 2 AND (wdc.gb_ptz_type is null or ( wdc.gb_ptz_type != 98 AND wdc.gb_ptz_type != 99)) " + " AND coalesce(wdc.gb_parent_id, wdc.parent_id) in ("); - sqlBuild.append(" "); List groupList = (List)params.get("groupList"); - boolean first = true; - for (CameraGroup group : groupList) { - if (!first) { + for (int i = 0; i < groupList.size(); i++) { + if (i > 0) { sqlBuild.append(","); } - sqlBuild.append("'" + group.getDeviceId() + "'"); - first = false; + sqlBuild.append("#{groupList[").append(i).append("].deviceId}"); } sqlBuild.append(" )"); - String geomTextBuilder = "point(" + params.get("centerLongitude") + " " + params.get("centerLatitude") + ")"; - - sqlBuild.append("AND ST_DistanceSphere(ST_MakePoint(coalesce(wdc.gb_longitude, wdc.longitude), coalesce(wdc.gb_latitude, wdc.latitude)), ST_GeomFromText('").append(geomTextBuilder).append("')) < #{radius}"); + sqlBuild.append("AND ST_DistanceSphere(ST_MakePoint(coalesce(wdc.gb_longitude, wdc.longitude), coalesce(wdc.gb_latitude, wdc.latitude)), ST_GeomFromText(CONCAT('point(', #{centerLongitude}, ' ', #{centerLatitude}, ')'))) < #{radius}"); if (params.get("level") != null) { sqlBuild.append(" AND ( map_level <= #{level} or map_level is null )"); @@ -805,30 +787,25 @@ public class ChannelProvider { sqlBuild.append(" where wdc.channel_type = 0 AND wdc.data_type != 2 AND (wdc.gb_ptz_type is null or ( wdc.gb_ptz_type != 98 AND wdc.gb_ptz_type != 99)) " + " AND coalesce(wdc.gb_parent_id, wdc.parent_id) in ("); - sqlBuild.append(" "); List groupList = (List)params.get("groupList"); - boolean first = true; - for (CameraGroup group : groupList) { - if (!first) { + for (int i = 0; i < groupList.size(); i++) { + if (i > 0) { sqlBuild.append(","); } - sqlBuild.append("'" + group.getDeviceId() + "'"); - first = false; + sqlBuild.append("#{groupList[").append(i).append("].deviceId}"); } sqlBuild.append(" )"); - StringBuilder geomTextBuilder = new StringBuilder(); - geomTextBuilder.append("POLYGON(("); + StringBuilder geomSql = new StringBuilder("CONCAT('POLYGON(('"); List pointList = (List)params.get("pointList"); for (int i = 0; i < pointList.size(); i++) { - if (i > 0) { - geomTextBuilder.append(", "); + geomSql.append(", #{pointList[").append(i).append("].lng}, ' ', #{pointList[").append(i).append("].lat}"); + if (i < pointList.size() - 1) { + geomSql.append(", ', '"); } - Point point = pointList.get(i); - geomTextBuilder.append(point.getLng()).append(" ").append(point.getLat()); } - geomTextBuilder.append("))"); - sqlBuild.append("AND ST_Within(point(coalesce(wdc.gb_longitude, wdc.longitude), coalesce(wdc.gb_latitude, wdc.latitude)), ST_GeomFromText('").append(geomTextBuilder).append("'))"); + geomSql.append(", '))')"); + sqlBuild.append("AND ST_Within(point(coalesce(wdc.gb_longitude, wdc.longitude), coalesce(wdc.gb_latitude, wdc.latitude)), ST_GeomFromText(").append(geomSql).append("))"); if (params.get("level") != null) { sqlBuild.append(" AND ( map_level <= #{level} or map_level is null )"); @@ -843,30 +820,25 @@ public class ChannelProvider { sqlBuild.append(" where wdc.channel_type = 0 AND wdc.data_type != 2 AND (wdc.gb_ptz_type is null or ( wdc.gb_ptz_type != 98 AND wdc.gb_ptz_type != 99)) " + " AND coalesce(wdc.gb_parent_id, wdc.parent_id) in ("); - sqlBuild.append(" "); List groupList = (List)params.get("groupList"); - boolean first = true; - for (CameraGroup group : groupList) { - if (!first) { + for (int i = 0; i < groupList.size(); i++) { + if (i > 0) { sqlBuild.append(","); } - sqlBuild.append("'" + group.getDeviceId() + "'"); - first = false; + sqlBuild.append("#{groupList[").append(i).append("].deviceId}"); } sqlBuild.append(" )"); - StringBuilder geomTextBuilder = new StringBuilder(); - geomTextBuilder.append("POLYGON(("); + StringBuilder geomSql = new StringBuilder("CONCAT('POLYGON(('"); List pointList = (List)params.get("pointList"); for (int i = 0; i < pointList.size(); i++) { - if (i > 0) { - geomTextBuilder.append(", "); + geomSql.append(", #{pointList[").append(i).append("].lng}, ' ', #{pointList[").append(i).append("].lat}"); + if (i < pointList.size() - 1) { + geomSql.append(", ', '"); } - Point point = pointList.get(i); - geomTextBuilder.append(point.getLng()).append(" ").append(point.getLat()); } - geomTextBuilder.append("))"); - sqlBuild.append("AND ST_Within(ST_MakePoint(coalesce(wdc.gb_longitude, wdc.longitude), coalesce(wdc.gb_latitude, wdc.latitude)), ST_GeomFromText('").append(geomTextBuilder).append("'))"); + geomSql.append(", '))')"); + sqlBuild.append("AND ST_Within(ST_MakePoint(coalesce(wdc.gb_longitude, wdc.longitude), coalesce(wdc.gb_latitude, wdc.latitude)), ST_GeomFromText(").append(geomSql).append("))"); if (params.get("level") != null) { sqlBuild.append(" AND ( map_level <= #{level} or map_level is null )"); diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/provider/DeviceChannelProvider.java b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/provider/DeviceChannelProvider.java index af5b8e0c4..ad828a9f4 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/provider/DeviceChannelProvider.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/provider/DeviceChannelProvider.java @@ -104,13 +104,11 @@ public class DeviceChannelProvider { List channelIds = (List)params.get("channelIds"); if (channelIds != null && !channelIds.isEmpty()) { sqlBuild.append(" AND dc.device_id in ("); - boolean first = true; - for (String id : channelIds) { - if (!first) { + for (int i = 0; i < channelIds.size(); i++) { + if (i > 0) { sqlBuild.append(","); } - sqlBuild.append(id); - first = false; + sqlBuild.append("#{channelIds[").append(i).append("]}"); } sqlBuild.append(" )"); } diff --git a/src/main/java/com/genersoft/iot/vmp/jt1078/dao/provider/JTChannelProvider.java b/src/main/java/com/genersoft/iot/vmp/jt1078/dao/provider/JTChannelProvider.java index c06f0ecbd..b9deb65f9 100644 --- a/src/main/java/com/genersoft/iot/vmp/jt1078/dao/provider/JTChannelProvider.java +++ b/src/main/java/com/genersoft/iot/vmp/jt1078/dao/provider/JTChannelProvider.java @@ -27,9 +27,7 @@ public class JTChannelProvider { sqlBuild.append(BASE_SQL); sqlBuild.append(" WHERE jc.terminal_db_id = #{terminalDbId} "); if (params.get("query") != null) { - sqlBuild.append(" AND ") - .append(" jc.name LIKE ").append("'%").append(params.get("query")).append("%'") - ; + sqlBuild.append(" AND jc.name LIKE concat('%',#{query},'%')"); } sqlBuild.append(" ORDER BY jc.channel_id "); return sqlBuild.toString(); diff --git a/src/main/java/com/genersoft/iot/vmp/streamProxy/dao/provider/StreamProxyProvider.java b/src/main/java/com/genersoft/iot/vmp/streamProxy/dao/provider/StreamProxyProvider.java index e61c710a7..9a0bf8ad1 100644 --- a/src/main/java/com/genersoft/iot/vmp/streamProxy/dao/provider/StreamProxyProvider.java +++ b/src/main/java/com/genersoft/iot/vmp/streamProxy/dao/provider/StreamProxyProvider.java @@ -19,7 +19,7 @@ public class StreamProxyProvider { } public String select(Map params ){ - return getBaseSelectSql() + " WHERE st.id = " + params.get("id"); + return getBaseSelectSql() + " WHERE st.id = #{id}"; } public String selectForPushingInMediaServer(Map params ){ @@ -27,8 +27,7 @@ public class StreamProxyProvider { } public String selectOneByAppAndStream(Map params ){ - return getBaseSelectSql() + String.format(" WHERE st.app='%s' AND st.stream='%s' order by st.create_time desc", - params.get("app"), params.get("stream")); + return getBaseSelectSql() + " WHERE st.app=#{app} AND st.stream=#{stream} order by st.create_time desc"; } public String selectAll(Map params ){ @@ -36,15 +35,11 @@ public class StreamProxyProvider { sqlBuild.append(getBaseSelectSql()); sqlBuild.append(" WHERE 1=1 "); if (params.get("query") != null) { - sqlBuild.append(" AND ") - .append(" (") - .append(" st.app LIKE ").append("'%").append(params.get("query")).append("%' escape '/'") - .append(" OR") - .append(" st.stream LIKE ").append("'%").append(params.get("query")).append("%' escape '/'") - .append(" OR") - .append(" wdc.gb_device_id LIKE ").append("'%").append(params.get("query")).append("%' escape '/'") - .append(" OR") - .append(" wdc.gb_name LIKE ").append("'%").append(params.get("query")).append("%' escape '/'") + sqlBuild.append(" AND (") + .append(" st.app LIKE concat('%',#{query},'%') escape '/'") + .append(" OR st.stream LIKE concat('%',#{query},'%') escape '/'") + .append(" OR wdc.gb_device_id LIKE concat('%',#{query},'%') escape '/'") + .append(" OR wdc.gb_name LIKE concat('%',#{query},'%') escape '/'") .append(" )") ; } @@ -57,7 +52,7 @@ public class StreamProxyProvider { } } if (params.get("mediaServerId") != null) { - sqlBuild.append(" AND st.media_server_id='").append(params.get("mediaServerId")).append("'"); + sqlBuild.append(" AND st.media_server_id=#{mediaServerId}"); } sqlBuild.append(" order by st.create_time desc"); return sqlBuild.toString();