package com.genersoft.iot.vmp.storager; import com.genersoft.iot.vmp.gb28181.bean.*; import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem; import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem; import com.genersoft.iot.vmp.service.bean.GPSMsgInfo; import com.genersoft.iot.vmp.storager.dao.dto.ChannelSourceInfo; import com.genersoft.iot.vmp.vmanager.gb28181.platform.bean.ChannelReduce; import com.github.pagehelper.PageInfo; import java.util.List; /** * @description:视频设备数据存储接口 * @author: swwheihei * @date: 2020年5月6日 下午2:14:31 */ @SuppressWarnings("rawtypes") public interface IVideoManagerStorage { /** * 根据设备ID判断设备是否存在 * * @param deviceId 设备ID * @return true:存在 false:不存在 */ public boolean exists(String deviceId); /** * 视频设备创建 * * @param device 设备对象 * @return true:创建成功 false:创建失败 */ public boolean create(Device device); /** * 视频设备更新 * * @param device 设备对象 * @return true:创建成功 false:创建失败 */ public boolean updateDevice(Device device); /** * 添加设备通道 * * @param deviceId 设备id * @param channel 通道 */ public void updateChannel(String deviceId, DeviceChannel channel); /** * 批量添加设备通道 * * @param deviceId 设备id * @param channels 多个通道 */ public int updateChannels(String deviceId, List channels); /** * 开始播放 * @param deviceId 设备id * @param channelId 通道ID * @param streamId 流地址 */ public void startPlay(String deviceId, String channelId, String streamId); /** * 停止播放 * @param deviceId 设备id * @param channelId 通道ID */ public void stopPlay(String deviceId, String channelId); /** * 获取设备 * * @param deviceId 设备ID * @return DShadow 设备对象 */ public Device queryVideoDevice(String deviceId); /** * 获取某个设备的通道列表 * * @param deviceId 设备ID * @param page 分页 当前页 * @param count 每页数量 * @return */ public PageInfo queryChannelsByDeviceId(String deviceId, String query, Boolean hasSubChannel, Boolean online, Boolean catalogUnderDevice, int page, int count); public List queryChannelsByDeviceIdWithStartAndLimit(String deviceId, String query, Boolean hasSubChannel, Boolean online, int start, int limit); /** * 获取某个设备的通道列表 * * @param deviceId 设备ID * @return */ public List queryChannelsByDeviceId(String deviceId); public List queryOnlineChannelsByDeviceId(String deviceId); /** * 获取某个设备的通道 * @param deviceId 设备ID * @param channelId 通道ID */ public DeviceChannel queryChannel(String deviceId, String channelId); /** * 删除通道 * @param deviceId 设备ID * @param channelId 通道ID */ public int delChannel(String deviceId, String channelId); /** * 获取多个设备 * @param page 当前页数 * @param count 每页数量 * @return List 设备对象数组 */ public PageInfo queryVideoDeviceList(int page, int count); /** * 获取多个设备 * * @return List 设备对象数组 */ public List queryVideoDeviceList(); /** * 删除设备 * * @param deviceId 设备ID * @return true:删除成功 false:删除失败 */ public boolean delete(String deviceId); /** * 更新设备在线 * * @param deviceId 设备ID * @return true:更新成功 false:更新失败 */ public boolean online(String deviceId); /** * 更新设备离线 * * @param deviceId 设备ID * @return true:更新成功 false:更新失败 */ public boolean outline(String deviceId); /** * 更新所有设备离线 * * @return true:更新成功 false:更新失败 */ public boolean outlineForAll(); /** * 查询子设备 * * @param deviceId * @param channelId * @param page * @param count * @return */ PageInfo querySubChannels(String deviceId, String channelId, String query, Boolean hasSubChannel, Boolean online, int page, int count); /** * 清空通道 * @param deviceId */ void cleanChannelsForDevice(String deviceId); /** * 更新上级平台 * @param parentPlatform */ boolean updateParentPlatform(ParentPlatform parentPlatform); /** * 添加上级平台 * @param parentPlatform */ boolean addParentPlatform(ParentPlatform parentPlatform); /** * 删除上级平台 * @param parentPlatform */ boolean deleteParentPlatform(ParentPlatform parentPlatform); /** * 分页获取上级平台 * @param page * @param count * @return */ PageInfo queryParentPlatformList(int page, int count); /** * 获取所有已启用的平台 * @return */ List queryEnableParentPlatformList(boolean enable); /** * 获取上级平台 * @param platformGbId * @return */ ParentPlatform queryParentPlatByServerGBId(String platformGbId); /** * 所有平台离线 */ void outlineForAllParentPlatform(); /** * 查询通道信息,不区分设备(已关联平台或全部) */ PageInfo queryAllChannelList(int page, int count, String query, Boolean online, Boolean channelType, String platformId, String catalogId); /** * 查询设备的通道信息 */ List queryChannelListInParentPlatform(String platformId); /** * 更新上级平台的通道信息 * @param platformId * @param channelReduces * @return */ int updateChannelForGB(String platformId, List channelReduces, String catalogId); /** * 移除上级平台的通道信息 * @param platformId * @param channelReduces * @return */ int delChannelForGB(String platformId, List channelReduces); DeviceChannel queryChannelInParentPlatform(String platformId, String channelId); List queryChannelInParentPlatformAndCatalog(String platformId, String catalogId); List queryStreamInParentPlatformAndCatalog(String platformId, String catalogId); Device queryVideoDeviceByPlatformIdAndChannelId(String platformId, String channelId); /** * 添加Mobile Position设备移动位置 * @param mobilePosition * @return */ public boolean insertMobilePosition(MobilePosition mobilePosition); /** * 查询移动位置轨迹 * @param deviceId * @param startTime * @param endTime */ public List queryMobilePositions(String deviceId, String channelId, String startTime, String endTime); /** * 查询最新移动位置 * @param deviceId */ public MobilePosition queryLatestPosition(String deviceId); /** * 删除指定设备的所有移动位置 * @param deviceId */ public int clearMobilePositionsByDeviceId(String deviceId); /** * 新增代理流 * @param streamProxyDto * @return */ public boolean addStreamProxy(StreamProxyItem streamProxyDto); /** * 更新代理流 * @param streamProxyDto * @return */ public boolean updateStreamProxy(StreamProxyItem streamProxyDto); /** * 移除代理流 * @param app * @param stream * @return */ public int deleteStreamProxy(String app, String stream); /** * 按照是否启用获取代理流 * @param enable * @return */ public List getStreamProxyListForEnable(boolean enable); /** * 按照是app和stream获取代理流 * @param app * @param stream * @return */ public StreamProxyItem queryStreamProxy(String app, String stream); /** * 获取代理流 * @param page * @param count * @return */ PageInfo queryStreamProxyList(Integer page, Integer count); /** * 根据国标ID获取平台关联的直播流 * @param platformId * @param channelId * @return */ GbStream queryStreamInParentPlatform(String platformId, String channelId); /** * 获取平台关联的直播流 * @param platformId * @return */ List queryGbStreamListInPlatform(String platformId); /** * 批量更新推流列表 * @param streamPushItems */ void updateMediaList(List streamPushItems); /** * 更新单个推流 * @param streamPushItem */ void updateMedia(StreamPushItem streamPushItem); /** * 移除单个推流 * @param app * @param stream */ int removeMedia(String app, String stream); /** * 清空推流列表 */ void clearMediaList(); /** * 设置流离线 * @param app * @param streamId */ int mediaOutline(String app, String streamId); /** * 设置平台在线/离线 * @param online */ void updateParentPlatformStatus(String platformGbID, boolean online); /** * 根据媒体ID获取启用/不启用的代理列表 * @param id 媒体ID * @param enable 启用/不启用 * @return */ List getStreamProxyListForEnableInMediaServer(String id, boolean enable); /** * 根据通道ID获取其所在设备 * @param channelId 通道ID * @return */ Device queryVideoDeviceByChannelId(String channelId); /** * 通道上线 * @param channelId 通道ID */ void deviceChannelOnline(String deviceId, String channelId); /** * 通道离线 * @param channelId 通道ID */ void deviceChannelOffline(String deviceId, String channelId); /** * 通过app与stream获取StreamProxy * @param app * @param streamId * @return */ StreamProxyItem getStreamProxyByAppAndStream(String app, String streamId); /** * catlog查询结束后完全重写通道信息 * @param deviceId * @param deviceChannelList */ boolean resetChannels(String deviceId, List deviceChannelList); /** * 获取目录信息 * @param platformId * @param parentId * @return */ List getChildrenCatalogByPlatform(String platformId, String parentId); int addCatalog(PlatformCatalog platformCatalog); PlatformCatalog getCatalog(String id); int delCatalog(String id); int updateCatalog(PlatformCatalog platformCatalog); int setDefaultCatalog(String platformId, String catalogId); List queryCatalogInPlatform(String serverGBId); int delRelation(PlatformCatalog platformCatalog); int updateStreamGPS(List gpsMsgInfo); List queryPlatFormListForGBWithGBId(String channelId, List platforms); List queryPlatFormListForStreamWithGBId(String app, String stream, List platforms); GbStream getGbStream(String app, String streamId); void delCatalogByPlatformId(String serverGBId); void delRelationByPlatformId(String serverGBId); PlatformCatalog queryDefaultCatalogInPlatform(String platformId); List getChannelSource(String platformId, String gbId); void updateChannelPotion(String deviceId, String channelId, double longitude, double latitude); }