package com.sandu.ximon.admin.utils; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.StrUtil; import com.sandu.ximon.admin.dto.SingleLightOrderDto; import com.sandu.ximon.dao.enums.WeekEnums; import org.quartz.DateBuilder; import java.util.ArrayList; import java.util.List; /** * @author chenjiantian * @date 2021/12/15 18:06 * 任务命令工具类 */ public class TaskOrderUtil { public static SingleLightOrderDto parseLightOrder(String lightOrder) { if (StrUtil.length(lightOrder) != 6) { return null; } SingleLightOrderDto singleLightOrderDto = new SingleLightOrderDto(); singleLightOrderDto.setHour(NumberUtil.parseInt(lightOrder.substring(0, 2))); singleLightOrderDto.setMinute(NumberUtil.parseInt(lightOrder.substring(2, 4))); singleLightOrderDto.setBrightness(NumberUtil.parseInt(lightOrder.substring(4, 6))); return singleLightOrderDto; } public static Integer[] parseLightWeek(Integer week) { if (week == null) { return null; } List list = new ArrayList<>(); if((WeekEnums.SUNDAY.getCode() & week) > 0){ list.add(DateBuilder.SUNDAY); } if((WeekEnums.MONDAY.getCode() & week) > 0){ list.add(DateBuilder.MONDAY); } if((WeekEnums.TUESDAY.getCode() & week) > 0){ list.add(DateBuilder.TUESDAY); } if((WeekEnums.WEDNESDAY.getCode() & week) > 0){ list.add(DateBuilder.WEDNESDAY); } if((WeekEnums.THURSDAY.getCode() & week) > 0){ list.add(DateBuilder.THURSDAY); } if((WeekEnums.FRIDAY.getCode() & week) > 0){ list.add(DateBuilder.FRIDAY); } if((WeekEnums.SATURDAY.getCode() & week) > 0){ list.add(DateBuilder.SATURDAY); } return list.toArray(new Integer[0]); } /** * 根据给定的时分周生成cron * @param hour 时 * @param minute 分 * @param daysOfWeek 1表示的是星期日,7表示的星期六 * @return cron */ public static String getHourAndMinuteOnGivenDaysOfWeek(int hour, int minute, Integer... daysOfWeek) { StringBuilder cronExpression = new StringBuilder(String.format("0 %d %d ? * %d", minute, hour, daysOfWeek[0])); for (int i = 1; i < daysOfWeek.length; i++) { cronExpression.append(",").append(daysOfWeek[i]); } return cronExpression.toString(); } }