TaskData.go 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563
  1. package controllers
  2. import (
  3. "bzd_server/conf"
  4. "bzd_server/lib"
  5. "bzd_server/logs"
  6. "bzd_server/models/System"
  7. "bzd_server/models/Task"
  8. "fmt"
  9. beego "github.com/beego/beego/v2/server/web"
  10. "github.com/xuri/excelize/v2"
  11. "math"
  12. "os"
  13. "strconv"
  14. "strings"
  15. "time"
  16. )
  17. type TaskDataController struct {
  18. beego.Controller
  19. }
  20. // 列表 -
  21. func (c *TaskDataController) TaskData_List() {
  22. var r_jsons lib.R_JSONS
  23. page, _ := c.GetInt("page")
  24. if page < 1 {
  25. page = 1
  26. }
  27. page_z, _ := c.GetInt("page_z")
  28. if page_z < 1 {
  29. page_z = conf.Page_size
  30. }
  31. Time_start := c.GetString("Time_start")
  32. Time_end := c.GetString("Time_end")
  33. T_sn := c.GetString("T_sn")
  34. T_id, err := c.GetInt("T_id")
  35. if err != nil {
  36. T_id = -1
  37. }
  38. T_task_id := c.GetString("T_task_id")
  39. Task_r, is := Task.Read_Task(T_task_id)
  40. if !is {
  41. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  42. c.ServeJSON()
  43. return
  44. }
  45. var cnt int64
  46. List, cnt := Task.Read_TaskData_ById_List(Task_r.T_task_id, T_sn, T_id, Time_start, Time_end, page, page_z)
  47. page_size := math.Ceil(float64(cnt) / float64(page_z))
  48. r_jsons.List = List
  49. r_jsons.Page = page
  50. r_jsons.Page_size = int(page_size)
  51. r_jsons.Pages = lib.Func_page(int64(page), int64(page_size))
  52. r_jsons.Num = int(cnt)
  53. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  54. c.ServeJSON()
  55. return
  56. }
  57. // 列表 -
  58. func (c *TaskDataController) TaskDataClass_List() {
  59. T_task_id := c.GetString("T_task_id")
  60. Task_r, is := Task.Read_Task(T_task_id)
  61. if !is {
  62. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  63. c.ServeJSON()
  64. return
  65. }
  66. List := Task.Read_TaskData_ById_ClassList(Task_r.T_task_id)
  67. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: List}
  68. c.ServeJSON()
  69. return
  70. }
  71. // 添加-
  72. func (c *TaskDataController) TaskData_AddS() {
  73. // 获取登录用户的uuid
  74. T_uuid, _ := lib.GetAdminT_Uuid(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  75. T_task_id := c.GetString("T_task_id")
  76. Task_r, is := Task.Read_Task(T_task_id)
  77. if !is {
  78. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  79. c.ServeJSON()
  80. return
  81. }
  82. //T_sn|T_id|T_t|T_rh|T_time?
  83. T_Data := c.GetString("T_Data")
  84. if len(T_Data) < 5 {
  85. c.Data["json"] = lib.JSONS{Code: 201, Msg: "err T_Data!"}
  86. c.ServeJSON()
  87. return
  88. }
  89. T_Data_list := strings.Split(T_Data, "?")
  90. println(len(T_Data_list), "len(T_Data_list)")
  91. var T_Data_list_x = 0
  92. for _, v := range T_Data_list {
  93. // 2022-08-09 14:25:00|27.7|55.2
  94. if len(v) < 5 {
  95. println(v, "len(v) < 5")
  96. continue
  97. }
  98. v_list := strings.Split(v, "|")
  99. is = Task.Add_TaskData(Task_r.T_task_id, v_list[0], v_list[1], v_list[2], v_list[3], v_list[4])
  100. if is {
  101. T_Data_list_x += 1
  102. }
  103. }
  104. System.Add_UserLogs_T(T_uuid, "任务数据", "添加数据"+Task_r.T_name, Task_r.T_task_id+"结果:"+string(len(T_Data_list))+"/"+string(T_Data_list_x)+"|=> "+T_Data)
  105. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: strconv.Itoa(T_Data_list_x)}
  106. c.ServeJSON()
  107. return
  108. }
  109. // 添加-
  110. func (c *TaskDataController) TaskData_Add() {
  111. // 获取登录用户的uuid
  112. T_uuid, _ := lib.GetAdminT_Uuid(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  113. T_sn := c.GetString("T_sn")
  114. T_id, _ := c.GetInt("T_id")
  115. T_t, _ := c.GetFloat("T_t")
  116. T_rh, _ := c.GetFloat("T_rh")
  117. T_time := c.GetString("T_time")
  118. T_task_id := c.GetString("T_task_id")
  119. Task_r, is := Task.Read_Task(T_task_id)
  120. if !is {
  121. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  122. c.ServeJSON()
  123. return
  124. }
  125. is = Task.Add_TaskData(Task_r.T_task_id, T_sn, strconv.Itoa(T_id), fmt.Sprintf("%.2f", T_t), fmt.Sprintf("%.2f", T_rh), T_time)
  126. if !is {
  127. c.Data["json"] = lib.JSONS{Code: 301, Msg: "添加失败!"}
  128. c.ServeJSON()
  129. return
  130. }
  131. System.Add_UserLogs_T(T_uuid, "任务数据", "添加数据"+Task_r.T_name, Task_r.T_task_id+"|"+T_sn+"|"+strconv.Itoa(T_id)+"|"+fmt.Sprintf("%.2f", T_t)+"|"+fmt.Sprintf("%.2f", T_rh)+T_time)
  132. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  133. c.ServeJSON()
  134. return
  135. }
  136. // 修改-
  137. func (c *TaskDataController) TaskData_Up() {
  138. // 获取登录用户的uuid
  139. T_uuid, _ := lib.GetAdminT_Uuid(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  140. Id, err := c.GetInt("Id")
  141. if err != nil {
  142. c.Data["json"] = lib.JSONS{Code: 201, Msg: "Id 错误!"}
  143. c.ServeJSON()
  144. return
  145. }
  146. T_t, err := c.GetFloat("T_t")
  147. if err != nil {
  148. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_t 错误!"}
  149. c.ServeJSON()
  150. return
  151. }
  152. T_rh, err := c.GetFloat("T_rh")
  153. if err != nil {
  154. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_rh 错误!"}
  155. c.ServeJSON()
  156. return
  157. }
  158. T_time := c.GetString("T_time")
  159. T_task_id := c.GetString("T_task_id")
  160. Task_r, is := Task.Read_Task(T_task_id)
  161. if !is {
  162. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  163. c.ServeJSON()
  164. return
  165. }
  166. is = Task.Up_TaskData(Task_r.T_task_id, strconv.Itoa(Id), fmt.Sprintf("%.2f", T_t), fmt.Sprintf("%.2f", T_rh), T_time)
  167. if !is {
  168. c.Data["json"] = lib.JSONS{Code: 301, Msg: "修改失败!"}
  169. c.ServeJSON()
  170. return
  171. }
  172. System.Add_UserLogs_T(T_uuid, "任务数据", "修改数据"+Task_r.T_name, Task_r.T_task_id+"|"+strconv.Itoa(Id)+"|"+fmt.Sprintf("%.2f", T_t)+"|"+fmt.Sprintf("%.2f", T_rh)+T_time)
  173. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  174. c.ServeJSON()
  175. return
  176. }
  177. // 删除-
  178. func (c *TaskDataController) TaskData_Del() {
  179. // 获取登录用户的uuid
  180. T_uuid, _ := lib.GetAdminT_Uuid(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  181. Id, err := c.GetInt("Id")
  182. if err != nil {
  183. c.Data["json"] = lib.JSONS{Code: 201, Msg: "Id 错误!"}
  184. c.ServeJSON()
  185. return
  186. }
  187. T_task_id := c.GetString("T_task_id")
  188. Task_r, is := Task.Read_Task(T_task_id)
  189. if !is {
  190. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  191. c.ServeJSON()
  192. return
  193. }
  194. is = Task.Del_TaskData(Task_r.T_task_id, strconv.Itoa(Id))
  195. if !is {
  196. c.Data["json"] = lib.JSONS{Code: 301, Msg: "删除失败!"}
  197. c.ServeJSON()
  198. return
  199. }
  200. System.Add_UserLogs_T(T_uuid, "任务数据", "删除"+Task_r.T_name, Task_r.T_task_id+"|"+strconv.Itoa(Id))
  201. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  202. c.ServeJSON()
  203. return
  204. }
  205. // 删除-
  206. func (c *TaskDataController) TaskData_Del_t_id() {
  207. // 获取登录用户的uuid
  208. T_uuid, _ := lib.GetAdminT_Uuid(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  209. Id, err := c.GetInt("Id")
  210. if err != nil {
  211. c.Data["json"] = lib.JSONS{Code: 201, Msg: "Id 错误!"}
  212. c.ServeJSON()
  213. return
  214. }
  215. T_task_id := c.GetString("T_task_id")
  216. Task_r, is := Task.Read_Task(T_task_id)
  217. if !is {
  218. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  219. c.ServeJSON()
  220. return
  221. }
  222. is = Task.Del_TaskData_t_id(Task_r.T_task_id, strconv.Itoa(Id))
  223. if !is {
  224. c.Data["json"] = lib.JSONS{Code: 301, Msg: "删除失败!"}
  225. c.ServeJSON()
  226. return
  227. }
  228. System.Add_UserLogs_T(T_uuid, "任务数据", "删除"+Task_r.T_name, Task_r.T_task_id+"|"+strconv.Itoa(Id))
  229. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  230. c.ServeJSON()
  231. return
  232. }
  233. // 列表 - 接口
  234. func (c *TaskDataController) Export_Data_Excel() {
  235. Time_start := c.GetString("Time_start")
  236. Time_end := c.GetString("Time_end")
  237. T_sn_str := c.GetString("T_sn_list") //865901058809339,865901058815849,865901058818991,865901058810568
  238. //T_id, err := c.GetInt("T_id")
  239. //if err != nil {
  240. // T_id = -1
  241. //
  242. //}
  243. T_task_id := c.GetString("T_task_id")
  244. Task_r, is := Task.Read_Task(T_task_id)
  245. if !is {
  246. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  247. c.ServeJSON()
  248. return
  249. }
  250. T_sn_list := strings.Split(T_sn_str, ",")
  251. DeviceSensor_data_list := []Task.TaskData_{}
  252. for _, v := range T_sn_list {
  253. DeviceSensor_data, _ := Task.Read_TaskData_ById_List(Task_r.T_task_id, v, -1, Time_start, Time_end, 1, 9999)
  254. DeviceSensor_data_list = append(DeviceSensor_data_list, DeviceSensor_data...)
  255. }
  256. f := excelize.NewFile() // 设置单元格的值
  257. // 这里设置表头
  258. f.SetCellValue("Sheet1", "A1", "编号")
  259. f.SetCellValue("Sheet1", "B1", "SN")
  260. f.SetCellValue("Sheet1", "C1", "温度℃")
  261. f.SetCellValue("Sheet1", "D1", "湿度%")
  262. f.SetCellValue("Sheet1", "E1", "记录时间")
  263. // 设置列宽
  264. f.SetColWidth("Sheet1", "A", "A", 7)
  265. f.SetColWidth("Sheet1", "B", "B", 20)
  266. f.SetColWidth("Sheet1", "C", "C", 10)
  267. f.SetColWidth("Sheet1", "D", "D", 10)
  268. f.SetColWidth("Sheet1", "E", "E", 22)
  269. line := 1
  270. // 循环写入数据
  271. for _, v := range DeviceSensor_data_list {
  272. line++
  273. f.SetCellValue("Sheet1", fmt.Sprintf("A%d", line), v.T_id)
  274. f.SetCellValue("Sheet1", fmt.Sprintf("B%d", line), v.T_sn)
  275. f.SetCellValue("Sheet1", fmt.Sprintf("C%d", line), strconv.FormatFloat(float64(v.T_t), 'f', 1, 64))
  276. f.SetCellValue("Sheet1", fmt.Sprintf("D%d", line), strconv.FormatFloat(float64(v.T_rh), 'f', 1, 64))
  277. f.SetCellValue("Sheet1", fmt.Sprintf("E%d", line), v.T_time)
  278. }
  279. fmt.Println("DeviceSensor_data:", len(DeviceSensor_data_list))
  280. path := "./ofile"
  281. Task.Create_Dir(path)
  282. timeStr := time.Now().Format("20060102150405")
  283. // 保存文件
  284. if err := f.SaveAs("ofile/" + timeStr + ".xlsx"); err != nil {
  285. fmt.Println(err)
  286. }
  287. if !lib.Pload_qiniu("ofile/"+timeStr+".xlsx", "ofile/"+timeStr+".xlsx") {
  288. c.Data["json"] = lib.JSONS{Code: 203, Msg: "oss!"}
  289. c.ServeJSON()
  290. return
  291. }
  292. //删除目录
  293. //err = os.Remove("ofile/" + timeStr + ".xlsx")
  294. //if err != nil {
  295. // fmt.Println(err)
  296. //}
  297. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: "https://bzdcoldverifyoss.baozhida.cn/" + "ofile/" + timeStr + ".xlsx"}
  298. c.ServeJSON()
  299. return
  300. }
  301. func (c *TaskDataController) Check() {
  302. T_task_id := c.GetString("T_task_id")
  303. Task_r, is := Task.Read_Task(T_task_id)
  304. if !is {
  305. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  306. c.ServeJSON()
  307. return
  308. }
  309. type R_JSONS struct {
  310. T_sn string // SN
  311. T_id int // 编号
  312. T_unm int // 数据量
  313. T_time_interval int64 // 时间间隔
  314. Time_start string // 开始
  315. Time_end string // 结束
  316. Result int // 200 OK, 201 可以补 , 202 不能补
  317. Result_str string // 提示内容
  318. Result_Time_start string // 2022-8-05 21:01
  319. Result_Time_defect int64 // 缺失时间间隔
  320. }
  321. var r_jsons []R_JSONS
  322. List := Task.Read_TaskData_ById_ClassList(Task_r.T_task_id)
  323. for _, v := range List {
  324. var r_json R_JSONS
  325. r_json.T_sn = v.T_sn
  326. r_json.T_id = v.T_id
  327. r_json.Result = 200
  328. DeviceSensor_data := Task.Read_TaskData_ById_List_(Task_r.T_task_id, v.T_sn, v.T_id)
  329. r_json.T_unm = len(DeviceSensor_data)
  330. if r_json.T_unm > 2 {
  331. r_json.Time_end = DeviceSensor_data[len(DeviceSensor_data)-1].T_time
  332. r_json.Time_start = DeviceSensor_data[0].T_time
  333. formatTime_a, _ := time.Parse("2006-1-2 15:04", DeviceSensor_data[0].T_time)
  334. formatTime_b, _ := time.Parse("2006-1-2 15:04", DeviceSensor_data[1].T_time)
  335. formatTime_x := formatTime_b.Unix() - formatTime_a.Unix()
  336. r_json.T_time_interval = formatTime_x
  337. println("formatTime_x:", v.T_id, v.T_sn, formatTime_x)
  338. if formatTime_x > 60*30 || formatTime_x < 60 {
  339. r_json.Result = 202
  340. r_json.Result_str = "数据异常(数据的第一个时间与第二个时间相差 " + strconv.FormatInt(formatTime_x, 10) + "秒),必须大于60秒,小于30分钟"
  341. r_jsons = append(r_jsons, r_json)
  342. continue
  343. }
  344. for data_i := 2; data_i < len(DeviceSensor_data); data_i++ {
  345. formatTime_a = formatTime_b
  346. formatTime_b, _ = time.Parse("2006-1-2 15:04", DeviceSensor_data[data_i].T_time)
  347. formatTime_ := formatTime_b.Unix() - formatTime_a.Unix()
  348. println("formatTime_x-:", formatTime_)
  349. if formatTime_ < formatTime_x {
  350. r_json.Result = 202
  351. r_json.Result_str = "开始时间:" + DeviceSensor_data[data_i-1].T_time + " 离下一条时间间隔:" + strconv.FormatInt(formatTime_, 10) + "秒,间隔小于时间间隔,不能自动补充"
  352. break
  353. }
  354. if formatTime_x != formatTime_ {
  355. if formatTime_ > 60*30 {
  356. r_json.Result = 202
  357. r_json.Result_str = "开始时间:" + DeviceSensor_data[data_i-1].T_time + " 离下一条时间间隔:" + strconv.FormatInt(formatTime_, 10) + "秒,相差时间大于30分钟,不能自动补充"
  358. break
  359. }
  360. r_json.Result = 201
  361. r_json.Result_str = "开始时间:" + DeviceSensor_data[data_i-1].T_time + " 离下一条时间间隔:" + strconv.FormatInt(formatTime_, 10) + "秒"
  362. r_json.Result_Time_start = DeviceSensor_data[data_i-1].T_time
  363. r_json.Result_Time_defect = formatTime_
  364. println(r_json.Result_str)
  365. break
  366. }
  367. }
  368. } else {
  369. r_json.Result = 202
  370. r_json.Result_str = "数据量太少 必须大于 2条以上!"
  371. }
  372. r_jsons = append(r_jsons, r_json)
  373. }
  374. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  375. c.ServeJSON()
  376. return
  377. }
  378. // 打包数据本地数据
  379. func (c *TaskDataController) TaskData_Import_TaskData() {
  380. // 获取登录用户的uuid
  381. T_uuid, _ := lib.GetAdminT_Uuid(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  382. T_task_id := c.GetString("T_task_id")
  383. _, is := Task.Read_Task(T_task_id)
  384. if !is {
  385. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  386. c.ServeJSON()
  387. return
  388. }
  389. if err := Task.Create_Dir(conf.Sql_Temp_Dir); err != nil {
  390. logs.Println("创建sql临时文件失败")
  391. }
  392. sql_file := fmt.Sprintf("%sZ_TaskData_%s.sql", conf.Sql_Temp_Dir, T_task_id)
  393. org, err := Task.Dump_TaskData(T_task_id, conf.MysqlServer2_Username, conf.MysqlServer2_Password, conf.MysqlServer2_UrlPort, conf.MysqlServer2_Database, sql_file)
  394. if err != nil {
  395. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Z_TaskData_" + T_task_id + "线上数据导出失败!"}
  396. c.ServeJSON()
  397. return
  398. }
  399. System.Add_UserLogs_T(T_uuid, "任务数据-打包本地数据", "导出线上数据Z_TaskData_"+T_task_id, org)
  400. i := 0
  401. flag := false
  402. Task.CREATE_TaskData(conf.Local_AliasName, T_task_id)
  403. for i < 10 {
  404. Task.Truncate_TaskData(conf.Local_AliasName, T_task_id)
  405. org, err = Task.Insert_TaskData(conf.MysqlServer_Username, conf.MysqlServer_Password, conf.MysqlServer_UrlPort, conf.MysqlServer_Database, sql_file)
  406. if err != nil {
  407. logs.Println("任务数据-打包本地数据", "线下导入数据Z_TaskData_"+T_task_id, err.Error())
  408. } else {
  409. if Task.Check_TaskData_Num(T_task_id) {
  410. System.Add_UserLogs_T(T_uuid, "任务数据-打包本地数据", "线下导入数据Z_TaskData_"+T_task_id, org)
  411. flag = true
  412. break
  413. }
  414. }
  415. i++
  416. }
  417. // 重试10次后仍然没有成功导入数据
  418. if !flag {
  419. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Z_TaskData_" + T_task_id + "线下导入数据失败!"}
  420. c.ServeJSON()
  421. return
  422. }
  423. //删除导出的sql文件
  424. _ = os.Remove(sql_file)
  425. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  426. c.ServeJSON()
  427. }
  428. // 更新线上数据
  429. func (c *TaskDataController) TaskData_Up_TaskData() {
  430. // 获取登录用户的uuid
  431. T_uuid, _ := lib.GetAdminT_Uuid(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  432. T_task_id := c.GetString("T_task_id")
  433. Task_r, is := Task.Read_Task(T_task_id)
  434. if !is {
  435. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_task_id 错误!"}
  436. c.ServeJSON()
  437. return
  438. }
  439. if err := Task.Create_Dir(conf.Sql_Temp_Dir); err != nil {
  440. logs.Println("创建sql临时文件失败")
  441. }
  442. sql_file := fmt.Sprintf("%sZ_TaskData_%s.sql", conf.Sql_Temp_Dir, T_task_id)
  443. org, err := Task.Dump_TaskData(T_task_id, conf.MysqlServer_Username, conf.MysqlServer_Password, conf.MysqlServer_UrlPort, conf.MysqlServer_Database, sql_file)
  444. if err != nil {
  445. logs.Println(T_uuid, "任务数据-更新线上数据", "导出线下数据Z_TaskData_"+T_task_id, err.Error())
  446. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Z_TaskData_" + T_task_id + "线下数据导出失败!"}
  447. c.ServeJSON()
  448. return
  449. }
  450. System.Add_UserLogs_T(T_uuid, "任务数据-更新线上数据", "线上导入数据Z_TaskData_"+T_task_id, org)
  451. i := 0
  452. flag := false
  453. for i < 10 {
  454. Task.Truncate_TaskData(conf.Server_AliasName, T_task_id)
  455. org, err = Task.Insert_TaskData(conf.MysqlServer2_Username, conf.MysqlServer2_Password, conf.MysqlServer2_UrlPort, conf.MysqlServer2_Database, sql_file)
  456. if err != nil {
  457. logs.Println(T_uuid, "任务数据-更新线上数据", "线上导入数据Z_TaskData_"+T_task_id, err.Error())
  458. } else {
  459. if Task.Check_TaskData_Num(T_task_id) {
  460. System.Add_UserLogs_T(T_uuid, "任务数据-更新线上数据", "线上导入数据Z_TaskData_"+T_task_id, org)
  461. flag = true
  462. break
  463. }
  464. }
  465. i++
  466. }
  467. // 重试10次后仍然没有成功导入数据
  468. if !flag {
  469. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Z_TaskData_" + T_task_id + "线上导入数据失败!"}
  470. c.ServeJSON()
  471. return
  472. }
  473. //删除导出的sql文件
  474. _ = os.Remove(sql_file)
  475. // 提交后将当前任务 报告编写 标志为 1
  476. Task_r.T_delivery_state = 1
  477. if !Task.Update_Task(Task_r, "T_delivery_state") {
  478. c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败!"}
  479. c.ServeJSON()
  480. return
  481. }
  482. // 向线上用户日志表写入数据
  483. System.Add_UserLogs_T(T_uuid, "任务", "修改", Task_r)
  484. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  485. c.ServeJSON()
  486. }