|
@@ -13,7 +13,6 @@ import (
|
|
|
"fmt"
|
|
|
beego "github.com/beego/beego/v2/server/web"
|
|
|
"github.com/signintech/gopdf"
|
|
|
- "github.com/vmihailenco/msgpack/v5"
|
|
|
"github.com/xuri/excelize/v2"
|
|
|
"log"
|
|
|
"math"
|
|
@@ -21,6 +20,7 @@ import (
|
|
|
"sort"
|
|
|
"strconv"
|
|
|
"strings"
|
|
|
+ "sync"
|
|
|
"time"
|
|
|
)
|
|
|
|
|
@@ -121,7 +121,7 @@ func (c *TaskDataController) Extract_TaskData_Back() {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- data := Nats.Extract_TaskData_Back{
|
|
|
+ resp := Nats.Extract_TaskData_Back{
|
|
|
T_uuid: user_r.T_uuid,
|
|
|
Time_start: Time_start,
|
|
|
Time_end: Time_end,
|
|
@@ -129,9 +129,63 @@ func (c *TaskDataController) Extract_TaskData_Back() {
|
|
|
Task: Task_r,
|
|
|
}
|
|
|
// 后台执行打包数据
|
|
|
- b, _ := msgpack.Marshal(&data)
|
|
|
- _ = lib.Nats.Publish("ColdVerify_Server_Extract_TaskData_Back", b)
|
|
|
+ //b, _ := msgpack.Marshal(&data)
|
|
|
+ //_ = lib.Nats.Publish("ColdVerify_Server_Extract_TaskData_Back", b)
|
|
|
+ go func(resp Nats.Extract_TaskData_Back, Task_r Task.Task) {
|
|
|
+ Task_rname := resp.Task
|
|
|
+ // 清空表
|
|
|
+ Task.Truncate_TaskData(Task_rname.T_task_id)
|
|
|
+
|
|
|
+ //失败重试5次
|
|
|
+ DeviceClassList := new(sync.Map)
|
|
|
+ var count int
|
|
|
+ for _, v := range resp.DeviceClassList {
|
|
|
+ if strings.Contains(v.T_sn, "-") || len(v.T_sn) == 0 {
|
|
|
+ // 从3.0平台导入
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ DeviceClassList.Store(fmt.Sprintf("%s|%s", v.T_sn, v.T_id), 5)
|
|
|
+ //err = Task.Import_TaskData_Back(v.T_sn, v.T_id, resp.Task.T_task_id, resp.Time_start, resp.Time_end)
|
|
|
+ //count++
|
|
|
+ //time.Sleep(5 * time.Second)
|
|
|
+ }
|
|
|
+ DeviceClassList.Range(func(k, v interface{}) bool {
|
|
|
+ count++
|
|
|
+ return true
|
|
|
+ })
|
|
|
+
|
|
|
+ for count > 0 {
|
|
|
+ DeviceClassList.Range(func(k, v any) bool {
|
|
|
+ T_snid := strings.Split(k.(string), "|")
|
|
|
+ T_sn := T_snid[0]
|
|
|
+ T_id := T_snid[1]
|
|
|
+ temp := v.(int)
|
|
|
+ temp--
|
|
|
+ DeviceClassList.Store(k, temp)
|
|
|
+
|
|
|
+ err := Task.Import_TaskData_Back(T_sn, T_id, resp.Task.T_task_id, resp.Time_start, resp.Time_end)
|
|
|
+ if err == nil || strings.Contains(err.Error(), "doesn't exist") {
|
|
|
+ DeviceClassList.Delete(k)
|
|
|
+ count--
|
|
|
+ } else {
|
|
|
+ logs.Error("设备数据同步到任务数据失败", err)
|
|
|
+ DeviceClassList.Delete(k)
|
|
|
+ count--
|
|
|
+ }
|
|
|
+ return true
|
|
|
+ })
|
|
|
+ }
|
|
|
+ // 提取数据后 将 当前任务 数据采集 标志 为 1
|
|
|
+ Task_r.T_collection_state = 1
|
|
|
+ if !Task.Update_Task(Task_r, "T_collection_state") {
|
|
|
+ c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败!"}
|
|
|
+ c.ServeJSON()
|
|
|
+ return
|
|
|
+ }
|
|
|
|
|
|
+ }(resp, Task_r)
|
|
|
+ System.Add_UserLogs_T(resp.T_uuid, "任务", "修改", Task_r)
|
|
|
+ System.Add_UserLogs(resp.T_uuid, "提取数据", "提取数据"+Task_r.T_name, Task_r.T_task_id+"|"+resp.Time_start+"|"+resp.Time_end)
|
|
|
c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
|
|
|
c.ServeJSON()
|
|
|
return
|