device.go 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. package controller
  2. import (
  3. "cold-logistics/app/admin/model"
  4. "cold-logistics/app/admin/service"
  5. "cold-logistics/app/admin/service/dto"
  6. "cold-logistics/common/actions"
  7. cdto "cold-logistics/common/dto"
  8. "cold-logistics/common/nats/nats_server"
  9. "github.com/gin-gonic/gin"
  10. "github.com/gin-gonic/gin/binding"
  11. "gogs.baozhida.cn/zoie/OAuth-core/api"
  12. )
  13. type DeviceController struct {
  14. api.Api
  15. }
  16. // GetSensorList 获取传感器列表
  17. // @Summary 获取传感器列表
  18. // @Description 获取传感器列表
  19. // @Tags 设备
  20. // @Success 200 {object} response.Response{data=response.Page{list=[]model.Device}} "{"code": 200, "data": [...]}"
  21. // @Router /api/device/sensor-list [get]
  22. // @Security Bearer
  23. func (e DeviceController) GetSensorList(c *gin.Context) {
  24. s := service.Device{}
  25. err := e.MakeContext(c).
  26. MakeOrm().
  27. MakeService(&s.Service).
  28. Errors
  29. if err != nil {
  30. e.Logger.Error(err)
  31. e.Error(500, err, err.Error())
  32. return
  33. }
  34. //数据权限检查
  35. p := actions.GetPermissionFromContext(c)
  36. // 获取传感器信息
  37. deviceSensorList, count, _ := s.GetSensorList(p)
  38. e.PageOK(deviceSensorList, int(count), 0, 0, "查询成功")
  39. }
  40. // GetData 获取车辆温湿度信息
  41. // @Summary 获取车辆温湿度信息
  42. // @Description 获取车辆温湿度信息
  43. // @Tags 设备
  44. // @Param t_sn query string false "sn"
  45. // @Param t_id query string false "传感器id"
  46. // @Param pageSize query int false "页条数"
  47. // @Param page query int false "页码"
  48. // @Success 200 {object} response.Response{data=response.Page{list=[]model.Device}} "{"code": 200, "data": [...]}"
  49. // @Router /api/device/sensor-list [get]
  50. // @Security Bearer
  51. func (e DeviceController) GetData(c *gin.Context) {
  52. s := service.Device{}
  53. req := dto.DeviceGetDataReq{}
  54. err := e.MakeContext(c).
  55. MakeOrm().
  56. Bind(&req, binding.Query).
  57. MakeService(&s.Service).
  58. Errors
  59. if err != nil {
  60. e.Logger.Error(err)
  61. e.Error(500, err, err.Error())
  62. return
  63. }
  64. //数据权限检查
  65. p := actions.GetPermissionFromContext(c)
  66. // 获取传感器信息
  67. dataList, count, _ := s.GetData(req, p)
  68. e.PageOK(dataList, int(count), req.GetPageIndex(), req.GetPageSize(), "查询成功")
  69. }
  70. // GetDevicePage 获取未绑定的设备列表
  71. // @Summary 获取保温箱列表
  72. // @Description 获取保温箱列表
  73. // @Tags 保温箱
  74. // @Param name query string false "保温箱名称"
  75. // @Param pageSize query int false "页条数"
  76. // @Param page query int false "页码"
  77. // @Success 200 {object} response.Response{data=response.Page{list=[]model.CoolerBox}} "{"code": 200, "data": [...]}"
  78. // @Router /api/CoolerBox [get]
  79. // @Security Bearer
  80. func (e DeviceController) GetDevicePage(c *gin.Context) {
  81. coolerBoxSvc := service.CoolerBox{}
  82. warehouseSvc := service.Warehouse{}
  83. carSvc := service.Car{}
  84. req := dto.DeviceGetPageReq{}
  85. err := e.MakeContext(c).
  86. MakeOrm().
  87. MakeService(&coolerBoxSvc.Service).
  88. MakeService(&warehouseSvc.Service).
  89. MakeService(&carSvc.Service).
  90. Bind(&req, binding.Query).
  91. Errors
  92. if err != nil {
  93. e.Logger.Error(err)
  94. e.Error(500, err, err.Error())
  95. return
  96. }
  97. list := make([]nats_server.Device_R, 0)
  98. p := actions.GetPermissionFromContext(c)
  99. var coolerBoxCount int64
  100. coolerBoxList := make([]model.CoolerBox, 0)
  101. err = coolerBoxSvc.GetPage(&dto.CoolerBoxGetPageReq{Pagination: cdto.Pagination{PageSize: 9999}}, &coolerBoxList, &coolerBoxCount, p)
  102. var warehouseCount int64
  103. warehouseList := make([]model.Warehouse, 0)
  104. err = warehouseSvc.GetPage(&dto.WarehouseGetPageReq{Pagination: cdto.Pagination{PageSize: 9999}}, &warehouseList, &warehouseCount, p)
  105. var carCount int64
  106. carList := make([]model.Car, 0)
  107. err = carSvc.GetPage(&dto.CarGetPageReq{Pagination: cdto.Pagination{PageSize: 9999}}, &carList, &carCount, p)
  108. var count int64
  109. company, err := model.GetCompanyById(p.DeptId)
  110. if err != nil {
  111. e.Error(500, err, err.Error())
  112. return
  113. }
  114. list, count, err = nats_server.Cold_ReadDevice_List(req.Name, company.ColdKey, req.GetPageIndex(), 9999)
  115. if err != nil {
  116. e.Error(500, err, err.Error())
  117. return
  118. }
  119. var bindMap = make(map[string]struct{})
  120. for _, v := range coolerBoxList {
  121. bindMap[v.Sn] = struct{}{}
  122. }
  123. for _, v := range warehouseList {
  124. bindMap[v.Sn] = struct{}{}
  125. }
  126. for _, v := range carList {
  127. bindMap[v.Sn] = struct{}{}
  128. }
  129. // Fixme 测试完成之后删除
  130. //for i := 0; i < 20; i++ {
  131. // list = append(list, nats_server.Device_R{
  132. // T_devName: fmt.Sprintf("保温箱%03d", i),
  133. // T_sn: fmt.Sprintf("2024114956064%03d", i),
  134. // })
  135. //}
  136. list2 := make([]nats_server.Device_R, 0)
  137. for i := 0; i < len(list); i++ {
  138. if _, ok := bindMap[list[i].T_sn]; ok {
  139. count--
  140. continue
  141. }
  142. list2 = append(list2, list[i])
  143. }
  144. //if len(list2) == 0 {
  145. // e.PageOK(list2, len(list2), req.GetPageIndex(), req.GetPageSize(), "查询成功")
  146. //}
  147. // 计算总页数
  148. totalPages := (len(list2) + req.GetPageSize() - 1) / req.GetPageSize()
  149. // 如果n超出范围,返回错误
  150. if req.GetPageIndex() > totalPages {
  151. req.Page = totalPages
  152. }
  153. // 计算当前页的数据
  154. start := (req.GetPageIndex() - 1) * req.GetPageSize()
  155. end := start + req.GetPageSize()
  156. if end > len(list2) {
  157. end = len(list2)
  158. }
  159. currentPage := list2[start:end]
  160. e.PageOK(currentPage, len(list2), req.GetPageIndex(), req.GetPageSize(), "查询成功")
  161. }