package com.fzzy.igds; import com.bstek.dorado.annotation.DataProvider; import com.bstek.dorado.annotation.DataResolver; import com.bstek.dorado.annotation.Expose; import com.bstek.dorado.data.provider.Page; import com.fzzy.common.constant.BizTypeEnum; import com.fzzy.igds.camera.ApiCameraManager; import com.fzzy.igds.camera.data.ApiCameraData; import com.fzzy.igds.domain.Camera; import com.fzzy.igds.service.SecCameraService; import com.fzzy.igds.utils.ContextUtil; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.StringUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.List; /** * @Description * @Author CZT * @Date 2025/11/28 10:48 */ @Slf4j @Component public class SecCameraPR { @Autowired private SecCameraService secCameraService; @Resource private ApiCameraManager apiCameraManager; /** * secCameraPR#listPageCamera 根据条件获取所有的摄像机配置信息 * * @param param */ @DataProvider public void listPageCamera(Page page, Camera param) { com.baomidou.mybatisplus.extension.plugins.pagination.Page corePage = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page.getPageNo(), page.getPageSize()); if (null == param) { param = new Camera(); } Camera camera = new Camera(); BeanUtils.copyProperties(param, camera); secCameraService.listPageCamera(corePage, camera); // 重新封装 page.setEntities(corePage.getRecords()); page.setEntityCount(Integer.parseInt(String.valueOf(corePage.getTotal()))); } /** * secCameraPR#listCamera 获取所有的摄像机配置信息 * ${dorado.getDataProvider("secCameraPR#listCamera").getResult()} * * @return */ @DataProvider public List listCamera(String deptId) { return secCameraService.listCamera(null, deptId); } /** * secCameraPR#saveCamera * * @param data */ @DataResolver public void saveCamera(Camera data) { Camera secCamera = new Camera(); BeanUtils.copyProperties(data, secCamera); secCameraService.saveCamera(secCamera); } /** * secCameraPR#delCamera * * @param data * @return */ @Expose @Log(title = "监控配置", businessType = BusinessType.DELETE, bizType = BizTypeEnum.SECURITY) public String delCamera(Camera data) { Camera secCamera = new Camera(); BeanUtils.copyProperties(data, secCamera); return secCameraService.delCamera(secCamera); } /*** * secCameraPR#refreshCache * @return */ @Expose public String refreshCache() { secCameraService.refreshCache(ContextUtil.getCompanyId()); return null; } /*** * securityPR#flushByMedia * * 根据库区编码及播放方式,同步监控信息 * @return */ @DataResolver public String flushByMedia(Camera param) { if (StringUtils.isBlank(param.getPlayType())) { return "没有选择播放方式,不执行!"; } if (StringUtils.isBlank(param.getDeptId())) { return "没有同步库区,不执行1"; } try { //通过统一入口获取播放地址 ApiCameraData apiCameraData = new ApiCameraData(); apiCameraData.setCompanyId(ContextUtil.getCompanyId()); apiCameraData.setDeptId(param.getDeptId()); //根据播放方式获取对应的播放地址 List cameras = apiCameraManager.getApiCameraService(param.getPlayType()).searchCamera(apiCameraData); if (cameras == null) { return "同步失败!"; } else { return null; } } catch (Exception e) { log.error("-----同步摄像头列表失败-----原因={}", e.toString()); return "远程接口服务异常,请核查后重试!"; } } }