| | |
| | | package com.sandu.ximon.admin.service; |
| | | |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.http.HttpUtil; |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.github.pagehelper.PageHelper; |
| | | import com.sandu.common.execption.BusinessException; |
| | | import com.sandu.common.object.BaseConditionVO; |
| | | import com.sandu.common.service.impl.BaseServiceImpl; |
| | | import com.sandu.ximon.admin.param.MonitorParam; |
| | | import com.sandu.ximon.admin.security.SecurityUtils; |
| | | import com.sandu.ximon.dao.bo.AirEquipmentBo; |
| | | import com.sandu.ximon.dao.bo.MonitorBo; |
| | | import com.sandu.ximon.dao.domain.Monitor; |
| | | import com.sandu.ximon.dao.domain.YSY_AccessTokenDto; |
| | | import com.sandu.ximon.dao.domain.YSY_MonitorDto; |
| | | import com.sandu.ximon.admin.dto.YSY_AccessTokenDto; |
| | | import com.sandu.ximon.admin.dto.YSY_MonitorDto; |
| | | import com.sandu.ximon.dao.mapper.MonitorMapper; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | private static final String DELETE_DEVICE_URL = "/device/delete"; |
| | | //获取萤石云单个设备信息 |
| | | private static final String GET_DEVICE_URL = "/device/info"; |
| | | //获取萤石云摄像头播放地址URL |
| | | private static final String GET_VEDIO_URL = "/v2/live/address/get"; |
| | | |
| | | /** |
| | | * 查询全部摄像头 |
| | | */ |
| | | public List<Monitor> listMonitor() { |
| | | LambdaQueryWrapper<Monitor> wrapper = Wrappers.lambdaQuery(Monitor.class); |
| | | List<Monitor> list = list(wrapper); |
| | | |
| | | return list; |
| | | } |
| | | private final PoleBindingService poleBindingService; |
| | | |
| | | /** |
| | | * 模糊查询 |
| | | */ |
| | | public List<Monitor> listMonitorByKeyword(MonitorParam monitorParam) { |
| | | //设备状态:在线/离线/全部 |
| | | int equipmentState1; |
| | | int equipmentState2; |
| | | if (2 == monitorParam.getEquipmentState()) { |
| | | //在线 |
| | | equipmentState1 = 1; |
| | | //离线 |
| | | equipmentState2 = 0; |
| | | } else { |
| | | equipmentState1 = monitorParam.getEquipmentState(); |
| | | equipmentState2 = monitorParam.getEquipmentState(); |
| | | public List<MonitorBo> listMonitorByKeyword(BaseConditionVO baseConditionVO, MonitorParam monitorParam) { |
| | | Long clientId = SecurityUtils.getClientId(); |
| | | PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize()); |
| | | List<MonitorBo> monitorList; |
| | | //绑定状态:已绑定/未绑定/全部 |
| | | if (monitorParam.getBindingState() == null) { |
| | | //全部 |
| | | monitorParam.setBindingState(2); |
| | | } |
| | | if (monitorParam.getEquipmentState() == null) { |
| | | //全部 |
| | | monitorParam.setEquipmentState(2); |
| | | } |
| | | |
| | | //绑定状态:已绑定/未绑定/全部 |
| | | int bindingState1; |
| | | int bindingState2; |
| | | if (2 == monitorParam.getBindingState()) { |
| | | //已绑定 |
| | | bindingState1 = 1; |
| | | //未绑定 |
| | | bindingState2 = 0; |
| | | } else { |
| | | bindingState1 = monitorParam.getBindingState(); |
| | | bindingState2 = monitorParam.getBindingState(); |
| | | } |
| | | return monitorMapper.listMonitorByKeyword(monitorParam.getKeyword(), equipmentState1, equipmentState2, bindingState1, bindingState2); |
| | | monitorList = monitorMapper.listMonitorByIds(monitorParam.getKeyword(), clientId, monitorParam.getBindingState(), monitorParam.getEquipmentState()); |
| | | |
| | | return monitorList; |
| | | } |
| | | |
| | | /** |
| | |
| | | if (monitor == null) { |
| | | throw new BusinessException("找不到摄像头"); |
| | | } |
| | | |
| | | //删除摄像头设备前需要先解绑 |
| | | poleBindingService.unBindPole(null, monitor.getDeviceSerial()); |
| | | return removeById(Id); |
| | | } |
| | | |
| | |
| | | * |
| | | * @param accessToken 授权过程获取的access_token |
| | | * @param deviceSerial 设备序列号,存在英文字母的设备序列号,字母需为大写 |
| | | * @param validateCode 设备验证码,设备机身上的六位大写字母 |
| | | * // * @param validateCode 设备验证码,设备机身上的六位大写字母 |
| | | */ |
| | | public YSY_MonitorDto addYSYMonitor(String accessToken, String deviceSerial, String validateCode) { |
| | | // public YSY_MonitorDto addYSYMonitor(String accessToken, String deviceSerial) { |
| | | |
| | | Map<String, Object> paramMap = new HashMap<>(); |
| | | paramMap.put("accessToken", accessToken); |
| | | paramMap.put("deviceSerial", deviceSerial); |
| | | paramMap.put("validateCode", validateCode); |
| | | if(validateCode != null ){ |
| | | paramMap.put("validateCode", validateCode); |
| | | } |
| | | String s = HttpUtil.post(YSY_URL + ADD_DEVICE_URL, paramMap); |
| | | System.out.println(s); |
| | | YSY_MonitorDto monitorDto = JSON.parseObject(s, YSY_MonitorDto.class); |
| | |
| | | if (one == null) { |
| | | return save(monitor); |
| | | } else { |
| | | monitor.setId(one.getId()); |
| | | return updateById(monitor); |
| | | } |
| | | } |
| | |
| | | return updateById(monitor); |
| | | } |
| | | |
| | | /** |
| | | * 返回摄像头实时画面播放地址 |
| | | * |
| | | * @param accessToken |
| | | * @param deviceSerial |
| | | * @return |
| | | */ |
| | | public String getMonitorVideoUrl(String accessToken, String deviceSerial, int protocol, int expireTime) { |
| | | if (expireTime < 30 || expireTime > 62208000) { |
| | | throw new BusinessException("设置的URL播放地址过期时长数据错误"); |
| | | } |
| | | Map<String, Object> paramMap = new HashMap<>(); |
| | | paramMap.put("accessToken", accessToken); |
| | | paramMap.put("deviceSerial", deviceSerial); |
| | | paramMap.put("protocol", protocol); |
| | | paramMap.put("expireTime", expireTime); |
| | | String s = HttpUtil.post(YSY_URL + GET_VEDIO_URL, paramMap); |
| | | System.out.println(s); |
| | | YSY_MonitorDto monitor = JSON.parseObject(s, YSY_MonitorDto.class); |
| | | if ("200".equals(monitor.getCode())) { |
| | | return monitor.getData().getUrl(); |
| | | } else { |
| | | throw new BusinessException(monitor.getMsg()); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 修改设备绑定状态 |
| | | * |
| | | * @param flag true为绑定 false 为解绑 |
| | | */ |
| | | public void updateBingdingState(boolean flag, String deviceCode) { |
| | | if (flag) {//绑定 |
| | | Monitor monitor = getOne(Wrappers.lambdaQuery(Monitor.class).eq(Monitor::getDeviceSerial, deviceCode)); |
| | | if (monitor == null) { |
| | | return; |
| | | } |
| | | monitor.setBindingState(1); |
| | | updateById(monitor); |
| | | } else {//解绑 |
| | | Monitor monitor = getOne(Wrappers.lambdaQuery(Monitor.class).eq(Monitor::getDeviceSerial, deviceCode)); |
| | | if (monitor == null) { |
| | | return; |
| | | } |
| | | monitor.setBindingState(0); |
| | | updateById(monitor); |
| | | } |
| | | } |
| | | |
| | | |
| | | } |