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 { /** * 添加定时器任务 * * @param lightTask 路灯任务实体类,一个路灯任务有多个定时器任务 */ public boolean addLightTaskQuartz(LightTask lightTask) { List 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()); } }