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();