TaskData.go 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654
  1. package controllers
  2. import (
  3. "bzd_server/conf"
  4. "bzd_server/lib"
  5. "bzd_server/logs"
  6. "bzd_server/models/Device"
  7. "bzd_server/models/System"
  8. "bzd_server/models/Task"
  9. "fmt"
  10. beego "github.com/beego/beego/v2/server/web"
  11. "github.com/signintech/gopdf"
  12. "github.com/xuri/excelize/v2"
  13. "math"
  14. "os"
  15. "strconv"
  16. "strings"
  17. "time"
  18. )
  19. type TaskDataController struct {
  20. beego.Controller
  21. }
  22. // 获取-
  23. func (c *TaskDataController) Extract_TaskData() {
  24. // 验证登录 User_is, User_r
  25. user_r, User_is := lib.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  26. if !User_is {
  27. c.Data["json"] = lib.JSONS{Code: 302, Msg: "请重新登录!"}
  28. c.ServeJSON()
  29. return
  30. }
  31. Time_start := c.GetString("Time_start")
  32. Time_end := c.GetString("Time_end")
  33. T_task_id := c.GetString("T_task_id")
  34. Task_r, is := Task.Read_Task(T_task_id)
  35. if !is {
  36. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  37. c.ServeJSON()
  38. return
  39. }
  40. T_Class_id, err := c.GetInt("T_Class_id")
  41. if err != nil {
  42. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_Class_id 错误!"}
  43. c.ServeJSON()
  44. return
  45. }
  46. DeviceClass_List := Device.Read_DeviceClassList_List_id(T_Class_id)
  47. if len(DeviceClass_List) == 0 {
  48. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_Class_id 分类设备列表 为空!"}
  49. c.ServeJSON()
  50. return
  51. }
  52. logs.Println("----导入 :", DeviceClass_List)
  53. // 清空表
  54. Task.Truncate_TaskData(Task_r.T_task_id)
  55. // 插入 数据
  56. for _, v := range DeviceClass_List {
  57. logs.Println("---- :", v.T_sn, Task_r.T_task_id, Time_start, Time_end)
  58. Task.Import_TaskData(v.T_sn, v.T_id, Task_r.T_task_id, Time_start, Time_end)
  59. }
  60. System.Add_UserLogs(user_r.T_uuid, "提取数据", "提取数据"+Task_r.T_name, Task_r.T_task_id+"|"+Time_start+"|"+Time_end)
  61. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  62. c.ServeJSON()
  63. return
  64. }
  65. // 列表 -
  66. func (c *TaskDataController) TaskData_List() {
  67. // 验证登录 User_is, User_r
  68. _, User_is := lib.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  69. if !User_is {
  70. c.Data["json"] = lib.JSONS{Code: 302, Msg: "请重新登录!"}
  71. c.ServeJSON()
  72. return
  73. }
  74. var r_jsons lib.R_JSONS
  75. page, _ := c.GetInt("page")
  76. if page < 1 {
  77. page = 1
  78. }
  79. page_z, _ := c.GetInt("page_z")
  80. if page_z < 1 {
  81. page_z = conf.Page_size
  82. }
  83. Time_start := c.GetString("Time_start")
  84. Time_end := c.GetString("Time_end")
  85. T_sn := c.GetString("T_sn")
  86. T_id, err := c.GetInt("T_id")
  87. if err != nil {
  88. T_id = -1
  89. }
  90. T_task_id := c.GetString("T_task_id")
  91. Task_r, is := Task.Read_Task(T_task_id)
  92. if !is {
  93. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  94. c.ServeJSON()
  95. return
  96. }
  97. var cnt int64
  98. List, cnt := Task.Read_TaskData_ById_List(Task_r.T_task_id, T_sn, T_id, Time_start, Time_end, page, page_z)
  99. page_size := math.Ceil(float64(cnt) / float64(page_z))
  100. r_jsons.List = List
  101. r_jsons.Page = page
  102. r_jsons.Page_size = int(page_size)
  103. r_jsons.Pages = lib.Func_page(int64(page), int64(page_size))
  104. r_jsons.Num = int(cnt)
  105. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  106. c.ServeJSON()
  107. return
  108. }
  109. // 列表 -
  110. func (c *TaskDataController) UserTaskData_List() {
  111. // 验证登录 User_is, User_r
  112. _, User_is := lib.Verification(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  113. if !User_is {
  114. c.Data["json"] = lib.JSONS{Code: 302, Msg: "请重新登录!"}
  115. c.ServeJSON()
  116. return
  117. }
  118. var r_jsons lib.R_JSONS
  119. page, _ := c.GetInt("page")
  120. if page < 1 {
  121. page = 1
  122. }
  123. page_z, _ := c.GetInt("page_z")
  124. if page_z < 1 {
  125. page_z = conf.Page_size
  126. }
  127. Time_start := c.GetString("Time_start")
  128. Time_end := c.GetString("Time_end")
  129. T_sn := c.GetString("T_sn")
  130. T_id, err := c.GetInt("T_id")
  131. if err != nil {
  132. T_id = -1
  133. }
  134. T_task_id := c.GetString("T_task_id")
  135. Task_r, is := Task.Read_Task(T_task_id)
  136. if !is {
  137. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  138. c.ServeJSON()
  139. return
  140. }
  141. var cnt int64
  142. List, cnt := Task.Read_TaskData_ById_List(Task_r.T_task_id, T_sn, T_id, Time_start, Time_end, page, page_z)
  143. page_size := math.Ceil(float64(cnt) / float64(page_z))
  144. r_jsons.List = List
  145. r_jsons.Page = page
  146. r_jsons.Page_size = int(page_size)
  147. r_jsons.Pages = lib.Func_page(int64(page), int64(page_size))
  148. r_jsons.Num = int(cnt)
  149. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  150. c.ServeJSON()
  151. return
  152. }
  153. // 列表 -
  154. func (c *TaskDataController) TaskDataClass_List() {
  155. // 验证登录 User_is, User_r
  156. _, User_is := lib.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  157. if !User_is {
  158. c.Data["json"] = lib.JSONS{Code: 302, Msg: "请重新登录!"}
  159. c.ServeJSON()
  160. return
  161. }
  162. T_task_id := c.GetString("T_task_id")
  163. Task_r, is := Task.Read_Task(T_task_id)
  164. if !is {
  165. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  166. c.ServeJSON()
  167. return
  168. }
  169. List := Task.Read_TaskData_ById_ClassList(Task_r.T_task_id)
  170. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: List}
  171. c.ServeJSON()
  172. return
  173. }
  174. // 添加-
  175. func (c *TaskDataController) TaskData_Add() {
  176. // 验证登录 User_is, User_r
  177. user_r, User_is := lib.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  178. if !User_is {
  179. c.Data["json"] = lib.JSONS{Code: 302, Msg: "请重新登录!"}
  180. c.ServeJSON()
  181. return
  182. }
  183. T_sn := c.GetString("T_sn")
  184. T_id, _ := c.GetInt("T_id")
  185. T_t, _ := c.GetFloat("T_t")
  186. T_rh, _ := c.GetFloat("T_rh")
  187. T_time := c.GetString("T_time")
  188. T_task_id := c.GetString("T_task_id")
  189. Task_r, is := Task.Read_Task(T_task_id)
  190. if !is {
  191. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  192. c.ServeJSON()
  193. return
  194. }
  195. 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)
  196. if !is {
  197. c.Data["json"] = lib.JSONS{Code: 301, Msg: "添加失败!"}
  198. c.ServeJSON()
  199. return
  200. }
  201. 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)
  202. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  203. c.ServeJSON()
  204. return
  205. }
  206. // 修改-
  207. func (c *TaskDataController) TaskData_Up() {
  208. // 验证登录 User_is, User_r
  209. user_r, User_is := lib.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  210. if !User_is {
  211. c.Data["json"] = lib.JSONS{Code: 302, Msg: "请重新登录!"}
  212. c.ServeJSON()
  213. return
  214. }
  215. Id, err := c.GetInt("Id")
  216. if err != nil {
  217. c.Data["json"] = lib.JSONS{Code: 201, Msg: "Id 错误!"}
  218. c.ServeJSON()
  219. return
  220. }
  221. T_t, err := c.GetFloat("T_t")
  222. if err != nil {
  223. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_t 错误!"}
  224. c.ServeJSON()
  225. return
  226. }
  227. T_rh, err := c.GetFloat("T_rh")
  228. if err != nil {
  229. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_rh 错误!"}
  230. c.ServeJSON()
  231. return
  232. }
  233. T_time := c.GetString("T_time")
  234. T_task_id := c.GetString("T_task_id")
  235. Task_r, is := Task.Read_Task(T_task_id)
  236. if !is {
  237. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  238. c.ServeJSON()
  239. return
  240. }
  241. is = Task.Up_TaskData(Task_r.T_task_id, strconv.Itoa(Id), fmt.Sprintf("%.2f", T_t), fmt.Sprintf("%.2f", T_rh), T_time)
  242. if !is {
  243. c.Data["json"] = lib.JSONS{Code: 301, Msg: "修改失败!"}
  244. c.ServeJSON()
  245. return
  246. }
  247. 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)
  248. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  249. c.ServeJSON()
  250. return
  251. }
  252. // 删除-
  253. func (c *TaskDataController) TaskData_Del() {
  254. // 验证登录 User_is, User_r
  255. user_r, User_is := lib.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  256. if !User_is {
  257. c.Data["json"] = lib.JSONS{Code: 302, Msg: "请重新登录!"}
  258. c.ServeJSON()
  259. return
  260. }
  261. Id, err := c.GetInt("Id")
  262. if err != nil {
  263. c.Data["json"] = lib.JSONS{Code: 201, Msg: "Id 错误!"}
  264. c.ServeJSON()
  265. return
  266. }
  267. T_task_id := c.GetString("T_task_id")
  268. Task_r, is := Task.Read_Task(T_task_id)
  269. if !is {
  270. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  271. c.ServeJSON()
  272. return
  273. }
  274. is = Task.Del_TaskData(Task_r.T_task_id, strconv.Itoa(Id))
  275. if !is {
  276. c.Data["json"] = lib.JSONS{Code: 301, Msg: "删除失败!"}
  277. c.ServeJSON()
  278. return
  279. }
  280. System.Add_UserLogs(user_r.T_uuid, "任务数据", "删除"+Task_r.T_name, Task_r.T_task_id+"|"+strconv.Itoa(Id))
  281. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  282. c.ServeJSON()
  283. return
  284. }
  285. // 列表 - 接口
  286. func (c *TaskDataController) Export_Data_Excel() {
  287. // 验证登录 User_is, User_r
  288. _, User_is := lib.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  289. if !User_is {
  290. c.Data["json"] = lib.JSONS{Code: 302, Msg: "请重新登录!"}
  291. c.ServeJSON()
  292. return
  293. }
  294. Time_start := c.GetString("Time_start")
  295. Time_end := c.GetString("Time_end")
  296. T_sn_str := c.GetString("T_sn_list") //865901058809339,865901058815849,865901058818991,865901058810568
  297. //T_id, err := c.GetInt("T_id")
  298. //if err != nil {
  299. // T_id = -1
  300. //
  301. //}
  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. T_sn_list := strings.Split(T_sn_str, ",")
  310. DeviceSensor_data_list := []Task.TaskData_{}
  311. for _, v := range T_sn_list {
  312. DeviceSensor_data, _ := Task.Read_TaskData_ById_List(Task_r.T_task_id, v, -1, Time_start, Time_end, 1, 9999)
  313. DeviceSensor_data_list = append(DeviceSensor_data_list, DeviceSensor_data...)
  314. }
  315. f := excelize.NewFile() // 设置单元格的值
  316. // 这里设置表头
  317. f.SetCellValue("Sheet1", "A1", "编号")
  318. f.SetCellValue("Sheet1", "B1", "SN")
  319. f.SetCellValue("Sheet1", "C1", "温度℃")
  320. f.SetCellValue("Sheet1", "D1", "湿度%")
  321. f.SetCellValue("Sheet1", "E1", "记录时间")
  322. // 设置列宽
  323. f.SetColWidth("Sheet1", "A", "A", 7)
  324. f.SetColWidth("Sheet1", "B", "B", 20)
  325. f.SetColWidth("Sheet1", "C", "C", 10)
  326. f.SetColWidth("Sheet1", "D", "D", 10)
  327. f.SetColWidth("Sheet1", "E", "E", 22)
  328. line := 1
  329. // 循环写入数据
  330. for _, v := range DeviceSensor_data_list {
  331. line++
  332. f.SetCellValue("Sheet1", fmt.Sprintf("A%d", line), v.T_id)
  333. f.SetCellValue("Sheet1", fmt.Sprintf("B%d", line), v.T_sn)
  334. f.SetCellValue("Sheet1", fmt.Sprintf("C%d", line), strconv.FormatFloat(float64(v.T_t), 'f', 1, 64))
  335. f.SetCellValue("Sheet1", fmt.Sprintf("D%d", line), strconv.FormatFloat(float64(v.T_rh), 'f', 1, 64))
  336. f.SetCellValue("Sheet1", fmt.Sprintf("E%d", line), v.T_time)
  337. }
  338. fmt.Println("DeviceSensor_data:", len(DeviceSensor_data_list))
  339. timeStr := time.Now().Format("20060102150405")
  340. // 保存文件
  341. if err := f.SaveAs("ofile/" + timeStr + ".xlsx"); err != nil {
  342. fmt.Println(err)
  343. }
  344. if !lib.Pload_qiniu("ofile/"+timeStr+".xlsx", "ofile/"+timeStr+".xlsx") {
  345. c.Data["json"] = lib.JSONS{Code: 203, Msg: "oss!"}
  346. c.ServeJSON()
  347. return
  348. }
  349. //删除目录
  350. //err = os.Remove("ofile/" + timeStr + ".xlsx")
  351. //if err != nil {
  352. // fmt.Println(err)
  353. //}
  354. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: "https://bzdcoldverifyoss.baozhida.cn/" + "ofile/" + timeStr + ".xlsx"}
  355. c.ServeJSON()
  356. return
  357. }
  358. // 列表 - 接口
  359. func (c *TaskDataController) Export_Data_PDF() {
  360. // 验证登录 User_is, User_r
  361. _, User_is := lib.Verification(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  362. if !User_is {
  363. c.Data["json"] = lib.JSONS{Code: 302, Msg: "请重新登录!"}
  364. c.ServeJSON()
  365. return
  366. }
  367. Time_start := c.GetString("Time_start")
  368. Time_end := c.GetString("Time_end")
  369. T_sn_str := c.GetString("T_sn_list") //865901058809339,865901058815849,865901058818991,865901058810568
  370. //T_id, err := c.GetInt("T_id")
  371. //if err != nil {
  372. // T_id = -1
  373. //
  374. //}
  375. T_task_id := c.GetString("T_task_id")
  376. Task_r, is := Task.Read_Task(T_task_id)
  377. if !is {
  378. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  379. c.ServeJSON()
  380. return
  381. }
  382. T_sn_list := strings.Split(T_sn_str, ",")
  383. DeviceSensor_data_list := []Task.TaskData_{}
  384. for _, v := range T_sn_list {
  385. DeviceSensor_data, _ := Task.Read_TaskData_ById_List(Task_r.T_task_id, v, -1, Time_start, Time_end, 1, 9999)
  386. DeviceSensor_data_list = append(DeviceSensor_data_list, DeviceSensor_data...)
  387. }
  388. //------
  389. var err error
  390. pdf := &gopdf.GoPdf{}
  391. pdf.Start(gopdf.Config{PageSize: gopdf.Rect{W: 595.28, H: 841.89}}) //595.28, 841.89 = A4
  392. //err = GetFont(pdf, "LiberationSerif-Regular.ttf")
  393. //if err != nil {
  394. // log.Fatalln(err)
  395. //}
  396. //err = pdf.SetFont("Ubuntu-L", "", 14)
  397. //if err != nil {
  398. // log.Fatalln(err)
  399. //}
  400. err = pdf.AddTTFFont("simsun", "static/fonts/三极行楷简体-粗.ttf")
  401. if err != nil {
  402. c.Data["json"] = lib.JSONS{Code: 204, Msg: "ok!", Data: err}
  403. c.ServeJSON()
  404. return
  405. }
  406. err = pdf.SetFont("simsun", "", 24)
  407. if err != nil {
  408. c.Data["json"] = lib.JSONS{Code: 205, Msg: "ok!", Data: err}
  409. c.ServeJSON()
  410. return
  411. }
  412. pdf.SetGrayFill(0.5)
  413. pdf.SetMargins(0, 20, 0, 20)
  414. pdf.AddPage()
  415. //use path
  416. //pdf.Image("logo.png", 100, 50, &gopdf.Rect{W: 50, H: 50})
  417. textw, _ := pdf.MeasureTextWidth(Task_r.T_name)
  418. pdf.SetX((595 / 2) - (textw / 2))
  419. pdf.SetY(40)
  420. pdf.Text(Task_r.T_name)
  421. // 线
  422. pdf.SetLineWidth(2)
  423. pdf.SetLineType("dashed")
  424. pdf.Line(10, 60, 585, 60)
  425. err = pdf.AddTTFFont("wts", "static/fonts/MiSans-Medium.ttf")
  426. if err != nil {
  427. c.Data["json"] = lib.JSONS{Code: 206, Msg: "ok!", Data: err}
  428. c.ServeJSON()
  429. return
  430. }
  431. err = pdf.SetFont("wts", "", 12)
  432. if err != nil {
  433. c.Data["json"] = lib.JSONS{Code: 207, Msg: "ok!", Data: err}
  434. c.ServeJSON()
  435. return
  436. }
  437. t_ := Time_start + " / " + Time_end
  438. if len(Time_start) == 0 {
  439. t_ = "所有数据"
  440. }
  441. //fmt.Sprintf(" %.1f ", v.T_t)
  442. lib.RectFillColor(pdf, "提前数据时间段["+t_+"]", 14, 22, 80, 550, 40, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
  443. lib.RectFillColor(pdf, "编号", 12, 22, 120, 80, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
  444. lib.RectFillColor(pdf, "SN", 12, 92, 120, 150, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
  445. lib.RectFillColor(pdf, "温度℃", 12, 242, 120, 100, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
  446. lib.RectFillColor(pdf, "湿度%", 12, 342, 120, 100, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
  447. //lib.RectFillColor(pdf, "温度范围", 12, 272, 120, 100, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
  448. //lib.RectFillColor(pdf, "湿度范围", 12, 362, 120, 100, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
  449. lib.RectFillColor(pdf, "记录时间", 12, 442, 120, 130, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
  450. var y float64 = 140
  451. err = pdf.SetFont("wts", "", 10)
  452. if err != nil {
  453. c.Data["json"] = lib.JSONS{Code: 207, Msg: "ok!", Data: err}
  454. c.ServeJSON()
  455. return
  456. }
  457. for _, v := range DeviceSensor_data_list {
  458. //text := fmt.Sprintf(" %d ", i+1)
  459. var textH float64 = 25 // if text height is 25px.
  460. pdf.SetNewY(y, textH)
  461. y = pdf.GetY()
  462. //pdf.SetX(x) // must after pdf.SetNewY() called.
  463. //err = pdf.Text(text)
  464. //if err != nil {
  465. // log.Fatalln(err)
  466. //}
  467. T_t := fmt.Sprintf(" %.1f ", v.T_t)
  468. T_rh := fmt.Sprintf(" %.1f ", v.T_rh)
  469. T_time := fmt.Sprintf("%s", v.T_time)
  470. lib.RectFillColor(pdf, strconv.Itoa(v.T_id), 10, 22, y, 80, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
  471. lib.RectFillColor(pdf, v.T_sn, 10, 92, y, 150, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
  472. lib.RectFillColor(pdf, T_t, 10, 242, y, 100, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
  473. lib.RectFillColor(pdf, T_rh, 10, 342, y, 100, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
  474. lib.RectFillColor(pdf, T_time, 10, 442, y, 130, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
  475. y += 20
  476. }
  477. timeStr := "ofile/" + time.Now().Format("20060102150405") + ".pdf"
  478. err = pdf.WritePdf(timeStr)
  479. if err != nil {
  480. c.Data["json"] = lib.JSONS{Code: 207, Msg: "ok!", Data: err}
  481. c.ServeJSON()
  482. return
  483. }
  484. if !lib.Pload_qiniu(timeStr, timeStr) {
  485. c.Data["json"] = lib.JSONS{Code: 203, Msg: "oss!"}
  486. c.ServeJSON()
  487. return
  488. }
  489. //删除目录
  490. err = os.Remove(timeStr)
  491. if err != nil {
  492. fmt.Println(err)
  493. }
  494. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: "https://bzdcoldverifyoss.baozhida.cn/" + timeStr}
  495. c.ServeJSON()
  496. return
  497. }
  498. // 列表 - 接口
  499. func (c *TaskDataController) Check() {
  500. // 验证登录 User_is, User_r
  501. _, User_is := lib.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  502. if !User_is {
  503. c.Data["json"] = lib.JSONS{Code: 302, Msg: "请重新登录!"}
  504. c.ServeJSON()
  505. return
  506. }
  507. T_task_id := c.GetString("T_task_id")
  508. Task_r, is := Task.Read_Task(T_task_id)
  509. if !is {
  510. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  511. c.ServeJSON()
  512. return
  513. }
  514. type R_JSONS struct {
  515. T_sn string // SN
  516. T_id int // 编号
  517. T_unm int // 数据量
  518. T_time_interval int64 // 时间间隔
  519. Time_start string // 开始
  520. Time_end string // 结束
  521. Result int // 200 OK, 201 错误
  522. Result_str string // 提示内容
  523. }
  524. var r_jsons []R_JSONS
  525. List := Task.Read_TaskData_ById_ClassList(Task_r.T_task_id)
  526. for _, v := range List {
  527. var r_json R_JSONS
  528. r_json.T_sn = v.T_sn
  529. r_json.T_id = v.T_id
  530. r_json.Result = 200
  531. DeviceSensor_data := Task.Read_TaskData_ById_List_(Task_r.T_task_id, v.T_sn, v.T_id)
  532. r_json.T_unm = len(DeviceSensor_data)
  533. if r_json.T_unm > 2 {
  534. r_json.Time_end = DeviceSensor_data[len(DeviceSensor_data)-1].T_time
  535. r_json.Time_start = DeviceSensor_data[0].T_time
  536. formatTime_a, _ := time.Parse("2006-1-2 15:04", DeviceSensor_data[0].T_time)
  537. formatTime_b, _ := time.Parse("2006-1-2 15:04", DeviceSensor_data[1].T_time)
  538. formatTime_x := formatTime_b.Unix() - formatTime_a.Unix()
  539. r_json.T_time_interval = formatTime_x
  540. println("formatTime_x:", v.T_id, v.T_sn, formatTime_x)
  541. for data_i := 2; data_i < len(DeviceSensor_data); data_i++ {
  542. formatTime_a = formatTime_b
  543. formatTime_b, _ = time.Parse("2006-1-2 15:04", DeviceSensor_data[data_i].T_time)
  544. formatTime_ := formatTime_b.Unix() - formatTime_a.Unix()
  545. println("formatTime_x-:", formatTime_)
  546. if formatTime_x != formatTime_ {
  547. if formatTime_ > 60*30 {
  548. continue
  549. }
  550. r_json.Result = 201
  551. r_json.Result_str = "异常时间点:" + DeviceSensor_data[data_i-1].T_time + " 时间差:" + strconv.FormatInt(formatTime_, 10) + "秒"
  552. println(r_json.Result_str)
  553. break
  554. }
  555. }
  556. } else {
  557. r_json.Result = 201
  558. r_json.Result_str = "数据量太少 必须大于 2条以上!"
  559. }
  560. r_jsons = append(r_jsons, r_json)
  561. }
  562. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  563. c.ServeJSON()
  564. return
  565. }