2021与蓝度共同重构项目,服务端
fix
zhanzhiqin
2022-04-28 620a3be8596434a8796469a8213a0066c836a1d4
fix
已修改6个文件
250 ■■■■■ 文件已修改
dao/src/main/java/com/sandu/ximon/dao/domain/Monitor.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/java/com/sandu/ximon/dao/mapper/MonitorMapper.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/resources/mapper/MonitorMapper.xml 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/AdminApplication.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/MonitorController.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/MonitorService.java 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/java/com/sandu/ximon/dao/domain/Monitor.java
@@ -52,11 +52,6 @@
    private Integer isEncrypt;
    /**
     * 工作状态
     */
    private Integer workState;
    /**
     * 绑定状态
     */
    private Integer bindingState;
dao/src/main/java/com/sandu/ximon/dao/mapper/MonitorMapper.java
@@ -9,15 +9,10 @@
@Mapper
public interface MonitorMapper extends BaseMapper<Monitor> {
    List<Monitor> listMonitorByKeyword(String keyword, int equipmentState1, int equipmentState2,
                                       int bindingState1, int bindingState2);
    List<Monitor> listMonitorByKeyword1(String keyword, int bindingState1, int bindingState2);
    List<MonitorBo> listMonitorByIds(List<String> list, int bindingState, int equipmentState);
    List<String> listMonitorDeviceSerial(Long userid, String keyword);
    List<Monitor> listMonitorDeviceSerial1(Long userid, String keyword);
}
dao/src/main/resources/mapper/MonitorMapper.xml
@@ -10,41 +10,14 @@
        <result property="devicesCode" column="devices_code" jdbcType="VARCHAR"/>
        <result property="deviceName" column="device_name" jdbcType="VARCHAR"/>
        <result property="deviceType" column="device_type" jdbcType="VARCHAR"/>
        <result property="equipmentStatus" column="equipment_status" jdbcType="INTEGER"/>
        <result property="equipmentState" column="equipment_state" jdbcType="INTEGER"/>
        <result property="isEncrypt" column="is_encrypt" jdbcType="INTEGER"/>
        <result property="workState" column="work_state" jdbcType="INTEGER"/>
        <result property="bindingState" column="binding_state" jdbcType="INTEGER"/>
        <result property="note" column="note" jdbcType="VARCHAR"/>
        <result property="addTime" column="add_time" jdbcType="TIMESTAMP"/>
        <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
        <result property="netAddress" column="net_address" jdbcType="VARCHAR"/>
    </resultMap>
    <select id="listMonitorByKeyword" resultType="com.sandu.ximon.dao.domain.Monitor">
        SELECT    * FROM   (SELECT    * FROM    (SELECT    * FROM    monitor AS table1
              WHERE device_serial  LIKE CONCAT(CONCAT('%', #{keyword}), '%')
              ) AS table2
         WHERE equipment_status = #{equipmentState1}
         OR equipment_status = #{equipmentState2}) AS table3
        WHERE binding_state = #{bindingState1} OR binding_state = #{bindingState2};
    </select>
    <select id="listMonitorByKeyword1" resultType="com.sandu.ximon.dao.domain.Monitor">
        SELECT
            t1.*, t2.pole_id,
            t3.pole_name
        FROM
            monitor t1
        LEFT JOIN pole_binding t2 ON t1.device_serial = t2.device_code
        AND t2.device_type = 7
        LEFT JOIN pole t3 ON t3.id = t2.pole_id
        WHERE
            t1.device_serial  LIKE CONCAT(CONCAT('%', #{keyword}), '%')
        OR t2.pole_id LIKE CONCAT(CONCAT('%', #{keyword}), '%')
        OR t3.pole_name LIKE CONCAT(CONCAT('%', #{keyword}), '%')
        AND binding_state = #{bindingState1}
        OR binding_state = #{bindingState2}
        ORDER BY
            t1.id DESC
    </select>
    <select id="listMonitorByIds" resultType="com.sandu.ximon.dao.bo.MonitorBo">
        SELECT
@@ -70,9 +43,9 @@
            </if>
        </where>
    </select>
    <select id="listMonitorDeviceSerial" resultType="java.lang.String">
    <select id="listMonitorDeviceSerial1" resultType="com.sandu.ximon.dao.domain.Monitor">
        SELECT
        device_serial
        t1.*
        FROM
        monitor t1
        LEFT JOIN pole_binding t2 ON t1.device_serial = t2.device_code
ximon-admin/src/main/java/com/sandu/ximon/admin/AdminApplication.java
@@ -5,6 +5,7 @@
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@EnableAsync
@SpringBootApplication(scanBasePackages = {"com.sandu.ximon.admin","com.sandu.common","com.sandu.ximon.dao"})
public class AdminApplication {
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/MonitorController.java
@@ -11,7 +11,6 @@
import com.sandu.ximon.dao.bo.MonitorBo;
import com.sandu.ximon.dao.domain.Monitor;
import com.sandu.ximon.dao.enums.MenuEnum;
import com.sandu.ximon.dao.mapper.MonitorMapper;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
@@ -26,7 +25,6 @@
public class MonitorController {
    private final MonitorService monitorService;
    private final MonitorMapper monitorMapper;
    private PermissionConfig permissionConfig;
@@ -80,17 +78,6 @@
    }
    /**
     * 获取萤石云摄像头信息
     *
     * @param
     * @return
     */
    @GetMapping("/getYSYInfo/{deviceSerial}")
    public ResponseVO<Object> getMonitorInfo(@PathVariable String deviceSerial) {
        return ResponseUtil.success(monitorService.getMonitorInfo(deviceSerial));
    }
    /**
     * 添加萤石云摄像头
     *
     * @param monitorParam 添加摄像头结果
@@ -101,41 +88,13 @@
        if (monitorParam == null || monitorParam.getDeviceSerial() == null) {
            throw new BusinessException("参数不正确!");
        }
        YSY_MonitorDto addMonitorDto = monitorService.addYSYMonitor(monitorService.getAccessToken(), monitorParam.getDeviceSerial(), monitorParam.getValidateCode());
//        YSY_MonitorDto addMonitorDto = monitorService.addYSYMonitor(monitorParam.getAccessToken(), monitorParam.getDeviceSerial());
        boolean flag = monitorService.addYSYMonitor(monitorParam.getDeviceSerial(), monitorParam.getValidateCode());
        if ("200".equals(addMonitorDto.getCode())) {
            getYSYMonitorInfoAndaddMonitorToTable(monitorParam);
            return ResponseUtil.success(addMonitorDto);
        } else if ("20017".equals(addMonitorDto.getCode())) {
            //已经被自己添加的摄像头需要添加到数据库
            boolean falg = getYSYMonitorInfoAndaddMonitorToTable(monitorParam);
            if (falg) {
                return ResponseUtil.success("添加摄像头成功!");
            } else {
                return ResponseUtil.fail("添加摄像头失败!");
            }
        if (flag) {
            return ResponseUtil.success("添加摄像头成功!");
        } else {
            return ResponseUtil.fail(addMonitorDto.getMsg());
        }
    }
    /**
     * 删除萤石云摄像头
     *
     * @param monitorParam 添加摄像头结果
     * @return
     */
    @PostMapping("/deleteYSYMonitor")
    public ResponseVO<Object> deleteYSYMonitor(@RequestBody MonitorParam monitorParam) {
        YSY_MonitorDto addMonitorDto = monitorService.deleteYSYMonitor(monitorService.getAccessToken(), monitorParam.getDeviceSerial());
        if ("200".equals(addMonitorDto.getCode())) {
            return ResponseUtil.success(addMonitorDto);
        } else {
            return ResponseUtil.fail(addMonitorDto.getMsg());
            return ResponseUtil.fail("添加摄像头失败!");
        }
    }
@@ -161,40 +120,6 @@
            return ResponseUtil.success(getMonitorDto.getData());
        } else {
            return ResponseUtil.fail(getMonitorDto.getMsg());
        }
    }
    /**
     * 获取单个设备信息并且存储到数据库
     *
     * @param monitorParam
     * @return
     */
    @PostMapping("/getYSYMonitorInfoAndaddMonitorToTable")
    public boolean getYSYMonitorInfoAndaddMonitorToTable(@RequestBody MonitorParam monitorParam) {
        Monitor monitor = monitorService.getYSYMonitorInfoAndaddMonitorToTable(monitorParam);
        return monitorService.addMonitorInfoToTable(monitor);
    }
    /**
     * 编辑摄像头设备信息
     */
    @PostMapping("/UpDateMonitorInfo")
    public ResponseVO<Object> UpDateMonitorInfo(@RequestBody MonitorParam monitorParam) {
        Monitor monitor = new Monitor();
        monitor.setId(monitorParam.getId());
        monitor.setDeviceSerial(monitorParam.getDeviceSerial());
        monitor.setDevicesCode(monitorParam.getDevicesCode());
        monitor.setWorkState(monitorParam.getWorkState());
        monitor.setNote(monitorParam.getNote());
        boolean falg = monitorService.upDateMonitorInfo(monitorParam);
        if (falg) {
            return ResponseUtil.success("更新数据成功");
        } else {
            return ResponseUtil.fail("更新数据失败");
        }
    }
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;
        }
    }
    /**