| | |
| | | import com.ruoyi.common.core.domain.model.LoginUser; |
| | | import com.ruoyi.common.utils.SecurityUtils; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import com.ruoyi.constant.sdkPriority; |
| | | import com.ruoyi.device.camera.domain.CameraCmd; |
| | | import com.ruoyi.device.camera.mapper.ArdCamerasMapper; |
| | | import com.ruoyi.device.hiksdk.common.global.globalVariable; |
| | |
| | | * @修改人和其它信息 |
| | | */ |
| | | @Override |
| | | // @SdkOperate |
| | | @SdkOperate |
| | | public boolean PTZControlWithSpeed(CameraCmd cmd) { |
| | | String cameraId = cmd.getCameraId(); |
| | | boolean enable = cmd.isEnable(); |
| | |
| | | */ |
| | | @Override |
| | | public boolean controlLock(CameraCmd cmd) { |
| | | String cameraId = cmd.getCameraId(); |
| | | Integer expired = cmd.getExpired(); |
| | | String cameraId = cmd.getCameraId();//申请锁的相机 |
| | | ArdCameras ardCameras = ardCamerasMapper.selectArdCamerasById(cameraId); |
| | | if (StringUtils.isNull(ardCameras)) { |
| | | return false;//找不到相机拒绝操控 |
| | | } |
| | | String operatorId = ardCameras.getOperatorId(); |
| | | if (StringUtils.isEmpty(operatorId)) { |
| | | //如果该相机无人锁定,直接锁定 |
| | | LoginUser loginUser = SecurityUtils.getLoginUser(); |
| | | if (StringUtils.isNull(loginUser)) { |
| | | return false;//当前登录用户为空不可以控制 |
| | | } |
| | | SysUser user = loginUser.getUser(); |
| | | if (StringUtils.isNull(user.getCameraPriority())) { |
| | | return false;//未配置优先级的用户不可以控制 |
| | | } |
| | | Integer expired = cmd.getExpired();//申请控制时长 |
| | | String operator=cmd.getOperator();//申请者 |
| | | String currentOperator = ardCameras.getOperatorId();//相机当前控制者 |
| | | Date currentExpired = ardCameras.getOperatorExpired();//相机当前过期时间 |
| | | if(currentExpired==null) |
| | | { |
| | | //设置当前操作用户ID |
| | | ardCameras.setOperatorId(user.getUserId()); |
| | | ardCameras.setOperatorId(operator); |
| | | //设置当前过期时间 |
| | | Date now = new Date(); |
| | | now.setTime(now.getTime() + expired * 1000); |
| | | now.setTime(now.getTime() + expired * 1000*60); |
| | | ardCameras.setOperatorExpired(now); |
| | | ardCamerasMapper.updateArdCameras(ardCameras); |
| | | } else { |
| | | //如果该相机有人锁定,判断优先级 |
| | | SysUser operatorUser = sysUserMapper.selectUserById(operatorId); |
| | | if (StringUtils.isNull(operatorUser)) { |
| | | return false; |
| | | } |
| | | if (StringUtils.isEmpty(operatorUser.getCameraPriority())) { |
| | | return false; |
| | | } |
| | | Integer operatorPriority = Integer.parseInt(operatorUser.getCameraPriority());//相机已操作用户优先级 |
| | | |
| | | LoginUser loginUser = SecurityUtils.getLoginUser(); |
| | | if (StringUtils.isNull(loginUser)) { |
| | | return false;//当前登录用户为空不可以控制 |
| | | } |
| | | SysUser user = loginUser.getUser(); |
| | | if (StringUtils.isEmpty(user.getCameraPriority())) { |
| | | return false;//未配置优先级的用户不可以控制 |
| | | } |
| | | Integer loginUserCameraPriority = Integer.parseInt(user.getCameraPriority());//当前登录用户优先级 |
| | | if (user.getUserId().equals(operatorUser.getUserId())) { |
| | | //如果当前用户已经操控,直接更新过期时间 |
| | | } |
| | | else { |
| | | //如果过期时间有值 |
| | | //如果是本人直接修改 |
| | | if(currentOperator.equals(operator)) |
| | | { |
| | | //设置当前过期时间 |
| | | Date now = new Date(); |
| | | now.setTime(now.getTime() + expired * 60 * 1000); |
| | | ardCameras.setOperatorExpired(now);//设置当前过期时间 |
| | | now.setTime(now.getTime() + expired * 1000*60); |
| | | ardCameras.setOperatorExpired(now); |
| | | ardCamerasMapper.updateArdCameras(ardCameras); |
| | | } else { |
| | | if (loginUserCameraPriority > operatorPriority) { |
| | | //如果登录用户优先级高于已操作用户,覆盖更新 |
| | | ardCameras.setOperatorId(user.getUserId());//设置当前操作用户ID |
| | | } |
| | | else { |
| | | //如果非本人比较优先级 |
| | | Integer currentLevel = 0;//当前操作者的优先级 |
| | | if (sdkPriority.priorityMap.containsKey(currentOperator)) { |
| | | /*当前控制者为系统报警用户*/ |
| | | currentLevel = (Integer) sdkPriority.priorityMap.get(currentOperator); |
| | | } else { |
| | | /*当前控制者为普通用户*/ |
| | | SysUser sysUser = sysUserMapper.selectUserById(currentOperator); |
| | | currentLevel = sysUser.getCameraPriority(); |
| | | } |
| | | Integer operatorLevel = 0;//获取申请者的优先级 |
| | | if (sdkPriority.priorityMap.containsKey(operator)) { |
| | | /*包含说明当前申请控制者为系统报警用户*/ |
| | | operatorLevel = (Integer) sdkPriority.priorityMap.get(operator); |
| | | } else { |
| | | /*否则申请控制者为当前登录用户*/ |
| | | LoginUser loginUser = SecurityUtils.getLoginUser(); |
| | | SysUser user = loginUser.getUser();//获取登录用户的信息 |
| | | operatorLevel = user.getCameraPriority(); |
| | | } |
| | | //判断优先级 |
| | | if (operatorLevel > currentLevel) { |
| | | Date now = new Date(); |
| | | now.setTime(now.getTime() + expired * 60 * 1000); |
| | | ardCameras.setOperatorExpired(now);//设置当前过期时间 |
| | | ardCameras.setOperatorId(operator);//设置当前用户 |
| | | ardCamerasMapper.updateArdCameras(ardCameras); |
| | | } else { |
| | | //如果登录用户优先级低于等于已操作用户,判断是否过期 |
| | | Date now = new Date(); |
| | | Date operatorExpired = ardCameras.getOperatorExpired(); |
| | | if (now.after(operatorExpired)) { |
| | | //已过期 |
| | | ardCameras.setOperatorId(user.getUserId());//设置当前操作用户ID |
| | | now.setTime(now.getTime() + expired * 60 * 1000); |
| | | ardCameras.setOperatorExpired(now);//设置当前过期时间 |
| | | ardCamerasMapper.updateArdCameras(ardCameras); |
| | | } else { |
| | | return false;//未过期不可控 |
| | | } |
| | | return false;//优先级低无法上锁 |
| | | } |
| | | } |
| | | } |