device.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. package admin
  2. import (
  3. "fmt"
  4. "server/dao"
  5. "server/model/common/request"
  6. "server/model/common/response"
  7. "server/utils/data"
  8. "server/utils/protocol"
  9. "strconv"
  10. "time"
  11. )
  12. type DeviceService struct{}
  13. func (ds *DeviceService) QueryAllDevices() ([]dao.Device, error) {
  14. return dao.QueryAllDevices()
  15. }
  16. func (ds *DeviceService) QueryDeviceList(info request.DeviceSearch) (devices []dao.Device, total int64, err error) {
  17. limit := info.PageInfo.PageSize
  18. offset := info.PageInfo.PageSize * (info.PageInfo.Page - 1)
  19. return dao.QueryDeviceList(info.Sn, info.Name, info.Genre, limit, offset)
  20. }
  21. func (ds *DeviceService) GenerateDeviceFile(id int) (data response.DeviceFileData, err error) {
  22. devices, err := dao.QueryDeviceByTunnelId(id)
  23. if err != nil {
  24. return data, err
  25. }
  26. for _, d := range devices {
  27. if d.DeviceGenre.Type == "环境设备" {
  28. envDev := response.EnvDev{
  29. Sn: d.Sn,
  30. Name: d.Name,
  31. Address: d.Address,
  32. TaskTime: d.TaskTime,
  33. WaitTime: d.WaitTime,
  34. SerialId: d.SerialId,
  35. }
  36. data.EnvDev = append(data.EnvDev, envDev)
  37. } else if d.DeviceGenre.Type == "开关设备" {
  38. lampDev := response.LampDev{
  39. Sn: d.Sn,
  40. Name: d.Name,
  41. Address: d.Address,
  42. RadarId: d.RadarId,
  43. SerialId: d.SerialId,
  44. }
  45. data.LampDev = append(data.LampDev, lampDev)
  46. }
  47. }
  48. return data, nil
  49. }
  50. func (ds *DeviceService) DeviceSwitch(info request.SwitchTunnel) error {
  51. device, err := dao.QueryDeviceByTunnelSnAndRadarId(info.TunnelSn, info.RadarId)
  52. if err != nil {
  53. return err
  54. }
  55. err = dao.UpdateRelayState(device.Sn, info.RelayId, info.State)
  56. if err != nil {
  57. return err
  58. }
  59. var i int
  60. if info.State {
  61. i = 1
  62. } else {
  63. i = 0
  64. }
  65. data := strconv.Itoa(info.RadarId) + strconv.Itoa(info.RelayId) + strconv.Itoa(i)
  66. err = MqttService.Publish(MqttService.GetTopic(info.TunnelSn, protocol.TopicSwitchControl), []byte(data))
  67. if err != nil {
  68. return fmt.Errorf("error updating: %v", err)
  69. }
  70. return nil
  71. }
  72. func (ds *DeviceService) CreateDevice(device dao.Device) error {
  73. tunnel, err := dao.QueryTunnelById(device.TunnelId)
  74. if err != nil {
  75. return err
  76. }
  77. genre, err := dao.QueryDeviceGenreByID(device.Genre)
  78. if err != nil {
  79. return err
  80. }
  81. if genre.Name == tunnel.SwitchType && genre.Type == "开关设备" {
  82. return fmt.Errorf("开关设备需安照隧道需求添加")
  83. }
  84. return device.CreateDevice()
  85. }
  86. func (ds *DeviceService) UpdateDevice(device dao.Device) error {
  87. tunnel, err := dao.QueryTunnelById(device.TunnelId)
  88. if err != nil {
  89. return err
  90. }
  91. if device.DeviceGenre.Name != tunnel.SwitchType && device.DeviceGenre.Type == "开关设备" {
  92. return fmt.Errorf("开关设备需安照隧道需求添加")
  93. }
  94. device.DeviceGenre = dao.DeviceGenre{}
  95. device.Tunnel = dao.Tunnel{}
  96. return device.UpdateDevice()
  97. }
  98. func (ds *DeviceService) DeleteDevice(id int) error {
  99. return dao.DeleteDevice(id)
  100. }
  101. func InductanceStatistics() error {
  102. tunnels, _ := dao.QueryAllTunnels()
  103. for _, tunnel := range tunnels {
  104. device, _ := dao.QueryDGDeviceByTunnelSn(tunnel.TunnelSn)
  105. list, err := dao.QueryInductanceDetailsOneDay(device.Sn)
  106. if err != nil {
  107. return err
  108. }
  109. preprocessData, err := data.PreprocessData(list)
  110. if err != nil {
  111. return err
  112. }
  113. consumption := data.CalculateDailyEnergyConsumption(preprocessData)
  114. fmt.Println(time.Now())
  115. fmt.Println(consumption)
  116. }
  117. return nil
  118. }