2021与蓝度共同重构项目,服务端
fix
zhanzhiqin
2022-04-28 620a3be8596434a8796469a8213a0066c836a1d4
ximon-admin/src/main/java/com/sandu/ximon/admin/service/MonitorService.java
@@ -1,10 +1,8 @@
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;
@@ -12,13 +10,14 @@
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.admin.dto.YSY_AccessTokenDto;
import com.sandu.ximon.admin.dto.YSY_MonitorDto;
import com.sandu.ximon.dao.domain.PoleBinding;
import com.sandu.ximon.dao.mapper.MonitorMapper;
import lombok.AllArgsConstructor;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
@@ -55,11 +54,11 @@
     * 模糊查询
     */
    public List<MonitorBo> listMonitorByKeyword(BaseConditionVO baseConditionVO, MonitorParam monitorParam) {
        List<String> list;
        List<Monitor> list;
        if (SecurityUtils.getClientId() == null) {
            list = monitorMapper.listMonitorDeviceSerial(null, monitorParam.getKeyword());
            list = monitorMapper.listMonitorDeviceSerial1(null, monitorParam.getKeyword());
        } else {
            list = monitorMapper.listMonitorDeviceSerial(SecurityUtils.getUserId(), monitorParam.getKeyword());
            list = monitorMapper.listMonitorDeviceSerial1(SecurityUtils.getUserId(), monitorParam.getKeyword());
        }
        //没有数据时候直接返回空数组
@@ -67,14 +66,16 @@
            List<MonitorBo> nullList = new ArrayList<>();
            return nullList;
        }
        List<String> device_serialList = new ArrayList<>(list.size());
        for (Monitor demo : list) {
            device_serialList.add(demo.getDeviceSerial());
        MonitorParam monitorParam1;
        for (String devices_serial : list) {
            monitorParam1 = new MonitorParam();
            monitorParam1.setAccessToken(getAccessToken());
            monitorParam1.setDeviceSerial(devices_serial);
            getYSYMonitorInfoAndaddMonitorToTable(monitorParam1);
            YSY_MonitorDto.MonitorDto monitorInfo = getMonitorInfo_Async(demo.getDeviceSerial());
            if (monitorInfo != null) {
                demo.setEquipmentState(monitorInfo.getStatus());
            }
        }
        updateBatchById(list);
        if (baseConditionVO != null) {
            PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize());
@@ -90,21 +91,19 @@
            monitorParam.setEquipmentState(2);
        }
        monitorList = monitorMapper.listMonitorByIds(list, monitorParam.getBindingState(), monitorParam.getEquipmentState());
        monitorList = monitorMapper.listMonitorByIds(device_serialList, monitorParam.getBindingState(), monitorParam.getEquipmentState());
        return monitorList;
    }
    public Monitor getYSYMonitorInfoAndaddMonitorToTable(MonitorParam monitorParam) {
        YSY_MonitorDto getMonitorDto = getYSYMonitorInfo(getAccessToken(), monitorParam.getDeviceSerial());
    public Monitor getYSYMonitorInfoAndaddMonitorToTable(String deviceSerial) {
        YSY_MonitorDto getMonitorDto = getYSYMonitorInfo(getAccessToken(), deviceSerial);
        if ("200".equals(getMonitorDto.getCode())) {
            Monitor monitor = getOne(Wrappers.lambdaQuery(Monitor.class).eq(Monitor::getDeviceSerial, monitorParam.getDeviceSerial()));
            Monitor monitor = getOne(Wrappers.lambdaQuery(Monitor.class).eq(Monitor::getDeviceSerial, deviceSerial));
            if (monitor != null) {
                monitor.setDeviceSerial(getMonitorDto.getData().getDeviceSerial());
                if (monitorParam.getValidateCode() != null) {
                    monitor.setDevicesCode(monitorParam.getValidateCode());
                }
                monitor.setDeviceName(getMonitorDto.getData().getDeviceName());
                monitor.setDeviceType(getMonitorDto.getData().getModel());
                monitor.setEquipmentState(getMonitorDto.getData().getStatus());
@@ -116,9 +115,6 @@
            } else {
                monitor = new Monitor();
                monitor.setDeviceSerial(getMonitorDto.getData().getDeviceSerial());
                if (monitorParam.getValidateCode() != null) {
                    monitor.setDevicesCode(monitorParam.getValidateCode());
                }
                monitor.setDeviceName(getMonitorDto.getData().getDeviceName());
                monitor.setDeviceType(getMonitorDto.getData().getModel());
                monitor.setEquipmentState(getMonitorDto.getData().getStatus());
@@ -131,7 +127,7 @@
            return monitor;
        } else {
            throw new BusinessException(getMonitorDto.getMsg());
            return null;
        }
    }
@@ -146,9 +142,11 @@
        if (monitor == null) {
            throw new BusinessException("找不到摄像头");
        }
        //删除摄像头设备前需要先解绑
        poleBindingService.unBindPole(null, monitor.getDeviceSerial());
        PoleBinding one = poleBindingService.getOne(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getDeviceCode, monitor.getDeviceSerial()));
        if (one != null) {
            //删除摄像头设备前需要先解绑
            poleBindingService.unBindPole(null, monitor.getDeviceSerial());
        }
        return removeById(Id);
    }
@@ -167,6 +165,28 @@
    /**
     * 获取萤石云摄像头信息(异步)
     *
     * @return
     */
    @Async("taskExecutor")
    public YSY_MonitorDto.MonitorDto getMonitorInfo_Async(String deviceSerial) {
        String token = getAccessToken();
        Map<String, Object> paramMap = new HashMap<>();
        paramMap.put("accessToken", token);
        paramMap.put("deviceSerial", deviceSerial);
        String s = HttpUtil.post(YSY_URL + GET_DEVICE_URL, paramMap);
        YSY_MonitorDto monitorDto = null;
        try {
            monitorDto = JSON.parseObject(s, YSY_MonitorDto.class);
            return monitorDto.getData();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    /**
     * 获取萤石云摄像头信息  无需验证accessToken
     *
     * @return
@@ -177,48 +197,45 @@
        paramMap.put("accessToken", token);
        paramMap.put("deviceSerial", deviceSerial);
        String s = HttpUtil.post(YSY_URL + GET_DEVICE_URL, paramMap);
        YSY_MonitorDto monitorDto = JSON.parseObject(s, YSY_MonitorDto.class);
        return monitorDto.getData();
        YSY_MonitorDto monitorDto = null;
        try {
            monitorDto = JSON.parseObject(s, YSY_MonitorDto.class);
            return monitorDto.getData();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    /**
     * 添加萤石云摄像头
     *
     * @param accessToken  授权过程获取的access_token
     * @param deviceSerial 设备序列号,存在英文字母的设备序列号,字母需为大写
     *                     //     * @param validateCode 设备验证码,设备机身上的六位大写字母
     */
    public YSY_MonitorDto addYSYMonitor(String accessToken, String deviceSerial, String validateCode) {
//    public YSY_MonitorDto addYSYMonitor(String accessToken, String deviceSerial) {
    public boolean addYSYMonitor(String deviceSerial, String validateCode) {
        Map<String, Object> paramMap = new HashMap<>();
        paramMap.put("accessToken", accessToken);
        paramMap.put("accessToken", getAccessToken());
        paramMap.put("deviceSerial", deviceSerial);
        if (validateCode != null && validateCode.trim().length() != 0) {
            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);
        return monitorDto;
    }
    /**
     * 删除萤石云摄像头
     *
     * @param accessToken  授权过程获取的access_token
     * @param deviceSerial 设备序列号,存在英文字母的设备序列号,字母需为大写
     */
    public YSY_MonitorDto deleteYSYMonitor(String accessToken, String deviceSerial) {
        Map<String, Object> paramMap = new HashMap<>();
        paramMap.put("accessToken", accessToken);
        paramMap.put("deviceSerial", deviceSerial);
        String s = HttpUtil.post(YSY_URL + DELETE_DEVICE_URL, paramMap);
        System.out.println(s);
        YSY_MonitorDto monitorDto = JSON.parseObject(s, YSY_MonitorDto.class);
        return monitorDto;
        if ("200".equals(monitorDto.getCode()) || "20017".equals(monitorDto.getCode())) {
            Monitor monitor = new Monitor();
            monitor.setDeviceSerial(monitorDto.getData().getDeviceSerial());
            monitor.setDevicesCode(validateCode);
            monitor.setDeviceName(monitorDto.getData().getDeviceName());
            monitor.setEquipmentState(monitorDto.getData().getStatus());
            monitor.setIsEncrypt(monitorDto.getData().getIsEncrypt());
            monitor.setDeviceType(monitorDto.getData().getModel());
            monitor.setNetAddress(monitorDto.getData().getNetAddress());
            return addMonitorInfoToTable(monitor);
        } else {
            return false;
        }
    }
    /**