2021与蓝度共同重构项目,服务端
zhanzhiqin
2022-04-29 f02ad2926c2b5a2576e75c2cd6611862e9ec8cea
摄像头
已修改7个文件
已添加1个文件
186 ■■■■■ 文件已修改
dao/src/main/java/com/sandu/ximon/dao/mapper/MonitorMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/resources/mapper/MonitorMapper.xml 11 ●●●● 补丁 | 查看 | 原始文档 | 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 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightReportDataService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/MonitorService.java 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ximon-admin/src/main/java/com/sandu/ximon/admin/utils/ListPagingUtils.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dao/src/main/java/com/sandu/ximon/dao/mapper/MonitorMapper.java
@@ -10,9 +10,9 @@
@Mapper
public interface MonitorMapper extends BaseMapper<Monitor> {
    List<MonitorBo> listMonitorByIds(List<String> list, int bindingState, int equipmentState);
    List<MonitorBo> listMonitorByIds(List<String> list, int equipmentState);
    List<Monitor> listMonitorDeviceSerial1(Long userid, String keyword);
    List<MonitorBo> listMonitorDeviceSerial1(Long userid, String keyword, int bindingState);
}
dao/src/main/resources/mapper/MonitorMapper.xml
@@ -35,17 +35,15 @@
                    #{deviceCode}
                </foreach>
            </if>
            <if test="bindingState != 2">
                AND t1.binding_state = #{bindingState}
            </if>
            <if test="equipmentState != 2">
                AND t1.equipment_state = #{equipmentState}
            </if>
        </where>
    </select>
    <select id="listMonitorDeviceSerial1" resultType="com.sandu.ximon.dao.domain.Monitor">
    <select id="listMonitorDeviceSerial1" resultType="com.sandu.ximon.dao.bo.MonitorBo">
        SELECT
        t1.*
        t1.*, t2.pole_id,
        t3.pole_name, t3.province,t3.city,t3.region,t3.address
        FROM
        monitor t1
        LEFT JOIN pole_binding t2 ON t1.device_serial = t2.device_code
@@ -61,6 +59,9 @@
                OR t1.note LIKE CONCAT(CONCAT('%', #{keyword}), '%')
                OR t3.pole_code LIKE CONCAT(CONCAT('%', #{keyword}), '%'))
            </if>
            <if test="bindingState != 2">
                AND t1.binding_state = #{bindingState}
            </if>
        </where>
    </select>
ximon-admin/src/main/java/com/sandu/ximon/admin/AdminApplication.java
@@ -5,7 +5,6 @@
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
@@ -1,5 +1,6 @@
package com.sandu.ximon.admin.controller;
import com.sandu.common.domain.CommonPage;
import com.sandu.common.domain.ResponseVO;
import com.sandu.common.execption.BusinessException;
import com.sandu.common.object.BaseConditionVO;
@@ -40,14 +41,14 @@
        }
        //返回查询的摄像头信息列表
        List<MonitorBo> listresult;
        CommonPage commonPage;
        if (monitorParam == null) {
            listresult = monitorService.listMonitorByKeyword(baseConditionVO, new MonitorParam());
            commonPage = monitorService.listMonitorByKeyword(baseConditionVO, new MonitorParam());
        } else {
            listresult = monitorService.listMonitorByKeyword(baseConditionVO, monitorParam);
            commonPage = monitorService.listMonitorByKeyword(baseConditionVO, monitorParam);
        }
        return ResponseUtil.successPage(listresult);
        return ResponseUtil.success(commonPage);
    }
ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightReportDataService.java
@@ -131,6 +131,7 @@
        CommonPage commonPage = CommonPage.restPage(lightReportDataBos);
        commonPage.setTotal(stringCommonPage.getTotal());
        commonPage.setTotalPage(stringCommonPage.getTotalPage());
        commonPage.setPageNum(pageNo);
        return commonPage;
    }
ximon-admin/src/main/java/com/sandu/ximon/admin/service/MonitorService.java
@@ -4,12 +4,13 @@
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper;
import com.sandu.common.domain.CommonPage;
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.admin.utils.ListPagingUtils;
import com.sandu.ximon.dao.bo.MonitorBo;
import com.sandu.ximon.dao.domain.Monitor;
import com.sandu.ximon.admin.dto.YSY_AccessTokenDto;
@@ -17,13 +18,13 @@
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;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
@Service
@AllArgsConstructor
@@ -53,47 +54,53 @@
    /**
     * æ¨¡ç³ŠæŸ¥è¯¢
     */
    public List<MonitorBo> listMonitorByKeyword(BaseConditionVO baseConditionVO, MonitorParam monitorParam) {
        List<Monitor> list;
        if (SecurityUtils.getClientId() == null) {
            list = monitorMapper.listMonitorDeviceSerial1(null, monitorParam.getKeyword());
        } else {
            list = monitorMapper.listMonitorDeviceSerial1(SecurityUtils.getUserId(), monitorParam.getKeyword());
        }
        //没有数据时候直接返回空数组
        if (list.size() == 0 || list == null) {
            List<MonitorBo> nullList = new ArrayList<>();
            return nullList;
        }
        List<String> device_serialList = new ArrayList<>(list.size());
        for (Monitor demo : list) {
            device_serialList.add(demo.getDeviceSerial());
            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());
        }
        List<MonitorBo> monitorList;
    public CommonPage listMonitorByKeyword(BaseConditionVO baseConditionVO, MonitorParam monitorParam) {
        //绑定状态:已绑定/未绑定/全部
        if (monitorParam.getBindingState() == null) {
            //全部
            monitorParam.setBindingState(2);
        }
        List<MonitorBo> list;
        if (SecurityUtils.getClientId() == null) {
            list = monitorMapper.listMonitorDeviceSerial1(null, monitorParam.getKeyword(), monitorParam.getBindingState());
        } else {
            list = monitorMapper.listMonitorDeviceSerial1(SecurityUtils.getUserId(), monitorParam.getKeyword(), monitorParam.getBindingState());
        }
        //没有数据时候直接返回空数组
        if (list.size() == 0 || list == null) {
            return new CommonPage();
        }
        List<String> device_serialList = new ArrayList<>(list.size());
        CountDownLatch latch = new CountDownLatch(list.size());
        for (Monitor demo : list) {
            device_serialList.add(demo.getDeviceSerial());
            getMonitorInfo_Async(demo, latch);
        }
        try {
            latch.await();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        if (monitorParam.getEquipmentState() == null) {
            //全部
            monitorParam.setEquipmentState(2);
        }
        monitorList = monitorMapper.listMonitorByIds(device_serialList, monitorParam.getBindingState(), monitorParam.getEquipmentState());
        List<MonitorBo> temp = new ArrayList<>();
        if (monitorParam.getEquipmentState() == 2) {
            temp.addAll(list);
        } else {
            for (MonitorBo monitorBo : list) {
                //筛选状态数据
                if (monitorBo.getEquipmentState().equals(monitorParam.getEquipmentState())) {
                    temp.add(monitorBo);
                }
            }
        }
        return monitorList;
        CommonPage commonPage = ListPagingUtils.pages(temp, baseConditionVO.getPageNo(), baseConditionVO.getPageSize());
        return commonPage;
    }
    public Monitor getYSYMonitorInfoAndaddMonitorToTable(String deviceSerial) {
@@ -169,21 +176,29 @@
     *
     * @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;
    public void getMonitorInfo_Async(Monitor monitor, CountDownLatch countDownLatch) {
        Thread t = new Thread() {
            @Override
            public void run() {
                String token = getAccessToken();
                Map<String, Object> paramMap = new HashMap<>();
                paramMap.put("accessToken", token);
                paramMap.put("deviceSerial", monitor.getDeviceSerial());
                String s = HttpUtil.post(YSY_URL + GET_DEVICE_URL, paramMap);
                YSY_MonitorDto monitorDto = null;
                try {
                    monitorDto = JSON.parseObject(s, YSY_MonitorDto.class);
                    System.out.println(s + "       ----------");
                    monitor.setEquipmentState(monitorDto.getData().getStatus());
                    countDownLatch.countDown();
                } catch (Exception e) {
                    monitor.setEquipmentState(0);
                    countDownLatch.countDown();
                }
            }
        };
        t.start();
    }
    /**
ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleService.java
@@ -167,9 +167,9 @@
        MonitorParam monitorParam = new MonitorParam();
        monitorParam.setEquipmentState(2);
        monitorParam.setBindingState(2);
        List<MonitorBo> monitorBos = SpringContextHolder.getBean(MonitorService.class).listMonitorByKeyword(null, monitorParam);
        List<MonitorBo> monitorBos = SpringContextHolder.getBean(MonitorService.class).listMonitorByKeyword(null, monitorParam).getList();
        monitorParam.setEquipmentState(1);
        List<MonitorBo> online = SpringContextHolder.getBean(MonitorService.class).listMonitorByKeyword(null, monitorParam);
        List<MonitorBo> online = SpringContextHolder.getBean(MonitorService.class).listMonitorByKeyword(null, monitorParam).getList();
        result.put("monitorOnlineCount", online.size());
        result.put("monitorTotalCount", monitorBos.size());
ximon-admin/src/main/java/com/sandu/ximon/admin/utils/ListPagingUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
package com.sandu.ximon.admin.utils;
import com.sandu.common.domain.CommonPage;
import com.sandu.ximon.dao.bo.MonitorBo;
import org.apache.poi.ss.formula.functions.T;
import java.util.ArrayList;
import java.util.List;
/**
 * @author ZZQ
 * @date 2022/4/29 10:47
 */
public class ListPagingUtils {
    public static CommonPage pages(List list, Integer pageNo, Integer pageSize) {
        CommonPage commonPage;
        //开始截断位置
        int fromIndex = (pageNo - 1) * pageSize;
        //结束截断位置
        int toIndex = fromIndex + pageSize;
        //总页数
        int totalPage = (int) Math.ceil(list.size() * 1.0 / pageSize);
        //结束截断位置大于list总长度时,结束截断位置等于list最后一位长度
        if (toIndex > list.size()) {
            toIndex = list.size();
        }
        //查询的页数大于总页数,直接返回空数组
        if (pageNo > totalPage || fromIndex > list.size()) {
            commonPage = CommonPage.restPage(new ArrayList<>());
            commonPage.setTotal(Long.valueOf(list.size()));
            commonPage.setTotalPage(totalPage);
            commonPage.setPageNum(pageNo);
            commonPage.setPageSize(pageSize);
            return commonPage;
        } else {
            commonPage = CommonPage.restPage(list.subList(fromIndex, toIndex));
            commonPage.setTotal(Long.valueOf(list.size()));
            commonPage.setTotalPage(totalPage);
            commonPage.setPageNum(pageNo);
            commonPage.setPageSize(pageSize);
            return commonPage;
        }
    }
}