From 943f95ba8ce02f8088f2dfcfd83a60391a8a65a6 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期二, 14 三月 2023 14:02:33 +0800 Subject: [PATCH] 增加消息通道配置,可以通道redis在wvp上下级之间发送消息 --- src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiDeviceController.java | 97 +++++++++++++++++++++++++++--------------------- 1 files changed, 55 insertions(+), 42 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiDeviceController.java b/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiDeviceController.java index 2e96fbe..9998960 100644 --- a/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiDeviceController.java +++ b/src/main/java/com/genersoft/iot/vmp/web/gb28181/ApiDeviceController.java @@ -1,23 +1,28 @@ package com.genersoft.iot.vmp.web.gb28181; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; import com.genersoft.iot.vmp.gb28181.bean.Device; -import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; -import com.genersoft.iot.vmp.storager.IVideoManagerStorager; +import com.genersoft.iot.vmp.service.IDeviceService; +import com.genersoft.iot.vmp.storager.IVideoManagerStorage; +import com.genersoft.iot.vmp.web.gb28181.dto.DeviceChannelExtend; import com.github.pagehelper.PageInfo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import java.util.Arrays; import java.util.List; /** * API鍏煎锛氳澶囦俊鎭� */ @SuppressWarnings("unchecked") -@CrossOrigin + @RestController @RequestMapping(value = "/api/v1/device") public class ApiDeviceController { @@ -25,7 +30,9 @@ private final static Logger logger = LoggerFactory.getLogger(ApiDeviceController.class); @Autowired - private IVideoManagerStorager storager; + private IVideoManagerStorage storager; + @Autowired + private IDeviceService deviceService; // @Autowired // private SIPCommander cmder; @@ -37,7 +44,7 @@ // private DeviceOffLineDetector offLineDetector; /** - * 鍒嗛〉鑾峰彇璁惧鍒楄〃 TODO 鐜板湪鐩存帴杩斿洖锛屽皻鏈疄鐜板垎椤� + * 鍒嗛〉鑾峰彇璁惧鍒楄〃 鐜板湪鐩存帴杩斿洖锛屽皻鏈疄鐜板垎椤� * @param start * @param limit * @param q @@ -56,10 +63,10 @@ JSONObject result = new JSONObject(); List<Device> devices; if (start == null || limit ==null) { - devices = storager.queryVideoDeviceList(); + devices = storager.queryVideoDeviceList(online); result.put("DeviceCount", devices.size()); }else { - PageInfo<Device> deviceList = storager.queryVideoDeviceList(start/limit, limit); + PageInfo<Device> deviceList = storager.queryVideoDeviceList(start/limit, limit,online); result.put("DeviceCount", deviceList.getTotal()); devices = deviceList.getList(); } @@ -92,6 +99,7 @@ @RequestMapping(value = "/channellist") public JSONObject channellist( String serial, @RequestParam(required = false)String channel_type, + @RequestParam(required = false)String code , @RequestParam(required = false)String dir_serial , @RequestParam(required = false)Integer start, @RequestParam(required = false)Integer limit, @@ -103,55 +111,60 @@ // } JSONObject result = new JSONObject(); // 鏌ヨ璁惧鏄惁瀛樺湪 - Device device = storager.queryVideoDevice(serial); - if (device == null) { - result.put("ChannelCount", 0); - result.put("ChannelList", "[]"); - return result; +// Device device = storager.queryVideoDevice(serial); +// if (device == null) { +// result.put("ChannelCount", 0); +// result.put("ChannelList", "[]"); +// return result; +// } + List<DeviceChannelExtend> deviceChannels; + List<String> channelIds = null; + if (!StringUtils.isEmpty(code)) { + String[] split = code.trim().split(","); + channelIds = Arrays.asList(split); } - List<DeviceChannel> deviceChannels; - List<DeviceChannel> allDeviceChannelList = storager.queryChannelsByDeviceId(serial); + List<DeviceChannelExtend> allDeviceChannelList = storager.queryChannelsByDeviceId(serial,channelIds,online); if (start == null || limit ==null) { deviceChannels = allDeviceChannelList; result.put("ChannelCount", deviceChannels.size()); }else { - deviceChannels = storager.queryChannelsByDeviceIdWithStartAndLimit(serial, null, null, null,start, limit); + deviceChannels = storager.queryChannelsByDeviceIdWithStartAndLimit(serial,channelIds, null, null, online,start, limit); int total = allDeviceChannelList.size(); result.put("ChannelCount", total); } JSONArray channleJSONList = new JSONArray(); - for (DeviceChannel deviceChannel : deviceChannels) { + for (DeviceChannelExtend deviceChannelExtend : deviceChannels) { JSONObject deviceJOSNChannel = new JSONObject(); - deviceJOSNChannel.put("ID", deviceChannel.getChannelId()); - deviceJOSNChannel.put("DeviceID", device.getDeviceId()); - deviceJOSNChannel.put("DeviceName", device.getName()); - deviceJOSNChannel.put("DeviceOnline", device.getOnline() == 1); + deviceJOSNChannel.put("ID", deviceChannelExtend.getChannelId()); + deviceJOSNChannel.put("DeviceID", deviceChannelExtend.getDeviceId()); + deviceJOSNChannel.put("DeviceName", deviceChannelExtend.getDeviceName()); + deviceJOSNChannel.put("DeviceOnline", deviceChannelExtend.getDeviceOnline() == 1); deviceJOSNChannel.put("Channel", 0); // TODO 鑷畾涔夊簭鍙� - deviceJOSNChannel.put("Name", deviceChannel.getName()); + deviceJOSNChannel.put("Name", deviceChannelExtend.getName()); deviceJOSNChannel.put("Custom", false); deviceJOSNChannel.put("CustomName", ""); - deviceJOSNChannel.put("SubCount", deviceChannel.getSubCount()); // TODO ? 瀛愯妭鐐规暟, SubCount > 0 琛ㄧず璇ラ�氶亾涓哄瓙鐩綍 + deviceJOSNChannel.put("SubCount", deviceChannelExtend.getSubCount()); // TODO ? 瀛愯妭鐐规暟, SubCount > 0 琛ㄧず璇ラ�氶亾涓哄瓙鐩綍 deviceJOSNChannel.put("SnapURL", ""); - deviceJOSNChannel.put("Manufacturer ", deviceChannel.getManufacture()); - deviceJOSNChannel.put("Model", deviceChannel.getModel()); - deviceJOSNChannel.put("Owner", deviceChannel.getOwner()); - deviceJOSNChannel.put("CivilCode", deviceChannel.getCivilCode()); - deviceJOSNChannel.put("Address", deviceChannel.getAddress()); - deviceJOSNChannel.put("Parental", deviceChannel.getParental()); // 褰撲负閫氶亾璁惧鏃�, 鏄惁鏈夐�氶亾瀛愯澶�, 1-鏈�,0-娌℃湁 - deviceJOSNChannel.put("ParentID", deviceChannel.getParentId()); // 鐩存帴涓婄骇缂栧彿 - deviceJOSNChannel.put("Secrecy", deviceChannel.getSecrecy()); + deviceJOSNChannel.put("Manufacturer ", deviceChannelExtend.getManufacture()); + deviceJOSNChannel.put("Model", deviceChannelExtend.getModel()); + deviceJOSNChannel.put("Owner", deviceChannelExtend.getOwner()); + deviceJOSNChannel.put("CivilCode", deviceChannelExtend.getCivilCode()); + deviceJOSNChannel.put("Address", deviceChannelExtend.getAddress()); + deviceJOSNChannel.put("Parental", deviceChannelExtend.getParental()); // 褰撲负閫氶亾璁惧鏃�, 鏄惁鏈夐�氶亾瀛愯澶�, 1-鏈�,0-娌℃湁 + deviceJOSNChannel.put("ParentID", deviceChannelExtend.getParentId()); // 鐩存帴涓婄骇缂栧彿 + deviceJOSNChannel.put("Secrecy", deviceChannelExtend.getSecrecy()); deviceJOSNChannel.put("RegisterWay", 1); // 娉ㄥ唽鏂瑰紡, 缂虹渷涓�1, 鍏佽鍊�: 1, 2, 3 - // 1-IETF RFC3261, - // 2-鍩轰簬鍙d护鐨勫弻鍚戣璇�, - // 3-鍩轰簬鏁板瓧璇佷功鐨勫弻鍚戣璇� - deviceJOSNChannel.put("Status", deviceChannel.getStatus()); - deviceJOSNChannel.put("Longitude", deviceChannel.getLongitude()); - deviceJOSNChannel.put("Latitude", deviceChannel.getLatitude()); - deviceJOSNChannel.put("PTZType ", deviceChannel.getPTZType()); // 浜戝彴绫诲瀷, 0 - 鏈煡, 1 - 鐞冩満, 2 - 鍗婄悆, - // 3 - 鍥哄畾鏋満, 4 - 閬ユ帶鏋満 + // 1-IETF RFC3261, + // 2-鍩轰簬鍙d护鐨勫弻鍚戣璇�, + // 3-鍩轰簬鏁板瓧璇佷功鐨勫弻鍚戣璇� + deviceJOSNChannel.put("Status", deviceChannelExtend.getStatus() == 1 ? "ON":"OFF"); + deviceJOSNChannel.put("Longitude", deviceChannelExtend.getLongitude()); + deviceJOSNChannel.put("Latitude", deviceChannelExtend.getLatitude()); + deviceJOSNChannel.put("PTZType ", deviceChannelExtend.getPTZType()); // 浜戝彴绫诲瀷, 0 - 鏈煡, 1 - 鐞冩満, 2 - 鍗婄悆, + // 3 - 鍥哄畾鏋満, 4 - 閬ユ帶鏋満 deviceJOSNChannel.put("CustomPTZType", ""); - deviceJOSNChannel.put("StreamID", deviceChannel.getStreamId()); // StreamID 鐩存挱娴両D, 鏈夊�艰〃绀烘鍦ㄧ洿鎾� + deviceJOSNChannel.put("StreamID", deviceChannelExtend.getStreamId()); // StreamID 鐩存挱娴両D, 鏈夊�艰〃绀烘鍦ㄧ洿鎾� deviceJOSNChannel.put("NumOutputs ", -1); // 鐩存挱鍦ㄧ嚎浜烘暟 channleJSONList.add(deviceJOSNChannel); } -- Gitblit v1.8.0