diff --git a/src/main/java/com/genersoft/iot/vmp/conf/CivilCodeFileConf.java b/src/main/java/com/genersoft/iot/vmp/conf/CivilCodeFileConf.java index 585834cb..8b4c9527 100644 --- a/src/main/java/com/genersoft/iot/vmp/conf/CivilCodeFileConf.java +++ b/src/main/java/com/genersoft/iot/vmp/conf/CivilCodeFileConf.java @@ -1,8 +1,9 @@ package com.genersoft.iot.vmp.conf; import com.genersoft.iot.vmp.common.CivilCodePo; -import com.genersoft.iot.vmp.utils.CivilCodeUtil; +import com.genersoft.iot.vmp.gb28181.bean.Region; import lombok.extern.slf4j.Slf4j; +import org.ehcache.impl.internal.concurrent.ConcurrentHashMap; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.context.annotation.Configuration; @@ -18,6 +19,7 @@ import java.io.InputStreamReader; import java.nio.file.Files; import java.util.ArrayList; import java.util.List; +import java.util.Map; /** * 启动时读取行政区划表 @@ -31,6 +33,8 @@ public class CivilCodeFileConf implements CommandLineRunner { @Lazy private UserSetting userSetting; + private final Map civilCodeMap= new ConcurrentHashMap<>(); + @Override public void run(String... args) throws Exception { if (ObjectUtils.isEmpty(userSetting.getCivilCodeFile())) { @@ -59,7 +63,6 @@ public class CivilCodeFileConf implements CommandLineRunner { BufferedReader inputStreamReader = new BufferedReader(new InputStreamReader(inputStream)); int index = -1; String line; - List civilCodePoList = new ArrayList<>(); while ((line = inputStreamReader.readLine()) != null) { index ++; if (index == 0) { @@ -67,15 +70,28 @@ public class CivilCodeFileConf implements CommandLineRunner { } String[] infoArray = line.split(","); CivilCodePo civilCodePo = CivilCodePo.getInstance(infoArray); - civilCodePoList.add(civilCodePo); + civilCodeMap.put(civilCodePo.getCode(), civilCodePo); } - CivilCodeUtil.INSTANCE.add(civilCodePoList); inputStreamReader.close(); inputStream.close(); - if (civilCodePoList.isEmpty()) { + if (civilCodeMap.isEmpty()) { log.warn("[行政区划] 文件内容为空,可能造成目录刷新结果不完整"); }else { - log.info("[行政区划] 加载成功,共加载数据{}条", civilCodePoList.size()); + log.info("[行政区划] 加载成功,共加载数据{}条", civilCodeMap.size()); } } + + public List getAllChild(String parent) { + List result = new ArrayList<>(); + for (String key : civilCodeMap.keySet()) { + if (parent == null) { + if (ObjectUtils.isEmpty(civilCodeMap.get(key).getParentCode().trim())) { + result.add(Region.getInstance(key, civilCodeMap.get(key).getName(), civilCodeMap.get(key).getParentCode())); + } + }else if (civilCodeMap.get(key).getParentCode().equals(parent)) { + result.add(Region.getInstance(key, civilCodeMap.get(key).getName(), civilCodeMap.get(key).getParentCode())); + } + } + return result; + } } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceType.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceType.java new file mode 100644 index 00000000..5a82526d --- /dev/null +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceType.java @@ -0,0 +1,58 @@ +package com.genersoft.iot.vmp.gb28181.bean; + +import org.jetbrains.annotations.NotNull; + +public class DeviceType implements Comparable{ + + /** + * 编号 + */ + private String name; + + /** + * 名称 + */ + private String code; + + /** + * 归属名称 + */ + private String ownerName; + public static DeviceType getInstance(DeviceTypeEnum typeEnum) { + DeviceType deviceType = new DeviceType(); + deviceType.setName(typeEnum.getName()); + deviceType.setCode(typeEnum.getCode()); + deviceType.setOwnerName(typeEnum.getOwnerName()); + return deviceType; + } + + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getOwnerName() { + return ownerName; + } + + public void setOwnerName(String ownerName) { + this.ownerName = ownerName; + } + + @Override + public int compareTo(@NotNull DeviceType deviceType) { + return Integer.compare(Integer.parseInt(this.code), Integer.parseInt(deviceType.getCode())); + } +} diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceTypeEnum.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceTypeEnum.java new file mode 100644 index 00000000..8a7c07a5 --- /dev/null +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/DeviceTypeEnum.java @@ -0,0 +1,98 @@ +package com.genersoft.iot.vmp.gb28181.bean; + +/** + * 收录行业编码 + */ +public enum DeviceTypeEnum { + DVR("111", "DVR编码", "前端主设备"), + VIDEO_SERVER("112", "视频服务器编码", "前端主设备"), + ENCODER("113", "编码器编码", "前端主设备"), + DECODER("114", "解码器编码", "前端主设备"), + VIDEO_SWITCHING_MATRIX("115", "视频切换矩阵编码", "前端主设备"), + AUDIO_SWITCHING_MATRIX("116", "音频切换矩阵编码", "前端主设备"), + ALARM_CONTROLLER("117", "报警控制器编码", "前端主设备"), + NVR("118", "网络视频录像机(NVR)编码", "前端主设备"), + RESERVE("119", "预留", "前端主设备"), + ONLINE_VIDEO_IMAGE_INFORMATION_ACQUISITION_SYSTEM("120", "在线视频图像信息采集系统编码", "前端主设备"), + VIDEO_CHECKPOINT("121", "视频卡口编码", "前端主设备"), + MULTI_CAMERA_DEVICE("122", "多目设备编码", "前端主设备"), + PARKING_LOT_ENTRANCE_AND_EXIT_CONTROL_EQUIPMENT("123", "停车场出入口控制设备编码", "前端主设备"), + PERSONNEL_ACCESS_CONTROL_EQUIPMENT("124", "人员出入口控制设备编码", "前端主设备"), + SECURITY_INSPECTION_EQUIPMENT("125", "安检设备编码", "前端主设备"), + HVR("130", "混合硬盘录像机(HVR)编码", "前端主设备"), + CAMERA("131", "摄像机编码", "前端外围设备"), + IPC("132", "网络摄像机(IPC)/在线视频图像信息采集设备编码", "前端外围设备"), + MONITOR("133", "显示器编码", "前端外围设备"), + ALARM_INPUT_DEVICE("134", "报警输入设备编码(如红外、烟感、门禁等报警设备)", "前端外围设备"), + ALARM_OUTPUT_DEVICE("135", "报警输出设备编码(如警灯、警铃等设备)", "前端外围设备"), + VOICE_INPUT_DEVICE("136", "语音输入设备编码", "前端外围设备"), + VOICE_OUTPUT_DEVICE("137", "语音输出设备", "前端外围设备"), + MOBILE_TRANSMISSION_EQUIPMENT("138", "移动传输设备编码", "前端外围设备"), + OTHER_PERIPHERAL_DEVICES("139", "其他外围设备编码", "前端外围设备"), + ALARM_OUTPUT_DEVICE2("140", "报警输出设备编码(如继电器或触发器控制的设备)", "前端外围设备"), + BARRIER_GATE("141", "道闸(控制车辆通行)", "前端外围设备"), + SMART_DOOR("142", "智能门(控制人员通行)", "前端外围设备"), + VOUCHER_RECOGNITION_UNIT("143", "凭证识别单元", "前端外围设备"), + CENTRAL_SIGNALING_CONTROL_SERVER("200", "中心信令控制服务器编码", "平台设备"), + WEB_APPLICATION_SERVER("201", "Web应用服务器编码", "平台设备"), + PROXY_SERVER("203", "代理服务器编码", "平台设备"), + SECURITY_SERVER("204", "安全服务器编码", "平台设备"), + ALARM_SERVER("205", "报警服务器编码", "平台设备"), + DATABASE_SERVER("206", "数据库服务器编码", "平台设备"), + GIS_SERVER("207", "GIS服务器编码", "平台设备"), + MANAGER_SERVER("208", "管理服务器编码", "平台设备"), + ACCESS_GATEWAY("209", "接入网关编码", "平台设备"), + MEDIA_STORAGE_SERVER("210", "媒体存储服务器编码", "平台设备"), + SIGNALING_SECURITY_ROUTING_GATEWAY("211", "信令安全路由网关编码", "平台设备"), + BUSINESS_GROUP("215", "业务分组编码", "平台设备"), + VIRTUAL_ORGANIZATION("216", "虚拟组织编码", "平台设备"), + CENTRAL_USER("300", "中心用户", "中心用户"), + END_USER("400", "终端用户", "终端用户"), + VIDEO_IMAGE_INFORMATION_SYNTHESIS("500", "视频图像信息综合应用平台", "平台外接服务器"), + VIDEO_IMAGE_INFORMATION_OPERATION_AND_MAINTENANCE_MANAGEMENT("501", "视频图像信息运维管理平台", "平台外接服务器"), + VIDEO_IMAGE_ANALYSIS("502", "视频图像分析系统", "平台外接服务器"), + VIDEO_IMAGE_INFORMATION_DATABASE("503", "视频图像信息数据库", "平台外接服务器"), + VIDEO_IMAGE_ANALYSIS_EQUIPMENT("505", "视频图像分析设备", "平台外接服务器"), + ; + + /** + * 编号 + */ + private final String name; + + /** + * 名称 + */ + private String code; + + /** + * 归属名称 + */ + private String ownerName; + + DeviceTypeEnum(String code, String name, String ownerName) { + this.name = name; + this.code = code; + this.ownerName = ownerName; + } + + public String getName() { + return name; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getOwnerName() { + return ownerName; + } + + public void setOwnerName(String ownerName) { + this.ownerName = ownerName; + } +} diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/IndustryCodeType.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/IndustryCodeType.java new file mode 100644 index 00000000..d3414a22 --- /dev/null +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/IndustryCodeType.java @@ -0,0 +1,59 @@ +package com.genersoft.iot.vmp.gb28181.bean; + +import org.jetbrains.annotations.NotNull; + +public class IndustryCodeType implements Comparable{ + + /** + * 接入类型码 + */ + private String name; + + /** + * 名称 + */ + private String code; + + /** + * 备注 + */ + private String notes; + + public static IndustryCodeType getInstance(IndustryCodeTypeEnum typeEnum) { + IndustryCodeType industryCodeType = new IndustryCodeType(); + industryCodeType.setName(typeEnum.getName()); + industryCodeType.setCode(typeEnum.getCode()); + industryCodeType.setNotes(typeEnum.getNotes()); + return industryCodeType; + } + + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getNotes() { + return notes; + } + + public void setNotes(String notes) { + this.notes = notes; + } + + @Override + public int compareTo(@NotNull IndustryCodeType industryCodeType) { + return Integer.compare(Integer.parseInt(this.code), Integer.parseInt(industryCodeType.getCode())); + } +} diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/IndustryCodeTypeEnum.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/IndustryCodeTypeEnum.java new file mode 100644 index 00000000..8d25fe99 --- /dev/null +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/IndustryCodeTypeEnum.java @@ -0,0 +1,55 @@ +package com.genersoft.iot.vmp.gb28181.bean; + +import lombok.Getter; + +/** + * 收录行业编码 + */ +public enum IndustryCodeTypeEnum { + SOCIAL_SECURITY_ROAD("00", "社会治安路面接入", "包括城市路面、商业街、公共区域、重点区域"), + SOCIAL_SECURITY_COMMUNITY("01", "社会治安社区接入", "包括社区、楼宇、网吧等"), + SOCIAL_SECURITY__INTERNAL("02", "社会治安内部接入 ", "包括公安办公楼、留置室等"), + SOCIAL_SECURITY_OTHER("03", "社会治安其他接入", ""), + TRAFFIC_ROAD("04", "交通路面接入 ", "包括城市主要干道、国道、高速交通状况监视"), + TRAFFIC_BAYONET("05", "交通卡口接入", "包括交叉路口、“电子警察”、关口、收费站等"), + TRAFFIC_INTERNAL("06", "交通内部接入", "包括交管办公楼等"), + TRAFFIC_OTHER("07", "交通其他接入", ""), + CITY_MANAGEMENT("08", "城市管理接入", ""), + HEALTH_ENVIRONMENTAL_PROTECTION("09", "卫生环保接入", ""), + COMMODITY_INSPECTION_CUSTOMHOUSE("10", "商检海关接入", ""), + EDUCATION_SECTOR("11", "教育部门接入", ""), + CIVIL_AVIATION("12", "民航接入", ""), + RAILWAY("13", "铁路接入", ""), + SHIPPING("14", "航运接入", ""), + AGRICULTURE_FORESTRY_ANIMAL_HUSBANDRY_FISHING("40", "农、林、牧、渔业接入", ""), + MINING("41", "采矿业接入", ""), + MANUFACTURING_INDUSTRY("42", "制造业接入", ""), + ELECTRICITY_HEAT_GAS_AND_WATER_PRODUCTION_AND_SUPPLY("43", "电力、热力、燃气及水生产和供应业接入", ""), + CONSTRUCTION("44", "建筑业接入", ""), + WHOLESALE_AND_RETAIL("45", "批发和零售业接入", ""), + ; + + /** + * 接入类型码 + */ + @Getter + private String name; + + /** + * 名称 + */ + @Getter + private String code; + + /** + * 备注 + */ + @Getter + private String notes; + + IndustryCodeTypeEnum(String code, String name, String notes) { + this.name = name; + this.code = code; + this.notes = notes; + } +} diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/NetworkIdentificationType.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/NetworkIdentificationType.java new file mode 100644 index 00000000..ed469e49 --- /dev/null +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/NetworkIdentificationType.java @@ -0,0 +1,45 @@ +package com.genersoft.iot.vmp.gb28181.bean; + +import org.jetbrains.annotations.NotNull; + +public class NetworkIdentificationType implements Comparable{ + + /** + * 接入类型码 + */ + private String name; + + /** + * 名称 + */ + private String code; + + public static NetworkIdentificationType getInstance(NetworkIdentificationTypeEnum typeEnum) { + NetworkIdentificationType industryCodeType = new NetworkIdentificationType(); + industryCodeType.setName(typeEnum.getName()); + industryCodeType.setCode(typeEnum.getCode()); + return industryCodeType; + } + + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + @Override + public int compareTo(@NotNull NetworkIdentificationType networkIdentificationType) { + return Integer.compare(Integer.parseInt(this.code), Integer.parseInt(networkIdentificationType.getCode())); + } +} diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/NetworkIdentificationTypeEnum.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/NetworkIdentificationTypeEnum.java new file mode 100644 index 00000000..1b0ed2a5 --- /dev/null +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/NetworkIdentificationTypeEnum.java @@ -0,0 +1,51 @@ +package com.genersoft.iot.vmp.gb28181.bean; + +/** + * 收录行业编码 + */ +public enum NetworkIdentificationTypeEnum { + PUBLIC_SECURITY_VIDEO_TRANSMISSION_NETWORK("0", "公安视频传输网"), + PUBLIC_SECURITY_VIDEO_TRANSMISSION_NETWORK2("1", "公安视频传输网"), + INDUSTRY_SPECIFIC_NETWORK("2", "行业专网"), + POLITICAL_AND_LEGAL_INFORMATION_NETWORK("3", "政法信息网"), + PUBLIC_SECURITY_MOBILE_INFORMATION_NETWORK("4", "公安移动信息网"), + PUBLIC_SECURITY_INFORMATION_NETWORK("5", "公安信息网"), + ELECTRONIC_GOVERNMENT_EXTRANET("6", "电子政务外网"), + PUBLIC_NETWORKS_SUCH_AS_THE_INTERNET("7", "互联网等公共网络"), + Dedicated_Line("8", "专线"), + RESERVE("9", "预留"), + ; + + /** + * 接入类型码 + */ + private String name; + + /** + * 名称 + */ + private String code; + + + NetworkIdentificationTypeEnum(String code, String name) { + this.name = name; + this.code = code; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + +} diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Region.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Region.java new file mode 100644 index 00000000..627fca6c --- /dev/null +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Region.java @@ -0,0 +1,64 @@ +package com.genersoft.iot.vmp.gb28181.bean; + +import com.genersoft.iot.vmp.utils.DateUtil; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.jetbrains.annotations.NotNull; + +/** + * 区域 + */ +@Data +@Schema(description = "区域") +public class Region implements Comparable{ + /** + * 数据库自增ID + */ + @Schema(description = "数据库自增ID") + private int commonRegionId; + + /** + * 区域国标编号 + */ + @Schema(description = "区域国标编号") + private String commonRegionDeviceId; + + /** + * 区域名称 + */ + @Schema(description = "区域名称") + private String commonRegionName; + + /** + * 父区域国标ID + */ + @Schema(description = "父区域国标ID") + private String commonRegionParentId; + + /** + * 创建时间 + */ + @Schema(description = "创建时间") + private String commonRegionCreateTime; + + /** + * 更新时间 + */ + @Schema(description = "更新时间") + private String commonRegionUpdateTime; + + public static Region getInstance(String commonRegionDeviceId, String commonRegionName, String commonRegionParentId) { + Region region = new Region(); + region.setCommonRegionDeviceId(commonRegionDeviceId); + region.setCommonRegionName(commonRegionName); + region.setCommonRegionParentId(commonRegionParentId); + region.setCommonRegionCreateTime(DateUtil.getNow()); + region.setCommonRegionUpdateTime(DateUtil.getNow()); + return region; + } + + @Override + public int compareTo(@NotNull Region region) { + return Integer.compare(Integer.parseInt(this.commonRegionDeviceId), Integer.parseInt(region.getCommonRegionDeviceId())); + } +} diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/controller/CommonChannelController.java b/src/main/java/com/genersoft/iot/vmp/gb28181/controller/CommonChannelController.java index f1f8cbad..303c5acd 100755 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/controller/CommonChannelController.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/controller/CommonChannelController.java @@ -2,6 +2,9 @@ package com.genersoft.iot.vmp.gb28181.controller; import com.genersoft.iot.vmp.conf.security.JwtUtils; import com.genersoft.iot.vmp.gb28181.bean.CommonGBChannel; +import com.genersoft.iot.vmp.gb28181.bean.DeviceType; +import com.genersoft.iot.vmp.gb28181.bean.IndustryCodeType; +import com.genersoft.iot.vmp.gb28181.bean.NetworkIdentificationType; import com.genersoft.iot.vmp.gb28181.service.IGbChannelService; import com.genersoft.iot.vmp.media.service.IMediaServerService; import com.genersoft.iot.vmp.storager.IRedisCatchStorage; @@ -16,6 +19,8 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; +import java.util.List; + @Tag(name = "全局通道管理") @Controller @@ -40,4 +45,25 @@ public class CommonChannelController { public CommonGBChannel getOne(int id){ return channelService.getOne(id); } + + @Operation(summary = "获取行业编码列表", security = @SecurityRequirement(name = JwtUtils.HEADER)) + @ResponseBody + @GetMapping("/industry/list") + public List getIndustryCodeList(){ + return channelService.getIndustryCodeList(); + } + + @Operation(summary = "获取编码列表", security = @SecurityRequirement(name = JwtUtils.HEADER)) + @ResponseBody + @GetMapping("/type/list") + public List getDeviceTypeList(){ + return channelService.getDeviceTypeList(); + } + + @Operation(summary = "获取编码列表", security = @SecurityRequirement(name = JwtUtils.HEADER)) + @ResponseBody + @GetMapping("/network/identification/list") + public List getNetworkIdentificationTypeList(){ + return channelService.getNetworkIdentificationTypeList(); + } } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/controller/RegionController.java b/src/main/java/com/genersoft/iot/vmp/gb28181/controller/RegionController.java new file mode 100644 index 00000000..4445c51e --- /dev/null +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/controller/RegionController.java @@ -0,0 +1,111 @@ +package com.genersoft.iot.vmp.gb28181.controller; + +import com.genersoft.iot.vmp.conf.exception.ControllerException; +import com.genersoft.iot.vmp.gb28181.bean.Region; +import com.genersoft.iot.vmp.gb28181.service.IRegionService; +import com.genersoft.iot.vmp.vmanager.bean.ErrorCode; +import com.github.pagehelper.PageInfo; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.ObjectUtils; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Tag(name = "区域管理") +@RestController +@RequestMapping("/api/region") +public class RegionController { + + private final static Logger logger = LoggerFactory.getLogger(RegionController.class); + + @Autowired + private IRegionService regionService; + + @Operation(summary = "添加区域") + @Parameter(name = "region", description = "Region", required = true) + @ResponseBody + @PostMapping("/add") + public void add(@RequestBody Region region){ + regionService.add(region); + } + + @Operation(summary = "查询区域") + @Parameter(name = "query", description = "要搜索的内容", required = true) + @Parameter(name = "page", description = "当前页", required = true) + @Parameter(name = "count", description = "每页查询数量", required = true) + @ResponseBody + @GetMapping("/list") + public PageInfo query( + @RequestParam(required = false) String query, + @RequestParam(required = true) int page, + @RequestParam(required = true) int count + ){ + return regionService.query(query, page, count); + } + + @Operation(summary = "更新区域") + @Parameter(name = "region", description = "Region", required = true) + @ResponseBody + @PostMapping("/update") + public void update(@RequestBody Region region){ + regionService.update(region); + } + + @Operation(summary = "删除区域") + @Parameter(name = "regionDeviceId", description = "区域编码", required = true) + @ResponseBody + @GetMapping("/delete") + public void delete(String regionDeviceId){ + assert regionDeviceId != null; + boolean result = regionService.deleteByDeviceId(regionDeviceId); + if (!result) { + throw new ControllerException(ErrorCode.ERROR100.getCode(), "移除失败"); + } + } + + @Operation(summary = "分页区域子节点") + @Parameter(name = "regionParentId", description = "行政区划父节点编号", required = true) + @Parameter(name = "page", description = "当前页", required = true) + @Parameter(name = "count", description = "每页查询数量", required = true) + @ResponseBody + @GetMapping("/child/list") + public PageInfo queryChildRegionList( + @RequestParam(required = true) String regionParentId, + @RequestParam(required = true) int page, + @RequestParam(required = true) int count + ){ + if (ObjectUtils.isEmpty(regionParentId.trim())) { + regionParentId = null; + } + return regionService.queryChildRegionList(regionParentId, page, count); + } + + @Operation(summary = "根据区域Id查询区域") + @Parameter(name = "regionDeviceId", description = "行政区划节点编号", required = true) + @ResponseBody + @GetMapping("/one") + public Region queryRegionByDeviceId( + @RequestParam(required = true) String regionDeviceId + ){ + if (ObjectUtils.isEmpty(regionDeviceId.trim())) { + throw new ControllerException(ErrorCode.ERROR400); + } + return regionService.queryRegionByDeviceId(regionDeviceId); + } + + @Operation(summary = "获取所属的行政区划下的行政区划") + @Parameter(name = "parent", description = "所属的行政区划", required = false) + @ResponseBody + @GetMapping("/base/child/list") + public List getAllChild(@RequestParam(required = false) String parent){ + if (ObjectUtils.isEmpty(parent.trim())) { + parent = null; + } + return regionService.getAllChild(parent); + } +} diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/dao/RegionMapper.java b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/RegionMapper.java new file mode 100644 index 00000000..1c8e1060 --- /dev/null +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/dao/RegionMapper.java @@ -0,0 +1,17 @@ +package com.genersoft.iot.vmp.gb28181.dao; + +import com.genersoft.iot.vmp.gb28181.bean.Region; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface RegionMapper { + void add(Region region); + + List query(String query); + + List getChildren(String regionParentId); + + Region queryRegion(int id); +} diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/service/IGbChannelService.java b/src/main/java/com/genersoft/iot/vmp/gb28181/service/IGbChannelService.java index 8a3eed5e..266e9507 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/service/IGbChannelService.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/service/IGbChannelService.java @@ -1,6 +1,9 @@ package com.genersoft.iot.vmp.gb28181.service; import com.genersoft.iot.vmp.gb28181.bean.CommonGBChannel; +import com.genersoft.iot.vmp.gb28181.bean.DeviceType; +import com.genersoft.iot.vmp.gb28181.bean.IndustryCodeType; +import com.genersoft.iot.vmp.gb28181.bean.NetworkIdentificationType; import java.util.List; @@ -29,4 +32,10 @@ public interface IGbChannelService { List queryByPlatformId(Integer platformId); CommonGBChannel getOne(int id); + + List getIndustryCodeList(); + + List getDeviceTypeList(); + + List getNetworkIdentificationTypeList(); } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/service/IRegionService.java b/src/main/java/com/genersoft/iot/vmp/gb28181/service/IRegionService.java new file mode 100644 index 00000000..01c0d05d --- /dev/null +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/service/IRegionService.java @@ -0,0 +1,33 @@ +package com.genersoft.iot.vmp.gb28181.service; + +import com.genersoft.iot.vmp.gb28181.bean.Region; +import com.github.pagehelper.PageInfo; + +import java.util.List; + + +public interface IRegionService { + + void add(Region region); + + boolean deleteByDeviceId(String regionDeviceId); + + /** + * 查询区划列表 + */ + PageInfo query(String query, int page, int count); + + /** + * 查询子区划列表 + */ + PageInfo queryChildRegionList(String regionParentId, int page, int count); + + /** + * 更新区域 + */ + void update(Region region); + + List getAllChild(String parent); + + Region queryRegionByDeviceId(String regionDeviceId); +} diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/GbChannelServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/GbChannelServiceImpl.java index 8bb0ee94..cb12b46d 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/GbChannelServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/GbChannelServiceImpl.java @@ -1,6 +1,6 @@ package com.genersoft.iot.vmp.gb28181.service.impl; -import com.genersoft.iot.vmp.gb28181.bean.CommonGBChannel; +import com.genersoft.iot.vmp.gb28181.bean.*; import com.genersoft.iot.vmp.gb28181.dao.CommonGBChannelMapper; import com.genersoft.iot.vmp.gb28181.event.EventPublisher; import com.genersoft.iot.vmp.gb28181.event.subscribe.catalog.CatalogEvent; @@ -10,6 +10,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; @Slf4j @@ -232,4 +234,37 @@ public class GbChannelServiceImpl implements IGbChannelService { public CommonGBChannel getOne(int id) { return commonGBChannelMapper.queryById(id); } + + @Override + public List getIndustryCodeList() { + IndustryCodeTypeEnum[] values = IndustryCodeTypeEnum.values(); + List result = new ArrayList<>(values.length); + for (IndustryCodeTypeEnum value : values) { + result.add(IndustryCodeType.getInstance(value)); + } + Collections.sort(result); + return result; + } + + @Override + public List getDeviceTypeList() { + DeviceTypeEnum[] values = DeviceTypeEnum.values(); + List result = new ArrayList<>(values.length); + for (DeviceTypeEnum value : values) { + result.add(DeviceType.getInstance(value)); + } + Collections.sort(result); + return result; + } + + @Override + public List getNetworkIdentificationTypeList() { + NetworkIdentificationTypeEnum[] values = NetworkIdentificationTypeEnum.values(); + List result = new ArrayList<>(values.length); + for (NetworkIdentificationTypeEnum value : values) { + result.add(NetworkIdentificationType.getInstance(value)); + } + Collections.sort(result); + return result; + } } diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/RegionServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/RegionServiceImpl.java new file mode 100644 index 00000000..a3cd6b71 --- /dev/null +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/service/impl/RegionServiceImpl.java @@ -0,0 +1,87 @@ +package com.genersoft.iot.vmp.gb28181.service.impl; + +import com.genersoft.iot.vmp.conf.CivilCodeFileConf; +import com.genersoft.iot.vmp.gb28181.bean.Region; +import com.genersoft.iot.vmp.gb28181.dao.RegionMapper; +import com.genersoft.iot.vmp.gb28181.service.IRegionService; +import com.genersoft.iot.vmp.utils.DateUtil; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.ObjectUtils; + +import java.util.Collections; +import java.util.List; + +/** + * 区域管理类 + */ +@Service +public class RegionServiceImpl implements IRegionService { + + + @Autowired + private RegionMapper regionMapper; + + + @Autowired + private GbChannelServiceImpl gbChannelService; + + + @Autowired + private CivilCodeFileConf civilCodeFileConf; + + @Override + public void add(Region region) { + assert region.getCommonRegionName() != null; + assert region.getCommonRegionDeviceId() != null; + if (ObjectUtils.isEmpty(region.getCommonRegionParentId().trim())) { + region.setCommonRegionParentId(null); + } + region.setCommonRegionCreateTime(DateUtil.getNow()); + region.setCommonRegionUpdateTime(DateUtil.getNow()); + regionMapper.add(region); + } + + @Override + @Transactional + public boolean deleteByDeviceId(String regionDeviceId) { + + return true; + } + + @Override + public PageInfo query(String query, int page, int count) { + PageHelper.startPage(page, count); + List regionList = regionMapper.query(query); + return new PageInfo<>(regionList); + } + + @Override + public PageInfo queryChildRegionList(String regionParentId, int page, int count) { + assert regionParentId != null; + PageHelper.startPage(page, count); + List all = regionMapper.getChildren(regionParentId); + return new PageInfo<>(all); + } + + @Override + @Transactional + public void update(Region region) { + + } + + @Override + public List getAllChild(String parent) { + List allChild = civilCodeFileConf.getAllChild(parent); + Collections.sort(allChild); + return allChild; + } + + @Override + public Region queryRegionByDeviceId(String regionDeviceId) { + return null; + } +} diff --git a/web_src/src/components/ChannelEdit.vue b/web_src/src/components/ChannelEdit.vue index c7ecff8b..21e60dc4 100644 --- a/web_src/src/components/ChannelEdit.vue +++ b/web_src/src/components/ChannelEdit.vue @@ -1,191 +1,230 @@ + diff --git a/web_src/src/components/dialog/ChannelCode.vue b/web_src/src/components/dialog/ChannelCode.vue new file mode 100644 index 00000000..948abbc6 --- /dev/null +++ b/web_src/src/components/dialog/ChannelCode.vue @@ -0,0 +1,371 @@ + + + + +