From f9276cf1a5aa287efddd3cec6bfc8f69833f372c Mon Sep 17 00:00:00 2001 From: lin <648540858@qq.com> Date: Wed, 8 Oct 2025 23:34:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=B4=E6=97=B6=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gb28181/controller/ChannelController.java | 2 +- .../gb28181/dao/CommonGBChannelMapper.java | 4 +- .../gb28181/dao/provider/ChannelProvider.java | 76 +++++++++++++++++++ .../web/custom/CameraChannelController.java | 12 +-- .../custom/service/CameraChannelService.java | 11 ++- 5 files changed, 93 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/controller/ChannelController.java b/src/main/java/com/genersoft/iot/vmp/gb28181/controller/ChannelController.java index 9e97982fe..ccfb4b011 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/controller/ChannelController.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/controller/ChannelController.java @@ -319,7 +319,7 @@ public class ChannelController { Assert.notNull(channelId,"参数异常"); CommonGBChannel channel = channelService.getOne(channelId); Assert.notNull(channel, "通道不存在"); - channelPlayService.stopPlay(channel, channel.getStreamId()); + channelPlayService.stopPlay(channel); } @Operation(summary = "录像查询", security = @SecurityRequirement(name = JwtUtils.HEADER)) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/CommonGBChannelMapper.java b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/CommonGBChannelMapper.java index 9ccf6db13..d65b7e539 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/CommonGBChannelMapper.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/CommonGBChannelMapper.java @@ -611,6 +611,6 @@ public interface CommonGBChannelMapper { @Param("groupDeviceId") String groupDeviceId, @Param("online") Boolean online, @Param("containMobileDevice") Boolean containMobileDevice); - CommonGBChannel queryByDataIdAndDeviceID(Integer deviceDbId, String deviceId); - + @SelectProvider(type = ChannelProvider.class, method = "queryGbChannelByChannelDeviceIdAndGbDeviceId") + CommonGBChannel queryGbChannelByChannelDeviceIdAndGbDeviceId(String deviceId, String deviceCode); } 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 e93f51c4b..374e51035 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 @@ -148,6 +148,55 @@ public class ChannelProvider { " left join wvp_platform_channel wpgc on wdc.id = wpgc.device_channel_id" ; + private final static String BASE_SQL_FOR_CAMERA_DEVICE = + "select\n" + + " wdc.id as gb_id,\n" + + " wdc.data_type,\n" + + " wdc.data_device_id,\n" + + " wdc.create_time,\n" + + " wdc.update_time,\n" + + " wdc.stream_id,\n" + + " wdc.record_plan_id,\n" + + " wdc.enable_broadcast,\n" + + " wd.device_id as deviceCode,\n" + + " coalesce(wdc.gb_device_id, wdc.device_id) as gb_device_id,\n" + + " coalesce(wdc.gb_name, wdc.name) as gb_name,\n" + + " coalesce(wdc.gb_manufacturer, wdc.manufacturer) as gb_manufacturer,\n" + + " coalesce(wdc.gb_model, wdc.model) as gb_model,\n" + + " coalesce(wdc.gb_owner, wdc.owner) as gb_owner,\n" + + " coalesce(wdc.gb_civil_code, wdc.civil_code) as gb_civil_code,\n" + + " coalesce(wdc.gb_block, wdc.block) as gb_block,\n" + + " coalesce(wdc.gb_address, wdc.address) as gb_address,\n" + + " coalesce(wdc.gb_parental, wdc.parental) as gb_parental,\n" + + " coalesce(wdc.gb_parent_id, wdc.parent_id) as gb_parent_id,\n" + + " coalesce(wdc.gb_safety_way, wdc.safety_way) as gb_safety_way,\n" + + " coalesce(wdc.gb_register_way, wdc.register_way) as gb_register_way,\n" + + " coalesce(wdc.gb_cert_num, wdc.cert_num) as gb_cert_num,\n" + + " coalesce(wdc.gb_certifiable, wdc.certifiable) as gb_certifiable,\n" + + " coalesce(wdc.gb_err_code, wdc.err_code) as gb_err_code,\n" + + " coalesce(wdc.gb_end_time, wdc.end_time) as gb_end_time,\n" + + " coalesce(wdc.gb_secrecy, wdc.secrecy) as gb_secrecy,\n" + + " coalesce(wdc.gb_ip_address, wdc.ip_address) as gb_ip_address,\n" + + " coalesce(wdc.gb_port, wdc.port) as gb_port,\n" + + " coalesce(wdc.gb_password, wdc.password) as gb_password,\n" + + " coalesce(wdc.gb_status, wdc.status) as gb_status,\n" + + " coalesce(wdc.gb_longitude, wdc.longitude) as gb_longitude,\n" + + " coalesce(wdc.gb_latitude, wdc.latitude) as gb_latitude,\n" + + " coalesce(wdc.gb_ptz_type, wdc.ptz_type) as gb_ptz_type,\n" + + " coalesce(wdc.gb_position_type, wdc.position_type) as gb_position_type,\n" + + " coalesce(wdc.gb_room_type, wdc.room_type) as gb_room_type,\n" + + " coalesce(wdc.gb_use_type, wdc.use_type) as gb_use_type,\n" + + " coalesce(wdc.gb_supply_light_type, wdc.supply_light_type) as gb_supply_light_type,\n" + + " coalesce(wdc.gb_direction_type, wdc.direction_type) as gb_direction_type,\n" + + " coalesce(wdc.gb_resolution, wdc.resolution) as gb_resolution,\n" + + " coalesce(wdc.gb_business_group_id, wdc.business_group_id) as gb_business_group_id,\n" + + " coalesce(wdc.gb_download_speed, wdc.download_speed) as gb_download_speed,\n" + + " coalesce(wdc.gb_svc_space_support_mod, wdc.svc_space_support_mod) as gb_svc_space_support_mod,\n" + + " coalesce(wdc.gb_svc_time_support_mode, wdc.svc_time_support_mode) as gb_svc_time_support_mode\n" + + " from wvp_device_channel wdc\n" + + " left join wvp_device wd on wdc.data_type = 1 wd.id = wdc.data_device_id" + ; + public String queryByDeviceId(Map params ){ return BASE_SQL + " where channel_type = 0 and coalesce(gb_device_id, device_id) = #{gbDeviceId}"; } @@ -511,4 +560,31 @@ public class ChannelProvider { return sqlBuild.toString(); } + + public String queryGbChannelByChannelDeviceIdAndGbDeviceId(Map params ){ + StringBuilder sqlBuild = new StringBuilder(); + sqlBuild.append(BASE_SQL_FOR_CAMERA_DEVICE); + sqlBuild.append(" where channel_type = 0 "); + if (params.get("query") != null) { + sqlBuild.append(" AND (coalesce(gb_device_id, device_id) LIKE concat('%',#{query},'%') escape '/'" + + " OR coalesce(gb_name, name) LIKE concat('%',#{query},'%') escape '/' )") + ; + } + if (params.get("online") != null && (Boolean)params.get("online")) { + sqlBuild.append(" AND coalesce(gb_status, status) = 'ON'"); + } + if (params.get("online") != null && !(Boolean)params.get("online")) { + sqlBuild.append(" AND coalesce(gb_status, status) = 'OFF'"); + } + if (params.get("containMobileDevice") != null && !(Boolean)params.get("containMobileDevice")) { + sqlBuild.append(" AND gb_ptz_type != 99"); + } + if (params.get("groupDeviceId") != null) { + sqlBuild.append(" AND coalesce(gb_parent_id, parent_id) = #{groupDeviceId}"); + }else { + sqlBuild.append(" AND coalesce(gb_parent_id, parent_id) is null"); + } + + return sqlBuild.toString(); + } } diff --git a/src/main/java/com/genersoft/iot/vmp/web/custom/CameraChannelController.java b/src/main/java/com/genersoft/iot/vmp/web/custom/CameraChannelController.java index b931d2d3d..9ee82ca2a 100644 --- a/src/main/java/com/genersoft/iot/vmp/web/custom/CameraChannelController.java +++ b/src/main/java/com/genersoft/iot/vmp/web/custom/CameraChannelController.java @@ -46,7 +46,7 @@ public class CameraChannelController { private UserSetting userSetting; - @GetMapping(value = "/camera/list/group") + @GetMapping(value = "/camera/list") @ResponseBody @Operation(summary = "查询摄像机列表, 只查询当前虚拟组织下的", security = @SecurityRequirement(name = JwtUtils.HEADER)) @Parameter(name = "page", description = "当前页") @@ -82,7 +82,7 @@ public class CameraChannelController { return channelService.queryList(page, count, query, sortName, order, groupAlias, status, containMobileDevice); } - @GetMapping(value = "/camera/list") + @GetMapping(value = "/camera/list-with-child") @ResponseBody @Operation(summary = "查询摄像机列表, 查询当前虚拟组织下以及全部子节点", security = @SecurityRequirement(name = JwtUtils.HEADER)) @Parameter(name = "page", description = "当前页") @@ -139,17 +139,19 @@ public class CameraChannelController { @Parameter(name = "latitude", description = "纬度") @Parameter(name = "geoCoordSys", description = "坐标系类型:WGS84,GCJ02、BD09") public CameraChannel updateCamera(String deviceId, + @RequestParam(required = false) String deviceCode, @RequestParam(required = false) String name, @RequestParam(required = false) Double longitude, - @RequestParam(required = false) Double latitude) { - return null; + @RequestParam(required = false) Double latitude, + @RequestParam(required = false) String geoCoordSys) { + return channelService.updateCamera(deviceId, deviceCode, name, longitude, latitude, geoCoordSys); } @PostMapping(value = "/camera/list/ids") @ResponseBody @Operation(summary = "根据编号查询多个摄像头信息", security = @SecurityRequirement(name = JwtUtils.HEADER)) public List queryListByNos(@RequestBody IdsQueryParam param) { - return null; + return channelService.queryListByNos(deviceId, deviceCode, name, longitude, latitude, geoCoordSys);; } @GetMapping(value = "/camera/list/box") diff --git a/src/main/java/com/genersoft/iot/vmp/web/custom/service/CameraChannelService.java b/src/main/java/com/genersoft/iot/vmp/web/custom/service/CameraChannelService.java index 606fcbaf6..3a1c3ce0d 100644 --- a/src/main/java/com/genersoft/iot/vmp/web/custom/service/CameraChannelService.java +++ b/src/main/java/com/genersoft/iot/vmp/web/custom/service/CameraChannelService.java @@ -94,10 +94,10 @@ public class CameraChannelService implements CommandLineRunner { private CommonGBChannel queryChannelByDeviceIdAndDeviceCode(String deviceId, String deviceCode) { CommonGBChannel channel = null; if (deviceCode != null) { - Device device = deviceMapper.getDeviceByDeviceId(deviceId); - Assert.notNull(device, "设备不存在:" + deviceCode); - Integer deviceDbId = device.getId(); - channel = channelMapper.queryByDataIdAndDeviceID(deviceDbId, deviceId); +// Device device = deviceMapper.getDeviceByDeviceId(deviceId); +// Assert.notNull(device, "设备不存在:" + deviceCode); +// Integer deviceDbId = device.getId(); + channel = channelMapper.queryGbChannelByChannelDeviceIdAndGbDeviceId(deviceId, deviceCode); }else { channel = channelMapper.queryByDeviceId(deviceId); } @@ -206,4 +206,7 @@ public class CameraChannelService implements CommandLineRunner { channelControlService.ptz(channel, controlCode, callback); } + + public CameraChannel updateCamera(String deviceId, String deviceCode, String name, Double longitude, Double latitude, String geoCoordSys) { + } }