diff --git a/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/controller/AppCameraInfoController.java b/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/controller/AppCameraInfoController.java new file mode 100644 index 0000000..20d5c82 --- /dev/null +++ b/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/controller/AppCameraInfoController.java @@ -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 { + @Autowired + private IAppCameraInfoService service; + + /** + * 分页列表查询 + * + * @param CameraInfo + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "护理单元-物联管理-摄像头信息-分页列表查询") + @ApiOperation(value="护理单元-物联管理-摄像头信息-分页列表查询", notes="护理单元-物联管理-摄像头信息-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(AppCameraInfo CameraInfo, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + Page page = new Page(pageNo, pageSize); + IPage pageList = service.findPage(page, CameraInfo); + return Result.OK(pageList); + } + + @ApiOperation(value="护理单元分页列表查询", notes="护理单元分页列表查询") + @GetMapping(value = "/nuList") + public Result> queryNuPageList(AppCameraInfo CameraInfo, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + Page page = new Page(pageNo, pageSize); + IPage pageList = service.findNuPage(page, CameraInfo); + return Result.OK(pageList); + } + + @ApiOperation(value="护理单元-物联管理-摄像头信息-查询", notes="护理单元-物联管理-摄像头信息-查询") + @GetMapping(value = "/getByNuId") + public Result 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 rebootDevice(@RequestBody AppCameraInfo cameraInfo) { + service.rebootDevice(cameraInfo); + return Result.OK("重启成功!"); + } + + /** + * 获取画面基本信息 + * + * @param map + * @return + */ + @PostMapping(value = "/getImageCommon") + public Result getImageCommon(@RequestBody Map map) { + return service.getImageCommon(map); + } + + /** + * 设置画面基本信息 + * + * @param map + * @return + */ + @PostMapping(value = "/setImageCommon") + public Result setImageCommon(@RequestBody Map map) { + return service.setImageCommon(map); + } + + /** + * 获取OSD能力集 + * + * @param map + * @return + */ + @PostMapping(value = "/getOsdCapability") + public Result getOsdCapability(@RequestBody Map map) { + return service.getOsdCapability(map); + } + + /** + * 获取OSD参数 + * + * @param map + * @return + */ + @PostMapping(value = "/getOsd") + public Result getOsd(@RequestBody Map map) { + return service.getOsd(map); + } + + /** + * 设置OSD参数 + * + * @param map + * @return + */ + @PostMapping(value = "/setOsd") + public Result setOsd(@RequestBody Map map) { + return service.setOsd(map); + } + + /** + * 获取码率参数 + * + * @param map + * @return + */ + @PostMapping(value = "/getVideoParams") + public Result getVideoParams(@RequestBody Map map) { + return service.getVideoParams(map); + } + + /** + * 设置码率参数 + * + * @param map + * @return + */ + @PostMapping(value = "/setVideoParams") + public Result setVideoParams(@RequestBody Map map) { + return service.setVideoParams(map); + } + + /** + * 恢复画面默认值 + * + * @param map + * @return + */ + @PostMapping(value = "/configRecovery") + public Result configRecovery(@RequestBody Map map) { + return service.configRecovery(map); + } + + /** + * 获取摄像头实时播放地址 + * + * @param cameraInfo + * @return + */ + @GetMapping(value = "/getPreviewUrl") + public Result> getPreviewUrl(AppCameraInfo cameraInfo) { + return service.getPreviewUrl(cameraInfo); + } + + /** + * 获取镜头遮挡参数 + * + * @param map + * @return + */ + @PostMapping(value = "/getTamperDet") + public Result getTamperDet(@RequestBody Map map) { + return service.getTamperDet(map); + } + + /** + * 设置镜头遮挡参数 + * + * @param map + * @return + */ + @PostMapping(value = "/setTamperDet") + public Result setTamperDet(@RequestBody Map map) { + return service.setTamperDet(map); + } + + /** + * 获取镜头遮挡处理方式 + * + * @param map + * @return + */ + @PostMapping(value = "/getTamperNotif") + public Result getTamperNotif(@RequestBody Map map) { + return service.getTamperNotif(map); + } + + /** + * 设置镜头遮挡处理方式 + * + * @param map + * @return + */ + @PostMapping(value = "/setTamperNotif") + public Result setTamperNotif(@RequestBody Map map) { + return service.setTamperNotif(map); + } + + /** + * 报警声音试听 + * + * @param map + * @return + */ + @PostMapping(value = "/testAudio") + public Result testAudio(@RequestBody Map map) { + return service.testAudio(map); + } + + /** + * 获取白光/声音告警参数 + * + * @param map + * @return + */ + @PostMapping(value = "/getAlarmInfo") + public Result getAlarmInfo(@RequestBody Map map) { + return service.getAlarmInfo(map); + } + + /** + * 设置白光/声音告警参数 + * + * @param map + * @return + */ + @PostMapping(value = "/setAlarmInfo") + public Result setAlarmInfo(@RequestBody Map map) { + return service.setAlarmInfo(map); + } + + /** + * 获取白光/声音告警布防时间 + * + * @param map + * @return + */ + @PostMapping(value = "/getAlarmPlan") + public Result getAlarmPlan(@RequestBody Map map) { + return service.getAlarmPlan(map); + } + + /** + * 设置白光/声音告警布防时间 + * + * @param map + * @return + */ + @PostMapping(value = "/setAlarmPlan") + public Result setAlarmPlan(@RequestBody Map map) { + return service.setAlarmPlan(map); + } + + /** + * 搜索某天的录像数据 + * + * @param cameraInfo + * @return + */ + @GetMapping(value = "/searchVideo") + public Result> 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> getPlaybackUrlList(AppCameraInfo cameraInfo) { + return service.getPlaybackUrlList(cameraInfo); + } + + /** + * 删除回放通道 + * + * @param cameraInfo + * @return + */ + @GetMapping(value = "/deletePlaybackChn") + public Result deletePlaybackChn(AppCameraInfo cameraInfo) { + return service.deletePlaybackChn(cameraInfo); + } + + /** + * 获取摄像头录像回放地址 + * + * @param cameraInfo + * @return + */ + @GetMapping(value = "/getMultitransUrl") + public Result> 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 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); + } + +} diff --git a/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/entity/AppCameraInfo.java b/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/entity/AppCameraInfo.java new file mode 100644 index 0000000..d098887 --- /dev/null +++ b/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/entity/AppCameraInfo.java @@ -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:ipc,1:nvr,2:nvs:3:server,4:vcs,5:storagePool") + @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; +} diff --git a/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/entity/AppErrorCode.java b/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/entity/AppErrorCode.java new file mode 100644 index 0000000..2bade91 --- /dev/null +++ b/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/entity/AppErrorCode.java @@ -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; + +} diff --git a/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/entity/AppTumsConfig.java b/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/entity/AppTumsConfig.java new file mode 100644 index 0000000..d4f5d1f --- /dev/null +++ b/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/entity/AppTumsConfig.java @@ -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; //机构编码 +} diff --git a/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/enums/AppApiEnum.java b/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/enums/AppApiEnum.java new file mode 100644 index 0000000..561464f --- /dev/null +++ b/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/enums/AppApiEnum.java @@ -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(); +} diff --git a/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/mapper/AppCameraInfoMapper.java b/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/mapper/AppCameraInfoMapper.java new file mode 100644 index 0000000..6bb9b61 --- /dev/null +++ b/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/mapper/AppCameraInfoMapper.java @@ -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 { + IPage findPage(Page page, @Param("params") AppCameraInfo cameraInfo); + List findAllList(); + IPage findNuPage(Page 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); +} diff --git a/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/mapper/AppErrorCodeMapper.java b/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/mapper/AppErrorCodeMapper.java new file mode 100644 index 0000000..ab0c258 --- /dev/null +++ b/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/mapper/AppErrorCodeMapper.java @@ -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 getByCode(String errorCode); +} diff --git a/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/mapper/AppTumsConfigMapper.java b/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/mapper/AppTumsConfigMapper.java new file mode 100644 index 0000000..4b3c42c --- /dev/null +++ b/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/mapper/AppTumsConfigMapper.java @@ -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 getByCode(String orgCode); + AppTumsConfig findProjectByCodeOrId(AppTumsConfig tumsConfig); +} diff --git a/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/mapper/xml/AppCameraInfoMapper.xml b/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/mapper/xml/AppCameraInfoMapper.xml new file mode 100644 index 0000000..7dbb54e --- /dev/null +++ b/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/mapper/xml/AppCameraInfoMapper.xml @@ -0,0 +1,246 @@ + + + + + + + + + + + + + + + + + + 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} + ) + + + + 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} + + + \ No newline at end of file diff --git a/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/mapper/xml/AppErrorCodeMapper.xml b/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/mapper/xml/AppErrorCodeMapper.xml new file mode 100644 index 0000000..f4c2617 --- /dev/null +++ b/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/mapper/xml/AppErrorCodeMapper.xml @@ -0,0 +1,13 @@ + + + + + + + \ No newline at end of file diff --git a/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/mapper/xml/AppTumsConfigMapper.xml b/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/mapper/xml/AppTumsConfigMapper.xml new file mode 100644 index 0000000..d25e6e9 --- /dev/null +++ b/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/mapper/xml/AppTumsConfigMapper.xml @@ -0,0 +1,49 @@ + + + + + + + + + \ No newline at end of file diff --git a/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/service/IAppCameraInfoService.java b/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/service/IAppCameraInfoService.java new file mode 100644 index 0000000..07387b9 --- /dev/null +++ b/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/service/IAppCameraInfoService.java @@ -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 { + IPage findPage(Page page, AppCameraInfo cameraInfo); + IPage findNuPage(Page page, AppCameraInfo cameraInfo); + AppCameraInfo getByNuId(AppCameraInfo cameraInfo); + void rebootDevice(AppCameraInfo cameraInfo); + Result getImageCommon(Map map); + Result setImageCommon(Map map); + Result getOsdCapability(Map map); + Result getOsd(Map map); + Result setOsd(Map map); + Result getVideoParams(Map map); + Result setVideoParams(Map map); + Result configRecovery(Map map); + Result> getPreviewUrl(AppCameraInfo cameraInfo); + Result getTamperDet(Map map); + Result setTamperDet(Map map); + Result getTamperNotif(Map map); + Result setTamperNotif(Map map); + Result testAudio(Map map); + Result getAlarmInfo(Map map); + Result setAlarmInfo(Map map); + Result getAlarmPlan(Map map); + Result setAlarmPlan(Map map); + Result> searchVideo(Integer pageNo, Integer pageSize, AppCameraInfo cameraInfo); + Result> getPlaybackUrlList(AppCameraInfo cameraInfo); + Result deletePlaybackChn(AppCameraInfo cameraInfo); + Result> getMultitransUrl(AppCameraInfo cameraInfo) throws Exception; + Result uploadToServer(AppCameraInfo cameraInfo); + Result stopUploadToServer(AppCameraInfo cameraInfo); + Result getUploadToServerProcess(AppCameraInfo cameraInfo); +} diff --git a/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/service/IAppErrorCodeService.java b/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/service/IAppErrorCodeService.java new file mode 100644 index 0000000..8b8b3e2 --- /dev/null +++ b/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/service/IAppErrorCodeService.java @@ -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 getByCode(String errorCode); +} diff --git a/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/service/IAppTumsConfigService.java b/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/service/IAppTumsConfigService.java new file mode 100644 index 0000000..56aefca --- /dev/null +++ b/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/service/IAppTumsConfigService.java @@ -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 getByCode(String orgCode); +} diff --git a/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/service/impl/AppCameraInfoServiceImpl.java b/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/service/impl/AppCameraInfoServiceImpl.java new file mode 100644 index 0000000..2d06c89 --- /dev/null +++ b/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/service/impl/AppCameraInfoServiceImpl.java @@ -0,0 +1,1893 @@ +package com.nu.modules.iot.tplink.service.impl; + +import cn.hutool.json.JSONArray; +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.impl.ServiceImpl; + +import com.nu.modules.iot.tplink.entity.AppCameraInfo; +import com.nu.modules.iot.tplink.entity.AppErrorCode; +import com.nu.modules.iot.tplink.entity.AppTumsConfig; +import com.nu.modules.iot.tplink.mapper.AppCameraInfoMapper; +import com.nu.modules.iot.tplink.mapper.AppTumsConfigMapper; +import com.nu.modules.iot.tplink.service.IAppCameraInfoService; +import com.nu.modules.iot.tplink.service.IAppErrorCodeService; +import com.nu.modules.iot.tplink.utils.AppTumsApi; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.compress.utils.Lists; +import org.apache.shiro.SecurityUtils; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.common.util.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import static java.lang.Thread.sleep; + +/** + * @Description: 护理单元-物联管理-摄像头信息 + * @Author: jeecg-boot + * @Date: 2025-01-17 + * @Version: V1.0 + */ +@Service +@Slf4j +public class AppCameraInfoServiceImpl extends ServiceImpl implements IAppCameraInfoService { + + @Autowired + private AppTumsApi tumsApi; + @Autowired + private IAppErrorCodeService errorCodeService; + @Autowired + private AppTumsConfigMapper tumsConfigMapper; + + /** + * 获取摄像头信息-分页 + * @param page + * @param cameraInfo + * @return + */ + public IPage findPage(Page page, AppCameraInfo cameraInfo){ + return baseMapper.findPage(page,cameraInfo); + } + + /** + * 获取护理单元信息 + * @return + */ + public IPage findNuPage(Page page, AppCameraInfo cameraInfo){ + return baseMapper.findNuPage(page,cameraInfo); + } + + /** + * 获取护理单元信息 + * @return + */ + public AppCameraInfo getByNuId(AppCameraInfo cameraInfo){ + return baseMapper.getByNuId(cameraInfo); + } + + /** + * 调用接口-重启摄像头设备 + * @param cameraInfo + * @return + */ + public Result rebootDeviceList(AppCameraInfo cameraInfo){ + //1、先设置项目 2、重启设备 + String projectId = cameraInfo.getProjectId(); + String id = cameraInfo.getDeviceIndex(); + StringBuffer psb = new StringBuffer(); + psb.append("{"); + psb.append("\"projectId\"").append(":").append("\"").append(projectId).append("\""); + psb.append("}"); + String pJsonRes = tumsApi.setCurrentProject(psb.toString()); + JSONObject pJsonObject = new JSONObject(pJsonRes); + if(pJsonObject.getInt("error_code").equals(0)){ + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"deviceIndexList\"").append(":").append("[\"").append(id).append("\"]"); + sb.append("}"); + String jsonRes = tumsApi.rebootDeviceList(sb.toString()); + JSONObject jsonObject = new JSONObject(jsonRes); + if(jsonObject.getInt("error_code").equals(0)){ + return Result.OK(); + }else{ + return Result.error(jsonObject.getStr("msg")); + } + }else{ + return Result.error(pJsonObject.getStr("msg")); + } + } + + /** + * 重启摄像头设备 + * @param cameraInfo + * @return + */ + @Override + public void rebootDevice(AppCameraInfo cameraInfo){ + rebootDeviceList(cameraInfo); + } + + /** + * 获取画面基本信息 + * + * @param map + * @return + * @throws Exception + */ + @Override + public Result getImageCommon(Map map){ + String id = map.get("deviceIndex").toString(); + String type = map.get("type").toString(); + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"devId\"").append(":").append("\"").append(id).append("\"").append(","); + sb.append("\"param\"").append(":").append("{"); + sb.append("\"method\"").append(":").append("\"get\"").append(","); + sb.append("\"image\"").append(":").append("{"); + sb.append("\"name\"").append(":").append("\"").append(type).append("\""); + sb.append("}"); + sb.append("}"); + sb.append("}"); + String addPreviewRes = tumsApi.passthrough(sb.toString()); + JSONObject jsonObject = new JSONObject(addPreviewRes); + String errCode = jsonObject.getStr("error_code"); + if("0".equals(errCode)){ + JSONObject result = (JSONObject)jsonObject.get("result"); + JSONObject responseData = (JSONObject)result.get("responseData"); + String errorCode = responseData.getStr("error_code"); + if("0".equals(errorCode)){ + JSONObject image = (JSONObject)responseData.get("image"); + JSONObject data = (JSONObject)image.get(type); + return Result.OK(data); + }else{ + AppErrorCode errorVo = errorCodeService.getByCode(errorCode); + String errorMsg = errorVo.getErrorMsg(); + log.info("getImageCommon:{}",errorMsg); + return Result.error(errorMsg); + } + }else{ + AppErrorCode errVo = errorCodeService.getByCode(errCode); + String errMsg = errVo.getErrorMsg(); + log.info("getImageCommon:{}",errMsg); + return Result.error(errMsg); + } + } + + /** + * 设置画面基本信息 + * + * @param map + * @return + * @throws Exception + */ + @Override + public Result setImageCommon(Map map){ + String id = map.get("deviceIndex").toString(); + String type = map.get("type").toString(); + Map paramMap = (Map)map.get("param"); + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"devId\"").append(":").append("\"").append(id).append("\"").append(","); + sb.append("\"param\"").append(":").append("{"); + sb.append("\"method\"").append(":").append("\"set\"").append(","); + sb.append("\"image\"").append(":").append("{"); + sb.append("\"").append(type).append("\"").append(":").append("{"); + //类属性+类值 + StringBuffer csb = new StringBuffer(); + Set keys = paramMap.keySet(); + // 遍历键的集合并打印每个键 + for (String key : keys) { + String value = paramMap.get(key).toString(); + csb.append("\"").append(key).append("\"").append(":").append("\"").append(value).append("\"").append(","); + } + String cstr = csb.toString(); + if(cstr.length()>0){ + cstr = cstr.substring(0,cstr.length()-1); + } + sb.append(cstr); + sb.append("}"); + sb.append("}"); + sb.append("}"); + sb.append("}"); + String addPreviewRes = tumsApi.passthrough(sb.toString()); + JSONObject jsonObject = new JSONObject(addPreviewRes); + String errCode = jsonObject.getStr("error_code"); + if("0".equals(errCode)){ + JSONObject result = (JSONObject)jsonObject.get("result"); + JSONObject responseData = (JSONObject)result.get("responseData"); + String errorCode = responseData.getStr("error_code"); + if("0".equals(errorCode)){ + return Result.OK("设置成功"); + }else{ + AppErrorCode errorVo = errorCodeService.getByCode(errorCode); + String errorMsg = errorVo.getErrorMsg(); + log.info("getImageCommon:{}",errorMsg); + return Result.error(errorMsg); + } + }else{ + AppErrorCode errVo = errorCodeService.getByCode(errCode); + String errMsg = errVo.getErrorMsg(); + log.info("setImageCommon:{}",errMsg); + return Result.error(errMsg); + } + } + + /** + * 获取OSD能力集参数 + * + * @param map + * @return + * @throws Exception + */ + @Override + public Result getOsdCapability(Map map){ + String id = map.get("deviceIndex").toString(); + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"devId\"").append(":").append("\"").append(id).append("\"").append(","); + sb.append("\"param\"").append(":").append("{"); + sb.append("\"method\"").append(":").append("\"get\"").append(","); + sb.append("\"osd_capability\"").append(":").append("{"); + sb.append("\"name\"").append(":").append("\"capability\""); + sb.append("}"); + sb.append("}"); + sb.append("}"); + String addPreviewRes = tumsApi.passthrough(sb.toString()); + JSONObject jsonObject = new JSONObject(addPreviewRes); + String errCode = jsonObject.getStr("error_code"); + if("0".equals(errCode)){ + JSONObject result = (JSONObject)jsonObject.get("result"); + JSONObject responseData = (JSONObject)result.get("responseData"); + String errorCode = responseData.getStr("error_code"); + if("0".equals(errorCode)){ + JSONObject osdCapability = (JSONObject)responseData.get("osd_capability"); + JSONObject capability = (JSONObject)osdCapability.get("capability"); + return Result.OK(capability); + }else{ + AppErrorCode errorVo = errorCodeService.getByCode(errorCode); + String errorMsg = errorVo.getErrorMsg(); + log.info("getOsdCapability:{}",errorMsg); + return Result.error(errorMsg); + } + }else{ + AppErrorCode errVo = errorCodeService.getByCode(errCode); + String errMsg = errVo.getErrorMsg(); + log.info("getOsdCapability:{}",errMsg); + return Result.error(errMsg); + } + } + + /** + * 获取OSD参数 + * + * @param map + * @return + * @throws Exception + */ + @Override + public Result getOsd(Map map){ + String id = map.get("deviceIndex").toString(); + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"devId\"").append(":").append("\"").append(id).append("\"").append(","); + sb.append("\"param\"").append(":").append("{"); + sb.append("\"method\"").append(":").append("\"get\"").append(","); + sb.append("\"OSD\"").append(":").append("{"); + sb.append("\"name\"").append(":[").append("\"font\",").append("\"week\",").append("\"date\"").append("],"); + sb.append("\"table\"").append(":").append("\"label_info\""); + sb.append("}"); + sb.append("}"); + sb.append("}"); + String addPreviewRes = tumsApi.passthrough(sb.toString()); + JSONObject jsonObject = new JSONObject(addPreviewRes); + String errCode = jsonObject.getStr("error_code"); + if("0".equals(errCode)){ + JSONObject result = (JSONObject)jsonObject.get("result"); + JSONObject responseData = (JSONObject)result.get("responseData"); + String errorCode = responseData.getStr("error_code"); + if("0".equals(errorCode)){ + JSONObject osd = (JSONObject)responseData.get("OSD"); + return Result.OK(osd); + }else{ + AppErrorCode errorVo = errorCodeService.getByCode(errorCode); + String errorMsg = errorVo.getErrorMsg(); + log.info("getOsd:{}",errorMsg); + return Result.error(errorMsg); + } + }else{ + AppErrorCode errVo = errorCodeService.getByCode(errCode); + String errMsg = errVo.getErrorMsg(); + log.info("getOsd:{}",errMsg); + return Result.error(errMsg); + } + } + + /** + * 设置OSD参数 + * + * @param map + * @return + * @throws Exception + */ + @Override + public Result setOsd(Map map){ + String id = map.get("deviceIndex").toString(); + String dateEnabled = map.get("dateEnabled").toString(); + String weekEnabled = map.get("weekEnabled").toString(); + String labelEnabled = map.get("labelEnabled").toString(); + String mainFontPixel = map.get("mainFontPixel").toString(); + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"devId\"").append(":").append("\"").append(id).append("\"").append(","); + sb.append("\"param\"").append(":").append("{"); + sb.append("\"method\"").append(":").append("\"set\"").append(","); + sb.append("\"OSD\"").append(":").append("{"); + sb.append("\"font\"").append(":").append("{"); + sb.append("\"display\"").append(":").append("\"ntnb\","); + sb.append("\"main_font_pixel\"").append(":").append(mainFontPixel); + sb.append("},"); + sb.append("\"date\"").append(":").append("{"); + sb.append("\"enabled\"").append(":").append("\"").append(dateEnabled).append("\""); + sb.append("},"); + sb.append("\"week\"").append(":").append("{"); + sb.append("\"enabled\"").append(":").append("\"").append(weekEnabled).append("\""); + sb.append("},"); + sb.append("\"label_info_1\"").append(":").append("{"); + sb.append("\"enabled\"").append(":").append("\"").append(labelEnabled).append("\""); + sb.append("}"); + sb.append("}"); + sb.append("}"); + sb.append("}"); + String addPreviewRes = tumsApi.passthrough(sb.toString()); + JSONObject jsonObject = new JSONObject(addPreviewRes); + String errCode = jsonObject.getStr("error_code"); + if("0".equals(errCode)){ + JSONObject result = (JSONObject)jsonObject.get("result"); + JSONObject responseData = (JSONObject)result.get("responseData"); + String errorCode = responseData.getStr("error_code"); + if("0".equals(errorCode)){ + return Result.OK("设置成功"); + }else{ + AppErrorCode errorVo = errorCodeService.getByCode(errorCode); + String errorMsg = errorVo.getErrorMsg(); + log.info("setOsd:{}",errorMsg); + return Result.error(errorMsg); + } + }else{ + AppErrorCode errVo = errorCodeService.getByCode(errCode); + String errMsg = errVo.getErrorMsg(); + log.info("setOsd:{}",errMsg); + return Result.error(errMsg); + } + } + + /** + * 获取码率参数 + * + * @param map + * @return + * @throws Exception + */ + @Override + public Result getVideoParams(Map map){ + String id = map.get("deviceIndex").toString(); + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"devId\"").append(":").append("\"").append(id).append("\"").append(","); + sb.append("\"param\"").append(":").append("{"); + sb.append("\"method\"").append(":").append("\"get\"").append(","); + sb.append("\"video\"").append(":").append("{"); + sb.append("\"name\"").append(":[").append("\"main\"").append(",").append("\"minor\"").append("]"); + sb.append("},"); + sb.append("\"video_capability\"").append(":").append("{"); + sb.append("\"name\"").append(":[").append("\"main\"").append(",").append("\"minor\"").append("]"); + sb.append("}"); + sb.append("}"); + sb.append("}"); + String addPreviewRes = tumsApi.passthrough(sb.toString()); + JSONObject jsonObject = new JSONObject(addPreviewRes); + String errCode = jsonObject.getStr("error_code"); + if("0".equals(errCode)){ + JSONObject result = (JSONObject)jsonObject.get("result"); + JSONObject responseData = (JSONObject)result.get("responseData"); + String errorCode = responseData.getStr("error_code"); + if("0".equals(errorCode)){ + JSONObject resObject = new JSONObject(); + JSONObject video = (JSONObject)responseData.get("video"); + JSONObject mainData = (JSONObject)video.get("main"); + resObject.set("mainData",mainData); + JSONObject minorData = (JSONObject)video.get("minor"); + resObject.set("minorData",minorData); + JSONObject videoCapability = (JSONObject)responseData.get("video_capability"); + JSONObject mainCapability = (JSONObject)videoCapability.get("main"); + JSONArray encodeTypes = mainCapability.getJSONArray("encode_types"); + JSONArray mainEncodeTypeArr = new JSONArray(); + for(int i=0;i map){ + String id = map.get("deviceIndex").toString(); + Map mainMap = (Map)map.get("main"); + Map minorMap = (Map)map.get("minor"); + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"devId\"").append(":").append("\"").append(id).append("\"").append(","); + sb.append("\"param\"").append(":").append("{"); + sb.append("\"method\"").append(":").append("\"set\"").append(","); + sb.append("\"video\"").append(":").append("{"); + sb.append("\"main\"").append(":").append("{"); + //类属性+类值 + StringBuffer mainSb = new StringBuffer(); + Set mainKeys = mainMap.keySet(); + // 遍历键的集合并打印每个键 + for (String key : mainKeys) { + String value = mainMap.get(key).toString(); + mainSb.append("\"").append(key).append("\"").append(":").append("\"").append(value).append("\"").append(","); + } + String mainStr = mainSb.toString(); + if(mainStr.length()>0){ + mainStr = mainStr.substring(0,mainStr.length()-1); + } + sb.append(mainStr); + sb.append("},"); + sb.append("\"minor\"").append(":").append("{"); + //类属性+类值 + StringBuffer minorSb = new StringBuffer(); + Set minorKeys = minorMap.keySet(); + // 遍历键的集合并打印每个键 + for (String key : minorKeys) { + String value = minorMap.get(key).toString(); + minorSb.append("\"").append(key).append("\"").append(":").append("\"").append(value).append("\"").append(","); + } + String minorStr = minorSb.toString(); + if(minorStr.length()>0){ + minorStr = minorStr.substring(0,minorStr.length()-1); + } + sb.append(minorStr); + sb.append("}"); + sb.append("}"); + sb.append("}"); + sb.append("}"); + String addPreviewRes = tumsApi.passthrough(sb.toString()); + JSONObject jsonObject = new JSONObject(addPreviewRes); + String errCode = jsonObject.getStr("error_code"); + if("0".equals(errCode)){ + JSONObject result = (JSONObject)jsonObject.get("result"); + JSONObject responseData = (JSONObject)result.get("responseData"); + String errorCode = responseData.getStr("error_code"); + if("0".equals(errorCode)){ + return Result.OK(); + }else{ + AppErrorCode errorVo = errorCodeService.getByCode(errorCode); + String errorMsg = errorVo.getErrorMsg(); + log.info("setVideoParams:{}",errorMsg); + return Result.error(errorMsg); + } + }else{ + AppErrorCode errVo = errorCodeService.getByCode(errCode); + String errMsg = errVo.getErrorMsg(); + log.info("setVideoParams:{}",errMsg); + return Result.error(errMsg); + } + } + + /** + * 恢复画面默认值 + * + * @param map + * @return + * @throws Exception + */ + @Override + public Result configRecovery(Map map){ + String id = map.get("deviceIndex").toString(); + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"devId\"").append(":").append("\"").append(id).append("\"").append(","); + sb.append("\"param\"").append(":").append("{"); + sb.append("\"method\"").append(":").append("\"do\"").append(","); + sb.append("\"system\"").append(":").append("{"); + sb.append("\"config_recovery\"").append(":").append("{"); + sb.append("\"config_name\"").append(":").append("[").append("\"image\"").append("]"); + sb.append("}"); + sb.append("}"); + sb.append("}"); + sb.append("}"); + String addPreviewRes = tumsApi.passthrough(sb.toString()); + JSONObject jsonObject = new JSONObject(addPreviewRes); + String errCode = jsonObject.getStr("error_code"); + if("0".equals(errCode)){ + JSONObject result = (JSONObject)jsonObject.get("result"); + JSONObject responseData = (JSONObject)result.get("responseData"); + String errorCode = responseData.getStr("error_code"); + if("0".equals(errorCode)){ + return Result.OK(); + }else{ + AppErrorCode errorVo = errorCodeService.getByCode(errorCode); + String errorMsg = errorVo.getErrorMsg(); + log.info("configRecovery:{}",errorMsg); + return Result.error(errorMsg); + } + }else{ + AppErrorCode errVo = errorCodeService.getByCode(errCode); + String errMsg = errVo.getErrorMsg(); + log.info("configRecovery:{}",errMsg); + return Result.error(errMsg); + } + } + + /** + * 获取摄像头实时播放地址 + * 添加预览通道 + * @param cameraInfo + * @return + */ + @Override + public Result> getPreviewUrl(AppCameraInfo cameraInfo){ + Map map = new HashMap<>(); + map.put("url",""); + map.put("backupUrl",""); + map.put("wsUrl",""); + map.put("wssUrl",""); + String id = cameraInfo.getDeviceIndex(); + int streamType = cameraInfo.getStreamType(); + StringBuffer addPreviewSb = new StringBuffer(); + addPreviewSb.append("{"); + addPreviewSb.append("\"id\"").append(":").append("\"").append(id).append("\"").append(","); + addPreviewSb.append("\"streamType\"").append(":").append(streamType); + addPreviewSb.append("}"); + String addPreviewRes = tumsApi.addPreviewChn(addPreviewSb.toString()); + JSONObject jsonObject = new JSONObject(addPreviewRes); + if(jsonObject.getInt("error_code").equals(0)){ + JSONObject addPreviewResult = (JSONObject)jsonObject.get("result"); + String sessionId = addPreviewResult.getStr("sessionId"); + map = getPreviewUrl(id,streamType,sessionId); + } + return Result.OK(map); + } + + /** + * 获取摄像头实时播放地址 + * 获取预览通道的url + * @param id + * @param streamType + * @param sessionId + * @return + */ + private Map getPreviewUrl(String id,int streamType,String sessionId){ + Map map = new HashMap<>(); + map.put("url",""); + map.put("backupUrl",""); + map.put("wsUrl",""); + map.put("wssUrl",""); + StringBuffer getPreviewSb = new StringBuffer(); + getPreviewSb.append("{"); + getPreviewSb.append("\"id\"").append(":").append("\"").append(id).append("\"").append(","); + getPreviewSb.append("\"streamType\"").append(":").append(streamType).append(","); + getPreviewSb.append("\"sessionId\"").append(":").append("\"").append(sessionId).append("\""); + getPreviewSb.append("}"); + String getPreviewSbRes = tumsApi.getPreviewUrl(getPreviewSb.toString()); + JSONObject jsonObject = new JSONObject(getPreviewSbRes); + int errorCode = jsonObject.getInt("error_code"); + if(errorCode == 0){ + JSONObject getPreviewResult = (JSONObject)jsonObject.get("result"); + String url = getPreviewResult.getStr("url"); + String backupUrl = getPreviewResult.getStr("backupUrl"); + String wsUrl = getPreviewResult.getStr("wsUrl"); + String wssUrl = getPreviewResult.getStr("wssUrl"); + map.put("url",url); + map.put("backupUrl",backupUrl); + map.put("wsUrl",wsUrl); + map.put("wssUrl",wssUrl); + }else if(errorCode == -80703){ + try { + sleep(1000); + map = getPreviewUrl(id,streamType,sessionId); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + return map; + } + + /** + * 获取镜头遮挡参数 + * + * @param map + * @return + * @throws Exception + */ + @Override + public Result getTamperDet(Map map){ + String id = map.get("deviceIndex").toString(); + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"devId\"").append(":").append("\"").append(id).append("\"").append(","); + sb.append("\"param\"").append(":").append("{"); + sb.append("\"method\"").append(":").append("\"get\"").append(","); + sb.append("\"tamper_detection\"").append(":").append("{"); + sb.append("\"name\"").append(":[").append("\"tamper_det\"").append("]"); + sb.append("}"); + sb.append("}"); + sb.append("}"); + String addPreviewRes = tumsApi.passthrough(sb.toString()); + JSONObject jsonObject = new JSONObject(addPreviewRes); + String errCode = jsonObject.getStr("error_code"); + if("0".equals(errCode)){ + JSONObject result = (JSONObject)jsonObject.get("result"); + JSONObject responseData = (JSONObject)result.get("responseData"); + String errorCode = responseData.getStr("error_code"); + if("0".equals(errorCode)){ + JSONObject tamperDetection = (JSONObject)responseData.get("tamper_detection"); + JSONObject tamperDet = (JSONObject)tamperDetection.get("tamper_det"); + return Result.OK(tamperDet); + }else{ + AppErrorCode errorVo = errorCodeService.getByCode(errorCode); + String errorMsg = errorVo.getErrorMsg(); + log.info("getTamperDet:{}",errorMsg); + return Result.error(errorMsg); + } + }else{ + AppErrorCode errVo = errorCodeService.getByCode(errCode); + String errMsg = errVo.getErrorMsg(); + log.info("getTamperDet:{}",errMsg); + return Result.error(errMsg); + } + } + + /** + * 设置镜头遮挡参数 + * + * @param map + * @return + * @throws Exception + */ + @Override + public Result setTamperDet(Map map){ + String id = map.get("deviceIndex").toString(); + String enabled = map.get("enabled").toString(); + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"devId\"").append(":").append("\"").append(id).append("\"").append(","); + sb.append("\"param\"").append(":").append("{"); + sb.append("\"method\"").append(":").append("\"set\"").append(","); + sb.append("\"tamper_detection\"").append(":").append("{"); + sb.append("\"tamper_det\"").append(":").append("{"); + if("on".equals(enabled)){ + String digitalSensitivity = map.get("digitalSensitivity").toString(); + sb.append("\"digital_sensitivity\"").append(":").append(digitalSensitivity).append(","); + } + sb.append("\"enabled\"").append(":").append("\"").append(enabled).append("\""); + sb.append("}"); + sb.append("}"); + sb.append("}"); + sb.append("}"); + String addPreviewRes = tumsApi.passthrough(sb.toString()); + JSONObject jsonObject = new JSONObject(addPreviewRes); + String errCode = jsonObject.getStr("error_code"); + if("0".equals(errCode)){ + JSONObject result = (JSONObject)jsonObject.get("result"); + JSONObject responseData = (JSONObject)result.get("responseData"); + String errorCode = responseData.getStr("error_code"); + if("0".equals(errorCode)){ + return Result.OK("设置成功"); + }else{ + AppErrorCode errorVo = errorCodeService.getByCode(errorCode); + String errorMsg = errorVo.getErrorMsg(); + log.info("setTamperDet:{}",errorMsg); + return Result.error(errorMsg); + } + }else{ + AppErrorCode errVo = errorCodeService.getByCode(errCode); + String errMsg = errVo.getErrorMsg(); + log.info("setTamperDet:{}",errMsg); + return Result.error(errMsg); + } + } + + /** + * 获取镜头遮挡处理方式 + * + * @param map + * @return + * @throws Exception + */ + @Override + public Result getTamperNotif(Map map){ + String id = map.get("deviceIndex").toString(); + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"devId\"").append(":").append("\"").append(id).append("\"").append(","); + sb.append("\"param\"").append(":").append("{"); + sb.append("\"method\"").append(":").append("\"get\"").append(","); + sb.append("\"tamper_detection\"").append(":").append("{"); + sb.append("\"name\"").append(":[").append("\"tamper_notif_list\",").append("\"sound_alarm_info\"").append("]"); + sb.append("}"); + sb.append("}"); + sb.append("}"); + String addPreviewRes = tumsApi.passthrough(sb.toString()); + JSONObject jsonObject = new JSONObject(addPreviewRes); + String errCode = jsonObject.getStr("error_code"); + if("0".equals(errCode)){ + JSONObject result = (JSONObject)jsonObject.get("result"); + JSONObject responseData = (JSONObject)result.get("responseData"); + String errorCode = responseData.getStr("error_code"); + if("0".equals(errorCode)){ + JSONObject tamperDetection = (JSONObject)responseData.get("tamper_detection"); + return Result.OK(tamperDetection); + }else{ + AppErrorCode errorVo = errorCodeService.getByCode(errorCode); + String errorMsg = errorVo.getErrorMsg(); + log.info("getTamperNotif:{}",errorMsg); + return Result.error(errorMsg); + } + }else{ + AppErrorCode errVo = errorCodeService.getByCode(errCode); + String errMsg = errVo.getErrorMsg(); + log.info("getTamperNotif:{}",errMsg); + return Result.error(errMsg); + } + } + + /** + * 设置镜头遮挡处理方式 + * + * @param map + * @return + * @throws Exception + */ + @Override + public Result setTamperNotif(Map map){ + String id = map.get("deviceIndex").toString(); + String msgPushEnabled = map.get("msgPushEnabled").toString(); + String lightAlarmEnabled = map.get("lightAlarmEnabled").toString(); + String soundAlarmEnabled = map.get("soundAlarmEnabled").toString(); + String soundAlarmType = map.get("soundAlarmType").toString(); + String soundAlarmTimes = map.get("soundAlarmTimes").toString(); + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"devId\"").append(":").append("\"").append(id).append("\"").append(","); + sb.append("\"param\"").append(":").append("{"); + sb.append("\"method\"").append(":").append("\"set\"").append(","); + sb.append("\"tamper_detection\"").append(":").append("{"); + sb.append("\"tamper_notif_list\"").append(":").append("{"); + sb.append("\"msg_push_enabled\"").append(":").append("\"").append(msgPushEnabled).append("\","); + sb.append("\"light_alarm_enabled\"").append(":").append("\"").append(lightAlarmEnabled).append("\","); + sb.append("\"sound_alarm_enabled\"").append(":").append("\"").append(soundAlarmEnabled).append("\""); + sb.append("},"); + sb.append("\"sound_alarm_info\"").append(":").append("{"); + sb.append("\"sound_alarm_type\"").append(":").append("\"").append(soundAlarmType).append("\","); + sb.append("\"sound_alarm_times\"").append(":").append("\"").append(soundAlarmTimes).append("\""); + sb.append("}"); + sb.append("}"); + sb.append("}"); + sb.append("}"); + String addPreviewRes = tumsApi.passthrough(sb.toString()); + JSONObject jsonObject = new JSONObject(addPreviewRes); + String errCode = jsonObject.getStr("error_code"); + if("0".equals(errCode)){ + JSONObject result = (JSONObject)jsonObject.get("result"); + JSONObject responseData = (JSONObject)result.get("responseData"); + String errorCode = responseData.getStr("error_code"); + if("0".equals(errorCode)){ + return Result.OK(); + }else{ + AppErrorCode errorVo = errorCodeService.getByCode(errorCode); + String errorMsg = errorVo.getErrorMsg(); + log.info("setTamperNotif:{}",errorMsg); + return Result.error(errorMsg); + } + }else{ + AppErrorCode errVo = errorCodeService.getByCode(errCode); + String errMsg = errVo.getErrorMsg(); + log.info("setTamperNotif:{}",errMsg); + return Result.error(errMsg); + } + } + + /** + * 报警声音试听 + * + * @param map + * @return + * @throws Exception + */ + @Override + public Result testAudio(Map map){ + String devId = map.get("deviceIndex").toString(); + String id = map.get("id").toString(); + String force = map.get("force").toString(); + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"devId\"").append(":").append("\"").append(devId).append("\"").append(","); + sb.append("\"param\"").append(":").append("{"); + sb.append("\"method\"").append(":").append("\"do\"").append(","); + sb.append("\"usr_def_audio_alarm\"").append(":").append("{"); + sb.append("\"test_audio\"").append(":").append("{"); + sb.append("\"id\"").append(":").append("\"").append(id).append("\","); + sb.append("\"force\"").append(":").append("\"").append(force).append("\""); + sb.append("}"); + sb.append("}"); + sb.append("}"); + sb.append("}"); + String addPreviewRes = tumsApi.passthrough(sb.toString()); + JSONObject jsonObject = new JSONObject(addPreviewRes); + String errCode = jsonObject.getStr("error_code"); + if("0".equals(errCode)){ + JSONObject result = (JSONObject)jsonObject.get("result"); + JSONObject responseData = (JSONObject)result.get("responseData"); + String errorCode = responseData.getStr("error_code"); + if("0".equals(errorCode)){ + return Result.OK(); + }else{ + AppErrorCode errorVo = errorCodeService.getByCode(errorCode); + String errorMsg = errorVo.getErrorMsg(); + log.info("testAudio:{}",errorMsg); + return Result.error(errorMsg); + } + }else{ + AppErrorCode errVo = errorCodeService.getByCode(errCode); + String errMsg = errVo.getErrorMsg(); + log.info("testAudio:{}",errMsg); + return Result.error(errMsg); + } + } + + /** + * 获取白光/声音告警参数 + * + * @param map + * @return + * @throws Exception + */ + @Override + public Result getAlarmInfo(Map map){ + String id = map.get("deviceIndex").toString(); + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"devId\"").append(":").append("\"").append(id).append("\"").append(","); + sb.append("\"param\"").append(":").append("{"); + sb.append("\"method\"").append(":").append("\"get\"").append(","); + sb.append("\"msg_alarm\"").append(":").append("{"); + sb.append("\"name\"").append(":").append("\"chn1_msg_alarm_info\""); + sb.append("}"); + sb.append("}"); + sb.append("}"); + String addPreviewRes = tumsApi.passthrough(sb.toString()); + JSONObject jsonObject = new JSONObject(addPreviewRes); + String errCode = jsonObject.getStr("error_code"); + if("0".equals(errCode)){ + JSONObject result = (JSONObject)jsonObject.get("result"); + JSONObject responseData = (JSONObject)result.get("responseData"); + String errorCode = responseData.getStr("error_code"); + if("0".equals(errorCode)){ + JSONObject msgAlarm = (JSONObject)responseData.get("msg_alarm"); + JSONObject alarmInfo = (JSONObject)msgAlarm.get("chn1_msg_alarm_info"); + return Result.OK(alarmInfo); + }else{ + AppErrorCode errorVo = errorCodeService.getByCode(errorCode); + String errorMsg = errorVo.getErrorMsg(); + log.info("getAlarmInfo:{}",errorMsg); + return Result.error(errorMsg); + } + }else{ + AppErrorCode errVo = errorCodeService.getByCode(errCode); + String errMsg = errVo.getErrorMsg(); + log.info("getAlarmInfo:{}",errMsg); + return Result.error(errMsg); + } + } + + /** + * 设置白光/声音告警参数 + * + * @param map + * @return + * @throws Exception + */ + @Override + public Result setAlarmInfo(Map map){ + String id = map.get("deviceIndex").toString(); + String type = map.get("type").toString(); + String enabled = map.get("enabled").toString(); + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"devId\"").append(":").append("\"").append(id).append("\"").append(","); + sb.append("\"param\"").append(":").append("{"); + sb.append("\"method\"").append(":").append("\"set\"").append(","); + sb.append("\"msg_alarm\"").append(":").append("{"); + sb.append("\"chn1_msg_alarm_info\"").append(":").append("{"); + if("light".equals(type)){ + sb.append("\"light_alarm_enabled\"").append(":").append("\"").append(enabled).append("\""); + } + if("sound".equals(type)){ + sb.append("\"sound_alarm_enabled\"").append(":").append("\"").append(enabled).append("\""); + } + sb.append("}"); + sb.append("}"); + sb.append("}"); + sb.append("}"); + String addPreviewRes = tumsApi.passthrough(sb.toString()); + JSONObject jsonObject = new JSONObject(addPreviewRes); + String errCode = jsonObject.getStr("error_code"); + if("0".equals(errCode)){ + JSONObject result = (JSONObject)jsonObject.get("result"); + JSONObject responseData = (JSONObject)result.get("responseData"); + String errorCode = responseData.getStr("error_code"); + if("0".equals(errorCode)){ + return Result.OK("设置成功"); + }else{ + AppErrorCode errorVo = errorCodeService.getByCode(errorCode); + String errorMsg = errorVo.getErrorMsg(); + log.info("setAlarmInfo:{}",errorMsg); + return Result.error(errorMsg); + } + }else{ + AppErrorCode errVo = errorCodeService.getByCode(errCode); + String errMsg = errVo.getErrorMsg(); + log.info("setAlarmInfo:{}",errMsg); + return Result.error(errMsg); + } + } + + /** + * 获取白光/声音告警布防时间 + * + * @param map + * @return + * @throws Exception + */ + @Override + public Result getAlarmPlan(Map map){ + String id = map.get("deviceIndex").toString(); + String type = map.get("type").toString(); + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"devId\"").append(":").append("\"").append(id).append("\"").append(","); + sb.append("\"param\"").append(":").append("{"); + sb.append("\"method\"").append(":").append("\"get\"").append(","); + sb.append("\"msg_alarm_plan\"").append(":").append("{"); + if("light".equals(type)){ + sb.append("\"name\"").append(":[").append("\"arming_schedule_light\"").append("]"); + } + if("sound".equals(type)){ + sb.append("\"name\"").append(":[").append("\"arming_schedule_sound\"").append("]"); + } + sb.append("}"); + sb.append("}"); + sb.append("}"); + String addPreviewRes = tumsApi.passthrough(sb.toString()); + JSONObject jsonObject = new JSONObject(addPreviewRes); + String errCode = jsonObject.getStr("error_code"); + if("0".equals(errCode)){ + JSONObject result = (JSONObject)jsonObject.get("result"); + JSONObject responseData = (JSONObject)result.get("responseData"); + String errorCode = responseData.getStr("error_code"); + if("0".equals(errorCode)){ + JSONObject alarmPlan = (JSONObject)responseData.get("msg_alarm_plan"); + return Result.OK(alarmPlan); + }else{ + AppErrorCode errorVo = errorCodeService.getByCode(errorCode); + String errorMsg = errorVo.getErrorMsg(); + log.info("getAlarmPlan:{}",errorMsg); + return Result.error(errorMsg); + } + }else{ + AppErrorCode errVo = errorCodeService.getByCode(errCode); + String errMsg = errVo.getErrorMsg(); + log.info("getAlarmPlan:{}",errMsg); + return Result.error(errMsg); + } + } + + /** + * 设置白光/声音告警布防时间 + * + * @param map + * @return + * @throws Exception + */ + @Override + public Result setAlarmPlan(Map map){ + String id = map.get("deviceIndex").toString(); + String type = map.get("type").toString(); + Map alarmPlan = (Map)map.get("alarmPlan"); + String monday = alarmPlan.get("monday").toString(); + String tuesday = alarmPlan.get("tuesday").toString(); + String wednesday = alarmPlan.get("wednesday").toString(); + String thursday = alarmPlan.get("thursday").toString(); + String friday = alarmPlan.get("friday").toString(); + String saturday = alarmPlan.get("saturday").toString(); + String sunday = alarmPlan.get("sunday").toString(); + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"devId\"").append(":").append("\"").append(id).append("\"").append(","); + sb.append("\"param\"").append(":").append("{"); + sb.append("\"method\"").append(":").append("\"set\"").append(","); + sb.append("\"msg_alarm_plan\"").append(":").append("{"); + if("light".equals(type)){ + sb.append("\"arming_schedule_light\""); + } + if("sound".equals(type)){ + sb.append("\"arming_schedule_sound\""); + } + sb.append(":{"); + sb.append("\"monday\"").append(":").append("\"").append(monday).append("\"").append(","); + sb.append("\"tuesday\"").append(":").append("\"").append(tuesday).append("\"").append(","); + sb.append("\"wednesday\"").append(":").append("\"").append(wednesday).append("\"").append(","); + sb.append("\"thursday\"").append(":").append("\"").append(thursday).append("\"").append(","); + sb.append("\"friday\"").append(":").append("\"").append(friday).append("\"").append(","); + sb.append("\"saturday\"").append(":").append("\"").append(saturday).append("\"").append(","); + sb.append("\"sunday\"").append(":").append("\"").append(sunday).append("\""); + sb.append("}"); + sb.append("}"); + sb.append("}"); + sb.append("}"); + String addPreviewRes = tumsApi.passthrough(sb.toString()); + JSONObject jsonObject = new JSONObject(addPreviewRes); + String errCode = jsonObject.getStr("error_code"); + if("0".equals(errCode)){ + JSONObject result = (JSONObject)jsonObject.get("result"); + JSONObject responseData = (JSONObject)result.get("responseData"); + String errorCode = responseData.getStr("error_code"); + if("0".equals(errorCode)){ + return Result.OK(); + }else{ + AppErrorCode errorVo = errorCodeService.getByCode(errorCode); + String errorMsg = errorVo.getErrorMsg(); + log.info("setAlarmPlan:{}",errorMsg); + return Result.error(errorMsg); + } + }else{ + AppErrorCode errVo = errorCodeService.getByCode(errCode); + String errMsg = errVo.getErrorMsg(); + log.info("setAlarmPlan:{}",errMsg); + return Result.error(errMsg); + } + } + + /** + * 搜索某天的录像数据的总条数 + * + * @param deviceIndex + * @param parentId + * @param dataDate + * @param pageNo + * @param pageSize + * @return + */ + int getVideoTotal(String deviceIndex,String parentId,String dataDate,int pageNo,int pageSize){ + int count = 0; + int startIdx = (pageNo-1)*pageSize; + int endIdx = pageNo*pageSize-1; + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"id\"").append(":").append("[{"); + sb.append("\"videoDevId\"").append(":").append("\"").append(deviceIndex).append("\","); + if(parentId!=null&&!parentId.equals("")&&!parentId.equals("0")){ + //存储设备ID + sb.append("\"storageDevId\"").append(":").append("\"").append(parentId).append("\""); + }else{ + //SK卡,取自身设备ID + sb.append("\"storageDevId\"").append(":").append("\"").append(deviceIndex).append("\""); + } + sb.append("}],"); + sb.append("\"searchDay\"").append(":").append("\"").append(dataDate).append("\","); + sb.append("\"startIdx\"").append(":").append(startIdx).append(","); + sb.append("\"endIdx\"").append(":").append(endIdx); + sb.append("}"); + String res = tumsApi.searchVideo(sb.toString()); + JSONObject jsonObject = new JSONObject(res); + int errorCode = jsonObject.getInt("error_code"); + if(errorCode == 0) { + JSONObject result = (JSONObject) jsonObject.get("result"); + int total = result.getInt("total"); + count = count + total; + if(total>=pageSize){ + int more = getVideoTotal(deviceIndex,parentId,dataDate,pageNo+1,pageSize); + count = count + more; + } + } + return count; + } + + /** + * 搜索某天的录像数据 + * + * @param pageNo + * @param pageSize + * @param cameraInfo + * @return + */ + @Override + public Result> searchVideo(Integer pageNo, Integer pageSize, AppCameraInfo cameraInfo){ + Page page = new Page(pageNo, pageSize); + String deviceIndex = cameraInfo.getDeviceIndex(); + String parentId = cameraInfo.getParentId(); + String dataDate = cameraInfo.getDataDate(); + dataDate = dataDate.replaceAll("-",""); + int totalCount = getVideoTotal(deviceIndex,parentId,dataDate,1,800); + page = new Page(pageNo, pageSize, totalCount); + int startIdx = (pageNo-1)*pageSize; + int endIdx = pageNo*pageSize-1; + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"id\"").append(":").append("[{"); + sb.append("\"videoDevId\"").append(":").append("\"").append(deviceIndex).append("\","); + if(parentId!=null&&!parentId.equals("")&&!parentId.equals("0")){ + //存储设备ID + sb.append("\"storageDevId\"").append(":").append("\"").append(parentId).append("\""); + }else{ + //SK卡,取自身设备ID + sb.append("\"storageDevId\"").append(":").append("\"").append(deviceIndex).append("\""); + } + sb.append("}],"); + sb.append("\"searchDay\"").append(":").append("\"").append(dataDate).append("\","); + sb.append("\"startIdx\"").append(":").append(startIdx).append(","); + sb.append("\"endIdx\"").append(":").append(endIdx); + sb.append("}"); + String res = tumsApi.searchVideo(sb.toString()); + JSONObject jsonObject = new JSONObject(res); + int errorCode = jsonObject.getInt("error_code"); + if(errorCode == 0){ + JSONObject result = (JSONObject)jsonObject.get("result"); + int total = result.getInt("total"); + if(total>0){ + List list = Lists.newArrayList(); + JSONArray videos = result.getJSONArray("videos"); + JSONObject videoJson = (JSONObject)videos.get(0); + String videoDevId = videoJson.getStr("videoDevId"); + String storageDevId = videoJson.getStr("storageDevId"); + String channelId = videoJson.getStr("channelId"); + String nvsIdInPoolList = videoJson.getStr("nvsIdInPoolList"); + JSONArray startTime = videoJson.getJSONArray("startTime"); + JSONArray endTime = videoJson.getJSONArray("endTime"); + JSONArray videoTypeArr = videoJson.getJSONArray("videoType"); + JSONArray size = videoJson.getJSONArray("size"); + String errCode = videoJson.getStr("errorCode"); + AppErrorCode errVo = errorCodeService.getByCode(errCode); + String errMsg = errVo.getErrorMsg(); + for(int i=0;i getStoragesById(AppCameraInfo cameraInfo){ + Map map = new HashMap<>(); + map.put("error","0"); + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"devIds\"").append(":").append("[\"").append(cameraInfo.getDeviceIndex()).append("\"]"); + sb.append("}"); + String res = tumsApi.getStoragesById(sb.toString()); + JSONObject jsonObject = new JSONObject(res); + int errorCode = jsonObject.getInt("error_code"); + if(errorCode == 0){ + List ciList = Lists.newArrayList(); + JSONArray list = jsonObject.getJSONArray("result"); + for(int i=0;i addPlaybackChn(AppCameraInfo cameraInfo){ + Map map = new HashMap<>(); + map.put("error","0"); + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"id\"").append(":").append("[{"); + sb.append("\"videoDevId\"").append(":").append("\"").append(cameraInfo.getVideoDevId()).append("\","); + sb.append("\"storageDevId\"").append(":").append("\"").append(cameraInfo.getStorageDevId()).append("\""); + sb.append("}],"); + sb.append("\"videoType\"").append(":").append("[").append(cameraInfo.getVideoType()).append("],"); + sb.append("\"scale\"").append(":\"").append(cameraInfo.getScale()).append("/1").append("\","); + sb.append("\"startTime\"").append(":").append(cameraInfo.getStartTime()).append(","); + sb.append("\"endTime\"").append(":").append(cameraInfo.getEndTime()); + sb.append("}"); + String res = tumsApi.addPlaybackChn(sb.toString()); + JSONObject jsonObject = new JSONObject(res); + int errorCode = jsonObject.getInt("error_code"); + if(errorCode == 0){ + List ciList = Lists.newArrayList(); + JSONArray list = jsonObject.getJSONArray("result"); + for(int i=0;i getPlaybackUrl(AppCameraInfo cameraInfo, int counter){ + Map map = new HashMap<>(); + map.put("error","0"); + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"id\"").append(":").append("[{"); + sb.append("\"videoDevId\"").append(":").append("\"").append(cameraInfo.getVideoDevId()).append("\","); + sb.append("\"storageDevId\"").append(":").append("\"").append(cameraInfo.getStorageDevId()).append("\","); + sb.append("\"sessionId\"").append(":").append("\"").append(cameraInfo.getSessionId()).append("\""); + sb.append("}],"); + sb.append("\"scale\"").append(":\"").append(cameraInfo.getScale()).append("/1").append("\","); + sb.append("\"startTime\"").append(":").append(cameraInfo.getStartTime()).append(","); + sb.append("\"endTime\"").append(":").append(cameraInfo.getEndTime()); + sb.append("}"); + String res = tumsApi.getPlaybackUrl(sb.toString()); + JSONObject jsonObject = new JSONObject(res); + int errorCode = jsonObject.getInt("error_code"); + if(errorCode == 0){ + List ciList = Lists.newArrayList(); + JSONArray list = jsonObject.getJSONArray("result"); + for(int i=0;i10){ + deletePlaybackChn(cameraInfo.getVideoDevId(),cameraInfo.getSessionId()); + map.put("error",errCode); + break; + } + sleep(1000); + map = getPlaybackUrl(cameraInfo,++counter); + return map; + } catch (InterruptedException e) { + e.printStackTrace(); + } + }else{ + System.out.println("getPlaybackUrl:"+errCode); + } + } + map.put("data",ciList); + }else if(errorCode == -80703){ + try { + if(counter>10){ + deletePlaybackChn(cameraInfo.getVideoDevId(),cameraInfo.getSessionId()); + } + sleep(1000); + map = getPlaybackUrl(cameraInfo,++counter); + } catch (InterruptedException e) { + e.printStackTrace(); + } + }else{ + map.put("error",errorCode); + log.info("getPlaybackUrl:{}",errorCode); + } + return map; + } + + @Override + public Result> getPlaybackUrlList(AppCameraInfo cameraInfo){ + Map map = new HashMap<>(); + String errorMsgs = ""; + List dataList = Lists.newArrayList(); + Map chnMap = addPlaybackChn(cameraInfo); + String chnError = chnMap.get("error").toString(); + if(chnError.equals("0")){ + List chnList = (List)chnMap.get("data"); + if(chnList!=null&&chnList.size()>0){ + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + AppTumsConfig tumsConfig = tumsConfigMapper.getByCode(sysUser.getOrgCode()); + for(int j=0;j playbackMap = getPlaybackUrl(chn,1); + String pbError = playbackMap.get("error").toString(); + if(pbError.equals("0")){ + List pbList = (List)playbackMap.get("data"); + if(pbList!=null&&pbList.size()>0){ + for(int k=0;k获取回放通道时:"+errMsg+""; + } + } + } + }else{ + AppErrorCode errVo = errorCodeService.getByCode(chnError); + String errMsg = errVo.getErrorMsg(); + errorMsgs = errorMsgs+ "
添加回放通道时:"+errMsg+"
"; + } + map.put("error",errorMsgs); + map.put("data",dataList); + return Result.ok(map); + } + + /** + * 删除某一回放通道 + * @param videoDevId + * @param sessionId + */ + public void deletePlaybackChn(String videoDevId,String sessionId){ + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"id\"").append(":").append("["); + sb.append("{"); + sb.append("\"videoDevId\"").append(":").append("\"").append(videoDevId).append("\","); + sb.append("\"sessionId\"").append(":").append("\"").append(sessionId).append("\""); + sb.append("}"); + sb.append("]"); + sb.append("}"); + String res = tumsApi.deletePlaybackChn(sb.toString()); + JSONObject jsonObject = new JSONObject(res); + String errorCode = jsonObject.getStr("error_code"); + if(errorCode.equals("0")){ + JSONArray list = jsonObject.getJSONArray("result"); + for(int i=0;i deletePlaybackChn(AppCameraInfo cameraInfo){ + String errorMsgs = ""; + String sessions = cameraInfo.getSessionId(); + if(sessions!=null&&!sessions.equals("")){ + String[] sessionIds = sessions.split(","); + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"id\"").append(":").append("["); + for(int i=0;isessionId为"+sessionId+"的回放通道删除失败,原因:"+errMsg+""; + } + } + }else{ + AppErrorCode errVo = errorCodeService.getByCode(errorCode); + String errMsg = errVo.getErrorMsg(); + errorMsgs = errorMsgs + errMsg; + log.info("deletePlaybackChn:{}",errMsg); + } + if(errorMsgs.equals("")){ + return Result.error(errorMsgs); + }else{ + return Result.OK(""); + } + } + return Result.OK(""); + } + + + /** + * 获取nvmp设备双向通信URL + * @param cameraInfo + * @return + */ + public Map getMultitransUrl(AppCameraInfo cameraInfo, int counter){ + Map map = new HashMap<>(); + map.put("error","0"); + map.put("error","0"); + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"devId\"").append(":").append("\"").append(cameraInfo.getVideoDevId()).append("\""); + sb.append("}"); + String res = tumsApi.getMultitransUrl(sb.toString()); + JSONObject jsonObject = new JSONObject(res); + int errorCode = jsonObject.getInt("error_code"); + if(errorCode == 0){ + JSONObject result = jsonObject.getJSONObject("result"); + String url = result.getStr("rtspUrl"); + String wsUrl = result.getStr("wsUrl"); + String wssUrl = result.getStr("wssUrl"); + AppCameraInfo entity = new AppCameraInfo(); + entity.setVideoDevId(cameraInfo.getVideoDevId()); + entity.setUrl(url); + entity.setWsUrl(wsUrl); + entity.setWssUrl(wssUrl); + map.put("data",entity); + }else if(errorCode == -80703){ + try { + if(counter>10){ + map.put("error",errorCode); + return map; + } + sleep(1000); + map = getMultitransUrl(cameraInfo,++counter); + } catch (InterruptedException e) { + e.printStackTrace(); + } + }else{ + map.put("error",errorCode); + log.info("getMultitransUrl:{}",errorCode); + } + return map; + } + + /** + * 获取nvmp设备双向通信URL + * @param cameraInfo + * @return + */ + @Override + public Result getMultitransUrl(AppCameraInfo cameraInfo) throws Exception{ + String errorMsgs = ""; + Map multitransMap = getMultitransUrl(cameraInfo,1); + String multitransError = multitransMap.get("error").toString(); + if(multitransError.equals("0")){ + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + AppTumsConfig tumsConfig = tumsConfigMapper.getByCode(sysUser.getOrgCode()); + AppCameraInfo entity = (AppCameraInfo)multitransMap.get("data"); + entity.setQueryAddress(tumsConfig.getTumsUrl()); + return Result.OK(entity); + }else{ + AppErrorCode errVo = errorCodeService.getByCode(multitransError); + String errMsg = errVo.getErrorMsg(); + errorMsgs = errorMsgs+ "
获取nvmp设备双向通信URL:"+errMsg+"
"; + return Result.error(errorMsgs); + } + } + + /** + * 回放视频转mp4上传 + * @param cameraInfo + * @return + */ + @Override + public Result uploadToServer(AppCameraInfo cameraInfo){ + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + AppTumsConfig tumsConfig = tumsConfigMapper.getByCode(sysUser.getOrgCode()); + String deviceIndex = cameraInfo.getDeviceIndex(); + String parentId = cameraInfo.getParentId(); + String fileName = cameraInfo.getFileName(); + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"videoDevId\"").append(":").append("\"").append(deviceIndex).append("\","); + if(parentId!=null&&!parentId.equals("")&&!parentId.equals("0")){ + //存储设备ID + sb.append("\"storageDevId\"").append(":").append("\"").append(parentId).append("\","); + }else{ + //SK卡,取自身设备ID + sb.append("\"storageDevId\"").append(":").append("\"").append(deviceIndex).append("\","); + } + sb.append("\"videoType\"").append(":").append(cameraInfo.getVideoType()).append(","); + sb.append("\"storageType\"").append(":").append(cameraInfo.getStorageType()).append(","); + if(fileName!=null&&!fileName.equals("")){ + //存储设备ID + sb.append("\"filename\"").append(":").append("\"").append(fileName).append("\","); + } + sb.append("\"startTime\"").append(":").append(cameraInfo.getStartTime()).append(","); + sb.append("\"endTime\"").append(":").append(cameraInfo.getEndTime()).append(","); + sb.append("\"downloadInfo\"").append(":{"); + sb.append("\"username\"").append(":").append("\"").append(tumsConfig.getFtpUsername()).append("\","); + sb.append("\"password\"").append(":").append("\"").append(tumsConfig.getFtpPassword()).append("\","); + sb.append("\"path\"").append(":").append("\"").append(tumsConfig.getFtpUploadpath()).append("\","); + sb.append("\"ftpIp\"").append(":").append("\"").append(tumsConfig.getFtpIp()).append("\","); + sb.append("\"ftpPort\"").append(":").append(tumsConfig.getFtpPort()); + sb.append("}"); + sb.append("}"); + String res = tumsApi.uploadToServer(sb.toString()); + JSONObject jsonObject = new JSONObject(res); + int errorCode = jsonObject.getInt("error_code"); + if(errorCode == 0){ + JSONObject result = jsonObject.getJSONObject("result"); + String taskId = result.getStr("taskId"); + cameraInfo.setTaskId(taskId); + return Result.OK(cameraInfo); + }else{ + AppErrorCode errVo = errorCodeService.getByCode(String.valueOf(errorCode)); + String errMsg = errVo.getErrorMsg(); + log.info("uploadToServer:{}-{}",errorCode,errMsg); + return Result.error(errMsg); + } + } + + /** + * 停止转存MP4上传任务 + * @param cameraInfo + * @return + */ + @Override + public Result stopUploadToServer(AppCameraInfo cameraInfo){ + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"taskId\"").append(":").append("\"").append(cameraInfo.getTaskId()).append("\""); + sb.append("}"); + String res = tumsApi.stopUploadToServer(sb.toString()); + JSONObject jsonObject = new JSONObject(res); + int errorCode = jsonObject.getInt("error_code"); + if(errorCode == 0){ + return Result.OK("停止转存MP4上传成功"); + }else{ + AppErrorCode errVo = errorCodeService.getByCode(String.valueOf(errorCode)); + String errMsg = errVo.getErrorMsg(); + log.info("stopUploadToServer:{}-{}",errorCode,errMsg); + return Result.error(errMsg); + } + } + + /** + * 获取转存MP4上传任务进度 + * @param cameraInfo + * @return + */ + @Override + public Result getUploadToServerProcess(AppCameraInfo cameraInfo){ + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"taskId\"").append(":").append("\"").append(cameraInfo.getTaskId()).append("\""); + sb.append("}"); + String res = tumsApi.getUploadToServerProcess(sb.toString()); + JSONObject jsonObject = new JSONObject(res); + int errorCode = jsonObject.getInt("error_code"); + if(errorCode == 0){ + JSONObject result = jsonObject.getJSONObject("result"); + String process = result.getStr("process"); + cameraInfo.setProcess(process); + return Result.OK(cameraInfo); + }else{ + AppErrorCode errVo = errorCodeService.getByCode(String.valueOf(errorCode)); + String errMsg = errVo.getErrorMsg(); + log.info("getUploadToServerProcess:{}-{}",errorCode,errMsg); + return Result.error(errMsg); + } + } +} diff --git a/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/service/impl/AppErrorCodeServiceImpl.java b/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/service/impl/AppErrorCodeServiceImpl.java new file mode 100644 index 0000000..aa62393 --- /dev/null +++ b/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/service/impl/AppErrorCodeServiceImpl.java @@ -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 implements IAppErrorCodeService { + + @Override + public AppErrorCode getByCode(String errorCode){ + return baseMapper.getByCode(errorCode); + } + +} diff --git a/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/service/impl/AppTumsConfigServiceImpl.java b/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/service/impl/AppTumsConfigServiceImpl.java new file mode 100644 index 0000000..3e9ed2a --- /dev/null +++ b/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/service/impl/AppTumsConfigServiceImpl.java @@ -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 implements IAppTumsConfigService { + + @Override + public AppTumsConfig getByCode(String orgCode){ + return baseMapper.getByCode(orgCode); + } + +} diff --git a/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/utils/AppTumsApi.java b/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/utils/AppTumsApi.java new file mode 100644 index 0000000..b412401 --- /dev/null +++ b/nursing-unit-api/src/main/java/com/nu/modules/iot/tplink/utils/AppTumsApi.java @@ -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; + } + +} diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/controller/CameraInfoController.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/controller/CameraInfoController.java index b6669d3..bf7b09d 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/controller/CameraInfoController.java +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/controller/CameraInfoController.java @@ -11,9 +11,13 @@ */ package com.nu.modules.tplink.camera.controller; +import java.util.ArrayList; +import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import cn.hutool.json.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.nu.modules.tplink.camera.model.CameraTreeModel; import org.jeecg.common.api.vo.Result; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -21,13 +25,14 @@ import lombok.extern.slf4j.Slf4j; import com.nu.modules.tplink.camera.service.ICameraInfoService; import org.jeecg.common.system.base.controller.JeecgController; import com.nu.modules.tplink.camera.entity.CameraInfo; +import org.jeecg.common.system.query.QueryGenerator; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.jeecg.common.aspect.annotation.AutoLog; - /** +/** * @Description: 护理单元-物联管理-摄像头信息 * @Author: jeecg-boot * @Date: 2025-01-17 @@ -54,25 +59,40 @@ public class CameraInfoController extends JeecgController> queryPageList(CameraInfo CameraInfo, - @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, - HttpServletRequest req) { + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { Page page = new Page(pageNo, pageSize); IPage pageList = service.findPage(page, CameraInfo); return Result.OK(pageList); } - @ApiOperation(value="护理单元分页列表查询", notes="护理单元分页列表查询") - @GetMapping(value = "/nuList") - public Result> queryNuPageList(CameraInfo CameraInfo, - @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, - HttpServletRequest req) { - Page page = new Page(pageNo, pageSize); - IPage pageList = service.findNuPage(page, CameraInfo); - return Result.OK(pageList); - } - + @RequestMapping(value = "/queryTreeList", method = RequestMethod.GET) + public Result> queryTreeList(CameraInfo CameraInfo) { + Result> result = new Result<>(); + try { + List list = service.findModelList(CameraInfo); + result.setResult(list); + result.setSuccess(true); + } catch (Exception e) { + log.error(e.getMessage(),e); + result.setSuccess(false); + result.setMessage("查询失败"); + } + return result; + } + + @ApiOperation(value="护理单元分页列表查询", notes="护理单元分页列表查询") + @GetMapping(value = "/nuList") + public Result> queryNuPageList(CameraInfo CameraInfo, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + Page page = new Page(pageNo, pageSize); + IPage pageList = service.findNuPage(page, CameraInfo); + return Result.OK(pageList); + } + /** * 编辑 * @@ -87,338 +107,385 @@ public class CameraInfoController extends JeecgController rebootDevice(@RequestBody CameraInfo cameraInfo) { - service.rebootDevice(cameraInfo); - return Result.OK("重启成功!"); - } + /** + * 修改摄像头信息 + * + * @param cameraInfo + * @return + */ + @RequestMapping(value = "/rebootDevice", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result rebootDevice(@RequestBody CameraInfo cameraInfo) { + service.rebootDevice(cameraInfo); + return Result.OK("重启成功!"); + } - /** - * 获取IPC设备能力集 - * - * @param cameraInfo - * @return - */ - @GetMapping(value = "/getIpcCapability") - public Result getIpcCapability(CameraInfo cameraInfo) { - return service.getIpcCapability(cameraInfo); - } + /** + * 获取IPC设备能力集 + * + * @param cameraInfo + * @return + */ + @GetMapping(value = "/getIpcCapability") + public Result getIpcCapability(CameraInfo cameraInfo) { + return service.getIpcCapability(cameraInfo); + } - /** - * 获取画面基本信息 - * - * @param map - * @return - */ - @PostMapping(value = "/getImageCommon") - public Result getImageCommon(@RequestBody Map map) { - return service.getImageCommon(map); - } + /** + * 获取画面基本信息 + * + * @param map + * @return + */ + @PostMapping(value = "/getImageCommon") + public Result getImageCommon(@RequestBody Map map) { + return service.getImageCommon(map); + } - /** - * 设置画面基本信息 - * - * @param map - * @return - */ - @PostMapping(value = "/setImageCommon") - public Result setImageCommon(@RequestBody Map map) { - return service.setImageCommon(map); - } + /** + * 设置画面基本信息 + * + * @param map + * @return + */ + @PostMapping(value = "/setImageCommon") + public Result setImageCommon(@RequestBody Map map) { + return service.setImageCommon(map); + } - /** - * 获取OSD能力集 - * - * @param map - * @return - */ - @PostMapping(value = "/getOsdCapability") - public Result getOsdCapability(@RequestBody Map map) { - return service.getOsdCapability(map); - } + /** + * 获取OSD能力集 + * + * @param map + * @return + */ + @PostMapping(value = "/getOsdCapability") + public Result getOsdCapability(@RequestBody Map map) { + return service.getOsdCapability(map); + } - /** - * 获取OSD参数 - * - * @param map - * @return - */ - @PostMapping(value = "/getOsd") - public Result getOsd(@RequestBody Map map) { - return service.getOsd(map); - } + /** + * 获取OSD参数 + * + * @param map + * @return + */ + @PostMapping(value = "/getOsd") + public Result getOsd(@RequestBody Map map) { + return service.getOsd(map); + } - /** - * 设置OSD参数 - * - * @param map - * @return - */ - @PostMapping(value = "/setOsd") - public Result setOsd(@RequestBody Map map) { - return service.setOsd(map); - } + /** + * 设置OSD参数 + * + * @param map + * @return + */ + @PostMapping(value = "/setOsd") + public Result setOsd(@RequestBody Map map) { + return service.setOsd(map); + } - /** - * 获取码率参数 - * - * @param map - * @return - */ - @PostMapping(value = "/getVideoParams") - public Result getVideoParams(@RequestBody Map map) { - return service.getVideoParams(map); - } + /** + * 获取码率参数 + * + * @param map + * @return + */ + @PostMapping(value = "/getVideoParams") + public Result getVideoParams(@RequestBody Map map) { + return service.getVideoParams(map); + } - /** - * 设置码率参数 - * - * @param map - * @return - */ - @PostMapping(value = "/setVideoParams") - public Result setVideoParams(@RequestBody Map map) { - return service.setVideoParams(map); - } + /** + * 设置码率参数 + * + * @param map + * @return + */ + @PostMapping(value = "/setVideoParams") + public Result setVideoParams(@RequestBody Map map) { + return service.setVideoParams(map); + } - /** - * 恢复画面默认值 - * - * @param map - * @return - */ - @PostMapping(value = "/configRecovery") - public Result configRecovery(@RequestBody Map map) { - return service.configRecovery(map); - } + /** + * 恢复画面默认值 + * + * @param map + * @return + */ + @PostMapping(value = "/configRecovery") + public Result configRecovery(@RequestBody Map map) { + return service.configRecovery(map); + } - /** - * 获取摄像头实时播放地址 - * - * @param cameraInfo - * @return - */ - @GetMapping(value = "/getPreviewUrl") - public Result> getPreviewUrl(CameraInfo cameraInfo) { - return service.getPreviewUrl(cameraInfo); - } + /** + * 获取摄像头实时播放地址 + * + * @param cameraInfo + * @return + */ + @GetMapping(value = "/getPreviewUrl") + public Result> getPreviewUrl(CameraInfo cameraInfo) { + return service.getPreviewUrl(cameraInfo); + } - /** - * 获取录像配置--暂无用 - * - * @param cameraInfo - * @return - */ - @GetMapping(value = "/getRecordCfgs") - public Result getRecordCfgs(CameraInfo cameraInfo) throws Exception{ - return service.getRecordCfgs(cameraInfo); - } + /** + * 获取存储设备列表 + * + * @param cameraInfo + * @return + */ + @GetMapping(value = "/getStorageDevice") + public Result getStorageDevice(CameraInfo cameraInfo) throws Exception{ + return service.getStorageDevice(cameraInfo); + } - /** - * 设置录像计划--暂无用 - * - * @param cameraInfo - * @return - */ - @GetMapping(value = "/setRecordCfgs") - public Result setRecordCfgs(CameraInfo cameraInfo) throws Exception{ - return service.setRecordCfgs(cameraInfo); - } + /** + * 获取所有录像计划列表 + * + * @param cameraInfo + * @return + */ + @GetMapping(value = "/getAllRecordPlans") + public Result getAllRecordPlans(CameraInfo cameraInfo) throws Exception{ + return service.getAllRecordPlans(cameraInfo); + } - /** - * 获取批量操作录像计划进度--暂无用 - * - * @param cameraInfo - * @return - */ - @GetMapping(value = "/getBatchProgress") - public Result getBatchProgress(CameraInfo cameraInfo) throws Exception{ - return service.getBatchProgress(cameraInfo); - } + /** + * 添加录像计划 + * + * @param cameraInfo + * @return + */ + @PostMapping(value = "/addRecordCfgs") + public Result addRecordCfgs(@RequestBody CameraInfo cameraInfo) throws Exception{ + return service.addRecordCfgs(cameraInfo); + } - /** - * 获取镜头遮挡参数 - * - * @param map - * @return - */ - @PostMapping(value = "/getTamperDet") - public Result getTamperDet(@RequestBody Map map) { - return service.getTamperDet(map); - } + /** + * 设置录像计划 + * + * @param cameraInfo + * @return + */ + @PostMapping(value = "/setRecordCfgs") + public Result setRecordCfgs(@RequestBody CameraInfo cameraInfo) throws Exception{ + return service.setRecordCfgs(cameraInfo); + } - /** - * 设置镜头遮挡参数 - * - * @param map - * @return - */ - @PostMapping(value = "/setTamperDet") - public Result setTamperDet(@RequestBody Map map) { - return service.setTamperDet(map); - } + /** + * 删除录像计划 + * + * @param cameraInfo + * @return + */ + @GetMapping(value = "/delRecordCfgs") + public Result delRecordCfgs(CameraInfo cameraInfo) throws Exception{ + return service.delRecordCfgs(cameraInfo); + } - /** - * 获取镜头遮挡处理方式 - * - * @param map - * @return - */ - @PostMapping(value = "/getTamperNotif") - public Result getTamperNotif(@RequestBody Map map) { - return service.getTamperNotif(map); - } + /** + * 获取录像配置 + * + * @param cameraInfo + * @return + */ + @GetMapping(value = "/getRecordCfgs") + public Result> getRecordCfgs(CameraInfo cameraInfo, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize) throws Exception{ + IPage pageList = service.getRecordCfgs(cameraInfo,pageNo,pageSize); + return Result.OK(pageList); + } - /** - * 设置镜头遮挡处理方式 - * - * @param map - * @return - */ - @PostMapping(value = "/setTamperNotif") - public Result setTamperNotif(@RequestBody Map map) { - return service.setTamperNotif(map); - } + /** + * 获取批量操作录像计划进度 + * + * @param cameraInfo + * @return + */ + @GetMapping(value = "/getBatchProgress") + public Result getBatchProgress(CameraInfo cameraInfo) throws Exception{ + return service.getBatchProgress(cameraInfo); + } - /** - * 报警声音试听 - * - * @param map - * @return - */ - @PostMapping(value = "/testAudio") - public Result testAudio(@RequestBody Map map) { - return service.testAudio(map); - } + /** + * 获取镜头遮挡参数 + * + * @param map + * @return + */ + @PostMapping(value = "/getTamperDet") + public Result getTamperDet(@RequestBody Map map) { + return service.getTamperDet(map); + } - /** - * 获取白光/声音告警参数 - * - * @param map - * @return - */ - @PostMapping(value = "/getAlarmInfo") - public Result getAlarmInfo(@RequestBody Map map) { - return service.getAlarmInfo(map); - } + /** + * 设置镜头遮挡参数 + * + * @param map + * @return + */ + @PostMapping(value = "/setTamperDet") + public Result setTamperDet(@RequestBody Map map) { + return service.setTamperDet(map); + } - /** - * 设置白光/声音告警参数 - * - * @param map - * @return - */ - @PostMapping(value = "/setAlarmInfo") - public Result setAlarmInfo(@RequestBody Map map) { - return service.setAlarmInfo(map); - } + /** + * 获取镜头遮挡处理方式 + * + * @param map + * @return + */ + @PostMapping(value = "/getTamperNotif") + public Result getTamperNotif(@RequestBody Map map) { + return service.getTamperNotif(map); + } - /** - * 获取白光/声音告警布防时间 - * - * @param map - * @return - */ - @PostMapping(value = "/getAlarmPlan") - public Result getAlarmPlan(@RequestBody Map map) { - return service.getAlarmPlan(map); - } + /** + * 设置镜头遮挡处理方式 + * + * @param map + * @return + */ + @PostMapping(value = "/setTamperNotif") + public Result setTamperNotif(@RequestBody Map map) { + return service.setTamperNotif(map); + } - /** - * 设置白光/声音告警布防时间 - * - * @param map - * @return - */ - @PostMapping(value = "/setAlarmPlan") - public Result setAlarmPlan(@RequestBody Map map) { - return service.setAlarmPlan(map); - } + /** + * 报警声音试听 + * + * @param map + * @return + */ + @PostMapping(value = "/testAudio") + public Result testAudio(@RequestBody Map map) { + return service.testAudio(map); + } - /** - * 搜索某天的录像数据 - * - * @param cameraInfo - * @return - */ - @GetMapping(value = "/searchVideo") - public Result> searchVideo(CameraInfo cameraInfo, - @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, - HttpServletRequest req) { - return service.searchVideo(pageNo, pageSize, cameraInfo); - } + /** + * 获取白光/声音告警参数 + * + * @param map + * @return + */ + @PostMapping(value = "/getAlarmInfo") + public Result getAlarmInfo(@RequestBody Map map) { + return service.getAlarmInfo(map); + } - /** - * 获取摄像头录像回放地址 - * - * @param cameraInfo - * @return - */ - @GetMapping(value = "/getPlaybackUrlList") - public Result> getPlaybackUrlList(CameraInfo cameraInfo) { - return service.getPlaybackUrlList(cameraInfo); - } + /** + * 设置白光/声音告警参数 + * + * @param map + * @return + */ + @PostMapping(value = "/setAlarmInfo") + public Result setAlarmInfo(@RequestBody Map map) { + return service.setAlarmInfo(map); + } - /** - * 删除回放通道 - * - * @param cameraInfo - * @return - */ - @GetMapping(value = "/deletePlaybackChn") - public Result deletePlaybackChn(CameraInfo cameraInfo) { - return service.deletePlaybackChn(cameraInfo); - } + /** + * 获取白光/声音告警布防时间 + * + * @param map + * @return + */ + @PostMapping(value = "/getAlarmPlan") + public Result getAlarmPlan(@RequestBody Map map) { + return service.getAlarmPlan(map); + } - /** - * 获取摄像头录像回放地址 - * - * @param cameraInfo - * @return - */ - @GetMapping(value = "/getMultitransUrl") - public Result> getMultitransUrl(CameraInfo cameraInfo) throws Exception{ - return service.getMultitransUrl(cameraInfo); - } + /** + * 设置白光/声音告警布防时间 + * + * @param map + * @return + */ + @PostMapping(value = "/setAlarmPlan") + public Result setAlarmPlan(@RequestBody Map map) { + return service.setAlarmPlan(map); + } - /** - * 回放视频转mp4上传 - * - * @param cameraInfo - * @return - */ - @GetMapping(value = "/uploadToServer") - public Result uploadToServer(CameraInfo cameraInfo) throws Exception{ - return service.uploadToServer(cameraInfo); - } + /** + * 搜索某天的录像数据 + * + * @param cameraInfo + * @return + */ + @GetMapping(value = "/searchVideo") + public Result> searchVideo(CameraInfo cameraInfo, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + return service.searchVideo(pageNo, pageSize, cameraInfo); + } - /** - * 停止转存MP4上传任务 - * - * @param cameraInfo - * @return - */ - @GetMapping(value = "/stopUploadToServer") - public Result stopUploadToServer(CameraInfo cameraInfo) throws Exception{ - return service.stopUploadToServer(cameraInfo); - } + /** + * 获取摄像头录像回放地址 + * + * @param cameraInfo + * @return + */ + @GetMapping(value = "/getPlaybackUrlList") + public Result> getPlaybackUrlList(CameraInfo cameraInfo) { + return service.getPlaybackUrlList(cameraInfo); + } - /** - * 获取转存MP4上传任务进度 - * - * @param cameraInfo - * @return - */ - @GetMapping(value = "/getUploadToServerProcess") - public Result getUploadToServerProcess(CameraInfo cameraInfo) throws Exception{ - return service.getUploadToServerProcess(cameraInfo); - } + /** + * 删除回放通道 + * + * @param cameraInfo + * @return + */ + @GetMapping(value = "/deletePlaybackChn") + public Result deletePlaybackChn(CameraInfo cameraInfo) { + return service.deletePlaybackChn(cameraInfo); + } - } + /** + * 获取摄像头录像回放地址 + * + * @param cameraInfo + * @return + */ + @GetMapping(value = "/getMultitransUrl") + public Result> getMultitransUrl(CameraInfo cameraInfo) throws Exception{ + return service.getMultitransUrl(cameraInfo); + } + + /** + * 回放视频转mp4上传 + * + * @param cameraInfo + * @return + */ + @GetMapping(value = "/uploadToServer") + public Result uploadToServer(CameraInfo cameraInfo) throws Exception{ + return service.uploadToServer(cameraInfo); + } + + /** + * 停止转存MP4上传任务 + * + * @param cameraInfo + * @return + */ + @GetMapping(value = "/stopUploadToServer") + public Result stopUploadToServer(CameraInfo cameraInfo) throws Exception{ + return service.stopUploadToServer(cameraInfo); + } + + /** + * 获取转存MP4上传任务进度 + * + * @param cameraInfo + * @return + */ + @GetMapping(value = "/getUploadToServerProcess") + public Result getUploadToServerProcess(CameraInfo cameraInfo) throws Exception{ + return service.getUploadToServerProcess(cameraInfo); + } + +} diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/entity/CameraInfo.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/entity/CameraInfo.java index c4c6890..b5ea11a 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/entity/CameraInfo.java +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/entity/CameraInfo.java @@ -27,83 +27,83 @@ import lombok.experimental.Accessors; @EqualsAndHashCode(callSuper = false) @ApiModel(value="nu_iot_tplink_camera对象", description="护理单元-物联管理-TPLINK摄像头信息") public class CameraInfo implements Serializable { - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; /**ID*/ @TableId(type = IdType.AUTO) - @ApiModelProperty(value = "ID") - private Integer id; + @ApiModelProperty(value = "ID") + private Integer id; /**设备序号*/ @Excel(name = "设备序号", width = 15) - @ApiModelProperty(value = "设备序号") - private String deviceIndex; + @ApiModelProperty(value = "设备序号") + private String deviceIndex; /**设备名称*/ @Excel(name = "设备名称", width = 15) - @ApiModelProperty(value = "设备名称") - private String deviceName; + @ApiModelProperty(value = "设备名称") + private String deviceName; /**设备类型*/ @Excel(name = "设备类型", width = 15) - @ApiModelProperty(value = "设备类型") - private String deviceType; + @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; + @ApiModelProperty(value = "设备状态 0 离线 1 在线 2 重启中 3 升级中 4 配置中 5 同步中") + private String deviceStatus; /**设备型号*/ @Excel(name = "设备型号", width = 15) - @ApiModelProperty(value = "设备型号") - private String deviceModel; + @ApiModelProperty(value = "设备型号") + private String deviceModel; /**IP地址*/ @Excel(name = "IP地址", width = 15) - @ApiModelProperty(value = "IP地址") - private String ip; + @ApiModelProperty(value = "IP地址") + private String ip; /**MAC地址*/ @Excel(name = "MAC地址", width = 15) - @ApiModelProperty(value = "MAC地址") - private String mac; + @ApiModelProperty(value = "MAC地址") + private String mac; /**分组ID*/ @Excel(name = "分组ID", width = 15) - @ApiModelProperty(value = "分组ID") - private String regionId; + @ApiModelProperty(value = "分组ID") + private String regionId; /**分组名称*/ @Excel(name = "分组名称", width = 15) - @ApiModelProperty(value = "分组名称") - private String regionName; + @ApiModelProperty(value = "分组名称") + private String regionName; /**父设备ID*/ @Excel(name = "父设备ID", width = 15) - @ApiModelProperty(value = "父设备ID") - private String parentId; + @ApiModelProperty(value = "父设备ID") + private String parentId; /**父设备名称*/ @Excel(name = "父设备名称", width = 15) - @ApiModelProperty(value = "父设备名称") - private String parentDeviceName; + @ApiModelProperty(value = "父设备名称") + private String parentDeviceName; /**项目ID*/ @Excel(name = "项目ID", width = 15) - @ApiModelProperty(value = "项目ID") - private String projectId; + @ApiModelProperty(value = "项目ID") + private String projectId; /**项目名称*/ @Excel(name = "项目名称", width = 15) - @ApiModelProperty(value = "项目名称") - private String projectName; + @ApiModelProperty(value = "项目名称") + private String projectName; /**软件版本*/ @Excel(name = "软件版本", width = 15) - @ApiModelProperty(value = "软件版本") - private String firmwareVer; + @ApiModelProperty(value = "软件版本") + private String firmwareVer; /**硬件版本*/ @Excel(name = "硬件版本", width = 15) - @ApiModelProperty(value = "硬件版本") - private String hardwareVer; + @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; + @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; + @ApiModelProperty(value = "告警消息权限 1 有权限 -1 无权限") + private String msgAuthType; /**扩展信息*/ @Excel(name = "扩展信息", width = 15) @ApiModelProperty(value = "扩展信息") @@ -111,30 +111,30 @@ public class CameraInfo implements Serializable { private JSONObject extend; /**国标编码*/ @Excel(name = "国标编码", width = 15) - @ApiModelProperty(value = "国标编码") - private String sipCode; + @ApiModelProperty(value = "国标编码") + private String sipCode; /**位置名称*/ @Excel(name = "位置名称", width = 15) - @ApiModelProperty(value = "位置名称") - private String locationName; + @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; + @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; + @ApiModelProperty(value = "协议类型") + private String protocol; /**置顶的时间*/ @Excel(name = "用户设置置顶的时间,毫秒级时间戳", width = 15) @ApiModelProperty(value = "用户设置置顶的时间,毫秒级时间戳") @TableField(exist = false) private String topTime; /**护理单元*/ - @ApiModelProperty(value = "护理单元ID") + @ApiModelProperty(value = "护理单元ID") @Dict(dictTable ="nu_base_info",dicText = "nu_name",dicCode = "id") - private String nuId; + private String nuId; /**护理单元*/ @ApiModelProperty(value = "护理单元") @TableField(exist = false) @@ -143,6 +143,14 @@ public class CameraInfo implements Serializable { @TableField(exist = false) private int streamType; + @ApiModelProperty(value = "录像计划ID") + private String recordPlanId; + @ApiModelProperty(value = "录像计划名称") + @TableField(exist = false) + private String planName; + @ApiModelProperty(value = "批量处理类型 1:表示查询添加进度,2:表示查询设置进度,3:表示查询删除进度") + @TableField(exist = false) + private int batchType; /** * 能力集属性 ==> */ @@ -269,6 +277,9 @@ public class CameraInfo implements Serializable { @ApiModelProperty(value = "录像开关;枚举:[0:表示关,1:表示开]") @TableField(exist = false) private String recordSwitch; + @ApiModelProperty(value = "录像开关;枚举:[false:表示关,true:表示开]") + @TableField(exist = false) + private boolean recordSwitchBoolean; @ApiModelProperty(value = "任务taskId") @TableField(exist = false) private String taskId; @@ -278,4 +289,7 @@ public class CameraInfo implements Serializable { @ApiModelProperty(value = "上传进度") @TableField(exist = false) private String process; + @ApiModelProperty(value = "IDS") + @TableField(exist = false) + private String ids; } diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/mapper/CameraInfoMapper.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/mapper/CameraInfoMapper.java index ebc2425..7c398e3 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/mapper/CameraInfoMapper.java +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/mapper/CameraInfoMapper.java @@ -19,10 +19,12 @@ import java.util.List; @Mapper public interface CameraInfoMapper extends BaseMapper { IPage findPage(Page page, @Param("params") CameraInfo cameraInfo); + List findList(CameraInfo cameraInfo); List findAllList(); IPage findNuPage(Page page, @Param("params") CameraInfo cameraInfo); CameraInfo getByDeviceId(CameraInfo cameraInfo); CameraInfo getCapabilityByDeviceId(CameraInfo cameraInfo); void insertCapability(CameraInfo cameraInfo); void updateCapabilityById(CameraInfo cameraInfo); + void updatePlanByDevId(CameraInfo cameraInfo); } diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/mapper/xml/CameraInfoMapper.xml b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/mapper/xml/CameraInfoMapper.xml index 4cf86a2..5b9c610 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/mapper/xml/CameraInfoMapper.xml +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/mapper/xml/CameraInfoMapper.xml @@ -4,30 +4,31 @@ + + 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 + 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} @@ -172,24 +214,24 @@ backlight_coexistence ) values ( - #{id}, - #{deviceIndex}, - #{motionDetection}, - #{videoCover}, - #{ptz}, - #{motor}, - #{smartCode}, - #{forceIdrFrame}, - #{audio}, - #{localStorage}, - #{playbackApiVersionTwo}, - #{multitrans}, - #{passengerFlow}, - #{getPreviewThumbnail}, - #{previewThumbnailJpeg}, - #{corridorMod}, - #{backlightCoexistence} - ) + #{id}, + #{deviceIndex}, + #{motionDetection}, + #{videoCover}, + #{ptz}, + #{motor}, + #{smartCode}, + #{forceIdrFrame}, + #{audio}, + #{localStorage}, + #{playbackApiVersionTwo}, + #{multitrans}, + #{passengerFlow}, + #{getPreviewThumbnail}, + #{previewThumbnailJpeg}, + #{corridorMod}, + #{backlightCoexistence} + ) @@ -214,4 +256,10 @@ where id = #{id} + + UPDATE nu_iot_tplink_camera + SET record_plan_id = #{recordPlanId} + where device_index = #{deviceIndex} + + \ No newline at end of file diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/model/CameraTreeModel.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/model/CameraTreeModel.java new file mode 100644 index 0000000..a69a990 --- /dev/null +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/model/CameraTreeModel.java @@ -0,0 +1,149 @@ +package com.nu.modules.tplink.camera.model; + +import com.nu.modules.tplink.camera.entity.CameraInfo; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +/** + *

+ * 摄像头表 存储摄像头结构数据的实体类 + *

+ * + * @Author 曹磊 + * @Since 2025-02-27 + */ +public class CameraTreeModel implements Serializable{ + + private static final long serialVersionUID = 1L; + + /** 对应SysDepart中的id字段,前端数据树中的key*/ + private String key; + + /** 对应SysDepart中的id字段,前端数据树中的value*/ + private String value; + + /** 对应depart_name字段,前端数据树中的title*/ + private String title; + + private boolean isLeaf; + + private String type; + // 以下所有字段均与CameraInfo相同 + + private String deviceIndex; + + private String deviceName; + + private List children = new ArrayList<>(); + + + /** + * 将CameraInfo对象转换成CameraTreeModel对象 + * @param cameraInfo + */ + public CameraTreeModel(CameraInfo cameraInfo) { + this.key = cameraInfo.getDeviceIndex(); + this.value = cameraInfo.getDeviceIndex(); + this.title = cameraInfo.getDeviceName(); + this.type = "camera"; + this.deviceIndex = cameraInfo.getDeviceIndex(); + this.deviceName = cameraInfo.getDeviceName(); + this.isLeaf = true; + } + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public boolean getIsLeaf() { + return isLeaf; + } + + public void setIsLeaf(boolean isleaf) { + this.isLeaf = isleaf; + } + + public List getChildren() { + return children; + } + + public void setChildren(List children) { + if (children==null){ + this.isLeaf=true; + } + this.children = children; + } + + public String getDeviceIndex() { + return deviceIndex; + } + + public void setDeviceIndex(String deviceIndex) { + this.deviceIndex = deviceIndex; + } + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + /** + * 重写equals方法 + */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + CameraTreeModel model = (CameraTreeModel) o; + return Objects.equals(deviceIndex, model.deviceIndex) && + Objects.equals(deviceName, model.deviceName) && + Objects.equals(children, model.children); + } + + /** + * 重写hashCode方法 + */ + @Override + public int hashCode() { + return Objects.hash(deviceIndex, deviceName, children); + } + +} diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/service/ICameraInfoService.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/service/ICameraInfoService.java index 7d0cf7d..4d8d50a 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/service/ICameraInfoService.java +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/service/ICameraInfoService.java @@ -3,6 +3,7 @@ package com.nu.modules.tplink.camera.service; import cn.hutool.json.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.nu.modules.tplink.camera.model.CameraTreeModel; import org.jeecg.common.api.vo.Result; import com.nu.modules.tplink.camera.entity.CameraInfo; import com.baomidou.mybatisplus.extension.service.IService; @@ -18,6 +19,7 @@ import java.util.Map; */ public interface ICameraInfoService extends IService { IPage findPage(Page page, CameraInfo cameraInfo); + List findModelList(CameraInfo cameraInfo); List findAllList(); IPage findNuPage(Page page, CameraInfo cameraInfo); void edit(CameraInfo cameraInfo); @@ -34,8 +36,12 @@ public interface ICameraInfoService extends IService { Result setVideoParams(Map map); Result configRecovery(Map map); Result> getPreviewUrl(CameraInfo cameraInfo); - Result getRecordCfgs(CameraInfo cameraInfo) throws Exception; + Result getStorageDevice(CameraInfo cameraInfo) throws Exception; + Result getAllRecordPlans(CameraInfo cameraInfo) throws Exception; + Result addRecordCfgs(CameraInfo cameraInfo) throws Exception; Result setRecordCfgs(CameraInfo cameraInfo) throws Exception; + Result delRecordCfgs(CameraInfo cameraInfo) throws Exception; + IPage getRecordCfgs(CameraInfo cameraInfo,Integer pageNo,Integer pageSize) throws Exception; Result getBatchProgress(CameraInfo cameraInfo) throws Exception; Result getTamperDet(Map map); Result setTamperDet(Map map); diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/service/impl/CameraInfoServiceImpl.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/service/impl/CameraInfoServiceImpl.java index d0f2804..cebe578 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/service/impl/CameraInfoServiceImpl.java +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/camera/service/impl/CameraInfoServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.json.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.fasterxml.jackson.databind.ObjectMapper; +import com.nu.modules.tplink.camera.model.CameraTreeModel; import com.nu.modules.tplink.common.entity.TumsConfig; import com.nu.modules.tplink.common.mapper.TumsConfigMapper; import org.apache.commons.compress.utils.Lists; @@ -54,6 +55,17 @@ public class CameraInfoServiceImpl extends ServiceImpl findModelList(CameraInfo cameraInfo){ + List modelList = Lists.newArrayList(); + List list = baseMapper.findList(cameraInfo); + for (int i = 0; i < list.size(); i++) { + CameraInfo entity = list.get(i); + CameraTreeModel treeModel = new CameraTreeModel(entity); + modelList.add(treeModel); + } + return modelList; + } + /** * 获取所有摄像头信息 * @return @@ -906,43 +918,137 @@ public class CameraInfoServiceImpl extends ServiceImpl0){ + idsStr = idsStr.substring(0,idsStr.length()-1); + } + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"devIds\"").append(":").append("[").append(idsStr).append("],"); + sb.append("\"storageList\"").append(":").append("["); + sb.append("{"); + if(cameraInfo.getStorageDevId()!=null&&!cameraInfo.getStorageDevId().equals("")){ + //存储设备ID + sb.append("\"storageDevId\"").append(":").append(cameraInfo.getStorageDevId()).append(","); + if(cameraInfo.getStorageDevId().equals("0")){ + sb.append("\"storageType\"").append(":").append("1").append(","); + }else{ + sb.append("\"storageType\"").append(":").append("2").append(","); + } + } + sb.append("\"recordPlanId\"").append(":").append(cameraInfo.getRecordPlanId()).append(","); + sb.append("\"streamType\"").append(":").append(cameraInfo.getStreamType()); + sb.append("}"); + sb.append("]"); + sb.append("}"); + String res = tumsApi.addRecordCfgs(sb.toString()); + JSONObject jsonObject = new JSONObject(res); + int errorCode = jsonObject.getInt("error_code"); + if(errorCode == 0){ + for(int i=0;i0){ + idsStr = idsStr.substring(0,idsStr.length()-1); + } + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"ids\"").append(":").append("[").append(idsStr).append("]"); + sb.append("}"); + String res = tumsApi.delRecordCfgs(sb.toString()); + JSONObject jsonObject = new JSONObject(res); + int errorCode = jsonObject.getInt("error_code"); + if(errorCode == 0){ + for(int i=0;i getRecordCfgs(CameraInfo cameraInfo,Integer pageNo,Integer pageSize) throws Exception{ + IPage page = new Page<>(); + page.setSize(pageSize); + page.setCurrent(pageNo); + if(cameraInfo.getProjectId()==null||cameraInfo.getProjectId().equals("")){ + return page; + } + if(cameraInfo.getRegionId()==null||cameraInfo.getRegionId().equals("")){ + return page; + } + StringBuffer sb = new StringBuffer(); + sb.append("{"); + sb.append("\"start\"").append(":").append((pageNo-1)*pageSize).append(","); + sb.append("\"limit\"").append(":").append(pageSize).append(","); + sb.append("\"filterAnd\"").append(":").append("{"); + sb.append("\"projectId\"").append(":").append("\"").append(cameraInfo.getProjectId()).append("\","); + sb.append("\"regionId\"").append(":").append("\"").append(cameraInfo.getRegionId()).append("\""); + sb.append("},"); + sb.append("\"sort\"").append(":").append("[{"); + sb.append("\"key\"").append(":").append("\"ip\","); + sb.append("\"value\"").append(":").append("\"desc\""); + sb.append("}]"); + sb.append("}"); + String res = tumsApi.getRecordCfgs(sb.toString()); + JSONObject jsonObject = new JSONObject(res); + int errorCode = jsonObject.getInt("error_code"); + if(errorCode == 0){ + JSONObject result = (JSONObject)jsonObject.get("result"); + Long total = result.getLong("total"); + page.setTotal(total); + if(total>0){ + List list = Lists.newArrayList(); + JSONArray array = result.getJSONArray("list"); + for(int i=0;i暂时无用 **/ - IPC_GET_RECORD_CFGS("/tums/record/v1/getRecordCfgs","获取录像配置"), + IPC_ADD_RECORD_CFGS("/tums/record/v1/addRecordCfgs","添加录像配置"), IPC_SET_RECORD_CFGS("/tums/record/v1/setRecordCfgs","设置录像计划"), + IPC_DEL_RECORD_CFGS("/tums/record/v1/delRecordCfgs","删除录像计划"), + IPC_GET_RECORD_CFGS("/tums/record/v1/getRecordCfgs","获取录像配置"), IPC_GET_BATCH_PROGRESS("/tums/record/v1/getBatchProgress","获取批量操作录像计划进度"), + IPC_GET_STORAGE_DEVICE("/tums/record/v1/getStorageDevice","获取存储设备列表"), + IPC_GET_ALL_RECORD_PLANS("/tums/record/v1/getAllRecordPlans","获取所有录像计划列表"), + /** =================>暂时无用 **/ IPC_MOTION_CTRL("/tums/ptz/v1/motionCtrl","高速球机移动方向控制"), IPC_GET_ALL_PRESETS("/tums/ptz/v1/getAllPresets","获取高速球机的所有预置点"), IPC_OPERATE_PRESET("/tums/ptz/v1/operatePreset","操作高速球机的预置点"), diff --git a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/utils/TumsApi.java b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/utils/TumsApi.java index 551e2a4..f638ca0 100644 --- a/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/utils/TumsApi.java +++ b/nursing-unit-iot/nu-iot-biz/src/main/java/com/nu/modules/tplink/utils/TumsApi.java @@ -457,14 +457,15 @@ public class TumsApi { } /** - * 获取录像配置 + * 添加录像计划 * @param jsonRequest * @return */ - public String getRecordCfgs(String jsonRequest){ + public String addRecordCfgs(String jsonRequest){ this.createTumsClient(); - String jsonResponse = tumsClient.request(jsonRequest, ApiEnum.IPC_GET_RECORD_CFGS.getValue()); - log.info("getRecordCfgs:{}",jsonResponse); + log.info("addRecordCfgs:request:{}",jsonRequest); + String jsonResponse = tumsClient.request(jsonRequest, ApiEnum.IPC_ADD_RECORD_CFGS.getValue()); + log.info("addRecordCfgs:response:{}",jsonResponse); return jsonResponse; } @@ -475,8 +476,35 @@ public class TumsApi { */ public String setRecordCfgs(String jsonRequest){ this.createTumsClient(); + log.info("setRecordCfgs:request:{}",jsonRequest); String jsonResponse = tumsClient.request(jsonRequest, ApiEnum.IPC_SET_RECORD_CFGS.getValue()); - log.info("setRecordCfgs:{}",jsonResponse); + log.info("setRecordCfgs:response:{}",jsonResponse); + return jsonResponse; + } + + /** + * 删除录像计划 + * @param jsonRequest + * @return + */ + public String delRecordCfgs(String jsonRequest){ + this.createTumsClient(); + log.info("delRecordCfgs:request:{}",jsonRequest); + String jsonResponse = tumsClient.request(jsonRequest, ApiEnum.IPC_DEL_RECORD_CFGS.getValue()); + log.info("delRecordCfgs:response:{}",jsonResponse); + return jsonResponse; + } + + /** + * 获取录像配置 + * @param jsonRequest + * @return + */ + public String getRecordCfgs(String jsonRequest){ + this.createTumsClient(); + log.info("getRecordCfgs:request:{}",jsonRequest); + String jsonResponse = tumsClient.request(jsonRequest, ApiEnum.IPC_GET_RECORD_CFGS.getValue()); + log.info("getRecordCfgs:response:{}",jsonResponse); return jsonResponse; } @@ -487,8 +515,35 @@ public class TumsApi { */ public String getBatchProgress(String jsonRequest){ this.createTumsClient(); + log.info("getBatchProgress:request:{}",jsonRequest); String jsonResponse = tumsClient.request(jsonRequest, ApiEnum.IPC_GET_BATCH_PROGRESS.getValue()); - log.info("getBatchProgress:{}",jsonResponse); + log.info("getBatchProgress:response:{}",jsonResponse); + return jsonResponse; + } + + /** + * 获取存储设备列表 + * @param jsonRequest + * @return + */ + public String getStorageDevice(String jsonRequest){ + this.createTumsClient(); + log.info("getStorageDevice:request:{}",jsonRequest); + String jsonResponse = tumsClient.request(jsonRequest, ApiEnum.IPC_GET_STORAGE_DEVICE.getValue()); + log.info("getStorageDevice:response:{}",jsonResponse); + return jsonResponse; + } + + /** + * 获取所有录像计划列表 + * @param jsonRequest + * @return + */ + public String getAllRecordPlans(String jsonRequest){ + this.createTumsClient(); + log.info("getAllRecordPlans:request:{}",jsonRequest); + String jsonResponse = tumsClient.request(jsonRequest, ApiEnum.IPC_GET_ALL_RECORD_PLANS.getValue()); + log.info("getAllRecordPlans:response:{}",jsonResponse); return jsonResponse; }