2021与蓝度共同重构项目,服务端
zhanzhiqin
2022-04-29 f02ad2926c2b5a2576e75c2cd6611862e9ec8cea
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) {
    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", deviceSerial);
                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);
            return monitorDto.getData();
                    System.out.println(s + "       ----------");
                    monitor.setEquipmentState(monitorDto.getData().getStatus());
                    countDownLatch.countDown();
        } catch (Exception e) {
            e.printStackTrace();
                    monitor.setEquipmentState(0);
                    countDownLatch.countDown();
        }
        return null;
            }
        };
        t.start();
    }
    /**