package com.sandu.ximon.admin.service;
|
|
import cn.hutool.core.util.ArrayUtil;
|
import com.sandu.common.execption.BusinessException;
|
import com.sandu.common.service.impl.BaseServiceImpl;
|
import com.sandu.ximon.admin.dto.SingleLightOrderDto;
|
import com.sandu.ximon.admin.utils.TaskOrderUtil;
|
import com.sandu.ximon.dao.domain.LightTask;
|
import com.sandu.ximon.dao.domain.LightTaskQuartz;
|
import com.sandu.ximon.dao.mapper.LightTaskQuartzMapper;
|
import org.quartz.CronScheduleBuilder;
|
import org.quartz.DateBuilder;
|
import org.springframework.stereotype.Service;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* @author chenjiantian
|
* @date 2021/12/15 17:46
|
*/
|
@Service
|
public class LightTaskQuartzService extends BaseServiceImpl<LightTaskQuartzMapper, LightTaskQuartz> {
|
|
/**
|
* 添加定时器任务
|
*
|
* @param lightTask 路灯任务实体类,一个路灯任务有多个定时器任务
|
*/
|
public boolean addLightTaskQuartz(LightTask lightTask) {
|
List<LightTaskQuartz> list = new ArrayList<>();
|
|
// 添加开灯定时器
|
String openOrder = lightTask.getOpenOrder();
|
SingleLightOrderDto singleLightOrder = TaskOrderUtil.parseLightOrder(openOrder);
|
Integer[] weekArrays = TaskOrderUtil.parseLightWeek(lightTask.getWeek());
|
if (singleLightOrder == null) {
|
throw new BusinessException("解析单灯命令失败");
|
}
|
if(ArrayUtil.isEmpty(weekArrays)) {
|
throw new BusinessException("请设置星期");
|
}
|
String cron = TaskOrderUtil.getHourAndMinuteOnGivenDaysOfWeek(singleLightOrder.getHour(), singleLightOrder.getMinute(), weekArrays);
|
|
LightTaskQuartz lightTaskQuartz = new LightTaskQuartz();
|
lightTaskQuartz.setTaskId(lightTask.getTaskId());
|
lightTaskQuartz.setCronExpression(cron);
|
|
|
return false;
|
}
|
|
public static void main(String[] args) {
|
System.out.println(CronScheduleBuilder.atHourAndMinuteOnGivenDaysOfWeek(0, 1, DateBuilder.SUNDAY).build().getCalendarName());
|
}
|
|
|
}
|