diff --git a/gb28181-wvp-proxy-orm/src/main/java/cn/skcks/docking/gb28181/wvp/orm/mybatis/operation/WvpProxyOperateTableMapper.xml b/gb28181-wvp-proxy-orm/src/main/java/cn/skcks/docking/gb28181/wvp/orm/mybatis/operation/WvpProxyOperateTableMapper.xml index b873aa8..f33ffab 100644 --- a/gb28181-wvp-proxy-orm/src/main/java/cn/skcks/docking/gb28181/wvp/orm/mybatis/operation/WvpProxyOperateTableMapper.xml +++ b/gb28181-wvp-proxy-orm/src/main/java/cn/skcks/docking/gb28181/wvp/orm/mybatis/operation/WvpProxyOperateTableMapper.xml @@ -4,20 +4,17 @@ - CREATE TABLE IF NOT EXISTS `wvp_proxy_device` - ( - `id` bigint NOT NULL AUTO_INCREMENT, - `device_code` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL, - `gb_device_id` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL, - `gb_device_channel_id` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL, - `name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, - `address` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `gb_device_id` (`gb_device_id`), - UNIQUE KEY `device_code` (`device_code`), - UNIQUE KEY `gb_device_id_2` (`gb_device_id`, `gb_device_channel_id`) - ) ENGINE = InnoDB - DEFAULT CHARSET = utf8mb4 - COLLATE = utf8mb4_unicode_ci; + CREATE TABLE `wvp_proxy_device` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `device_code` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL, + `gb_device_id` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL, + `gb_device_channel_id` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL, + `name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `address` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `gb_device_id` (`gb_device_id`), + UNIQUE KEY `device_code_2` (`device_code`,`gb_device_id`,`gb_device_channel_id`), + KEY `device_code` (`device_code`) USING BTREE + ) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; diff --git a/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/device/DeviceService.java b/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/device/DeviceService.java index e0ea765..0bed52a 100644 --- a/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/device/DeviceService.java +++ b/gb28181-wvp-proxy-service/src/main/java/cn/skcks/docking/gb28181/wvp/service/device/DeviceService.java @@ -40,6 +40,12 @@ public class DeviceService { s.where(WvpProxyDeviceDynamicSqlSupport.gbDeviceId,isEqualTo(gbDeviceId))); } + public Optional getDeviceByGbDeviceIdAndChannel(String gbDeviceId,String channel){ + return deviceMapper.selectOne(s-> + s.where(WvpProxyDeviceDynamicSqlSupport.gbDeviceId,isEqualTo(gbDeviceId)) + .and(WvpProxyDeviceDynamicSqlSupport.gbDeviceChannelId,isEqualTo(channel))); + } + /** * 添加设备 * @param device 设备 @@ -60,11 +66,15 @@ public class DeviceService { } String gbDeviceId = device.getGbDeviceId(); + String channel = device.getGbDeviceChannelId(); if(StringUtils.isBlank(gbDeviceId)){ throw new JsonException("国标编码不能为空"); } - if(getDeviceByGbDeviceId(gbDeviceId).isPresent()){ - throw new JsonException(MessageFormat.format("国标编码 {0} 已存在" ,gbDeviceId)); + if(StringUtils.isBlank(channel)){ + throw new JsonException("国标通道不能为空"); + } + if(getDeviceByGbDeviceIdAndChannel(gbDeviceId,channel).isPresent()){ + throw new JsonException(MessageFormat.format("国标编码 {0}, 通道 {1} 已存在" ,gbDeviceId, channel)); } return deviceMapper.insert(device) > 0;