package com.fzzy.sys.manager.security; import com.fzzy.igds.camera.ApiCameraManager; import com.fzzy.igds.camera.data.ApiCameraData; import com.fzzy.igds.camera.data.ApiCameraResp; import com.fzzy.igds.constant.RespCodeEnum; import com.fzzy.igds.data.PageResponse; import com.fzzy.igds.domain.Camera; import com.fzzy.igds.service.SecCameraService; import com.fzzy.igds.utils.ContextUtil; import com.ruoyi.common.utils.StringUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.List; /** * @Description * @Author CZT * @Date 2025/12/9 9:19 */ @Slf4j @Component public class SecManager { @Resource private SecCameraService secCameraService; @Resource private ApiCameraManager apiCameraManager; /** * * @param deptId * @param companyId * @return */ public List listCamera(String deptId, String companyId) { if (null == deptId){ return null; } List list = secCameraService.getCameraByDeptId(companyId, deptId); if (null == list || list.isEmpty()){ return null; } return list; } /** * 根据监控ID获取监控信息 * @param companyId * @param cameraId * @return */ public Camera getCameraById(String companyId, String cameraId) { if (StringUtils.isEmpty(companyId)) { companyId = ContextUtil.getCompanyId(); } if (StringUtils.isEmpty(cameraId)){ return null; } return secCameraService.getCameraById(companyId, cameraId); } /** * 获取播放信息 * @param param * @return */ public ApiCameraResp getPlayAddr(Camera param, String requireIp) { if (StringUtils.isEmpty(param.getId())) { log.error("没有获取到监控信息!"); return new ApiCameraResp("ERROR", "没有获取到监控信息!"); } // 根据id获取设备信息 Camera camera = secCameraService.getCameraById(ContextUtil.getCompanyId(), param.getId()); if(null == camera){ log.error("缓存中没有获取到摄像头信息"+ param.toString()); return new ApiCameraResp("ERROR", "缓存中没有获取到摄像头信息!"); } //通过统一入口获取播放地址 ApiCameraData apiCameraData = new ApiCameraData(); apiCameraData.setCompanyId(camera.getCompanyId()); apiCameraData.setDeptId(camera.getDeptId()); apiCameraData.setCameraId(camera.getId()); apiCameraData.setIp(camera.getIp()); apiCameraData.setCtrlPort(camera.getControlPort()); apiCameraData.setWebPort(camera.getWebPort()); apiCameraData.setPlayType(camera.getPlayType()); apiCameraData.setSnapType(camera.getSnapType()); apiCameraData.setSn(camera.getSn()); apiCameraData.setChannel(camera.getChanNum()); apiCameraData.setLoginId(camera.getLoginId()); apiCameraData.setPwd(camera.getPwd()); apiCameraData.setUrlIn(camera.getUrlIn()); apiCameraData.setUrlOut(camera.getUrlOut()); apiCameraData.setMediaAddr(camera.getMediaAddr()); //根据播放方式获取对应的播放地址 ApiCameraResp resp = apiCameraManager.getApiCameraService(camera.getPlayType()).getPlayAddr(apiCameraData); return resp; } /** * 云台控制 * @param param * @return */ public ApiCameraResp ptzMedia(ApiCameraData param) { if(StringUtils.isEmpty(param.getCompanyId())){ param.setCompanyId(ContextUtil.getCompanyId()); } return apiCameraManager.getApiCameraService(param.getPtzType()).ptzMedia(param); } /** * 预置位设置 * @param param * @return */ public ApiCameraResp ptzPreset(ApiCameraData param) { return apiCameraManager.getApiCameraService(param.getPlayType()).ptzPreset(param); } /** * * @param params * @return */ public PageResponse updatePos(List params) { if (null == params || params.isEmpty()) { return new PageResponse<>(RespCodeEnum.CODE_2000.getCode(), "当前没有需要执行的信息!"); } for (Camera param : params) { secCameraService.updatePos(param); } secCameraService.refreshCache(ContextUtil.getCompanyId()); return new PageResponse<>(RespCodeEnum.CODE_0000, "执行成功!!"); } }