From 1fb5145e1c794ed1a3c6e3fdee01d391263451df Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Sat, 14 Oct 2023 17:34:17 +0800
Subject: [PATCH] 重复定时、连续执行

---
 src/utils/jobTime.ts |   45 +++++++++++++++++++--------------------------
 1 files changed, 19 insertions(+), 26 deletions(-)

diff --git a/src/utils/jobTime.ts b/src/utils/jobTime.ts
index 0d58eed..4387d5d 100644
--- a/src/utils/jobTime.ts
+++ b/src/utils/jobTime.ts
@@ -8,11 +8,9 @@
  * @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 +22,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 +43,6 @@
             })
           })
 
-          console.log('日期时间:', dateList)
           // 过滤掉不在选择日期内的日期
           finalDateTimeArr = dateList.filter(date => {
             // 如果该日期的时间大于结束时间,则过滤掉
@@ -93,7 +89,6 @@
         // 获取每n周的日期
         const weekDate = gainAllDateBetRange(startDate, endDate, creatPlan.rep_fre_val * 7)
 
-        console.log('星期时间:', weekDate)
         // 获取星期
         const dateList = getDateListOfWeek(weekDate, creatPlan.rep_rule_val)
 
@@ -127,7 +122,6 @@
       case FrequencyType.month: {
         // 先计算这几个月分别是哪个月
         const monthList = getYearMonth(startDate, endDate, creatPlan.rep_fre_val)
-        console.log('月:', monthList)
 
         if (creatPlan.rep_rule_type === RepeatRuleType.day) {
           // 按日期
@@ -152,7 +146,6 @@
             })
           })
 
-          console.log('日期时间:', dateList)
           // 过滤掉不在选择日期内的日期
           finalDateTimeArr = dateList.filter(date => {
             // 如果该日期的时间大于结束时间,则过滤掉
@@ -202,7 +195,6 @@
         // 获取每n周的日期
         const weekDate = gainAllDateBetRange(startDate, endDate, creatPlan.rep_fre_val * 7)
 
-        console.log('星期时间:', weekDate)
         // 获取星期
         const dateList = getDateListOfWeek(weekDate, creatPlan.rep_rule_val)
 
@@ -226,11 +218,8 @@
         // 拼接执行时间即可
         dateList.forEach(date => {
           creatPlan.task_periods?.forEach(timearr => {
-            console.log(timearr,"***************************")
             timearr.forEach(time=>{
-              console.log("time:",time)
               const timeStr = moment.unix(time).format('HH:mm')
-              console.log("timeStr:",timeStr)
 
               finalDateTimeArr.push(date + ' ' + timeStr)
             })
@@ -246,25 +235,32 @@
   var tempDateTimeArr = []
   if (creatPlan.task_type === TaskType.Repeat) {
     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 +274,6 @@
     dateArr.push(dateFormat(new Date(time), 'yyyy-MM-dd')) // 将格式化后的时间存入结果数组
     time += numTime // 每次加n天
   }
-  console.log('每', n, '天的日期', dateArr)
   return dateArr
 }
 
@@ -287,7 +282,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 +309,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