JAvaはcron式を生成し、Cron式ツールクラスを自動的に生成する
54470 ワード
package com.south.utils;
import com.south.data.vo.TaskScheduleModel;
/**
* @Classname CronUtil
* @Description TODO
* @Date 2019/7/30 17:39
* @Created by zhangzhenjun
*/
public class CronUtil {
/**
*
* : Cron
*@param taskScheduleModel
*@return String
*/
public static String createCronExpression(TaskScheduleModel taskScheduleModel){
StringBuffer cronExp = new StringBuffer("");
if(null == taskScheduleModel.getJobType()) {
System.out.println(" " );//
}
if (null != taskScheduleModel.getSecond()
&& null == taskScheduleModel.getMinute()
&& null == taskScheduleModel.getHour()){
//
if (taskScheduleModel.getJobType().intValue() == 0) {
cronExp.append("0/").append(taskScheduleModel.getSecond());
cronExp.append(" ");
cronExp.append("* ");
cronExp.append("* ");
cronExp.append("* ");
cronExp.append("* ");
cronExp.append("?");
}
}
if (null != taskScheduleModel.getSecond()
&& null != taskScheduleModel.getMinute()
&& null == taskScheduleModel.getHour()){
//
if (taskScheduleModel.getJobType().intValue() == 4) {
cronExp.append("* ");
cronExp.append("0/").append(taskScheduleModel.getMinute());
cronExp.append(" ");
cronExp.append("* ");
cronExp.append("* ");
cronExp.append("* ");
cronExp.append("?");
}
}
if (null != taskScheduleModel.getSecond()
&& null != taskScheduleModel.getMinute()
&& null != taskScheduleModel.getHour()) {
//
cronExp.append(taskScheduleModel.getSecond()).append(" ");
//
cronExp.append(taskScheduleModel.getMinute()).append(" ");
//
cronExp.append(taskScheduleModel.getHour()).append(" ");
//
if(taskScheduleModel.getJobType().intValue() == 1){
cronExp.append("* ");//
cronExp.append("* ");//
cronExp.append("?");//
}
//
else if(taskScheduleModel.getJobType().intValue() == 3){
//
cronExp.append("? ");
//
cronExp.append("* ");
//
Integer[] weeks = taskScheduleModel.getDayOfWeeks();
for(int i = 0; i < weeks.length; i++){
if(i == 0){
cronExp.append(weeks[i]);
} else{
cronExp.append(",").append(weeks[i]);
}
}
}
//
else if(taskScheduleModel.getJobType().intValue() == 2){
//
Integer[] days = taskScheduleModel.getDayOfMonths();
for(int i = 0; i < days.length; i++){
if(i == 0){
cronExp.append(days[i]);
} else{
cronExp.append(",").append(days[i]);
}
}
//
cronExp.append(" * ");
//
cronExp.append("?");
}
}
else {
System.out.println(" " );//
}
return cronExp.toString();
}
/**
*
* :
*@param taskScheduleModel
*@return String
*/
public static String createDescription(TaskScheduleModel taskScheduleModel){
StringBuffer description = new StringBuffer("");
//
// Date startTime = taskScheduleModel.getScheduleStartTime();
if (null != taskScheduleModel.getSecond()
&& null != taskScheduleModel.getMinute()
&& null != taskScheduleModel.getHour()) {
//
if(taskScheduleModel.getJobType().intValue() == 1){
description.append(" ");
description.append(taskScheduleModel.getHour()).append(" ");
description.append(taskScheduleModel.getMinute()).append(" ");
description.append(taskScheduleModel.getSecond()).append(" ");
description.append(" ");
}
//
else if(taskScheduleModel.getJobType().intValue() == 3){
if(taskScheduleModel.getDayOfWeeks() != null && taskScheduleModel.getDayOfWeeks().length > 0) {
String days = "";
for(int i : taskScheduleModel.getDayOfWeeks()) {
days += " " + i;
}
description.append(" ").append(days).append(" ");
}
if (null != taskScheduleModel.getSecond()
&& null != taskScheduleModel.getMinute()
&& null != taskScheduleModel.getHour()) {
description.append(",");
description.append(taskScheduleModel.getHour()).append(" ");
description.append(taskScheduleModel.getMinute()).append(" ");
description.append(taskScheduleModel.getSecond()).append(" ");
}
description.append(" ");
}
//
else if(taskScheduleModel.getJobType().intValue() == 2){
//
if(taskScheduleModel.getDayOfMonths() != null && taskScheduleModel.getDayOfMonths().length > 0) {
String days = "";
for(int i : taskScheduleModel.getDayOfMonths()) {
days += i + " ";
}
description.append(" ").append(days).append(" ");
}
description.append(taskScheduleModel.getHour()).append(" ");
description.append(taskScheduleModel.getMinute()).append(" ");
description.append(taskScheduleModel.getSecond()).append(" ");
description.append(" ");
}
}
return description.toString();
}
//
public static void main(String[] args) {
// : 12 12 12 start
TaskScheduleModel taskScheduleModel = new TaskScheduleModel();
taskScheduleModel.setJobType(0);//
taskScheduleModel.setSecond(30);
String cronExp = createCronExpression(taskScheduleModel);
System.out.println(cronExp);
taskScheduleModel.setJobType(4);//
taskScheduleModel.setMinute(8);
String cronExpp = createCronExpression(taskScheduleModel);
System.out.println(cronExpp);
taskScheduleModel.setJobType(1);//
Integer hour = 12; //
Integer minute = 12; //
Integer second = 12; //
taskScheduleModel.setHour(hour);
taskScheduleModel.setMinute(minute);
taskScheduleModel.setSecond(second);
String cropExp = createCronExpression(taskScheduleModel);
System.out.println(cropExp + ":" + createDescription(taskScheduleModel));
// : 12 12 12 end
taskScheduleModel.setJobType(3);//
Integer[] dayOfWeeks = new Integer[3];
dayOfWeeks[0] = 1;
dayOfWeeks[1] = 2;
dayOfWeeks[2] = 3;
taskScheduleModel.setDayOfWeeks(dayOfWeeks);
cropExp = createCronExpression(taskScheduleModel);
System.out.println(cropExp + ":" + createDescription(taskScheduleModel));
taskScheduleModel.setJobType(2);//
Integer[] dayOfMonths = new Integer[3];
dayOfMonths[0] = 1;
dayOfMonths[1] = 21;
dayOfMonths[2] = 13;
taskScheduleModel.setDayOfMonths(dayOfMonths);
cropExp = createCronExpression(taskScheduleModel);
System.out.println(cropExp + ":" + createDescription(taskScheduleModel));
}
}
package com.south.data.vo;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModel;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
/**
* @Classname TaskScheduleModel
* @Description TODO
* @Date 2019/7/30 16:14
* @Created by zhangzhenjun
*/
@ApiModel(description = "cron ")
@Getter
@Setter
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
public class TaskScheduleModel extends Model<TaskScheduleModel> {
/**
* :
* 1 ->
* 2 ->
* 3 ->
*/
Integer jobType;
/** */
Integer[] dayOfWeeks;
/** */
Integer[] dayOfMonths;
/** */
Integer second;
/** */
Integer minute;
/** */
Integer hour;
}