TaskData.go 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762
  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: 201, 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. // 更新任务数据采集的状态
  61. Task_r.T_collection_state = 1
  62. Task.Update_Task(Task_r, "T_collection_state")
  63. System.Add_UserLogs(user_r.T_uuid, "提取数据", "提取数据"+Task_r.T_name, Task_r.T_task_id+"|"+Time_start+"|"+Time_end)
  64. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  65. c.ServeJSON()
  66. return
  67. }
  68. // 列表 -
  69. func (c *TaskDataController) TaskData_List() {
  70. // 验证登录 User_is, User_r
  71. _, User_is := lib.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  72. if !User_is {
  73. c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
  74. c.ServeJSON()
  75. return
  76. }
  77. var r_jsons lib.R_JSONS
  78. page, _ := c.GetInt("page")
  79. if page < 1 {
  80. page = 1
  81. }
  82. page_z, _ := c.GetInt("page_z")
  83. if page_z < 1 {
  84. page_z = conf.Page_size
  85. }
  86. Time_start := c.GetString("Time_start")
  87. Time_end := c.GetString("Time_end")
  88. T_sn := c.GetString("T_sn")
  89. T_id, err := c.GetInt("T_id")
  90. if err != nil {
  91. T_id = -1
  92. }
  93. T_task_id := c.GetString("T_task_id")
  94. Task_r, is := Task.Read_Task(T_task_id)
  95. if !is {
  96. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  97. c.ServeJSON()
  98. return
  99. }
  100. var cnt int64
  101. List, cnt := Task.Read_TaskData_ById_List(Task_r.T_task_id, T_sn, T_id, Time_start, Time_end, page, page_z)
  102. page_size := math.Ceil(float64(cnt) / float64(page_z))
  103. r_jsons.List = List
  104. r_jsons.Page = page
  105. r_jsons.Page_size = int(page_size)
  106. r_jsons.Pages = lib.Func_page(int64(page), int64(page_size))
  107. r_jsons.Num = int(cnt)
  108. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  109. c.ServeJSON()
  110. return
  111. }
  112. // 列表 -
  113. func (c *TaskDataController) UserTaskData_List() {
  114. // 验证登录 User_is, User_r
  115. _, User_is := lib.Verification(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  116. if !User_is {
  117. c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
  118. c.ServeJSON()
  119. return
  120. }
  121. var r_jsons lib.R_JSONS
  122. page, _ := c.GetInt("page")
  123. if page < 1 {
  124. page = 1
  125. }
  126. page_z, _ := c.GetInt("page_z")
  127. if page_z < 1 {
  128. page_z = conf.Page_size
  129. }
  130. Time_start := c.GetString("Time_start")
  131. Time_end := c.GetString("Time_end")
  132. T_sn := c.GetString("T_sn")
  133. T_id, err := c.GetInt("T_id")
  134. if err != nil {
  135. T_id = -1
  136. }
  137. T_task_id := c.GetString("T_task_id")
  138. Task_r, is := Task.Read_Task(T_task_id)
  139. if !is {
  140. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  141. c.ServeJSON()
  142. return
  143. }
  144. var cnt int64
  145. List, cnt := Task.Read_TaskData_ById_List(Task_r.T_task_id, T_sn, T_id, Time_start, Time_end, page, page_z)
  146. page_size := math.Ceil(float64(cnt) / float64(page_z))
  147. r_jsons.List = List
  148. r_jsons.Page = page
  149. r_jsons.Page_size = int(page_size)
  150. r_jsons.Pages = lib.Func_page(int64(page), int64(page_size))
  151. r_jsons.Num = int(cnt)
  152. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  153. c.ServeJSON()
  154. return
  155. }
  156. // 列表 -
  157. func (c *TaskDataController) TaskDataClass_List() {
  158. // 验证登录 User_is, User_r
  159. _, User_is := lib.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  160. if !User_is {
  161. c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
  162. c.ServeJSON()
  163. return
  164. }
  165. T_task_id := c.GetString("T_task_id")
  166. Task_r, is := Task.Read_Task(T_task_id)
  167. if !is {
  168. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  169. c.ServeJSON()
  170. return
  171. }
  172. List := Task.Read_TaskData_ById_ClassList(Task_r.T_task_id)
  173. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: List}
  174. c.ServeJSON()
  175. return
  176. }
  177. // 添加-
  178. func (c *TaskDataController) TaskData_AddS() {
  179. // 验证登录 User_is, User_r
  180. user_r, User_is := lib.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  181. if !User_is {
  182. c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
  183. c.ServeJSON()
  184. return
  185. }
  186. T_task_id := c.GetString("T_task_id")
  187. Task_r, is := Task.Read_Task(T_task_id)
  188. if !is {
  189. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  190. c.ServeJSON()
  191. return
  192. }
  193. //T_sn|T_id|T_t|T_rh|T_time?
  194. T_Data := c.GetString("T_Data")
  195. if len(T_Data) < 5 {
  196. c.Data["json"] = lib.JSONS{Code: 201, Msg: "err T_Data!"}
  197. c.ServeJSON()
  198. return
  199. }
  200. T_Data_list := strings.Split(T_Data, "?")
  201. println(len(T_Data_list), "len(T_Data_list)")
  202. var T_Data_list_x = 0
  203. for _, v := range T_Data_list {
  204. // 2022-08-09 14:25:00|27.7|55.2
  205. if len(v) < 5 {
  206. println(v, "len(v) < 5")
  207. continue
  208. }
  209. v_list := strings.Split(v, "|")
  210. is = Task.Add_TaskData(Task_r.T_task_id, v_list[0], v_list[1], v_list[2], v_list[3], v_list[4])
  211. if is {
  212. T_Data_list_x += 1
  213. }
  214. }
  215. 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)
  216. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: strconv.Itoa(T_Data_list_x)}
  217. c.ServeJSON()
  218. return
  219. }
  220. // 添加-
  221. func (c *TaskDataController) TaskData_Add() {
  222. // 验证登录 User_is, User_r
  223. user_r, User_is := lib.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  224. if !User_is {
  225. c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
  226. c.ServeJSON()
  227. return
  228. }
  229. T_sn := c.GetString("T_sn")
  230. T_id, _ := c.GetInt("T_id")
  231. T_t, _ := c.GetFloat("T_t")
  232. T_rh, _ := c.GetFloat("T_rh")
  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.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)
  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+"|"+T_sn+"|"+strconv.Itoa(T_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_Up() {
  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: 201, 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_t, err := c.GetFloat("T_t")
  268. if err != nil {
  269. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_t 错误!"}
  270. c.ServeJSON()
  271. return
  272. }
  273. T_rh, err := c.GetFloat("T_rh")
  274. if err != nil {
  275. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_rh 错误!"}
  276. c.ServeJSON()
  277. return
  278. }
  279. T_time := c.GetString("T_time")
  280. T_task_id := c.GetString("T_task_id")
  281. Task_r, is := Task.Read_Task(T_task_id)
  282. if !is {
  283. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  284. c.ServeJSON()
  285. return
  286. }
  287. is = Task.Up_TaskData(Task_r.T_task_id, strconv.Itoa(Id), fmt.Sprintf("%.2f", T_t), fmt.Sprintf("%.2f", T_rh), T_time)
  288. if !is {
  289. c.Data["json"] = lib.JSONS{Code: 301, Msg: "修改失败!"}
  290. c.ServeJSON()
  291. return
  292. }
  293. 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)
  294. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  295. c.ServeJSON()
  296. return
  297. }
  298. // 删除-
  299. func (c *TaskDataController) TaskData_Del() {
  300. // 验证登录 User_is, User_r
  301. user_r, User_is := lib.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  302. if !User_is {
  303. c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
  304. c.ServeJSON()
  305. return
  306. }
  307. Id, err := c.GetInt("Id")
  308. if err != nil {
  309. c.Data["json"] = lib.JSONS{Code: 201, Msg: "Id 错误!"}
  310. c.ServeJSON()
  311. return
  312. }
  313. T_task_id := c.GetString("T_task_id")
  314. Task_r, is := Task.Read_Task(T_task_id)
  315. if !is {
  316. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  317. c.ServeJSON()
  318. return
  319. }
  320. is = Task.Del_TaskData(Task_r.T_task_id, strconv.Itoa(Id))
  321. if !is {
  322. c.Data["json"] = lib.JSONS{Code: 301, Msg: "删除失败!"}
  323. c.ServeJSON()
  324. return
  325. }
  326. System.Add_UserLogs(user_r.T_uuid, "任务数据", "删除"+Task_r.T_name, Task_r.T_task_id+"|"+strconv.Itoa(Id))
  327. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  328. c.ServeJSON()
  329. return
  330. }
  331. // 删除-
  332. func (c *TaskDataController) TaskData_Del_t_id() {
  333. // 验证登录 User_is, User_r
  334. user_r, User_is := lib.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  335. if !User_is {
  336. c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
  337. c.ServeJSON()
  338. return
  339. }
  340. Id, err := c.GetInt("Id")
  341. if err != nil {
  342. c.Data["json"] = lib.JSONS{Code: 201, Msg: "Id 错误!"}
  343. c.ServeJSON()
  344. return
  345. }
  346. T_task_id := c.GetString("T_task_id")
  347. Task_r, is := Task.Read_Task(T_task_id)
  348. if !is {
  349. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  350. c.ServeJSON()
  351. return
  352. }
  353. is = Task.Del_TaskData_t_id(Task_r.T_task_id, strconv.Itoa(Id))
  354. if !is {
  355. c.Data["json"] = lib.JSONS{Code: 301, Msg: "删除失败!"}
  356. c.ServeJSON()
  357. return
  358. }
  359. System.Add_UserLogs(user_r.T_uuid, "任务数据", "删除"+Task_r.T_name, Task_r.T_task_id+"|"+strconv.Itoa(Id))
  360. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  361. c.ServeJSON()
  362. return
  363. }
  364. // 列表 - 接口
  365. func (c *TaskDataController) Export_Data_Excel() {
  366. // 验证登录 User_is, User_r
  367. _, User_is := lib.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  368. if !User_is {
  369. c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
  370. c.ServeJSON()
  371. return
  372. }
  373. Time_start := c.GetString("Time_start")
  374. Time_end := c.GetString("Time_end")
  375. T_sn_str := c.GetString("T_sn_list") //865901058809339,865901058815849,865901058818991,865901058810568
  376. //T_id, err := c.GetInt("T_id")
  377. //if err != nil {
  378. // T_id = -1
  379. //
  380. //}
  381. T_task_id := c.GetString("T_task_id")
  382. Task_r, is := Task.Read_Task(T_task_id)
  383. if !is {
  384. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  385. c.ServeJSON()
  386. return
  387. }
  388. T_sn_list := strings.Split(T_sn_str, ",")
  389. DeviceSensor_data_list := []Task.TaskData_{}
  390. for _, v := range T_sn_list {
  391. DeviceSensor_data, _ := Task.Read_TaskData_ById_List(Task_r.T_task_id, v, -1, Time_start, Time_end, 1, 9999)
  392. DeviceSensor_data_list = append(DeviceSensor_data_list, DeviceSensor_data...)
  393. }
  394. f := excelize.NewFile() // 设置单元格的值
  395. // 这里设置表头
  396. f.SetCellValue("Sheet1", "A1", "编号")
  397. f.SetCellValue("Sheet1", "B1", "SN")
  398. f.SetCellValue("Sheet1", "C1", "温度℃")
  399. f.SetCellValue("Sheet1", "D1", "湿度%")
  400. f.SetCellValue("Sheet1", "E1", "记录时间")
  401. // 设置列宽
  402. f.SetColWidth("Sheet1", "A", "A", 7)
  403. f.SetColWidth("Sheet1", "B", "B", 20)
  404. f.SetColWidth("Sheet1", "C", "C", 10)
  405. f.SetColWidth("Sheet1", "D", "D", 10)
  406. f.SetColWidth("Sheet1", "E", "E", 22)
  407. line := 1
  408. // 循环写入数据
  409. for _, v := range DeviceSensor_data_list {
  410. line++
  411. f.SetCellValue("Sheet1", fmt.Sprintf("A%d", line), v.T_id)
  412. f.SetCellValue("Sheet1", fmt.Sprintf("B%d", line), v.T_sn)
  413. f.SetCellValue("Sheet1", fmt.Sprintf("C%d", line), strconv.FormatFloat(float64(v.T_t), 'f', 1, 64))
  414. f.SetCellValue("Sheet1", fmt.Sprintf("D%d", line), strconv.FormatFloat(float64(v.T_rh), 'f', 1, 64))
  415. f.SetCellValue("Sheet1", fmt.Sprintf("E%d", line), v.T_time)
  416. }
  417. fmt.Println("DeviceSensor_data:", len(DeviceSensor_data_list))
  418. timeStr := time.Now().Format("20060102150405")
  419. // 保存文件
  420. if err := f.SaveAs("ofile/" + timeStr + ".xlsx"); err != nil {
  421. fmt.Println(err)
  422. }
  423. if !lib.Pload_qiniu("ofile/"+timeStr+".xlsx", "ofile/"+timeStr+".xlsx") {
  424. c.Data["json"] = lib.JSONS{Code: 203, Msg: "oss!"}
  425. c.ServeJSON()
  426. return
  427. }
  428. //删除目录
  429. //err = os.Remove("ofile/" + timeStr + ".xlsx")
  430. //if err != nil {
  431. // fmt.Println(err)
  432. //}
  433. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: "https://bzdcoldverifyoss.baozhida.cn/" + "ofile/" + timeStr + ".xlsx"}
  434. c.ServeJSON()
  435. return
  436. }
  437. // 列表 - 接口
  438. func (c *TaskDataController) Export_Data_PDF() {
  439. // 验证登录 User_is, User_r
  440. _, User_is := lib.Verification(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  441. if !User_is {
  442. c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
  443. c.ServeJSON()
  444. return
  445. }
  446. Time_start := c.GetString("Time_start")
  447. Time_end := c.GetString("Time_end")
  448. T_sn_str := c.GetString("T_sn_list") //865901058809339,865901058815849,865901058818991,865901058810568
  449. //T_id, err := c.GetInt("T_id")
  450. //if err != nil {
  451. // T_id = -1
  452. //
  453. //}
  454. T_task_id := c.GetString("T_task_id")
  455. Task_r, is := Task.Read_Task(T_task_id)
  456. if !is {
  457. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  458. c.ServeJSON()
  459. return
  460. }
  461. T_sn_list := strings.Split(T_sn_str, ",")
  462. DeviceSensor_data_list := []Task.TaskData_{}
  463. for _, v := range T_sn_list {
  464. DeviceSensor_data, _ := Task.Read_TaskData_ById_List(Task_r.T_task_id, v, -1, Time_start, Time_end, 1, 9999)
  465. DeviceSensor_data_list = append(DeviceSensor_data_list, DeviceSensor_data...)
  466. }
  467. //------
  468. var err error
  469. pdf := &gopdf.GoPdf{}
  470. pdf.Start(gopdf.Config{PageSize: gopdf.Rect{W: 595.28, H: 841.89}}) //595.28, 841.89 = A4
  471. //err = GetFont(pdf, "LiberationSerif-Regular.ttf")
  472. //if err != nil {
  473. // log.Fatalln(err)
  474. //}
  475. //err = pdf.SetFont("Ubuntu-L", "", 14)
  476. //if err != nil {
  477. // log.Fatalln(err)
  478. //}
  479. err = pdf.AddTTFFont("simsun", "static/fonts/三极行楷简体-粗.ttf")
  480. if err != nil {
  481. c.Data["json"] = lib.JSONS{Code: 204, Msg: "ok!", Data: err}
  482. c.ServeJSON()
  483. return
  484. }
  485. err = pdf.SetFont("simsun", "", 24)
  486. if err != nil {
  487. c.Data["json"] = lib.JSONS{Code: 205, Msg: "ok!", Data: err}
  488. c.ServeJSON()
  489. return
  490. }
  491. pdf.SetGrayFill(0.5)
  492. pdf.SetMargins(0, 20, 0, 20)
  493. pdf.AddPage()
  494. //use path
  495. //pdf.Image("logo.png", 100, 50, &gopdf.Rect{W: 50, H: 50})
  496. textw, _ := pdf.MeasureTextWidth(Task_r.T_name)
  497. pdf.SetX((595 / 2) - (textw / 2))
  498. pdf.SetY(40)
  499. pdf.Text(Task_r.T_name)
  500. // 线
  501. pdf.SetLineWidth(2)
  502. pdf.SetLineType("dashed")
  503. pdf.Line(10, 60, 585, 60)
  504. err = pdf.AddTTFFont("wts", "static/fonts/MiSans-Medium.ttf")
  505. if err != nil {
  506. c.Data["json"] = lib.JSONS{Code: 206, Msg: "ok!", Data: err}
  507. c.ServeJSON()
  508. return
  509. }
  510. err = pdf.SetFont("wts", "", 12)
  511. if err != nil {
  512. c.Data["json"] = lib.JSONS{Code: 207, Msg: "ok!", Data: err}
  513. c.ServeJSON()
  514. return
  515. }
  516. t_ := Time_start + " / " + Time_end
  517. if len(Time_start) == 0 {
  518. t_ = "所有数据"
  519. }
  520. //fmt.Sprintf(" %.1f ", v.T_t)
  521. lib.RectFillColor(pdf, "提前数据时间段["+t_+"]", 14, 22, 80, 550, 40, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
  522. lib.RectFillColor(pdf, "编号", 12, 22, 120, 80, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
  523. lib.RectFillColor(pdf, "SN", 12, 92, 120, 150, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
  524. lib.RectFillColor(pdf, "温度℃", 12, 242, 120, 100, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
  525. lib.RectFillColor(pdf, "湿度%", 12, 342, 120, 100, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
  526. //lib.RectFillColor(pdf, "温度范围", 12, 272, 120, 100, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
  527. //lib.RectFillColor(pdf, "湿度范围", 12, 362, 120, 100, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
  528. lib.RectFillColor(pdf, "记录时间", 12, 442, 120, 130, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
  529. var y float64 = 140
  530. err = pdf.SetFont("wts", "", 10)
  531. if err != nil {
  532. c.Data["json"] = lib.JSONS{Code: 207, Msg: "ok!", Data: err}
  533. c.ServeJSON()
  534. return
  535. }
  536. for _, v := range DeviceSensor_data_list {
  537. //text := fmt.Sprintf(" %d ", i+1)
  538. var textH float64 = 25 // if text height is 25px.
  539. pdf.SetNewY(y, textH)
  540. y = pdf.GetY()
  541. //pdf.SetX(x) // must after pdf.SetNewY() called.
  542. //err = pdf.Text(text)
  543. //if err != nil {
  544. // log.Fatalln(err)
  545. //}
  546. T_t := fmt.Sprintf(" %.1f ", v.T_t)
  547. T_rh := fmt.Sprintf(" %.1f ", v.T_rh)
  548. T_time := fmt.Sprintf("%s", v.T_time)
  549. lib.RectFillColor(pdf, strconv.Itoa(v.T_id), 10, 22, y, 80, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
  550. lib.RectFillColor(pdf, v.T_sn, 10, 92, y, 150, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
  551. lib.RectFillColor(pdf, T_t, 10, 242, y, 100, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
  552. lib.RectFillColor(pdf, T_rh, 10, 342, y, 100, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
  553. lib.RectFillColor(pdf, T_time, 10, 442, y, 130, 20, 255, 255, 255, lib.AlignCenter, lib.ValignMiddle)
  554. y += 20
  555. }
  556. timeStr := "ofile/" + time.Now().Format("20060102150405") + ".pdf"
  557. err = pdf.WritePdf(timeStr)
  558. if err != nil {
  559. c.Data["json"] = lib.JSONS{Code: 207, Msg: "ok!", Data: err}
  560. c.ServeJSON()
  561. return
  562. }
  563. if !lib.Pload_qiniu(timeStr, timeStr) {
  564. c.Data["json"] = lib.JSONS{Code: 203, Msg: "oss!"}
  565. c.ServeJSON()
  566. return
  567. }
  568. //删除目录
  569. err = os.Remove(timeStr)
  570. if err != nil {
  571. fmt.Println(err)
  572. }
  573. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: "https://bzdcoldverifyoss.baozhida.cn/" + timeStr}
  574. c.ServeJSON()
  575. return
  576. }
  577. // 列表 - 接口
  578. func (c *TaskDataController) Check() {
  579. // 验证登录 User_is, User_r
  580. _, User_is := lib.Verification_Admin(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
  581. if !User_is {
  582. c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
  583. c.ServeJSON()
  584. return
  585. }
  586. T_task_id := c.GetString("T_task_id")
  587. Task_r, is := Task.Read_Task(T_task_id)
  588. if !is {
  589. c.Data["json"] = lib.JSONS{Code: 201, Msg: "T_task_id 错误!"}
  590. c.ServeJSON()
  591. return
  592. }
  593. type R_JSONS struct {
  594. T_sn string // SN
  595. T_id int // 编号
  596. T_unm int // 数据量
  597. T_time_interval int64 // 时间间隔
  598. Time_start string // 开始
  599. Time_end string // 结束
  600. Result int // 200 OK, 201 可以补 , 202 不能补
  601. Result_str string // 提示内容
  602. Result_Time_start string // 2022-8-05 21:01
  603. Result_Time_defect int64 // 缺失时间间隔
  604. }
  605. var r_jsons []R_JSONS
  606. List := Task.Read_TaskData_ById_ClassList(Task_r.T_task_id)
  607. for _, v := range List {
  608. var r_json R_JSONS
  609. r_json.T_sn = v.T_sn
  610. r_json.T_id = v.T_id
  611. r_json.Result = 200
  612. DeviceSensor_data := Task.Read_TaskData_ById_List_(Task_r.T_task_id, v.T_sn, v.T_id)
  613. r_json.T_unm = len(DeviceSensor_data)
  614. if r_json.T_unm > 2 {
  615. r_json.Time_end = DeviceSensor_data[len(DeviceSensor_data)-1].T_time
  616. r_json.Time_start = DeviceSensor_data[0].T_time
  617. formatTime_a, _ := time.Parse("2006-1-2 15:04", DeviceSensor_data[0].T_time)
  618. formatTime_b, _ := time.Parse("2006-1-2 15:04", DeviceSensor_data[1].T_time)
  619. formatTime_x := formatTime_b.Unix() - formatTime_a.Unix()
  620. r_json.T_time_interval = formatTime_x
  621. println("formatTime_x:", v.T_id, v.T_sn, formatTime_x)
  622. if formatTime_x > 60*30 || formatTime_x < 60 {
  623. r_json.Result = 202
  624. r_json.Result_str = "数据异常(数据的第一个时间与第二个时间相差 " + strconv.FormatInt(formatTime_x, 10) + "秒),必须大于60秒,小于30分钟"
  625. r_jsons = append(r_jsons, r_json)
  626. continue
  627. }
  628. for data_i := 2; data_i < len(DeviceSensor_data); data_i++ {
  629. formatTime_a = formatTime_b
  630. formatTime_b, _ = time.Parse("2006-1-2 15:04", DeviceSensor_data[data_i].T_time)
  631. formatTime_ := formatTime_b.Unix() - formatTime_a.Unix()
  632. println("formatTime_x-:", formatTime_)
  633. if formatTime_ < formatTime_x {
  634. r_json.Result = 202
  635. r_json.Result_str = "开始时间:" + DeviceSensor_data[data_i-1].T_time + " 离下一条时间间隔:" + strconv.FormatInt(formatTime_, 10) + "秒,间隔小于时间间隔,不能自动补充"
  636. break
  637. }
  638. if formatTime_x != formatTime_ {
  639. if formatTime_ > 60*30 {
  640. r_json.Result = 202
  641. r_json.Result_str = "开始时间:" + DeviceSensor_data[data_i-1].T_time + " 离下一条时间间隔:" + strconv.FormatInt(formatTime_, 10) + "秒,相差时间大于30分钟,不能自动补充"
  642. break
  643. }
  644. r_json.Result = 201
  645. r_json.Result_str = "开始时间:" + DeviceSensor_data[data_i-1].T_time + " 离下一条时间间隔:" + strconv.FormatInt(formatTime_, 10) + "秒"
  646. r_json.Result_Time_start = DeviceSensor_data[data_i-1].T_time
  647. r_json.Result_Time_defect = formatTime_
  648. println(r_json.Result_str)
  649. break
  650. }
  651. }
  652. } else {
  653. r_json.Result = 202
  654. r_json.Result_str = "数据量太少 必须大于 2条以上!"
  655. }
  656. r_jsons = append(r_jsons, r_json)
  657. }
  658. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  659. c.ServeJSON()
  660. return
  661. }