|
@@ -61,8 +61,10 @@ func Task() {
|
|
|
//GetLzProductList()GetLzProductDetail
|
|
|
|
|
|
// 定时新增手工指标数据提醒
|
|
|
- addEdbTask := task.NewTask("sendWaitReport", "0 * * * * * ", AddEdbTask)
|
|
|
+ addEdbTask := task.NewTask("sendWaitReport", "1 0 0 * * * ", AddEdbTask)
|
|
|
task.AddTask("定时新增手工指标数据提醒", addEdbTask)
|
|
|
+ //每次服务启动都需要执行一次的
|
|
|
+ _ = AddEdbTask(nil)
|
|
|
|
|
|
fmt.Println("task end")
|
|
|
}
|
|
@@ -202,25 +204,30 @@ endData:=time.Now().UnixNano()/1e6
|
|
|
fmt.Println(dateTime)
|
|
|
*/
|
|
|
|
|
|
-func AddEdbTask(cont context.Context) (err error) {
|
|
|
- //每次先清除掉昨天的定时任务,再次开启今天的定时任务
|
|
|
- for taskName := range TaskNameMap {
|
|
|
- task.DeleteTask(taskName)
|
|
|
- delete(TaskNameMap, taskName)
|
|
|
- }
|
|
|
- edbTaskAddTask()
|
|
|
- return
|
|
|
-}
|
|
|
+// EdbTaskNameMap 手工指标定时任务名称map集合
|
|
|
+var EdbTaskNameMap map[string]map[string]bool
|
|
|
|
|
|
-// TaskNameMap 定时任务名称map集合
|
|
|
-var TaskNameMap map[string]bool
|
|
|
+// EdbTaskNameChannel 手工指标定时任务名称channel
|
|
|
+var EdbTaskNameChannel chan string
|
|
|
|
|
|
-func edbTaskAddTask() {
|
|
|
+// EdbTaskStopChannel 手工指标定时任务停止channel
|
|
|
+var EdbTaskStopChannel chan string
|
|
|
+
|
|
|
+// EdbTaskRunNum 手工指标定时任务开始次数
|
|
|
+var EdbTaskRunNum int
|
|
|
+
|
|
|
+// AddEdbTask 新增手工指标数据录入提醒
|
|
|
+func AddEdbTask(cont context.Context) (err error) {
|
|
|
+ //func AddEdbTask() (err error) {
|
|
|
list, err := models.GetEdbInfoByFrequencyNotDay()
|
|
|
if err != nil {
|
|
|
fmt.Println("查询获取频度非日度 且 提醒时间不为空 的指标数据失败,Err:", err.Error())
|
|
|
}
|
|
|
- TaskNameMap = make(map[string]bool)
|
|
|
+ //如果还没有初始化map,那么先初始
|
|
|
+ if EdbTaskNameMap == nil {
|
|
|
+ EdbTaskNameMap = make(map[string]map[string]bool)
|
|
|
+ }
|
|
|
+ tmpEdbTaskNameMap := make(map[string]bool)
|
|
|
|
|
|
// 今天的日期字符串(格式:2021-10-25)
|
|
|
todayStr := time.Now().Format(utils.FormatDate)
|
|
@@ -248,11 +255,6 @@ func edbTaskAddTask() {
|
|
|
//失败列表
|
|
|
failList := make([]string, 0)
|
|
|
|
|
|
- //定时任务
|
|
|
- edbTaskNameChannel := make(chan string)
|
|
|
- //定时任务数量
|
|
|
- taskNum := 0
|
|
|
-
|
|
|
//task.globalTaskManager.adminTaskList
|
|
|
for _, edb := range list {
|
|
|
tmpEdb := edb //指标信息
|
|
@@ -369,14 +371,14 @@ func edbTaskAddTask() {
|
|
|
}
|
|
|
|
|
|
if isNotice {
|
|
|
- taskName := "edb_task_" + fmt.Sprint(edb.TradeCode)
|
|
|
+ taskName := "edb_task_" + todayStr + ":" + fmt.Sprint(edb.TradeCode)
|
|
|
fmt.Println(taskName, ";", edb.SecName)
|
|
|
|
|
|
//定时任务
|
|
|
tmpTaskFunc := func(ctx context.Context) (funcErr error) {
|
|
|
//方法执行结束后,移除定时任务
|
|
|
defer func() {
|
|
|
- edbTaskNameChannel <- taskName
|
|
|
+ EdbTaskNameChannel <- taskName
|
|
|
}()
|
|
|
// 匿名方法内判断是否发送提醒,因为可能时间到的时候,发现
|
|
|
funcIsNotice := false
|
|
@@ -390,7 +392,7 @@ func edbTaskAddTask() {
|
|
|
}
|
|
|
if utils.RunMode == "debug" {
|
|
|
//tmpEdb.UserId = 44078 //测试环境的话,发送邮箱给颜鹏
|
|
|
- tmpEdb.UserId = 29775 //测试环境的话,发送邮箱给嘉豪
|
|
|
+ tmpEdb.UserId = 51655 //测试环境的话,发送邮箱给嘉豪
|
|
|
|
|
|
}
|
|
|
|
|
@@ -550,10 +552,6 @@ func edbTaskAddTask() {
|
|
|
keyword1 := tmpEdb.SecName
|
|
|
keyword2 := "每周 " + edb.NoticeTime
|
|
|
remark := tmpEdb.SecName + "该更新了"
|
|
|
- fmt.Println("开始发送模板消息了")
|
|
|
- for _, openid := range openIdList {
|
|
|
- fmt.Println(openid)
|
|
|
- }
|
|
|
|
|
|
err = SendWxMsgWithFrequency(first, keyword1, keyword2, remark, openIdList)
|
|
|
if err != nil {
|
|
@@ -587,23 +585,44 @@ func edbTaskAddTask() {
|
|
|
tmpTask := task.NewTask(taskName, spec, tmpTaskFunc)
|
|
|
|
|
|
task.AddTask(taskName, tmpTask)
|
|
|
- TaskNameMap[taskName] = true
|
|
|
- taskNum++
|
|
|
+ tmpEdbTaskNameMap[taskName] = true
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- //清除定时任务
|
|
|
- go deleteTask(edbTaskNameChannel, taskNum)
|
|
|
+ //将当天的手工指标加入到手工指标池去
|
|
|
+ EdbTaskNameMap[todayStr] = tmpEdbTaskNameMap
|
|
|
+ //开启协程,用来清除定时任务
|
|
|
+ go deleteTask()
|
|
|
+
|
|
|
+ //如果当前定时任务执行次数大于0次,那么需要往手工指标定时任务停止channel写入数据,用来关闭昨天没有执行的的定时任务
|
|
|
+ if EdbTaskRunNum > 0 {
|
|
|
+ //清除昨天的数据
|
|
|
+ EdbTaskStopChannel <- time.Now().AddDate(0, 0, -1).Format(utils.FormatDate)
|
|
|
+ }
|
|
|
+ //手工指标定时任务开始次数累加
|
|
|
+ EdbTaskRunNum++
|
|
|
|
|
|
for _, v := range failList {
|
|
|
fmt.Println(v)
|
|
|
}
|
|
|
+ return
|
|
|
//fmt.Println(task.NewMapSorter())
|
|
|
}
|
|
|
-func deleteTask(keyChannel chan string, lenI int) {
|
|
|
- for i := 0; i < lenI; i++ {
|
|
|
- taskName := <-keyChannel
|
|
|
- task.DeleteTask(taskName)
|
|
|
- delete(TaskNameMap, taskName)
|
|
|
+
|
|
|
+// deleteTask 清除已通知的任务
|
|
|
+func deleteTask() {
|
|
|
+ for {
|
|
|
+ select {
|
|
|
+ case taskName := <-EdbTaskNameChannel:
|
|
|
+ task.DeleteTask(taskName)
|
|
|
+ delete(EdbTaskNameMap, taskName)
|
|
|
+
|
|
|
+ case dayStr := <-EdbTaskStopChannel: //收到停止信号,先清除掉那一天的定时任务,
|
|
|
+ for taskName := range EdbTaskNameMap[dayStr] {
|
|
|
+ task.DeleteTask(taskName)
|
|
|
+ delete(EdbTaskNameMap, taskName)
|
|
|
+ }
|
|
|
+ break
|
|
|
+ }
|
|
|
}
|
|
|
}
|