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.constant.Constants;
|
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) != 7) {
|
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, 7)));
|
return singleLightOrderDto;
|
}
|
|
public static Integer[] parseLightWeek(Integer week) {
|
if (week == null) {
|
return null;
|
}
|
List<Integer> 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();
|
}
|
}
|