tplink与pad接口代码

This commit is contained in:
曹磊 2025-05-13 09:15:24 +08:00
parent cc6ef10037
commit 03e1f6d301
18 changed files with 3428 additions and 0 deletions

View File

@ -0,0 +1,363 @@
package com.nu.modules.iot.tplink.controller;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nu.modules.iot.tplink.entity.AppCameraInfo;
import com.nu.modules.iot.tplink.service.IAppCameraInfoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.base.controller.JeecgController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.Map;
/**
* @Description: 护理单元-物联管理-摄像头信息
* @Author: jeecg-boot
* @Date: 2025-01-17
* @Version: V1.0
*/
@Api(tags="护理单元-物联管理-摄像头信息")
@RestController
@RequestMapping("/nuIpadApi/iot/tplink/cameraInfo")
@Slf4j
public class AppCameraInfoController extends JeecgController<AppCameraInfo, IAppCameraInfoService> {
@Autowired
private IAppCameraInfoService service;
/**
* 分页列表查询
*
* @param CameraInfo
* @param pageNo
* @param pageSize
* @param req
* @return
*/
//@AutoLog(value = "护理单元-物联管理-摄像头信息-分页列表查询")
@ApiOperation(value="护理单元-物联管理-摄像头信息-分页列表查询", notes="护理单元-物联管理-摄像头信息-分页列表查询")
@GetMapping(value = "/list")
public Result<IPage<AppCameraInfo>> queryPageList(AppCameraInfo CameraInfo,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
Page<AppCameraInfo> page = new Page<AppCameraInfo>(pageNo, pageSize);
IPage<AppCameraInfo> pageList = service.findPage(page, CameraInfo);
return Result.OK(pageList);
}
@ApiOperation(value="护理单元分页列表查询", notes="护理单元分页列表查询")
@GetMapping(value = "/nuList")
public Result<IPage<AppCameraInfo>> queryNuPageList(AppCameraInfo CameraInfo,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
Page<AppCameraInfo> page = new Page<AppCameraInfo>(pageNo, pageSize);
IPage<AppCameraInfo> pageList = service.findNuPage(page, CameraInfo);
return Result.OK(pageList);
}
@ApiOperation(value="护理单元-物联管理-摄像头信息-查询", notes="护理单元-物联管理-摄像头信息-查询")
@GetMapping(value = "/getByNuId")
public Result<AppCameraInfo> getByNuId(AppCameraInfo CameraInfo) {
AppCameraInfo entity = service.getByNuId(CameraInfo);
return Result.OK(entity);
}
/**
* 重启摄像头
*
* @param cameraInfo
* @return
*/
@RequestMapping(value = "/rebootDevice", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<String> rebootDevice(@RequestBody AppCameraInfo cameraInfo) {
service.rebootDevice(cameraInfo);
return Result.OK("重启成功!");
}
/**
* 获取画面基本信息
*
* @param map
* @return
*/
@PostMapping(value = "/getImageCommon")
public Result<JSONObject> getImageCommon(@RequestBody Map<String,Object> map) {
return service.getImageCommon(map);
}
/**
* 设置画面基本信息
*
* @param map
* @return
*/
@PostMapping(value = "/setImageCommon")
public Result setImageCommon(@RequestBody Map<String,Object> map) {
return service.setImageCommon(map);
}
/**
* 获取OSD能力集
*
* @param map
* @return
*/
@PostMapping(value = "/getOsdCapability")
public Result<JSONObject> getOsdCapability(@RequestBody Map<String,Object> map) {
return service.getOsdCapability(map);
}
/**
* 获取OSD参数
*
* @param map
* @return
*/
@PostMapping(value = "/getOsd")
public Result<JSONObject> getOsd(@RequestBody Map<String,Object> map) {
return service.getOsd(map);
}
/**
* 设置OSD参数
*
* @param map
* @return
*/
@PostMapping(value = "/setOsd")
public Result<String> setOsd(@RequestBody Map<String,Object> map) {
return service.setOsd(map);
}
/**
* 获取码率参数
*
* @param map
* @return
*/
@PostMapping(value = "/getVideoParams")
public Result<JSONObject> getVideoParams(@RequestBody Map<String,Object> map) {
return service.getVideoParams(map);
}
/**
* 设置码率参数
*
* @param map
* @return
*/
@PostMapping(value = "/setVideoParams")
public Result setVideoParams(@RequestBody Map<String,Object> map) {
return service.setVideoParams(map);
}
/**
* 恢复画面默认值
*
* @param map
* @return
*/
@PostMapping(value = "/configRecovery")
public Result configRecovery(@RequestBody Map<String,Object> map) {
return service.configRecovery(map);
}
/**
* 获取摄像头实时播放地址
*
* @param cameraInfo
* @return
*/
@GetMapping(value = "/getPreviewUrl")
public Result<Map<String,String>> getPreviewUrl(AppCameraInfo cameraInfo) {
return service.getPreviewUrl(cameraInfo);
}
/**
* 获取镜头遮挡参数
*
* @param map
* @return
*/
@PostMapping(value = "/getTamperDet")
public Result<JSONObject> getTamperDet(@RequestBody Map<String,Object> map) {
return service.getTamperDet(map);
}
/**
* 设置镜头遮挡参数
*
* @param map
* @return
*/
@PostMapping(value = "/setTamperDet")
public Result<String> setTamperDet(@RequestBody Map<String,Object> map) {
return service.setTamperDet(map);
}
/**
* 获取镜头遮挡处理方式
*
* @param map
* @return
*/
@PostMapping(value = "/getTamperNotif")
public Result<JSONObject> getTamperNotif(@RequestBody Map<String,Object> map) {
return service.getTamperNotif(map);
}
/**
* 设置镜头遮挡处理方式
*
* @param map
* @return
*/
@PostMapping(value = "/setTamperNotif")
public Result setTamperNotif(@RequestBody Map<String,Object> map) {
return service.setTamperNotif(map);
}
/**
* 报警声音试听
*
* @param map
* @return
*/
@PostMapping(value = "/testAudio")
public Result testAudio(@RequestBody Map<String,Object> map) {
return service.testAudio(map);
}
/**
* 获取白光/声音告警参数
*
* @param map
* @return
*/
@PostMapping(value = "/getAlarmInfo")
public Result<JSONObject> getAlarmInfo(@RequestBody Map<String,Object> map) {
return service.getAlarmInfo(map);
}
/**
* 设置白光/声音告警参数
*
* @param map
* @return
*/
@PostMapping(value = "/setAlarmInfo")
public Result<String> setAlarmInfo(@RequestBody Map<String,Object> map) {
return service.setAlarmInfo(map);
}
/**
* 获取白光/声音告警布防时间
*
* @param map
* @return
*/
@PostMapping(value = "/getAlarmPlan")
public Result<JSONObject> getAlarmPlan(@RequestBody Map<String,Object> map) {
return service.getAlarmPlan(map);
}
/**
* 设置白光/声音告警布防时间
*
* @param map
* @return
*/
@PostMapping(value = "/setAlarmPlan")
public Result setAlarmPlan(@RequestBody Map<String,Object> map) {
return service.setAlarmPlan(map);
}
/**
* 搜索某天的录像数据
*
* @param cameraInfo
* @return
*/
@GetMapping(value = "/searchVideo")
public Result<IPage<AppCameraInfo>> searchVideo(AppCameraInfo cameraInfo,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
return service.searchVideo(pageNo, pageSize, cameraInfo);
}
/**
* 获取摄像头录像回放地址
*
* @param cameraInfo
* @return
*/
@GetMapping(value = "/getPlaybackUrlList")
public Result<Map<String,Object>> getPlaybackUrlList(AppCameraInfo cameraInfo) {
return service.getPlaybackUrlList(cameraInfo);
}
/**
* 删除回放通道
*
* @param cameraInfo
* @return
*/
@GetMapping(value = "/deletePlaybackChn")
public Result<String> deletePlaybackChn(AppCameraInfo cameraInfo) {
return service.deletePlaybackChn(cameraInfo);
}
/**
* 获取摄像头录像回放地址
*
* @param cameraInfo
* @return
*/
@GetMapping(value = "/getMultitransUrl")
public Result<Map<String,Object>> getMultitransUrl(AppCameraInfo cameraInfo) throws Exception{
return service.getMultitransUrl(cameraInfo);
}
/**
* 回放视频转mp4上传
*
* @param cameraInfo
* @return
*/
@GetMapping(value = "/uploadToServer")
public Result uploadToServer(AppCameraInfo cameraInfo) throws Exception{
return service.uploadToServer(cameraInfo);
}
/**
* 停止转存MP4上传任务
*
* @param cameraInfo
* @return
*/
@GetMapping(value = "/stopUploadToServer")
public Result<String> stopUploadToServer(AppCameraInfo cameraInfo) throws Exception{
return service.stopUploadToServer(cameraInfo);
}
/**
* 获取转存MP4上传任务进度
*
* @param cameraInfo
* @return
*/
@GetMapping(value = "/getUploadToServerProcess")
public Result getUploadToServerProcess(AppCameraInfo cameraInfo) throws Exception{
return service.getUploadToServerProcess(cameraInfo);
}
}

View File

@ -0,0 +1,281 @@
package com.nu.modules.iot.tplink.entity;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecg.common.aspect.annotation.Dict;
import org.jeecgframework.poi.excel.annotation.Excel;
import java.io.Serializable;
/**
* @Description: 护理单元-物联管理-TPLINK摄像头信息
* @Author: jeecg-boot
* @Date: 2025-01-17
* @Version: V1.0
*/
@Data
@TableName("nu_iot_tplink_camera")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="nu_iot_tplink_camera对象", description="护理单元-物联管理-TPLINK摄像头信息")
public class AppCameraInfo implements Serializable {
private static final long serialVersionUID = 1L;
/**ID*/
@TableId(type = IdType.AUTO)
@ApiModelProperty(value = "ID")
private Integer id;
/**设备序号*/
@Excel(name = "设备序号", width = 15)
@ApiModelProperty(value = "设备序号")
private String deviceIndex;
/**设备名称*/
@Excel(name = "设备名称", width = 15)
@ApiModelProperty(value = "设备名称")
private String deviceName;
/**设备类型*/
@Excel(name = "设备类型", width = 15)
@ApiModelProperty(value = "设备类型")
private String deviceType;
/**设备状态 0 离线 1 在线 2 重启中 3 升级中 4 配置中 5 同步中*/
@Excel(name = "设备状态 0 离线 1 在线 2 重启中 3 升级中 4 配置中 5 同步中", width = 15, dicCode = "tplink_status")
@Dict(dicCode = "tplink_status")
@ApiModelProperty(value = "设备状态 0 离线 1 在线 2 重启中 3 升级中 4 配置中 5 同步中")
private String deviceStatus;
/**设备型号*/
@Excel(name = "设备型号", width = 15)
@ApiModelProperty(value = "设备型号")
private String deviceModel;
/**IP地址*/
@Excel(name = "IP地址", width = 15)
@ApiModelProperty(value = "IP地址")
private String ip;
/**MAC地址*/
@Excel(name = "MAC地址", width = 15)
@ApiModelProperty(value = "MAC地址")
private String mac;
/**分组ID*/
@Excel(name = "分组ID", width = 15)
@ApiModelProperty(value = "分组ID")
private String regionId;
/**分组名称*/
@Excel(name = "分组名称", width = 15)
@ApiModelProperty(value = "分组名称")
private String regionName;
/**父设备ID*/
@Excel(name = "父设备ID", width = 15)
@ApiModelProperty(value = "父设备ID")
private String parentId;
/**父设备名称*/
@Excel(name = "父设备名称", width = 15)
@ApiModelProperty(value = "父设备名称")
private String parentDeviceName;
/**项目ID*/
@Excel(name = "项目ID", width = 15)
@ApiModelProperty(value = "项目ID")
private String projectId;
/**项目名称*/
@Excel(name = "项目名称", width = 15)
@ApiModelProperty(value = "项目名称")
private String projectName;
/**软件版本*/
@Excel(name = "软件版本", width = 15)
@ApiModelProperty(value = "软件版本")
private String firmwareVer;
/**硬件版本*/
@Excel(name = "硬件版本", width = 15)
@ApiModelProperty(value = "硬件版本")
private String hardwareVer;
/**用户权限类型 -1 无权限 0 可读 1 可控制 2 可配置 3 可控制/配置 4 所有*/
@Excel(name = "用户权限类型 -1 无权限 0 可读 1 可控制 2 可配置 3 可控制/配置 4 所有", width = 15, dicCode = "tplink_manager_auth_type")
@Dict(dicCode = "tplink_manager_auth_type")
@ApiModelProperty(value = "用户权限类型 -1 无权限 0 可读 1 可控制 2 可配置 3 可控制/配置 4 所有")
private String managerAuthType;
/**告警消息权限 1 有权限 -1 无权限*/
@Excel(name = "告警消息权限 1 有权限 -1 无权限", width = 15, dicCode = "tplink_msg_auth_type")
@Dict(dicCode = "tplink_msg_auth_type")
@ApiModelProperty(value = "告警消息权限 1 有权限 -1 无权限")
private String msgAuthType;
/**扩展信息*/
@Excel(name = "扩展信息", width = 15)
@ApiModelProperty(value = "扩展信息")
@TableField(exist = false)
private JSONObject extend;
/**国标编码*/
@Excel(name = "国标编码", width = 15)
@ApiModelProperty(value = "国标编码")
private String sipCode;
/**位置名称*/
@Excel(name = "位置名称", width = 15)
@ApiModelProperty(value = "位置名称")
private String locationName;
/**系统类型 public 通用 vms 监控 nms 网络 evcs 新能源充电桩 rms 客控 nbs 音箱 bas 楼控 ams 门禁 smart_agriculture 智慧农业 vps 停车管理 aaa 认证计费*/
@Excel(name = "系统类型 public 通用 vms 监控 nms 网络 evcs 新能源充电桩 rms 客控 nbs 音箱 bas 楼控 ams 门禁 smart_agriculture 智慧农业 vps 停车管理 aaa 认证计费", width = 15, dicCode = "tplink_system_type")
@Dict(dicCode = "tplink_system_type")
@ApiModelProperty(value = "系统类型 public 通用 vms 监控 nms 网络 evcs 新能源充电桩 rms 客控 nbs 音箱 bas 楼控 ams 门禁 smart_agriculture 智慧农业 vps 停车管理 aaa 认证计费")
private String systemType;
/**协议类型*/
@Excel(name = "协议类型", width = 15)
@ApiModelProperty(value = "协议类型")
private String protocol;
/**置顶的时间*/
@Excel(name = "用户设置置顶的时间,毫秒级时间戳", width = 15)
@ApiModelProperty(value = "用户设置置顶的时间,毫秒级时间戳")
@TableField(exist = false)
private String topTime;
/**护理单元*/
@ApiModelProperty(value = "护理单元ID")
@Dict(dictTable ="nu_base_info",dicText = "nu_name",dicCode = "id")
private String nuId;
/**护理单元*/
@ApiModelProperty(value = "护理单元")
@TableField(exist = false)
private String nuName;
@ApiModelProperty(value = "码流类型 0 代表主码流1 代码子码流")
@TableField(exist = false)
private int streamType;
/**
* 能力集属性 ==>
*/
@ApiModelProperty(value = "运动检测")
@TableField(exist = false)
private String motionDetection;
@ApiModelProperty(value = "视频封面")
@TableField(exist = false)
private String videoCover;
@ApiModelProperty(value = "云台")
@TableField(exist = false)
private String ptz;
@ApiModelProperty(value = "motor")
@TableField(exist = false)
private String motor;
@ApiModelProperty(value = "smartCode")
@TableField(exist = false)
private String smartCode;
@ApiModelProperty(value = "强制在H.264编码过程中生成IDR帧的函数")
@TableField(exist = false)
private String forceIdrFrame;
@ApiModelProperty(value = "音频")
@TableField(exist = false)
private String audio;
@ApiModelProperty(value = "本地存储")
@TableField(exist = false)
private String localStorage;
@ApiModelProperty(value = "回放API本版")
@TableField(exist = false)
private String playbackApiVersionTwo;
@ApiModelProperty(value = "多变性")
@TableField(exist = false)
private String multitrans;
@ApiModelProperty(value = "客流")
@TableField(exist = false)
private String passengerFlow;
@ApiModelProperty(value = "获取预览缩略图")
@TableField(exist = false)
private String getPreviewThumbnail;
@ApiModelProperty(value = "JPG预览缩略图")
@TableField(exist = false)
private String previewThumbnailJpeg;
@ApiModelProperty(value = "走廊")
@TableField(exist = false)
private String corridorMod;
@ApiModelProperty(value = "背光共存")
@TableField(exist = false)
private String backlightCoexistence;
/**
* <== 能力集属性
*/
@ApiModelProperty(value = "查询日期")
@TableField(exist = false)
private String dataDate;
@ApiModelProperty(value = "设备索引")
@TableField(exist = false)
private String videoDevId;
@ApiModelProperty(value = "存储设备ID")
@TableField(exist = false)
private String storageDevId;
@ApiModelProperty(value = "存储设备名称")
@TableField(exist = false)
private String storageDevName;
@ApiModelProperty(value = "双摄IPC通道ID,双摄IPC的全景摄像头其值为0.双摄IPC的特写摄像头其值为1")
@TableField(exist = false)
private String channelId;
@ApiModelProperty(value = "当录像存在存储池中, 录像所属的nvs的ID")
@TableField(exist = false)
private String nvsIdInPoolList;
@ApiModelProperty(value = "录像开始时间. GMT时间即1970.1.1零时至今的秒数")
@TableField(exist = false)
private String startTime;
@ApiModelProperty(value = "录像结束时间. GMT时间即1970.1.1零时至今的秒数")
@TableField(exist = false)
private String endTime;
@ApiModelProperty(value = "录像开始时间,YYYY-MM-DD HH:MI:SS")
@TableField(exist = false)
private String startTimeFt;
@ApiModelProperty(value = "录像结束时间,YYYY-MM-DD HH:MI:SS")
@TableField(exist = false)
private String endTimeFt;
@ApiModelProperty(value = "录像时长,HH:MI:SS")
@TableField(exist = false)
private String duration;
@ApiModelProperty(value = "回放录像类型。1: 定时录像; 2: 移动侦测等")
@TableField(exist = false)
private String videoType;
@ApiModelProperty(value = "录像片段大小,单位字节")
@TableField(exist = false)
private String size;
@ApiModelProperty(value = "错误码")
@TableField(exist = false)
private String errorCode;
@ApiModelProperty(value = "错误描述")
@TableField(exist = false)
private String errorMsg;
@ApiModelProperty(value = "录像存储设备类型 -1未找到0:ipc1:nvr2nvs3server4vcs5storagePool")
@TableField(exist = false)
private String storageType;
@ApiModelProperty(value = "预览/回放url")
@TableField(exist = false)
private String url;
@ApiModelProperty(value = "预览/回放备用url")
@TableField(exist = false)
private String backupUrl;
@ApiModelProperty(value = "ws连接传输视频地址")
@TableField(exist = false)
private String wsUrl;
@ApiModelProperty(value = "wss接传输视频地址")
@TableField(exist = false)
private String wssUrl;
@ApiModelProperty(value = "预览/回放通道对应的sessionId")
@TableField(exist = false)
private String sessionId;
@ApiModelProperty(value = "双摄IPC通道ID")
@TableField(exist = false)
private String videoChannelId;
@ApiModelProperty(value = "回放速率")
@TableField(exist = false)
private String scale;
@ApiModelProperty(value = "回放api访问前缀")
@TableField(exist = false)
private String queryAddress;
@ApiModelProperty(value = "录像开关;枚举:[0:表示关,1:表示开]")
@TableField(exist = false)
private String recordSwitch;
@ApiModelProperty(value = "任务taskId")
@TableField(exist = false)
private String taskId;
@ApiModelProperty(value = "上传mp4文件名称")
@TableField(exist = false)
private String fileName;
@ApiModelProperty(value = "上传进度")
@TableField(exist = false)
private String process;
}

View File

@ -0,0 +1,36 @@
package com.nu.modules.iot.tplink.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import java.io.Serializable;
/**
* @Description: 护理单元-物联管理-TPLINK错误码
* @Author: jeecg-boot
* @Date: 2025-02-10
* @Version: V1.0
*/
@Data
@TableName("nu_iot_tplink_error_code")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="nu_iot_tplink_error_code对象", description="护理单元-物联管理-TPLINK错误码")
public class AppErrorCode implements Serializable {
private static final long serialVersionUID = 1L;
/**错误码*/
@Excel(name = "错误码", width = 15)
@ApiModelProperty(value = "错误码")
private String errorCode;
/**错误描述*/
@Excel(name = "错误描述", width = 15)
@ApiModelProperty(value = "错误描述")
private String errorMsg;
}

View File

@ -0,0 +1,46 @@
package com.nu.modules.iot.tplink.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* @Description: 护理单元-物联管理-TPLINK图门系统配置信息
* @Author: caolei
* @Date: 2025-03-31
* @Version: V1.0
*/
@Data
@TableName("nu_iot_tplink_tums_base")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="nu_iot_tplink_tums_base", description="护理单元-物联管理-TPLINK图门系统配置信息")
public class AppTumsConfig implements Serializable {
private static final long serialVersionUID = 1L;
/**ID*/
@TableId(type = IdType.AUTO)
@ApiModelProperty(value = "ID")
private Integer id;
private String tumsUrl; //获取图门系统地址
private String tumsProjectId; //图门系统登录项目ID
@TableField(exist = false)
private String tumsProjectName; //图门系统登录项目ID
private String tumsUserId; // 图门系统登录用户ID
private String tumsUsername; // 获取图门系统用户
private String tumsPassword; //获取图门系统密码
private String tumsRoleId; //图门系统角色ID
private String ftpIp; //回放视频转FTP上传IP
private String ftpPort; //回放视频转FTP上传端口
private String ftpUsername; //回放视频转FTP上传用户
private String ftpPassword; //回放视频转FTP上传密码
private String ftpUploadpath; //回放视频转FTP上传路径
private String orgCode; //机构编码
}

View File

@ -0,0 +1,42 @@
package com.nu.modules.iot.tplink.enums;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
/**
* 接口枚举类
*/
@Getter
@RequiredArgsConstructor
public enum AppApiEnum {
//前缀对应相应设备的API无前缀则是公用API
//IPC 视频
//NVS 存储服务器
//AUDIO 音箱
//ROUTER 路由器
//SWITCH 交换机
//AP 无线路由器
//AC 线控制器
GET_ENCRYPT_KEY_FOR_LOGIN("/tums/account/v1/getEncryptKeyForLogin","获取登录公钥"),
LOGIN("/tums/account/v2/login","登录"),
LOGOUT("/tums/account/v1/logout","注销"),
SET_CURRENT_PROJECT("/tums/resource/v2/setCurrentProject","设置当前项目"),
REBOOT_DEVICE_LIST("/tums/deviceManager/v2/rebootDeviceList","重启设备"),
IPC_PASSTHROUGH("/tums/devConfig/v1/passthrough","设备配置信息"),
IPC_ADD_PREVIEW_CHN("/tums/preview/v1/addPreviewChn","添加预览通道"),
IPC_GET_PREVIEW_URL("/tums/preview/v1/getPreviewUrl","获取预览通道的url"),
IPC_GET_PLAYBACK_URL("/tums/playback/v1/getPlaybackUrl","获取回放通道的url"),
IPC_SUSPEND_PLAYBACK("/tums/playback/v1/suspendPlayback","暂停通道回放"),
IPC_DELETE_PLAYBACK_CHN("/tums/playback/v1/deletePlaybackChn","删除回放通道"),
IPC_GET_STORAGES_BY_ID("/tums/playback/v1/getStoragesById","获取指定监控点的存储设备列表"),
IPC_SEARCH_VIDEO("/tums/playback/v3/searchVideo","搜索当天的录像数据V3"),
IPC_ADD_PLAYBACK_CHN("/tums/playback/v2/addPlaybackChn","添加回放通道V2"),
IPC_GET_MULTITRANS_URL("/tums/playback/v1/getMultitransUrl","获取nvmp设备双向通信URL"),
IPC_UPLOAD_TO_SERVER("/tums/playback/v1/uploadToServer","回放视频转mp4上传"),
IPC_STOP_UPLOAD_TO_SERVER("/tums/preview/v1/stopUploadToServer","停止转存MP4上传任务"),
IPC_GET_UPLOAD_TO_SERVER_PROCESS("/tums/preview/v1/getUploadToServerProcess","获取转存MP4上传任务进度");
private final String value;//自定义属性枚举值获取如ApiEnum.GET_ENCRYPT_KEY_FOR_LOGIN.getValue();
private final String remark;//自定义属性枚举描述获取如ApiEnum.GET_ENCRYPT_KEY_FOR_LOGIN.getRemark();
}

View File

@ -0,0 +1,29 @@
package com.nu.modules.iot.tplink.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nu.modules.iot.tplink.entity.AppCameraInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @Description: 护理单元-物联管理-摄像头信息
* @Author: jeecg-boot
* @Date: 2025-01-17
* @Version: V1.0
*/
@Mapper
public interface AppCameraInfoMapper extends BaseMapper<AppCameraInfo> {
IPage<AppCameraInfo> findPage(Page<AppCameraInfo> page, @Param("params") AppCameraInfo cameraInfo);
List<AppCameraInfo> findAllList();
IPage<AppCameraInfo> findNuPage(Page<AppCameraInfo> page, @Param("params") AppCameraInfo cameraInfo);
AppCameraInfo getByDeviceId(AppCameraInfo cameraInfo);
AppCameraInfo getByNuId(AppCameraInfo cameraInfo);
AppCameraInfo getCapabilityByDeviceId(AppCameraInfo cameraInfo);
void insertCapability(AppCameraInfo cameraInfo);
void updateCapabilityById(AppCameraInfo cameraInfo);
}

View File

@ -0,0 +1,17 @@
package com.nu.modules.iot.tplink.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nu.modules.iot.tplink.entity.AppErrorCode;
import org.apache.ibatis.annotations.Mapper;
/**
* @Description: 护理单元-物联管理-错误码
* @Author: jeecg-boot
* @Date: 2025-02-10
* @Version: V1.0
*/
@Mapper
public interface AppErrorCodeMapper extends BaseMapper<AppErrorCode> {
AppErrorCode getByCode(String errorCode);
}

View File

@ -0,0 +1,18 @@
package com.nu.modules.iot.tplink.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nu.modules.iot.tplink.entity.AppTumsConfig;
import org.apache.ibatis.annotations.Mapper;
/**
* @Description: 护理单元-物联管理-错误码
* @Author: jeecg-boot
* @Date: 2025-02-10
* @Version: V1.0
*/
@Mapper
public interface AppTumsConfigMapper extends BaseMapper<AppTumsConfig> {
AppTumsConfig getByCode(String orgCode);
AppTumsConfig findProjectByCodeOrId(AppTumsConfig tumsConfig);
}

View File

@ -0,0 +1,246 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nu.modules.iot.tplink.mapper.AppCameraInfoMapper">
<select id="findPage" parameterType="com.nu.modules.iot.tplink.entity.AppCameraInfo" resultType="com.nu.modules.iot.tplink.entity.AppCameraInfo">
select a.id,
a.device_index as deviceIndex,
device_name as deviceName,
device_type as deviceType,
device_status as deviceStatus,
device_model as deviceModel,
ip as ip,
mac as mac,
region_id as regionId,
region_name as regionName,
parent_id as parentId,
parent_device_name as parentDeviceName,
project_id as projectId,
project_name as projectName,
firmware_ver as firmwareVer,
hardware_ver as hardwareVer,
manager_auth_type as managerAuthType,
msg_auth_type as msgAuthType,
sip_code as sipCode,
location_name as locationName,
system_type as systemType,
protocol as protocol,
a.nu_id as nuId,
b.nu_name as nuName,
ifnull(c.multitrans,0) as multitrans
from nu_iot_tplink_camera a left join nu_base_info b on a.nu_id = b.id
left join nu_iot_tplink_camera_capability c on a.device_index = c.device_index
<where>
<if test="params.deviceIndex != null and params.deviceIndex != ''">
AND a.device_index = #{params.deviceIndex}
</if>
<if test="params.deviceStatus != null and params.deviceStatus != ''">
AND a.device_status = #{params.deviceStatus}
</if>
<if test="params.deviceName != null and params.deviceName != ''">
AND a.device_name = #{params.deviceName}
</if>
<if test="params.projectName != null and params.projectName != ''">
AND a.project_name LIKE concat('%',#{params.projectName},'%')
</if>
<if test="params.regionName != null and params.regionName != ''">
AND a.region_name LIKE concat('%',#{params.regionName},'%')
</if>
<if test="params.nuName != null and params.nuName != ''">
AND b.nu_name LIKE concat('%',#{params.nuName},'%')
</if>
<if test="params.projectId != null and params.projectId != ''">
AND a.project_id = #{params.projectId}
</if>
<if test="params.regionId != null and params.regionId != ''">
AND a.region_id = #{params.regionId}
</if>
</where>
</select>
<select id="findAllList" parameterType="com.nu.modules.iot.tplink.entity.AppCameraInfo" resultType="com.nu.modules.iot.tplink.entity.AppCameraInfo">
select a.id,
device_index as deviceIndex,
device_name as deviceName,
device_type as deviceType,
device_status as deviceStatus,
device_model as deviceModel,
ip as ip,
mac as mac,
region_id as regionId,
region_name as regionName,
parent_id as parentId,
parent_device_name as parentDeviceName,
project_id as projectId,
project_name as projectName,
firmware_ver as firmwareVer,
hardware_ver as hardwareVer,
manager_auth_type as managerAuthType,
msg_auth_type as msgAuthType,
sip_code as sipCode,
location_name as locationName,
system_type as systemType,
protocol as protocol,
nu_id as nuId
from nu_iot_tplink_camera a
</select>
<select id="findNuPage" parameterType="com.nu.modules.iot.tplink.entity.AppCameraInfo" resultType="com.nu.modules.iot.tplink.entity.AppCameraInfo">
select
id as nuId,
nu_name as nuName
from nu_base_info b
<where>
<if test="params.nuId != null and params.nuId != ''">
AND b.id = #{params.nuId}
</if>
<if test="params.nuName != null and params.nuName != ''">
AND b.nu_name LIKE concat('%',#{params.nuName},'%')
</if>
</where>
</select>
<select id="getByDeviceId" parameterType="com.nu.modules.iot.tplink.entity.AppCameraInfo" resultType="com.nu.modules.iot.tplink.entity.AppCameraInfo">
select a.id,
device_index as deviceIndex,
device_name as deviceName,
device_type as deviceType,
device_status as deviceStatus,
device_model as deviceModel,
ip as ip,
mac as mac,
region_id as regionId,
region_name as regionName,
parent_id as parentId,
parent_device_name as parentDeviceName,
project_id as projectId,
project_name as projectName,
firmware_ver as firmwareVer,
hardware_ver as hardwareVer,
manager_auth_type as managerAuthType,
msg_auth_type as msgAuthType,
sip_code as sipCode,
location_name as locationName,
system_type as systemType,
protocol as protocol,
a.nu_id as nuId,
b.nu_name as nuName
from nu_iot_tplink_camera a left join nu_base_info b on a.nu_id = b.id
where device_index = #{deviceIndex}
</select>
<select id="getByNuId" parameterType="com.nu.modules.iot.tplink.entity.AppCameraInfo" resultType="com.nu.modules.iot.tplink.entity.AppCameraInfo">
select a.id,
device_index as deviceIndex,
device_name as deviceName,
device_type as deviceType,
device_status as deviceStatus,
device_model as deviceModel,
ip as ip,
mac as mac,
region_id as regionId,
region_name as regionName,
parent_id as parentId,
parent_device_name as parentDeviceName,
project_id as projectId,
project_name as projectName,
firmware_ver as firmwareVer,
hardware_ver as hardwareVer,
manager_auth_type as managerAuthType,
msg_auth_type as msgAuthType,
sip_code as sipCode,
location_name as locationName,
system_type as systemType,
protocol as protocol,
a.nu_id as nuId,
b.nu_name as nuName
from nu_iot_tplink_camera a left join nu_base_info b on a.nu_id = b.id
where a.nu_id = #{nuId}
</select>
<select id="getCapabilityByDeviceId" parameterType="com.nu.modules.iot.tplink.entity.AppCameraInfo" resultType="com.nu.modules.iot.tplink.entity.AppCameraInfo">
select a.id,
device_index as deviceIndex,
motion_detection as motionDetection,
video_cover as videoCover,
ptz,
motor,
smart_code as smartCode,
force_idr_frame as forceIdrFrame,
audio,
local_storage as localStorage,
playback_api_version_two as playbackApiVersionTwo,
multitrans,
passenger_flow as passengerFlow,
get_preview_thumbnail as getPreviewThumbnail,
preview_thumbnail_jpeg as previewThumbnailJpeg,
corridor_mod as corridorMod,
backlight_coexistence as backlightCoexistence
from nu_iot_tplink_camera_capability a
where device_index = #{deviceIndex}
</select>
<insert id="insertCapability">
insert into nu_iot_tplink_camera_capability (
id,
device_index,
motion_detection,
video_cover,
ptz,
motor,
smart_code,
force_idr_frame,
audio,
local_storage,
playback_api_version_two,
multitrans,
passenger_flow,
get_preview_thumbnail,
preview_thumbnail_jpeg,
corridor_mod,
backlight_coexistence
)
values (
#{id},
#{deviceIndex},
#{motionDetection},
#{videoCover},
#{ptz},
#{motor},
#{smartCode},
#{forceIdrFrame},
#{audio},
#{localStorage},
#{playbackApiVersionTwo},
#{multitrans},
#{passengerFlow},
#{getPreviewThumbnail},
#{previewThumbnailJpeg},
#{corridorMod},
#{backlightCoexistence}
)
</insert>
<update id="updateCapabilityById">
UPDATE nu_iot_tplink_camera_capability
SET
device_index = #{deviceIndex},
motion_detection = #{motionDetection},
video_cover = #{videoCover},
ptz = #{ptz},
motor = #{motor},
smart_code = #{smartCode},
force_idr_frame = #{forceIdrFrame},
audio = #{audio},
local_storage = #{localStorage},
playback_api_version_two = #{playbackApiVersionTwo},
multitrans = #{multitrans},
passenger_flow = #{passengerFlow},
get_preview_thumbnail = #{getPreviewThumbnail},
preview_thumbnail_jpeg = #{previewThumbnailJpeg},
corridor_mod = #{corridorMod},
backlight_coexistence = #{backlightCoexistence}
where id = #{id}
</update>
</mapper>

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nu.modules.iot.tplink.mapper.AppErrorCodeMapper">
<select id="getByCode" parameterType="String" resultType="com.nu.modules.iot.tplink.entity.AppErrorCode">
select
error_code as errorCode,
error_msg as errorMsg
from nu_iot_tplink_error_code
where error_code = #{errorCode}
</select>
</mapper>

View File

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nu.modules.iot.tplink.mapper.AppTumsConfigMapper">
<select id="getByCode" parameterType="String" resultType="com.nu.modules.iot.tplink.entity.AppTumsConfig">
select
id,
tums_url as tumsUrl,
tums_project_id as tumsProjectId,
tums_userId as tumsUserId,
tums_username as tumsUsername,
tums_password as tumsPassword,
tums_roleId as tumsRoleId,
ftp_ip as ftpIp,
ftp_port as ftpPort,
ftp_username as ftpUsername,
ftp_password as ftpPassword,
ftp_uploadpath as ftpUploadpath,
org_code as orgCode
from nu_iot_tplink_tums_base
<where>
<if test="orgCode != null and orgCode != ''">
AND org_code = #{orgCode}
</if>
<if test="orgCode == null or orgCode == ''">
AND ifnull(org_code,'') = ''
</if>
</where>
order by id desc
limit 1
</select>
<select id="findProjectByCodeOrId" parameterType="String" resultType="com.nu.modules.iot.tplink.entity.AppTumsConfig">
select p.project_id as tumsProjectId,
p.project_name as tumsProjectName
from nu_iot_tplink_project p
inner join sys_depart d on p.institution_id = d.id
<where>
<if test="tumsProjectId != null and tumsProjectId != ''">
AND p.project_id = #{tumsProjectId}
</if>
<if test="tumsProjectId == null or tumsProjectId == ''">
AND d.org_code = #{orgCode}
</if>
</where>
limit 1
</select>
</mapper>

View File

@ -0,0 +1,48 @@
package com.nu.modules.iot.tplink.service;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nu.modules.iot.tplink.entity.AppCameraInfo;
import org.jeecg.common.api.vo.Result;
import java.util.Map;
/**
* @Description: 护理单元-物联管理-摄像头信息
* @Author: jeecg-boot
* @Date: 2025-01-17
* @Version: V1.0
*/
public interface IAppCameraInfoService extends IService<AppCameraInfo> {
IPage<AppCameraInfo> findPage(Page<AppCameraInfo> page, AppCameraInfo cameraInfo);
IPage<AppCameraInfo> findNuPage(Page<AppCameraInfo> page, AppCameraInfo cameraInfo);
AppCameraInfo getByNuId(AppCameraInfo cameraInfo);
void rebootDevice(AppCameraInfo cameraInfo);
Result<JSONObject> getImageCommon(Map<String,Object> map);
Result setImageCommon(Map<String,Object> map);
Result<JSONObject> getOsdCapability(Map<String,Object> map);
Result<JSONObject> getOsd(Map<String,Object> map);
Result<String> setOsd(Map<String,Object> map);
Result<JSONObject> getVideoParams(Map<String,Object> map);
Result setVideoParams(Map<String,Object> map);
Result configRecovery(Map<String,Object> map);
Result<Map<String,String>> getPreviewUrl(AppCameraInfo cameraInfo);
Result<JSONObject> getTamperDet(Map<String,Object> map);
Result<String> setTamperDet(Map<String,Object> map);
Result<JSONObject> getTamperNotif(Map<String,Object> map);
Result setTamperNotif(Map<String,Object> map);
Result testAudio(Map<String,Object> map);
Result<JSONObject> getAlarmInfo(Map<String,Object> map);
Result<String> setAlarmInfo(Map<String,Object> map);
Result<JSONObject> getAlarmPlan(Map<String,Object> map);
Result setAlarmPlan(Map<String,Object> map);
Result<IPage<AppCameraInfo>> searchVideo(Integer pageNo, Integer pageSize, AppCameraInfo cameraInfo);
Result<Map<String,Object>> getPlaybackUrlList(AppCameraInfo cameraInfo);
Result<String> deletePlaybackChn(AppCameraInfo cameraInfo);
Result<Map<String,Object>> getMultitransUrl(AppCameraInfo cameraInfo) throws Exception;
Result uploadToServer(AppCameraInfo cameraInfo);
Result<String> stopUploadToServer(AppCameraInfo cameraInfo);
Result getUploadToServerProcess(AppCameraInfo cameraInfo);
}

View File

@ -0,0 +1,14 @@
package com.nu.modules.iot.tplink.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nu.modules.iot.tplink.entity.AppErrorCode;
/**
* @Description: 护理单元-物联管理-错误码
* @Author: jeecg-boot
* @Date: 2025-02-10
* @Version: V1.0
*/
public interface IAppErrorCodeService extends IService<AppErrorCode> {
AppErrorCode getByCode(String errorCode);
}

View File

@ -0,0 +1,14 @@
package com.nu.modules.iot.tplink.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nu.modules.iot.tplink.entity.AppTumsConfig;
/**
* @Description: 护理单元-物联管理-图门系统配置
* @Author: jeecg-boot
* @Date: caolei
* @Version: V1.0
*/
public interface IAppTumsConfigService extends IService<AppTumsConfig> {
AppTumsConfig getByCode(String orgCode);
}

View File

@ -0,0 +1,24 @@
package com.nu.modules.iot.tplink.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nu.modules.iot.tplink.entity.AppErrorCode;
import com.nu.modules.iot.tplink.mapper.AppErrorCodeMapper;
import com.nu.modules.iot.tplink.service.IAppErrorCodeService;
import org.springframework.stereotype.Service;
/**
* @Description: 护理单元-物联管理-错误码
* @Author: jeecg-boot
* @Date: 2025-02-10
* @Version: V1.0
*/
@Service
public class AppErrorCodeServiceImpl extends ServiceImpl<AppErrorCodeMapper, AppErrorCode> implements IAppErrorCodeService {
@Override
public AppErrorCode getByCode(String errorCode){
return baseMapper.getByCode(errorCode);
}
}

View File

@ -0,0 +1,24 @@
package com.nu.modules.iot.tplink.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nu.modules.iot.tplink.entity.AppTumsConfig;
import com.nu.modules.iot.tplink.mapper.AppTumsConfigMapper;
import com.nu.modules.iot.tplink.service.IAppTumsConfigService;
import org.springframework.stereotype.Service;
/**
* @Description: 护理单元-物联管理-图门系统配置
* @Author: caolei
* @Date: 2025-03-31
* @Version: V1.0
*/
@Service
public class AppTumsConfigServiceImpl extends ServiceImpl<AppTumsConfigMapper, AppTumsConfig> implements IAppTumsConfigService {
@Override
public AppTumsConfig getByCode(String orgCode){
return baseMapper.getByCode(orgCode);
}
}

View File

@ -0,0 +1,271 @@
package com.nu.modules.iot.tplink.utils;
import com.nu.modules.iot.tplink.entity.AppTumsConfig;
import com.nu.modules.iot.tplink.enums.AppApiEnum;
import com.nu.modules.iot.tplink.mapper.AppTumsConfigMapper;
import com.tplink.ignite.libs.developersdk.api.TumsClient;
import com.tplink.ignite.libs.developersdk.vo.ResultVO;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.system.vo.LoginUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
@Slf4j
public class AppTumsApi {
TumsClient tumsClient;
AppTumsConfig tumsConfig;
@Autowired
private AppTumsConfigMapper tumsConfigMapper;
/**
* 创建tumsClient
* @return
*/
public TumsClient createTumsClient(){
if(this.tumsClient==null){
login();
}
return this.tumsClient;
}
/**
* 销毁tumsClient
*/
public void destroyTumsClient(){
if(this.tumsClient!=null){
logout();
}
}
private void initTumsConfig(){
if(tumsConfig==null){
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
tumsConfig = tumsConfigMapper.getByCode(sysUser.getOrgCode());
}
}
/**
* 登录
* @return
*/
public void login(){
initTumsConfig();
TumsClient tc = new TumsClient(tumsConfig.getTumsUsername(), tumsConfig.getTumsPassword(), tumsConfig.getTumsUrl());
ResultVO loginResult = tc.login();
// 判断是否登录成功
if (loginResult.getErrorCode() != 0) {
log.error("login fail, fail message:[{}]", loginResult.getMsg());
tumsClient = null;
} else {
log.info("login success");
String cookie = tc.getCookie();
String rsaKey = tc.getRsaKey();
log.info("cookie",cookie);
log.info("rsaKey",rsaKey);
tumsClient = tc;
}
}
/**
* 注销
*/
public void logout(){
ResultVO logoutResult = tumsClient.logout();
if (logoutResult.getErrorCode() != 0) {
log.error("logout fail, errorCode:{}", logoutResult.getErrorCode());
} else {
log.info("logout success");
tumsClient = null;
}
}
/**
* 设置当前项目
* @param jsonRequest
* @return
*/
public String setCurrentProject(String jsonRequest){
this.createTumsClient();
log.info("setCurrentProject:request:{}",jsonRequest);
String jsonResponse = tumsClient.request(jsonRequest, AppApiEnum.SET_CURRENT_PROJECT.getValue());
log.info("setCurrentProject:response:{}",jsonResponse);
return jsonResponse;
}
/**
* 重启设备
* @param jsonRequest
* @return
*/
public String rebootDeviceList(String jsonRequest){
this.createTumsClient();
log.info("rebootDeviceList:request:{}",jsonRequest);
String jsonResponse = tumsClient.request(jsonRequest, AppApiEnum.REBOOT_DEVICE_LIST.getValue());
log.info("rebootDeviceList:response:{}",jsonResponse);
return jsonResponse;
}
/**
* 设备配置信息
* @param jsonRequest
* @return
*/
public String passthrough(String jsonRequest){
this.createTumsClient();
log.info("passthrough:request:{}",jsonRequest);
String jsonResponse = tumsClient.request(jsonRequest, AppApiEnum.IPC_PASSTHROUGH.getValue());
log.info("passthrough:response:{}",jsonResponse);
return jsonResponse;
}
/**
* 添加预览通道
* @param jsonRequest
* @return
*/
public String addPreviewChn(String jsonRequest){
this.createTumsClient();
log.info("addPreviewChn:request:{}",jsonRequest);
String jsonResponse = tumsClient.request(jsonRequest, AppApiEnum.IPC_ADD_PREVIEW_CHN.getValue());
log.info("addPreviewChn:response:{}",jsonResponse);
return jsonResponse;
}
/**
* 获取预览通道的url
* @param jsonRequest
* @return
*/
public String getPreviewUrl(String jsonRequest){
this.createTumsClient();
log.info("getPreviewUrl:request:{}",jsonRequest);
String jsonResponse = tumsClient.request(jsonRequest, AppApiEnum.IPC_GET_PREVIEW_URL.getValue());
log.info("getPreviewUrl:response:{}",jsonResponse);
return jsonResponse;
}
/**
* 搜索当天的录像数据
* @param jsonRequest
* @return
*/
public String searchVideo(String jsonRequest){
this.createTumsClient();
log.info("searchVideo:request:{}",jsonRequest);
String jsonResponse = tumsClient.request(jsonRequest, AppApiEnum.IPC_SEARCH_VIDEO.getValue());
log.info("searchVideo:response:{}",jsonResponse);
return jsonResponse;
}
/**
* 获取指定监控点的存储设备列表
* @param jsonRequest
* @return
*/
public String getStoragesById(String jsonRequest){
this.createTumsClient();
log.info("getStoragesById:request:{}",jsonRequest);
String jsonResponse = tumsClient.request(jsonRequest, AppApiEnum.IPC_GET_STORAGES_BY_ID.getValue());
log.info("getStoragesById:response:{}",jsonResponse);
return jsonResponse;
}
/**
* 添加回放通道V2
* @param jsonRequest
* @return
*/
public String addPlaybackChn(String jsonRequest){
this.createTumsClient();
log.info("addPlaybackChn:request:{}",jsonRequest);
String jsonResponse = tumsClient.request(jsonRequest, AppApiEnum.IPC_ADD_PLAYBACK_CHN.getValue());
log.info("addPlaybackChn:response:{}",jsonResponse);
return jsonResponse;
}
/**
* 获取回放通道的url
* @param jsonRequest
* @return
*/
public String getPlaybackUrl(String jsonRequest){
this.createTumsClient();
log.info("getPlaybackUrl:request:{}",jsonRequest);
String jsonResponse = tumsClient.request(jsonRequest, AppApiEnum.IPC_GET_PLAYBACK_URL.getValue());
log.info("getPlaybackUrl:response:{}",jsonResponse);
return jsonResponse;
}
/**
* 删除回放通道
* @param jsonRequest
* @return
*/
public String deletePlaybackChn(String jsonRequest){
this.createTumsClient();
log.info("deletePlaybackChn:request:{}",jsonRequest);
String jsonResponse = tumsClient.request(jsonRequest, AppApiEnum.IPC_DELETE_PLAYBACK_CHN.getValue());
log.info("deletePlaybackChn:response:{}",jsonResponse);
return jsonResponse;
}
/**
* 获取nvmp设备双向通信URL
* @param jsonRequest
* @return
*/
public String getMultitransUrl(String jsonRequest){
this.createTumsClient();
log.info("getMultitransUrl:request:{}",jsonRequest);
String jsonResponse = tumsClient.request(jsonRequest, AppApiEnum.IPC_GET_MULTITRANS_URL.getValue());
log.info("getMultitransUrl:response:{}",jsonResponse);
return jsonResponse;
}
/**
* 回放视频转mp4上传
* @param jsonRequest
* @return
*/
public String uploadToServer(String jsonRequest){
this.createTumsClient();
log.info("uploadToServer:request:{}",jsonRequest);
String jsonResponse = tumsClient.request(jsonRequest, AppApiEnum.IPC_UPLOAD_TO_SERVER.getValue());
log.info("uploadToServer:response:{}",jsonResponse);
return jsonResponse;
}
/**
* 停止转存MP4上传任务
* @param jsonRequest
* @return
*/
public String stopUploadToServer(String jsonRequest){
this.createTumsClient();
log.info("stopUploadToServer:request:{}",jsonRequest);
String jsonResponse = tumsClient.request(jsonRequest, AppApiEnum.IPC_STOP_UPLOAD_TO_SERVER.getValue());
log.info("stopUploadToServer:response:{}",jsonResponse);
return jsonResponse;
}
/**
* 获取转存MP4上传任务进度
* @param jsonRequest
* @return
*/
public String getUploadToServerProcess(String jsonRequest){
this.createTumsClient();
log.info("getUploadToServerProcess:request:{}",jsonRequest);
String jsonResponse = tumsClient.request(jsonRequest, AppApiEnum.IPC_GET_UPLOAD_TO_SERVER_PROCESS.getValue());
log.info("getUploadToServerProcess:response:{}",jsonResponse);
return jsonResponse;
}
}