2021与蓝度共同重构项目,服务端
liuhaonan
2022-11-04 e55c8b0a92eb9715edd90c31dfd4de51a47b588b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
package com.sandu.ximon.admin.utils;
 
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) != 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;
    }
 
    /**
     * 转成cron的星期表达式
     * @param week
     * @return
     */
    public static List<Integer> parseLightCronWeek2List(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;
    }
 
    /**
     * 根据给定的时分周生成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();
    }
 
    /**
     * 转成的给前端星期表达式
     * @param week
     * @return
     */
    public static List<Integer> parseLightWeek2List(Integer week) {
        if (week == null) {
            return null;
        }
        List<Integer> list = new ArrayList<>();
        if((WeekEnums.MONDAY.getCode() & week) > 0){
            list.add(WeekEnums.MONDAY.getCode());
        }
        if((WeekEnums.TUESDAY.getCode() & week) > 0){
            list.add(WeekEnums.TUESDAY.getCode());
        }
        if((WeekEnums.WEDNESDAY.getCode() & week) > 0){
            list.add(WeekEnums.WEDNESDAY.getCode());
        }
        if((WeekEnums.THURSDAY.getCode() & week) > 0){
            list.add(WeekEnums.THURSDAY.getCode());
        }
        if((WeekEnums.FRIDAY.getCode() & week) > 0){
            list.add(WeekEnums.FRIDAY.getCode());
        }
        if((WeekEnums.SATURDAY.getCode() & week) > 0){
            list.add(WeekEnums.SATURDAY.getCode());
        }
        if((WeekEnums.SUNDAY.getCode() & week) > 0){
            list.add(WeekEnums.SUNDAY.getCode());
        }
        return list;
    }
}