#init
This commit is contained in:
103
maibu-netty-server/src/main/java/com/maibu/init/InitThread.java
Normal file
103
maibu-netty-server/src/main/java/com/maibu/init/InitThread.java
Normal file
@@ -0,0 +1,103 @@
|
||||
package com.fastbee.init;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.fastbee.common.constant.FastBeeConstant;
|
||||
import com.fastbee.common.core.domain.entity.UserClient;
|
||||
import com.fastbee.framework.mybatis.LambdaQueryWrapperX;
|
||||
import com.fastbee.iot.domain.DevicePlan;
|
||||
import com.fastbee.iot.domain.DevicePlanTask;
|
||||
import com.fastbee.iot.enums.DeviceTaskStaus;
|
||||
import com.fastbee.iot.mapper.DevicePlanMapper;
|
||||
import com.fastbee.iot.mapper.DevicePlanTaskMapper;
|
||||
import com.fastbee.memory.GlobalMemory;
|
||||
import com.fastbee.service.DevicePlanTaskMonitorService;
|
||||
import com.fastbee.service.DeviceThreadService;
|
||||
import com.fastbee.system.mapper.SysUserClientMapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.ApplicationArguments;
|
||||
import org.springframework.boot.ApplicationRunner;
|
||||
import org.springframework.core.annotation.Order;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
@Order(20)
|
||||
public class InitThread implements ApplicationRunner {
|
||||
|
||||
|
||||
@Resource(name = FastBeeConstant.TASK.DEVICE_ERROR_MONITOR)
|
||||
private Executor deviceErrorMonitorExecutor;
|
||||
|
||||
@Resource(name = FastBeeConstant.TASK.DEVICE_TASK_HANDLER)
|
||||
private Executor deviceTaskHandlerExecutor;
|
||||
|
||||
@Autowired
|
||||
private DeviceThreadService deviceThreadService;
|
||||
|
||||
@Autowired
|
||||
private DevicePlanTaskMonitorService devicePlanTaskMonitorService;
|
||||
|
||||
@Autowired
|
||||
private DevicePlanMapper devicePlanMapper;
|
||||
|
||||
@Autowired
|
||||
private SysUserClientMapper sysUserClientMapper;
|
||||
|
||||
@Override
|
||||
public void run(ApplicationArguments args) {
|
||||
recoverMemory();
|
||||
init();
|
||||
}
|
||||
|
||||
|
||||
private void init() {
|
||||
//设备错误监听线程
|
||||
deviceErrorMonitorExecutor.execute(() -> {
|
||||
try {
|
||||
deviceThreadService.deviceErrorMonitor();
|
||||
} catch (InterruptedException | IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
});
|
||||
//设备任务处理线程
|
||||
deviceTaskHandlerExecutor.execute(() -> {
|
||||
//任务下发
|
||||
try {
|
||||
devicePlanTaskMonitorService.generatePlanTask();
|
||||
//执行准备队列
|
||||
devicePlanTaskMonitorService.doLoop();
|
||||
//执行任务
|
||||
devicePlanTaskMonitorService.doExecute();
|
||||
} catch (InterruptedException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 恢复内存
|
||||
*/
|
||||
public void recoverMemory(){
|
||||
//todo 启动时清除当前登录记录
|
||||
// System.out.println("开始清除登录信息");
|
||||
// sysUserClientMapper.clearDeviceName();
|
||||
// 未执行完的重复计划
|
||||
LambdaQueryWrapperX<DevicePlan> query = new LambdaQueryWrapperX<>();
|
||||
List<String> list = Arrays.asList(DeviceTaskStaus.NEW.getCode(),DeviceTaskStaus.EXECUTING.getCode(),DeviceTaskStaus.PAUSE.getCode());
|
||||
query.in(DevicePlan::getTaskStaus, list);
|
||||
List<DevicePlan> devicePlanList = devicePlanMapper.selectList(query);
|
||||
if(!CollectionUtils.isEmpty(devicePlanList)){
|
||||
devicePlanList.forEach(GlobalMemory::addDevicePlan);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user