Przeglądaj źródła

修复任务执行失败后,再次执行该任务任务编号重复的异常

luchm 5 lat temu
rodzic
commit
6bb3bb12db

+ 8 - 6
src/dashoo.cn/genepoint_srv/controllers/converse/converse.go

@@ -4,6 +4,7 @@ import (
 	"encoding/json"
 	"encoding/json"
 	"log"
 	"log"
 	"strconv"
 	"strconv"
+	"strings"
 	"time"
 	"time"
 
 
 	// "github.com/astaxie/beego"
 	// "github.com/astaxie/beego"
@@ -27,14 +28,15 @@ func (this *ConverseController) SearchDatabase() map[string]*RequestEntity {
 	for _, value := range tasks {
 	for _, value := range tasks {
 		var  time int64 = time.Now().Unix()
 		var  time int64 = time.Now().Unix()
 
 
-		 taskid :=value.Task_id + strconv.FormatInt(time,10)
+		 taskid :=value.Task_id +"_"+ strconv.FormatInt(time,10)
+		 log.Println("taskid:",taskid)
 		//如果没有任务实体, 则创建新任务实体
 		//如果没有任务实体, 则创建新任务实体
-		if _, ok := reqMap[taskid]; !ok {
-			entity := svc.GenerateRequestEntity(value.Task_type, value.Task_id)
-			reqMap[taskid] = entity
+		if _, ok := reqMap[value.Task_id]; !ok {
+			entity := svc.GenerateRequestEntity(value.Task_type, /*value.Task_id*/taskid)
+			reqMap[value.Task_id] = entity
 		}
 		}
 		//处理任务详细
 		//处理任务详细
-		svc.HandleTaskDetail(value.Task_type, reqMap[taskid], &value)
+		svc.HandleTaskDetail(value.Task_type, reqMap[value.Task_id], &value)
 	}
 	}
 	for _, v := range reqMap {
 	for _, v := range reqMap {
 		log.Println("****************************")
 		log.Println("****************************")
@@ -111,7 +113,7 @@ func (this *ConverseController) HandleMessage(n int, message []byte) {
 
 
 	resp := res.Response
 	resp := res.Response
 	result := res.Result
 	result := res.Result
-	taskId := res.Data.Task_id
+	taskId := strings.Split(res.Data.Task_id,"_")[0]
 	isEnd := res.Data.Is_end
 	isEnd := res.Data.Is_end
 	taskType := res.Data.Type
 	taskType := res.Data.Type
 
 

+ 5 - 4
src/dashoo.cn/genepoint_srv/main.go

@@ -154,7 +154,7 @@ func ListenToSendMsg(conn *websocket.Conn) {
 	cron := cron.New()
 	cron := cron.New()
 	// 定时规则:每隔10秒执行一次
 	// 定时规则:每隔10秒执行一次
 	tick := "*/10 * * * * ?"
 	tick := "*/10 * * * * ?"
-	_,err = cron.AddFunc(tick, func() {
+	err = cron.AddFunc(tick, func() {
 		// 查询任务,生成指令
 		// 查询任务,生成指令
 		reqMap := ctrl.SearchDatabase()
 		reqMap := ctrl.SearchDatabase()
 		if err != nil {
 		if err != nil {
@@ -163,13 +163,14 @@ func ListenToSendMsg(conn *websocket.Conn) {
 		//判断conn是否还在  todo
 		//判断conn是否还在  todo
 
 
 		// 发送消息
 		// 发送消息
-		for _, reqEntity := range reqMap {
+		for taskid, reqEntity := range reqMap {
+			log.Println("-reqMap-taskid:",taskid)
 			err := conn.WriteJSON(reqEntity)
 			err := conn.WriteJSON(reqEntity)
 			if err != nil {
 			if err != nil {
 				log.Println("write err:", err)
 				log.Println("write err:", err)
 			} else {
 			} else {
 				// 发送成功,修改状态
 				// 发送成功,修改状态
-				err = ctrl.StatusModify(converseService.SENT, reqEntity.Data.Task_id)
+				err = ctrl.StatusModify(converseService.SENT, taskid)
 			}
 			}
 		}
 		}
 	})
 	})
@@ -182,7 +183,7 @@ func ClearSuccessfulTask() {
 	cron := cron.New()
 	cron := cron.New()
 	//每天0时清除任务表
 	//每天0时清除任务表
 	tick := "0 0 0 * * ?"
 	tick := "0 0 0 * * ?"
-	_,err = cron.AddFunc(tick, func() {
+	err = cron.AddFunc(tick, func() {
 		ctrl.DeleteAccomplishedTask()
 		ctrl.DeleteAccomplishedTask()
 		if err != nil {
 		if err != nil {
 			log.Println("read:", err)
 			log.Println("read:", err)