EquipmentOnline.java 1.77 KB
package com.ruoyi.pojo.equipment;

import com.ruoyi.equipment.domain.Equipment;
import com.ruoyi.equipment.mapper.EquipmentMapper;
import com.ruoyi.pojo.request.HeartPackageVo;
import com.ruoyi.utils.ConstDateUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;

import static com.ruoyi.common.ConstEquipmentProperties.*;

/**
 * 设备在线表
 *
 * @author 20412
 */
@Component
public class EquipmentOnline {

    Logger log = LoggerFactory.getLogger(EquipmentOnline.class);

//    @Autowired
//    private EquipmentOnline(EquipmentMapper mapper) {
//        log.info("初始化设备信息");
//        initClient(mapper);
//        log.info("设备信息初始化完毕");
//    }

    private void initClient(EquipmentMapper mapper) {
        List<Equipment> list = mapper.selectEquipmentList(null);
        for (Equipment equipment : list) {
            if (Objects.isNull(equipment.getLastHeartRes())) {
                equipment.setOnlineClient(DEVICE_OFFLINE);
            } else {
                LocalDateTime time = ConstDateUtil.getLocalDateTimeByLongTime(equipment.getLastHeartRes().getTime());
                LocalDateTime nowTime = LocalDateTime.now();
                long timeout = ChronoUnit.MINUTES.between(time, nowTime);
                if (DEVICE_OFFLINE_TIME.compareTo(timeout) < 0) {
                    equipment.setOnlineClient(DEVICE_OFFLINE);
                } else {
                    equipment.setOnlineClient(DEVICE_ONLINE);
                }
            }
        }
        mapper.updateEquipments(list);
    }






}