czt
2026-01-10 e2abf0dd0c49bc6e82f428ec747865cc806147a3
fzzy-igdss-view/src/main/java/com/fzzy/igds/SecCameraPR.java
@@ -4,6 +4,10 @@
import com.bstek.dorado.annotation.DataResolver;
import com.bstek.dorado.annotation.Expose;
import com.bstek.dorado.data.provider.Page;
import com.fzzy.igds.camera.ApiCameraManager;
import com.fzzy.igds.camera.data.ApiCameraData;
import com.fzzy.igds.camera.data.ApiCameraResp;
import com.fzzy.igds.data.IgdsBaseParam;
import com.fzzy.igds.domain.Camera;
import com.fzzy.igds.service.SecCameraService;
import com.fzzy.igds.utils.ContextUtil;
@@ -11,19 +15,10 @@
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 javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/**
 * @Description
@@ -34,150 +29,114 @@
@Component
public class SecCameraPR {
   @Autowired
   private SecCameraService secCameraService;
    @Autowired
    private SecCameraService secCameraService;
    @Resource
    private ApiCameraManager apiCameraManager;
   /**
    * secCameraPR#listPageCamera 根据条件获取所有的摄像机配置信息
    *
    * @param param
    */
   @DataProvider
   public void listPageCamera(Page<Camera> page, Map<String, Object> param) {
      org.springframework.data.domain.Page<Camera> japPage = pageCamera(page, param);
      page.setEntityCount((int) japPage.getTotalElements());
      page.setEntities(japPage.getContent());
   }
   public org.springframework.data.domain.Page<Camera> pageCamera(Page<Camera> page, Map<String, Object> param) {
      if (null == param) {
         param = new HashMap<>();
      }
      Map<String, Object> finalParam = param;
    /**
     * secCameraPR#listPageCamera 根据条件获取所有的摄像机配置信息
     *
     * @param param
     */
    @DataProvider
    public void listPageCamera(Page<Camera> page, Camera param) {
        com.baomidou.mybatisplus.extension.plugins.pagination.Page<Camera> corePage = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page.getPageNo(), page.getPageSize());
      //多参数分页查询
      Pageable pageable = PageRequest.of(page.getPageNo() - 1, page.getPageSize(), Sort.Direction.ASC, Camera.SORT_PROP);
      Specification<Camera> specification = new Specification<Camera>() {
         private static final long serialVersionUID = 1L;
        if (null == param) {
            param = new Camera();
        }
        Camera camera = new Camera();
        BeanUtils.copyProperties(param, camera);
        secCameraService.listPageCamera(corePage, camera);
         public Predicate toPredicate(Root<Camera> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
            List<Predicate> predicates = new ArrayList<Predicate>(); //所有的断言
        // 重新封装
        page.setEntities(corePage.getRecords());
        page.setEntityCount(Integer.parseInt(String.valueOf(corePage.getTotal())));
    }
            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);
    /**
     * secCameraPR#listCamera 获取所有的摄像机配置信息
     * ${dorado.getDataProvider("secCameraPR#listCamera").getResult()}
     *
     * @return
     */
    @DataProvider
    public List<Camera> listCamera(String deptId) {
        return secCameraService.listCamera(null, deptId);
    }
            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<Camera> japPage = secCameraService.findAll(specification, pageable);
      return japPage;
   }
    /**
     * secCameraPR#saveCamera
     *
     * @param data
     */
    @DataResolver
    public void saveCamera(Camera data) {
        Camera secCamera = new Camera();
        BeanUtils.copyProperties(data, secCamera);
        secCameraService.saveCamera(secCamera);
    }
   /**
    * secCameraPR#listCamera 获取所有的摄像机配置信息
    * ${dorado.getDataProvider("secCameraPR#listCamera").getResult()}
    * @return
    */
   @DataProvider
   public List<Camera> listCamera() {
      return secCameraService.listCamera();
   }
    /**
     * secCameraPR#delCamera
     *
     * @param data
     * @return
     */
    @Expose
    public String delCamera(Camera data) {
        Camera secCamera = new Camera();
        BeanUtils.copyProperties(data, secCamera);
        return secCameraService.delCamera(secCamera);
    }
   /**
    * secCameraPR#saveCamera
    *
    * @param data
    */
   @DataResolver
   public void saveCamera(Camera data) {
      Camera secCamera = new Camera();
      BeanUtils.copyProperties(data, secCamera);
      secCameraService.saveCamera(secCamera);
   }
    /***
     * secCameraPR#refreshCache
     * @return
     */
    @Expose
    public String refreshCache() {
        secCameraService.refreshCache(ContextUtil.getCompanyId());
        return null;
    }
   /**
    * 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) {
    /***
     * securityPR#flushByMedia
     *
     * 根据库区编码及播放方式,同步监控信息
     * @return
     */
    @DataResolver
    public String flushByMedia(Camera param) {
      if (null == playType){
         return "没有选择播放方式,执行失败";
      }
        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());
//      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<SecCameraDto> list = apiCameraManager.getApiCameraService(playType).searchCamera(apiCameraData);
//            if(list == null){
//               return "同步失败!";
//            }else {
//               return "同步成功!";
//            }
//         }
         return "当前播放方式没有此功能!";
//
//      }catch (Exception e){
//         log.error("-----同步摄像头列表失败-----原因={}", e.toString());
//         return "远程接口服务异常,请核查后重试!";
//      }
            //根据播放方式获取对应的播放地址
            List<Camera> cameras = apiCameraManager.getApiCameraService(param.getPlayType()).searchCamera(apiCameraData);
            if (cameras == null) {
                return "同步失败!";
            } else {
                return null;
            }
   }
        } catch (Exception e) {
            log.error("-----同步摄像头列表失败-----原因={}", e.toString());
            return "远程接口服务异常,请核查后重试!";
        }
    }
}