czt
3 天以前 f12b7fd8a4a5dc6c7db814f5879defa77f1b1ab7
fzzy-igdss-web/src/main/java/com/fzzy/sys/manager/security/SecManager.java
@@ -1,16 +1,27 @@
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.data.PatrolSuperData;
import com.fzzy.igds.domain.Camera;
import com.fzzy.igds.domain.Dept;
import com.fzzy.igds.domain.Patrol;
import com.fzzy.igds.service.CoreDeptService;
import com.fzzy.igds.service.PatrolService;
import com.fzzy.igds.service.SecCameraService;
import com.fzzy.igds.utils.ContextUtil;
import com.fzzy.igds.utils.DateUtil;
import com.ruoyi.common.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * @Description
@@ -23,6 +34,12 @@
    @Resource
    private SecCameraService secCameraService;
    @Resource
    private ApiCameraManager apiCameraManager;
    @Resource
    private PatrolService patrolService;
    @Resource
    private CoreDeptService coreDeptService;
    /**
     *
@@ -61,6 +78,70 @@
    }
    /**
     * 获取播放信息
     * @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
@@ -79,4 +160,50 @@
        secCameraService.refreshCache(ContextUtil.getCompanyId());
        return new PageResponse<>(RespCodeEnum.CODE_0000, "执行成功!!");
    }
    /**
     * 巡检统计
     * @return
     */
    public PatrolSuperData patrolTrack() {
        PatrolSuperData patrolSuperData = new PatrolSuperData();
        List<Dept> deptList = coreDeptService.getDeptData();
        if(null == deptList || deptList.isEmpty()){
            return  patrolSuperData;
        }
        //库区转换
        Map<String, Integer> map = new HashMap<>();
        for (Dept dept : deptList) {
            map.put(dept.getId(), 0);
        }
        List<Patrol> weekList = patrolService.getWeekList();
        if(null != weekList && weekList.size() > 0){
            Date start = DateUtil.getCurZero(DateUtil.getNewByDay(new Date(), -1));  //昨天零点零分
            Date end = DateUtil.getCurZero(new Date());                         //今天零点零分
            for (Patrol patrol : weekList) {
                //7天内人次
                patrolSuperData.setWeekSum(patrolSuperData.getWeekSum() + 1);
                //昨天人次
                if(patrol.getCreateTime().after(start) && patrol.getCreateTime().before(end)){
                    patrolSuperData.setYesterdaySum(patrolSuperData.getYesterdaySum() + 1);
                }
                //当天统计
                if(patrol.getCreateTime().after(end)){
                    if(map.get(patrol.getDeptId()) == 0){
                        patrolSuperData.setIsDeptNum(patrolSuperData.getIsDeptNum() + 1);
                        map.put(patrol.getDeptId(), map.get(patrol.getDeptId()) + 1);
                    }
                }
            }
        }
        patrolSuperData.setNoDeptNum(deptList.size() - patrolSuperData.getIsDeptNum());
        return patrolSuperData;
    }
}