TaskData.go 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416
  1. package controllers
  2. import (
  3. "bzd_server/conf"
  4. "bzd_server/lib"
  5. "bzd_server/models/Task"
  6. "fmt"
  7. beego "github.com/beego/beego/v2/server/web"
  8. "github.com/xuri/excelize/v2"
  9. "math"
  10. "os"
  11. "strconv"
  12. "strings"
  13. "time"
  14. )
  15. type TaskDataController struct {
  16. beego.Controller
  17. }
  18. // 列表 -
  19. func (c *TaskDataController) TaskData_List() {
  20. var r_jsons lib.R_JSONS
  21. page, _ := c.GetInt("page")
  22. if page < 1 {
  23. page = 1
  24. }
  25. page_z, _ := c.GetInt("page_z")
  26. if page_z < 1 {
  27. page_z = conf.Page_size
  28. }
  29. Time_start := c.GetString("Time_start")
  30. Time_end := c.GetString("Time_end")
  31. T_sn := c.GetString("T_sn")
  32. T_id, err := c.GetInt("T_id")
  33. if err != nil {
  34. T_id = -1
  35. }
  36. T_task_id := c.GetString("T_task_id")
  37. Task_r, is := Task.Read_Task(T_task_id)
  38. if !is {
  39. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  40. c.ServeJSON()
  41. return
  42. }
  43. var cnt int64
  44. List, cnt := Task.Read_TaskData_ById_List(Task_r.T_task_id, T_sn, T_id, Time_start, Time_end, page, page_z)
  45. page_size := math.Ceil(float64(cnt) / float64(page_z))
  46. r_jsons.List = List
  47. r_jsons.Page = page
  48. r_jsons.Page_size = int(page_size)
  49. r_jsons.Pages = lib.Func_page(int64(page), int64(page_size))
  50. r_jsons.Num = int(cnt)
  51. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  52. c.ServeJSON()
  53. return
  54. }
  55. // 列表 -
  56. func (c *TaskDataController) TaskDataClass_List() {
  57. T_task_id := c.GetString("T_task_id")
  58. Task_r, is := Task.Read_Task(T_task_id)
  59. if !is {
  60. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  61. c.ServeJSON()
  62. return
  63. }
  64. List := Task.Read_TaskData_ById_ClassList(Task_r.T_task_id)
  65. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: List}
  66. c.ServeJSON()
  67. return
  68. }
  69. // 添加-
  70. func (c *TaskDataController) TaskData_AddS() {
  71. T_task_id := c.GetString("T_task_id")
  72. Task_r, is := Task.Read_Task(T_task_id)
  73. if !is {
  74. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  75. c.ServeJSON()
  76. return
  77. }
  78. //T_sn|T_id|T_t|T_rh|T_time?
  79. T_Data := c.GetString("T_Data")
  80. if len(T_Data) < 5 {
  81. c.Data["json"] = lib.JSONS{Code: 201, Msg: "err T_Data!"}
  82. c.ServeJSON()
  83. return
  84. }
  85. T_Data_list := strings.Split(T_Data, "?")
  86. println(len(T_Data_list), "len(T_Data_list)")
  87. var T_Data_list_x = 0
  88. for _, v := range T_Data_list {
  89. // 2022-08-09 14:25:00|27.7|55.2
  90. if len(v) < 5 {
  91. println(v, "len(v) < 5")
  92. continue
  93. }
  94. v_list := strings.Split(v, "|")
  95. is = Task.Add_TaskData(Task_r.T_task_id, v_list[0], v_list[1], v_list[2], v_list[3], v_list[4])
  96. if is {
  97. T_Data_list_x += 1
  98. }
  99. }
  100. // System.Add_UserLogs(user_r.T_uuid, "任务数据", "添加数据"+Task_r.T_name, Task_r.T_task_id+"结果:"+string(len(T_Data_list))+"/"+string(T_Data_list_x)+"|=> "+T_Data)
  101. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: strconv.Itoa(T_Data_list_x)}
  102. c.ServeJSON()
  103. return
  104. }
  105. // 添加-
  106. func (c *TaskDataController) TaskData_Add() {
  107. T_sn := c.GetString("T_sn")
  108. T_id, _ := c.GetInt("T_id")
  109. T_t, _ := c.GetFloat("T_t")
  110. T_rh, _ := c.GetFloat("T_rh")
  111. T_time := c.GetString("T_time")
  112. T_task_id := c.GetString("T_task_id")
  113. Task_r, is := Task.Read_Task(T_task_id)
  114. if !is {
  115. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  116. c.ServeJSON()
  117. return
  118. }
  119. 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)
  120. if !is {
  121. c.Data["json"] = lib.JSONS{Code: 301, Msg: "添加失败!"}
  122. c.ServeJSON()
  123. return
  124. }
  125. // System.Add_UserLogs(user_r.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)
  126. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  127. c.ServeJSON()
  128. return
  129. }
  130. // 修改-
  131. func (c *TaskDataController) TaskData_Up() {
  132. Id, err := c.GetInt("Id")
  133. if err != nil {
  134. c.Data["json"] = lib.JSONS{Code: 201, Msg: "Id 错误!"}
  135. c.ServeJSON()
  136. return
  137. }
  138. T_t, err := c.GetFloat("T_t")
  139. if err != nil {
  140. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_t 错误!"}
  141. c.ServeJSON()
  142. return
  143. }
  144. T_rh, err := c.GetFloat("T_rh")
  145. if err != nil {
  146. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_rh 错误!"}
  147. c.ServeJSON()
  148. return
  149. }
  150. T_time := c.GetString("T_time")
  151. T_task_id := c.GetString("T_task_id")
  152. Task_r, is := Task.Read_Task(T_task_id)
  153. if !is {
  154. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  155. c.ServeJSON()
  156. return
  157. }
  158. is = Task.Up_TaskData(Task_r.T_task_id, strconv.Itoa(Id), fmt.Sprintf("%.2f", T_t), fmt.Sprintf("%.2f", T_rh), T_time)
  159. if !is {
  160. c.Data["json"] = lib.JSONS{Code: 301, Msg: "修改失败!"}
  161. c.ServeJSON()
  162. return
  163. }
  164. // System.Add_UserLogs(user_r.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)
  165. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  166. c.ServeJSON()
  167. return
  168. }
  169. // 删除-
  170. func (c *TaskDataController) TaskData_Del() {
  171. Id, err := c.GetInt("Id")
  172. if err != nil {
  173. c.Data["json"] = lib.JSONS{Code: 201, Msg: "Id 错误!"}
  174. c.ServeJSON()
  175. return
  176. }
  177. T_task_id := c.GetString("T_task_id")
  178. Task_r, is := Task.Read_Task(T_task_id)
  179. if !is {
  180. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  181. c.ServeJSON()
  182. return
  183. }
  184. is = Task.Del_TaskData(Task_r.T_task_id, strconv.Itoa(Id))
  185. if !is {
  186. c.Data["json"] = lib.JSONS{Code: 301, Msg: "删除失败!"}
  187. c.ServeJSON()
  188. return
  189. }
  190. // System.Add_UserLogs(user_r.T_uuid, "任务数据", "删除"+Task_r.T_name, Task_r.T_task_id+"|"+strconv.Itoa(Id))
  191. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  192. c.ServeJSON()
  193. return
  194. }
  195. // 删除-
  196. func (c *TaskDataController) TaskData_Del_t_id() {
  197. Id, err := c.GetInt("Id")
  198. if err != nil {
  199. c.Data["json"] = lib.JSONS{Code: 201, Msg: "Id 错误!"}
  200. c.ServeJSON()
  201. return
  202. }
  203. T_task_id := c.GetString("T_task_id")
  204. Task_r, is := Task.Read_Task(T_task_id)
  205. if !is {
  206. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  207. c.ServeJSON()
  208. return
  209. }
  210. is = Task.Del_TaskData_t_id(Task_r.T_task_id, strconv.Itoa(Id))
  211. if !is {
  212. c.Data["json"] = lib.JSONS{Code: 301, Msg: "删除失败!"}
  213. c.ServeJSON()
  214. return
  215. }
  216. // System.Add_UserLogs(user_r.T_uuid, "任务数据", "删除"+Task_r.T_name, Task_r.T_task_id+"|"+strconv.Itoa(Id))
  217. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  218. c.ServeJSON()
  219. return
  220. }
  221. // 列表 - 接口
  222. func (c *TaskDataController) Export_Data_Excel() {
  223. Time_start := c.GetString("Time_start")
  224. Time_end := c.GetString("Time_end")
  225. T_sn_str := c.GetString("T_sn_list") //865901058809339,865901058815849,865901058818991,865901058810568
  226. //T_id, err := c.GetInt("T_id")
  227. //if err != nil {
  228. // T_id = -1
  229. //
  230. //}
  231. T_task_id := c.GetString("T_task_id")
  232. Task_r, is := Task.Read_Task(T_task_id)
  233. if !is {
  234. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  235. c.ServeJSON()
  236. return
  237. }
  238. T_sn_list := strings.Split(T_sn_str, ",")
  239. DeviceSensor_data_list := []Task.TaskData_{}
  240. for _, v := range T_sn_list {
  241. DeviceSensor_data, _ := Task.Read_TaskData_ById_List(Task_r.T_task_id, v, -1, Time_start, Time_end, 1, 9999)
  242. DeviceSensor_data_list = append(DeviceSensor_data_list, DeviceSensor_data...)
  243. }
  244. f := excelize.NewFile() // 设置单元格的值
  245. // 这里设置表头
  246. f.SetCellValue("Sheet1", "A1", "编号")
  247. f.SetCellValue("Sheet1", "B1", "SN")
  248. f.SetCellValue("Sheet1", "C1", "温度℃")
  249. f.SetCellValue("Sheet1", "D1", "湿度%")
  250. f.SetCellValue("Sheet1", "E1", "记录时间")
  251. // 设置列宽
  252. f.SetColWidth("Sheet1", "A", "A", 7)
  253. f.SetColWidth("Sheet1", "B", "B", 20)
  254. f.SetColWidth("Sheet1", "C", "C", 10)
  255. f.SetColWidth("Sheet1", "D", "D", 10)
  256. f.SetColWidth("Sheet1", "E", "E", 22)
  257. line := 1
  258. // 循环写入数据
  259. for _, v := range DeviceSensor_data_list {
  260. line++
  261. f.SetCellValue("Sheet1", fmt.Sprintf("A%d", line), v.T_id)
  262. f.SetCellValue("Sheet1", fmt.Sprintf("B%d", line), v.T_sn)
  263. f.SetCellValue("Sheet1", fmt.Sprintf("C%d", line), strconv.FormatFloat(float64(v.T_t), 'f', 1, 64))
  264. f.SetCellValue("Sheet1", fmt.Sprintf("D%d", line), strconv.FormatFloat(float64(v.T_rh), 'f', 1, 64))
  265. f.SetCellValue("Sheet1", fmt.Sprintf("E%d", line), v.T_time)
  266. }
  267. fmt.Println("DeviceSensor_data:", len(DeviceSensor_data_list))
  268. timeStr := time.Now().Format("20060102150405")
  269. // 保存文件
  270. if err := f.SaveAs("ofile/" + timeStr + ".xlsx"); err != nil {
  271. fmt.Println(err)
  272. }
  273. if !lib.Pload_qiniu("ofile/"+timeStr+".xlsx", "ofile/"+timeStr+".xlsx") {
  274. c.Data["json"] = lib.JSONS{Code: 203, Msg: "oss!"}
  275. c.ServeJSON()
  276. return
  277. }
  278. //删除目录
  279. //err = os.Remove("ofile/" + timeStr + ".xlsx")
  280. //if err != nil {
  281. // fmt.Println(err)
  282. //}
  283. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: "https://bzdcoldverifyoss.baozhida.cn/" + "ofile/" + timeStr + ".xlsx"}
  284. c.ServeJSON()
  285. return
  286. }
  287. // 打包数据本地数据
  288. func (c *TaskDataController) TaskData_Import_TaskData() {
  289. T_task_id := c.GetString("T_task_id")
  290. _, is := Task.Read_Task(T_task_id)
  291. if !is {
  292. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  293. c.ServeJSON()
  294. return
  295. }
  296. sql_file := fmt.Sprintf("%sZ_TaskData_%s.sql", conf.Sql_Temp_Path, T_task_id)
  297. for {
  298. err := Task.Dump_TaskData(T_task_id, conf.MysqlServer2_Username, conf.MysqlServer2_Password, conf.MysqlServer2_UrlPort, conf.MysqlServer2_Database, sql_file)
  299. if err == nil {
  300. break
  301. }
  302. }
  303. for {
  304. Task.Truncate_TaskData(conf.Local_AliasName, T_task_id)
  305. err := Task.Insert_TaskData(conf.MysqlServer_Username, conf.MysqlServer_Password, conf.MysqlServer_UrlPort, conf.MysqlServer_Database, sql_file)
  306. if err == nil {
  307. if Task.Check_TaskData_Num(T_task_id) {
  308. break
  309. }
  310. }
  311. }
  312. //删除导出的sql文件
  313. //_ = os.Remove(sql_file)
  314. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  315. c.ServeJSON()
  316. }
  317. // 更新线上数据
  318. func (c *TaskDataController) TaskData_Up_TaskData() {
  319. T_task_id := c.GetString("T_task_id")
  320. Task_r, is := Task.Read_Task(T_task_id)
  321. if !is {
  322. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  323. c.ServeJSON()
  324. return
  325. }
  326. sql_file := fmt.Sprintf("%sZ_TaskData_%s.sql", conf.Sql_Temp_Path, T_task_id)
  327. for {
  328. err := Task.Dump_TaskData(T_task_id, conf.MysqlServer_Username, conf.MysqlServer_Password, conf.MysqlServer_UrlPort, conf.MysqlServer_Database, sql_file)
  329. if err == nil {
  330. break
  331. }
  332. }
  333. for {
  334. Task.Truncate_TaskData(conf.Server_AliasName, T_task_id)
  335. err := Task.Insert_TaskData(conf.MysqlServer2_Username, conf.MysqlServer2_Password, conf.MysqlServer2_UrlPort, conf.MysqlServer2_Database, sql_file)
  336. if err == nil {
  337. if Task.Check_TaskData_Num(T_task_id) {
  338. break
  339. }
  340. }
  341. }
  342. //删除导出的sql文件
  343. _ = os.Remove(sql_file)
  344. // 提交后将当前任务 报告编写 标志为 1
  345. Task_r.T_delivery_state = 1
  346. Task.Update_Task(Task_r, "T_delivery_state")
  347. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  348. c.ServeJSON()
  349. }