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.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.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Component; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @Description * @Author CZT * @Date 2025/11/28 10:48 */ @Slf4j @Component public class SecCameraPR { @Autowired private SecCameraService secCameraService; /** * secCameraPR#listPageCamera 根据条件获取所有的摄像机配置信息 * * @param param */ @DataProvider public void listPageCamera(Page page, Map param) { org.springframework.data.domain.Page japPage = pageCamera(page, param); page.setEntityCount((int) japPage.getTotalElements()); page.setEntities(japPage.getContent()); } public org.springframework.data.domain.Page pageCamera(Page page, Map param) { if (null == param) { param = new HashMap<>(); } Map finalParam = param; //多参数分页查询 Pageable pageable = PageRequest.of(page.getPageNo() - 1, page.getPageSize(), Sort.Direction.ASC, Camera.SORT_PROP); Specification specification = new Specification() { private static final long serialVersionUID = 1L; public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder cb) { List predicates = new ArrayList(); //所有的断言 Predicate predicate1 = cb.equal(root.get("companyId"), ContextUtil.getCompanyId()); predicates.add(predicate1); Predicate predicate2 = cb.equal(root.get("deptId"), ContextUtil.subDeptId(null)); predicates.add(predicate2); String key = (String) finalParam.get("bizType"); if (StringUtils.isNotEmpty(key)) { Predicate predicate3 = cb.equal(root.get("bizType"), key); predicates.add(predicate3); } key = (String) finalParam.get("name"); if (StringUtils.isNotEmpty(key)) { Predicate predicate4 = cb.like(root.get("name"), "%" + key + "%"); predicates.add(predicate4); } key = (String) finalParam.get("brand"); if (StringUtils.isNotEmpty(key)) { Predicate predicate5 = cb.equal(root.get("brand"), key); predicates.add(predicate5); } key = (String) finalParam.get("spjklx"); if (StringUtils.isNotEmpty(key)) { Predicate predicate5 = cb.equal(root.get("spjklx"), key); predicates.add(predicate5); } key = (String) finalParam.get("spdwlx"); if (StringUtils.isNotEmpty(key)) { Predicate predicate5 = cb.equal(root.get("spdwlx"), key); predicates.add(predicate5); } return cb.and(predicates.toArray(new Predicate[0])); } }; org.springframework.data.domain.Page japPage = secCameraService.findAll(specification, pageable); return japPage; } /** * secCameraPR#listCamera 获取所有的摄像机配置信息 * ${dorado.getDataProvider("secCameraPR#listCamera").getResult()} * @return */ @DataProvider public List listCamera() { return secCameraService.listCamera(); } /** * 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 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 */ @Expose public String flushByMedia(String playType) { if (null == playType){ return "没有选择播放方式,执行失败"; } // try { // if (CameraUtil.PLAY_TYPE_MEDIA_HIK.equals(playType)) { // ApiCameraData apiCameraData = new ApiCameraData(); // apiCameraData.setCompanyId(ContextUtil.getCompanyId()); // apiCameraData.setDeptId(ContextUtil.subDeptId(null)); // apiCameraData.setPlayType(playType); // List list = apiCameraManager.getApiCameraService(playType).searchCamera(apiCameraData); // if(list == null){ // return "同步失败!"; // }else { // return "同步成功!"; // } // } return "当前播放方式没有此功能!"; // // }catch (Exception e){ // log.error("-----同步摄像头列表失败-----原因={}", e.toString()); // return "远程接口服务异常,请核查后重试!"; // } } }