|
|
@ -39,7 +39,7 @@ public class CronConstant { |
|
|
|
// System.out.println("每月:" + month);
|
|
|
|
// System.out.println("每月:" + getDate(month, start, end));
|
|
|
|
|
|
|
|
// TaskCron day = getCronDay("八月8号-15号");
|
|
|
|
TaskCron day = getCronDay("八月8号-15号"); |
|
|
|
// System.out.println("每月8号-15号:" + day);
|
|
|
|
// System.out.println("每月8号-15号:" + getDate(day, start, end));
|
|
|
|
//
|
|
|
@ -154,6 +154,7 @@ public class CronConstant { |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* 根据自然语言转换成开始cron和结束cron |
|
|
|
* */ |
|
|
@ -178,19 +179,21 @@ public class CronConstant { |
|
|
|
|
|
|
|
|
|
|
|
split = natureDate.split(StringUtil.SPLIT_RANGE); |
|
|
|
String start = startCron.generateCron(split[0]); |
|
|
|
taskCron.setStartCron(start); |
|
|
|
|
|
|
|
//结束
|
|
|
|
|
|
|
|
|
|
|
|
String endStr = null; |
|
|
|
if (split.length == 1) { |
|
|
|
String start = startCron.generateCron(split[0]); |
|
|
|
taskCron.setStartCron(start); |
|
|
|
List<String> months = StringUtil.match(natureDate, StringUtil.MONTH_REGEXP); |
|
|
|
List<String> weeks = StringUtil.match(natureDate, StringUtil.WEEK_REGEXP); |
|
|
|
if (CollectionUtils.isEmpty(months) && months.contains("每月")) { |
|
|
|
if (!CollectionUtils.isEmpty(months) && months.contains("每月")) { |
|
|
|
endStr = "每月1号0时0分"; |
|
|
|
taskCron.setFirstFlag(true); |
|
|
|
} else if (CollectionUtils.isEmpty(weeks) &&(weeks.contains("每周") || |
|
|
|
CollectionUtils.isEmpty(weeks) && weeks.contains("每星期"))) { |
|
|
|
} else if (!CollectionUtils.isEmpty(weeks) &&(weeks.contains("每周") || |
|
|
|
!CollectionUtils.isEmpty(weeks) && weeks.contains("每星期"))) { |
|
|
|
endStr = "每周1 "; |
|
|
|
taskCron.setFirstFlag(true); |
|
|
|
} else { |
|
|
@ -198,7 +201,23 @@ public class CronConstant { |
|
|
|
endStr = reg.replaceAll(StringUtil.MINUTE_REGEXP,""); |
|
|
|
endStr += " 23时59分"; |
|
|
|
} |
|
|
|
} else if (natureDate.contains(NatureConstant.SPACE_STR) && natureDate.split(NatureConstant.SPACE).length >= 2) { |
|
|
|
// 多个分段且包含空格
|
|
|
|
//空格分隔 认为最后一个是最小单位,前面都是xx-xx 例如:周一-周5 8点:周一-周五8点和周一到周五23:59:59 周一-周5 8点-9点:周一-周五8点和周一到周五9点
|
|
|
|
String[] manyTypes = natureDate.split(NatureConstant.SPACE); |
|
|
|
String last = manyTypes[manyTypes.length-1]; |
|
|
|
String startStr = natureDate.substring(0, natureDate.indexOf(last)); |
|
|
|
StringBuilder start = new StringBuilder(startStr); |
|
|
|
StringBuilder end = new StringBuilder(startStr); |
|
|
|
String[] mins = last.split(StringUtil.SPLIT_RANGE); |
|
|
|
start.append(mins[0]); |
|
|
|
taskCron.setStartCron(startCron.generateCron(start.toString())); |
|
|
|
// TODO 根据时间单位,确认是时分秒日月周
|
|
|
|
end.append(mins.length > 1 ? mins[1] : "23:59:59"); |
|
|
|
endStr = end.toString(); |
|
|
|
} else { |
|
|
|
String start = startCron.generateCron(split[0]); |
|
|
|
taskCron.setStartCron(start); |
|
|
|
String reg = split[1].replaceAll("\\d+","\\\\d+"); |
|
|
|
endStr = split[0].replaceAll(reg, "") + split[1]; |
|
|
|
} |
|
|
@ -258,6 +277,8 @@ public class CronConstant { |
|
|
|
private String month = ""; |
|
|
|
private String week = ""; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* 将自然时间转化成cron |
|
|
|
* @param natureDate |
|
|
@ -335,6 +356,12 @@ public class CronConstant { |
|
|
|
} else if (StringUtil.isMatch(nature, StringUtil.EVERY_WEEK)) { |
|
|
|
//每周默认是从每周一
|
|
|
|
set("1", type); |
|
|
|
}else if (nature.split(StringUtil.SPLIT_RANGE).length > 1){ |
|
|
|
//例如:每周一-周五 --> 1-5
|
|
|
|
String[] arr = nature.split(StringUtil.SPLIT_RANGE); |
|
|
|
int start = getNum(arr[0]); |
|
|
|
int end = getNum(arr[1]); |
|
|
|
set(start + "-" + end, type); |
|
|
|
} else if (StringUtil.isMatch(nature, StringUtil.WEEK_DAY)){ |
|
|
|
//每周几
|
|
|
|
int num = getNum(nature); |
|
|
@ -360,6 +387,12 @@ public class CronConstant { |
|
|
|
// for (; start <= end; start++) {
|
|
|
|
// set(String.valueOf(start), type);
|
|
|
|
// }
|
|
|
|
} else if (nature.split(StringUtil.SPLIT_RANGE).length > 1){ |
|
|
|
//例如:每周一-周五 --> 1-5
|
|
|
|
String[] arr = nature.split(StringUtil.SPLIT_RANGE); |
|
|
|
int start = getNum(arr[0]); |
|
|
|
int end = getNum(arr[1]); |
|
|
|
set(start + "-" + end, type); |
|
|
|
} else { |
|
|
|
//普通
|
|
|
|
int num = getNum(nature); |
|
|
|