package com.dji.sample.component;
|
|
import com.dji.sample.manage.model.DeviceStatusManager;
|
import com.dji.sample.manage.model.enums.DeviceDomainEnum;
|
import com.dji.sample.manage.model.param.DeviceQueryParam;
|
import com.dji.sample.manage.service.IDeviceService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.boot.CommandLineRunner;
|
import org.springframework.stereotype.Component;
|
|
import java.time.LocalDateTime;
|
|
/**
|
* @author sean.zhou
|
* @date 2021/11/24
|
* @version 0.1
|
*/
|
@Component
|
public class ApplicationBootInitial implements CommandLineRunner {
|
|
@Autowired
|
private IDeviceService deviceService;
|
|
/**
|
* Subscribe to the devices that exist in the database when the program starts,
|
* to prevent the data from being different from the pilot side due to program interruptions.
|
* @param args
|
* @throws Exception
|
*/
|
@Override
|
public void run(String... args) throws Exception {
|
deviceService.getDevicesByParams(DeviceQueryParam.builder().build())
|
.forEach(device -> {
|
deviceService.subscribeTopicOnline(device.getDeviceSn());
|
DeviceStatusManager.STATUS_MANAGER.put(
|
DeviceDomainEnum.getVal(device.getDomain()) + "/"
|
+ device.getDeviceSn(), LocalDateTime.now());
|
});
|
}
|
}
|