From 54849757852f6ab40eb17afbd03d1d839b60a38d Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Mon, 13 Nov 2023 17:09:15 +0800
Subject: [PATCH] 重复定时和连续执行
---
src/utils/jobTime.ts | 72 ++++++++++++++---------------------
1 files changed, 29 insertions(+), 43 deletions(-)
diff --git a/src/utils/jobTime.ts b/src/utils/jobTime.ts
index 0d58eed..fe52128 100644
--- a/src/utils/jobTime.ts
+++ b/src/utils/jobTime.ts
@@ -8,11 +8,8 @@
* @param creatPlan
*/
export function getFlyTimeList (creatPlan: CreatePlan) {
- console.log('表单', creatPlan)
-
const startDate = moment.unix(creatPlan.task_days[0]).toDate()
const endDate = moment.unix(creatPlan.task_days[1]).toDate()
- console.log('开始时间:', startDate, '结束时间:', endDate)
let finalDateTimeArr = [] as any
if (creatPlan.task_type === TaskType.Repeat) {
@@ -24,7 +21,6 @@
case FrequencyType.month: {
// 先计算这几个月分别是哪个月
const monthList = getYearMonth(startDate, endDate, creatPlan.rep_fre_val)
- console.log('月:', monthList)
if (creatPlan.rep_rule_type === RepeatRuleType.day) {
// 按日期
@@ -46,7 +42,6 @@
})
})
- console.log('日期时间:', dateList)
// 过滤掉不在选择日期内的日期
finalDateTimeArr = dateList.filter(date => {
// 如果该日期的时间大于结束时间,则过滤掉
@@ -93,7 +88,6 @@
// 获取每n周的日期
const weekDate = gainAllDateBetRange(startDate, endDate, creatPlan.rep_fre_val * 7)
- console.log('星期时间:', weekDate)
// 获取星期
const dateList = getDateListOfWeek(weekDate, creatPlan.rep_rule_val)
@@ -123,11 +117,10 @@
} else if (creatPlan.task_type === TaskType.Continuous) {
// 连续执行
switch (creatPlan.rep_fre_type) {
- // 月
+ // 月
case FrequencyType.month: {
// 先计算这几个月分别是哪个月
const monthList = getYearMonth(startDate, endDate, creatPlan.rep_fre_val)
- console.log('月:', monthList)
if (creatPlan.rep_rule_type === RepeatRuleType.day) {
// 按日期
@@ -141,8 +134,7 @@
}
creatPlan.task_periods?.forEach(timearr => {
-
- timearr.forEach(time=>{
+ timearr.forEach(time => {
const timeStr = moment.unix(time).format('HH:mm')
const str = date + '-' + day + ' ' + timeStr
const tempDate = new Date(str)
@@ -152,7 +144,6 @@
})
})
- console.log('日期时间:', dateList)
// 过滤掉不在选择日期内的日期
finalDateTimeArr = dateList.filter(date => {
// 如果该日期的时间大于结束时间,则过滤掉
@@ -185,8 +176,7 @@
const tmpDate = new Date(yearMonth)
const date = getMonthWeek(tmpDate.getFullYear(), tmpDate.getMonth(), creatPlan.rep_rule_val[0], creatPlan.rep_rule_val[1])
creatPlan.task_periods?.forEach(timearr => {
-
- timearr.forEach(time=>{
+ timearr.forEach(time => {
const timeStr = moment.unix(time).format('HH:mm')
const dateStr = date + ' ' + timeStr
finalDateTimeArr.push(dateStr)
@@ -197,44 +187,37 @@
break
}
- // 周
+ // 周
case FrequencyType.week: {
// 获取每n周的日期
const weekDate = gainAllDateBetRange(startDate, endDate, creatPlan.rep_fre_val * 7)
- console.log('星期时间:', weekDate)
// 获取星期
const dateList = getDateListOfWeek(weekDate, creatPlan.rep_rule_val)
// 拼接时间
dateList.forEach(date => {
creatPlan.task_periods?.forEach(timearr => {
-
- timearr.forEach(time=>{
+ timearr.forEach(time => {
const timeStr = moment.unix(time).format('HH:mm')
finalDateTimeArr.push(date + ' ' + timeStr)
})
-
})
})
break
}
- // 日
+ // 日
case FrequencyType.day: {
// 根据每几天获取时间
const dateList = gainAllDateBetRange(startDate, endDate, creatPlan.rep_fre_val)
// 拼接执行时间即可
dateList.forEach(date => {
creatPlan.task_periods?.forEach(timearr => {
- console.log(timearr,"***************************")
- timearr.forEach(time=>{
- console.log("time:",time)
+ timearr.forEach(time => {
const timeStr = moment.unix(time).format('HH:mm')
- console.log("timeStr:",timeStr)
finalDateTimeArr.push(date + ' ' + timeStr)
})
-
})
})
break
@@ -243,28 +226,34 @@
}
console.log('最终时间:', finalDateTimeArr)
- var tempDateTimeArr = []
+ let tempDateTimeArr = []
if (creatPlan.task_type === TaskType.Repeat) {
- tempDateTimeArr = finalDateTimeArr.map(dateTime=>[dateTime])
-
- }else if (creatPlan.task_type === TaskType.Continuous){
-
+ tempDateTimeArr = finalDateTimeArr.map(dateTime => [dateTime])
+ } else if (creatPlan.task_type === TaskType.Continuous) {
+ for (let i = 0; i < finalDateTimeArr.length; i = i + 2) {
+ tempDateTimeArr.push([finalDateTimeArr[i], finalDateTimeArr[i + 1]])
+ }
}
-
-
-
-
-
-
-
- // 对finalDateTimeArr进行时间过滤,筛选掉过去时间和无效时间
- const futureDateTimeArr = finalDateTimeArr.filter(dateStr => {
- return new Date(dateStr).getTime() >= new Date().getTime()
+ // 对tempDateTimeArr进行时间过滤,筛选掉过去时间和无效时间
+ const futureDateTimeArr = tempDateTimeArr.filter(dateArr => {
+ return new Date(dateArr[0]).getTime() >= new Date().getTime()
})
+
console.log('未来时间:', futureDateTimeArr)
- return futureDateTimeArr
+ const futureDateTimeUnixArr = [] as any
+ futureDateTimeArr.forEach(dateArr => {
+ const list = [] as any
+
+ dateArr.forEach(dateTimeStr => {
+ const timestamp = moment(dateTimeStr).unix()
+ list.push(timestamp)
+ })
+ futureDateTimeUnixArr.push(list)
+ })
+ console.log('未来时间unix:', futureDateTimeUnixArr)
+ return futureDateTimeUnixArr
}
// 获取一个日期范围内的每n天的日期,入参为Date对象
@@ -278,7 +267,6 @@
dateArr.push(dateFormat(new Date(time), 'yyyy-MM-dd')) // 将格式化后的时间存入结果数组
time += numTime // 每次加n天
}
- console.log('每', n, '天的日期', dateArr)
return dateArr
}
@@ -287,7 +275,6 @@
* @param date
*/
function getDateListOfWeek (dateArr: any[], week: number[]) {
- console.log('获取当前日期的星期数的日期:', dateArr, week)
const list = [] as any
dateArr.forEach(dateStr => {
const date = new Date(dateStr)
@@ -315,7 +302,6 @@
const startTime = startDate.getTime()
const endTime = endDate.getTime()
- console.log('开始时间结束时间时间戳', startTime, endTime)
let date = startDate
for (let dateTime = startTime; dateTime <= endTime;) {
--
Gitblit v1.9.3