|
@@ -11,6 +11,8 @@ import (
|
|
|
"github.com/nats-io/nats.go"
|
|
|
"github.com/vmihailenco/msgpack/v5"
|
|
|
"os"
|
|
|
+ "strings"
|
|
|
+ "time"
|
|
|
)
|
|
|
|
|
|
func init() {
|
|
@@ -95,9 +97,12 @@ func NatsInit() {
|
|
|
logs.Info("--------开始导入数据到【本地】---------")
|
|
|
j := 0
|
|
|
flag := false
|
|
|
- Task.CREATE_TaskData(conf.Local_AliasName, T_task_id)
|
|
|
+ // 清空表
|
|
|
+ //Task.CREATE_TaskData(conf.Local_AliasName, T_task_id)
|
|
|
+ //time.Sleep(2 * time.Second)
|
|
|
for j < 10 {
|
|
|
Task.Truncate_TaskData(conf.Local_AliasName, T_task_id)
|
|
|
+ time.Sleep(2 * time.Second)
|
|
|
org, err = Task.Insert_TaskData(conf.MysqlServer_Username, conf.MysqlServer_Password, conf.MysqlServer_UrlPort, conf.MysqlServer_Database, sql_file)
|
|
|
if err != nil {
|
|
|
logs.Error("任务数据-打包本地数据", "z_task_data_"+T_task_id, err.Error())
|
|
@@ -115,6 +120,7 @@ func NatsInit() {
|
|
|
if !flag {
|
|
|
// 清空本地数据
|
|
|
Task.Truncate_TaskData(conf.Local_AliasName, T_task_id)
|
|
|
+ time.Sleep(2 * time.Second)
|
|
|
Task_r.T_collection_state = 0
|
|
|
err = NatsServer.Update_Task(Task_r)
|
|
|
if err != nil {
|
|
@@ -215,6 +221,7 @@ func NatsInit() {
|
|
|
flag := false
|
|
|
for i < 10 {
|
|
|
Task.Truncate_TaskData(conf.Server_AliasName, T_task_id)
|
|
|
+ time.Sleep(2 * time.Second)
|
|
|
org, err = Task.Insert_TaskData(conf.MysqlServer2_Username, conf.MysqlServer2_Password, conf.MysqlServer2_UrlPort, conf.MysqlServer2_Database, sql_file)
|
|
|
if err != nil {
|
|
|
logs.Println(T_uuid, "任务数据-更新线上数据", "z_task_data_"+T_task_id, err.Error())
|
|
@@ -230,6 +237,7 @@ func NatsInit() {
|
|
|
// 重试10次后仍然没有成功导入数据
|
|
|
if !flag {
|
|
|
Task.Truncate_TaskData(conf.Server_AliasName, T_task_id)
|
|
|
+ time.Sleep(2 * time.Second)
|
|
|
// 线上数据更新后 将当前任务 交付审核 标志 为 1
|
|
|
Task_r.T_delivery_state = 0
|
|
|
err = NatsServer.Update_Task(Task_r)
|
|
@@ -258,10 +266,124 @@ func NatsInit() {
|
|
|
// 创建本地任务表
|
|
|
_, _ = lib.Nats.QueueSubscribe("ColdVerify_Local_Create_Table", "Create_Table", func(m *nats.Msg) {
|
|
|
logs.Debug("ColdVerify_Local_Up_TaskData message: ", string(m.Data))
|
|
|
- logs.Info(lib.FuncName(), "任务数据-创建数据库表 更新线上数据...!")
|
|
|
+ logs.Info(lib.FuncName(), "任务数据-创建数据库表!")
|
|
|
|
|
|
Task.CREATE_TaskData(conf.Local_AliasName, string(m.Data))
|
|
|
|
|
|
})
|
|
|
|
|
|
+ // 1.0数据同步到2。0
|
|
|
+ _, _ = lib.Nats.QueueSubscribe("ColdVerify_Local_Sync1_TaskData", "Sync1_TaskData", func(m *nats.Msg) {
|
|
|
+ logs.Debug("ColdVerify_Local_Sync1_TaskData message: ", string(m.Data))
|
|
|
+ logs.Info(lib.FuncName(), "1.0数据同步到2。0!")
|
|
|
+ T_uuid := "9b6b9f9d-f8f2-46fb-82c8-101d4a309c34"
|
|
|
+ T_task_id := string(m.Data)
|
|
|
+
|
|
|
+ Task_r, err := NatsServer.Read_Task(T_task_id)
|
|
|
+ if err != nil {
|
|
|
+ logs.Error(lib.FuncName(), err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if err = lib.Create_Dir(conf.Sql_Temp_Dir); err != nil {
|
|
|
+ logs.Println("创建sql临时文件失败")
|
|
|
+ }
|
|
|
+ sql_file := fmt.Sprintf("%sz_task_data_%s.sql", conf.Sql_Temp_Dir, T_task_id)
|
|
|
+
|
|
|
+ var org string
|
|
|
+
|
|
|
+ //导出1.0数据
|
|
|
+ logs.Info("--------开始导出1.0数据---------")
|
|
|
+ i := 0
|
|
|
+ for i < 10 {
|
|
|
+ org, err = Task.Dump_TaskData_Verify(T_task_id, conf.MysqlVerify_Username, conf.MysqlVerify_Password, conf.MysqlVerify_UrlPort, conf.MysqlVerify_Database, sql_file)
|
|
|
+ if err != nil {
|
|
|
+ logs.Error(lib.FuncName(), "开始导出1.0数据失败", err)
|
|
|
+ } else {
|
|
|
+ System.Add_UserLogs_T(T_uuid, "任务数据-导出线上数据", "z_task_data_"+T_task_id, org)
|
|
|
+ break
|
|
|
+ }
|
|
|
+ i++
|
|
|
+ }
|
|
|
+
|
|
|
+ ChangeTableName(sql_file, T_task_id)
|
|
|
+
|
|
|
+ logs.Info("--------开始导入数据到【本地】---------")
|
|
|
+ j := 0
|
|
|
+ flag := false
|
|
|
+ // 清空表
|
|
|
+ //Task.CREATE_TaskData(conf.Local_AliasName, T_task_id)
|
|
|
+ //time.Sleep(2 * time.Second)
|
|
|
+ for j < 10 {
|
|
|
+ Task.Truncate_TaskData(conf.Local_AliasName, T_task_id)
|
|
|
+ time.Sleep(2 * time.Second)
|
|
|
+ org, err = Task.Insert_TaskData(conf.MysqlServer_Username, conf.MysqlServer_Password, conf.MysqlServer_UrlPort, conf.MysqlServer_Database, sql_file)
|
|
|
+ if err != nil {
|
|
|
+ logs.Error("任务数据-打包本地数据", "z_task_data_"+T_task_id, err.Error())
|
|
|
+ } else {
|
|
|
+ if Task.Check_TaskData_Num_Verify1(T_task_id) {
|
|
|
+ System.Add_UserLogs_T(T_uuid, "任务数据-打包本地数据", "z_task_data_"+T_task_id, org)
|
|
|
+ flag = true
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ j++
|
|
|
+ }
|
|
|
+ // 重试10次后仍然没有成功导入数据
|
|
|
+
|
|
|
+ if !flag {
|
|
|
+ // 清空本地数据
|
|
|
+ Task.Truncate_TaskData(conf.Local_AliasName, T_task_id)
|
|
|
+ time.Sleep(2 * time.Second)
|
|
|
+ Task_r.T_collection_state = 0
|
|
|
+ err = NatsServer.Update_Task(Task_r)
|
|
|
+ if err != nil {
|
|
|
+ logs.Error(lib.FuncName(), err)
|
|
|
+ }
|
|
|
+ System.Add_UserLogs_T(T_uuid, "任务数据-打包本地数据-失败", "线下导入数据z_task_data_"+T_task_id, "重试10次失败")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ //删除导出的sql文件
|
|
|
+ //_ = os.Remove(sql_file)
|
|
|
+
|
|
|
+ Task_r.T_collection_state = 1
|
|
|
+ err = NatsServer.Update_Task(Task_r)
|
|
|
+ if err != nil {
|
|
|
+ logs.Error(lib.FuncName(), err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ System.Add_UserLogs_T(T_uuid, "任务数据-打包本地数据", "z_task_data_"+T_task_id, "成功")
|
|
|
+ logs.Info("--------导入数据到本地【成功】!---------")
|
|
|
+
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+func ChangeTableName(sql_file, T_task_id string) {
|
|
|
+ // 定义命令行参数
|
|
|
+ sqlFile := sql_file
|
|
|
+ oldTableName := "Z_TaskData_" + T_task_id
|
|
|
+ newTableName := strings.ToLower("z_task_data_" + T_task_id)
|
|
|
+
|
|
|
+ // 读取SQL文件内容
|
|
|
+ sqlBytes, err := os.ReadFile(sqlFile)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("读取SQL文件失败:", err)
|
|
|
+ os.Exit(1)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 将SQL文件内容转换为字符串
|
|
|
+ sqlStr := string(sqlBytes)
|
|
|
+
|
|
|
+ // 替换旧表名为新表名
|
|
|
+ newSqlStr := strings.ReplaceAll(sqlStr, oldTableName, newTableName)
|
|
|
+
|
|
|
+ // 将新的SQL字符串写入原文件
|
|
|
+ err = os.WriteFile(sqlFile, []byte(newSqlStr), 0644)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("写入SQL文件失败:", err)
|
|
|
+ os.Exit(1)
|
|
|
+ }
|
|
|
+
|
|
|
+ fmt.Printf("已将SQL文件 %s 中的表名 %s 替换为 %s\n", sqlFile, oldTableName, newTableName)
|
|
|
}
|