巡检计划定时任务补充(未完成)
parent
ba5731260b
commit
e16a34bc39
@ -0,0 +1,122 @@
|
||||
package com.glxp.api.task;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.glxp.api.dao.inv.DeviceInspectPlanDao;
|
||||
import com.glxp.api.dao.schedule.ScheduledDao;
|
||||
import com.glxp.api.entity.inv.DeviceInspectPlanEntity;
|
||||
import com.glxp.api.entity.system.ScheduledEntity;
|
||||
import com.glxp.api.req.system.ScheduledRequest;
|
||||
import com.glxp.api.service.inv.DeviceInspectPlanService;
|
||||
import com.glxp.api.util.IntUtil;
|
||||
import com.glxp.api.util.RedisUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||
import org.springframework.scheduling.annotation.SchedulingConfigurer;
|
||||
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
|
||||
import org.springframework.scheduling.support.CronTrigger;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
@EnableScheduling
|
||||
public class DevicePlanTask implements SchedulingConfigurer {
|
||||
|
||||
|
||||
@Resource
|
||||
private ScheduledDao scheduledDao;
|
||||
@Resource
|
||||
RedisUtil redisUtil;
|
||||
@Resource
|
||||
private DeviceInspectPlanService deviceInspectPlanService;
|
||||
|
||||
@Resource
|
||||
private DeviceInspectPlanDao deviceInspectPlanDao;
|
||||
|
||||
@Override
|
||||
public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
|
||||
scheduledTaskRegistrar.addTriggerTask(() -> process(),
|
||||
triggerContext -> {
|
||||
ScheduledRequest scheduledRequest = new ScheduledRequest();
|
||||
scheduledRequest.setCronName("devPlanTask");
|
||||
ScheduledEntity scheduledEntity = scheduledDao.findScheduled(scheduledRequest);
|
||||
if (scheduledEntity == null)
|
||||
return null;
|
||||
String cron = scheduledEntity.getCron();
|
||||
if (cron.isEmpty()) {
|
||||
log.error("cron is null");
|
||||
}
|
||||
return new CronTrigger(cron).nextExecutionTime(triggerContext);
|
||||
});
|
||||
}
|
||||
|
||||
private void process() {
|
||||
|
||||
//查询已运行巡检计划
|
||||
List<DeviceInspectPlanEntity> deviceInspectTaskEntities =
|
||||
deviceInspectPlanDao.selectList(new QueryWrapper<DeviceInspectPlanEntity>().eq("planStatus", 2));
|
||||
|
||||
if (CollUtil.isNotEmpty(deviceInspectTaskEntities)) {
|
||||
for (DeviceInspectPlanEntity deviceInspectPlanEntity : deviceInspectTaskEntities) {
|
||||
//计划已结束
|
||||
if (deviceInspectPlanEntity.getEndTime().compareTo(new Date()) < 0) {
|
||||
deviceInspectPlanEntity.setPlanStatus(3);
|
||||
deviceInspectPlanDao.updateById(deviceInspectPlanEntity);
|
||||
continue;
|
||||
}
|
||||
if (deviceInspectPlanEntity.getLastTime() == null) {
|
||||
genTask(deviceInspectPlanEntity);
|
||||
} else if (StrUtil.isNotEmpty(deviceInspectPlanEntity.getFrequency())) {
|
||||
long time = 0;
|
||||
//按时间频率生成任务
|
||||
switch (deviceInspectPlanEntity.getFrequencyUnit()) {
|
||||
case 1://年
|
||||
time = IntUtil.value(deviceInspectPlanEntity.getFrequency()) * 365 * 24 * 60 * 60 * 1000 * 1l;
|
||||
break;
|
||||
case 2://月
|
||||
time = IntUtil.value(deviceInspectPlanEntity.getFrequency()) * 30 * 24 * 60 * 60 * 1000 * 1l;
|
||||
break;
|
||||
case 3://日
|
||||
time = IntUtil.value(deviceInspectPlanEntity.getFrequency()) * 24 * 60 * 60 * 1000 * 1l;
|
||||
break;
|
||||
case 4://小时
|
||||
time = IntUtil.value(deviceInspectPlanEntity.getFrequency()) * 60 * 60 * 1000 * 1l;
|
||||
break;
|
||||
case 5://分
|
||||
time = IntUtil.value(deviceInspectPlanEntity.getFrequency()) * 60 * 1000 * 1l;
|
||||
break;
|
||||
case 6://秒
|
||||
time = IntUtil.value(deviceInspectPlanEntity.getFrequency()) * 1000 * 1l;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
long interval = new Date().getTime() - deviceInspectPlanEntity.getLastTime().getTime();
|
||||
if (interval > time) {
|
||||
genTask(deviceInspectPlanEntity);
|
||||
}
|
||||
|
||||
} else if (deviceInspectPlanEntity.getUseFrequency() != null) {
|
||||
//按使用频率生成任务
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成任务
|
||||
*/
|
||||
public void genTask(DeviceInspectPlanEntity deviceInspectPlanEntity) {
|
||||
deviceInspectPlanService.genTaskDev(deviceInspectPlanEntity);
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue