bigScreen.go 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. package dao
  2. import (
  3. "fmt"
  4. "iot_manager_service/util/logger"
  5. )
  6. type Big interface {
  7. ListDevices() ([]Device, int64, error)
  8. CountFault() (int64, error)
  9. }
  10. func getLinkNum(sn string) int64 {
  11. var i int64
  12. //SELECT total FROM device_wisdom_gateway a LEFT JOIN device_gateway_relation b ON a.id = b.id
  13. //WHERE a.lamp_pole_sn='ZHDG4306268O408R' ORDER BY total DESC LIMIT 1;
  14. Db.Select("total").Table("device_wisdom_gateway a").
  15. Joins("LEFT JOIN device_gateway_relation b ON a.id = b.id").
  16. Where("a.lamp_pole_sn = ?", sn).
  17. Order("total DESC").Limit(1).Find(&i)
  18. return i
  19. }
  20. func GetEnergy(start, end string) []Energy {
  21. var rsp = make([]Energy, 0, 12)
  22. //select SUBSTR(date FROM 1 FOR 7) AS date1,SUM(difference) AS difference
  23. //FROM `t_device_energy_day_data` t WHERE date BETWEEN "2023-04-01" AND "2023-06-01" GROUP BY date1;
  24. rows, err := Db.Select("SUBSTR(date FROM 1 FOR 7) AS dates,SUM(difference) AS difference").
  25. Table("`t_device_energy_day_data`").Where("date BETWEEN ? AND ?", start, end).Group("dates").Rows()
  26. defer rows.Close()
  27. if err != nil {
  28. logger.Logger.Errorf("GetEnergy error: %v", err)
  29. }
  30. for rows.Next() {
  31. var e Energy
  32. rows.Scan(&e.Date, &e.Difference)
  33. rsp = append(rsp, e)
  34. }
  35. return rsp
  36. }
  37. // GetLightRate
  38. // SELECT DATE_FORMAT(NOW(),'%Y-%m') AS month, AVG(rate) AS rate FROM `t_lamp_lighting_rate_day_data` WHERE SUBSTR(date FROM 1 FOR 7) = DATE_FORMAT(NOW(),'%Y-%m') AND tenant = '000000';
  39. // SELECT QUARTER(NOW()) AS quarter, AVG(rate) AS rate FROM `t_lamp_lighting_rate_day_data` WHERE QUARTER(date) = QUARTER(NOW()) AND tenant = '000000';
  40. // SELECT YEAR(NOW()) AS year, AVG(rate) AS rate FROM `t_lamp_lighting_rate_day_data` WHERE YEAR(date) = YEAR(NOW()) AND tenant = '000000';
  41. func GetLightRate(tenant string) []interface{} {
  42. var rsp = make([]interface{}, 0, 4)
  43. var lrm LightRateM
  44. var lrq LightRateQ
  45. var lry LightRateY
  46. Db.Select("DATE_FORMAT(NOW(),'%Y-%m') AS month,ROUND(AVG(rate),2) AS rate").Table("`t_lamp_lighting_rate_day_data`").
  47. Where("SUBSTR(date FROM 1 FOR 7) = DATE_FORMAT(NOW(),'%Y-%m') And tenant = ?", tenant).Find(&lrm)
  48. Db.Select("QUARTER(NOW()) AS quarter, ROUND(AVG(rate),2) AS rate").Table("`t_lamp_lighting_rate_day_data`").
  49. Where("quarter(date) = quarter(NOW()) AND tenant = ?", tenant).Find(&lrq)
  50. Db.Select("YEAR(NOW()) AS year, ROUND(AVG(rate),2) AS rate").Table("`t_lamp_lighting_rate_day_data`").
  51. Where("YEAR(date) = YEAR(NOW()) AND tenant = ?", tenant).Find(&lry)
  52. //lr[0].Month = ""
  53. rsp = append(rsp, []interface{}{})
  54. rsp = append(rsp, lrm)
  55. rsp = append(rsp, lrq)
  56. rsp = append(rsp, lry)
  57. return rsp
  58. }
  59. // GetAlarmInfo 1待处理2忽略3已处理4其他
  60. // #待处理
  61. // SELECT COUNT(id) FROM `warn_platform_alarm` WHERE arm_handle = 1;
  62. // SELECT arm_content,arm_device_type_name,dict_value AS level_name,arm_time
  63. // FROM `warn_platform_alarm` w JOIN `dict` d
  64. // ON w.arm_level = d.dict_key
  65. // WHERE w.arm_handle = 1 AND d.`code` = 'arm_level_type'
  66. // LIMIT 10;
  67. // #本月已处理
  68. // SELECT COUNT(id) FROM `warn_platform_alarm` WHERE SUBSTR(arm_end_time FROM 1 FOR 7)=SUBSTR(NOW() FROM 1 FOR 7) AND arm_handle = 3;
  69. // #本年已处理
  70. // SELECT COUNT(id) FROM `warn_platform_alarm` WHERE YEAR(arm_end_time)=YEAR(NOW()) AND arm_handle = 3;
  71. func GetAlarmInfo() AlarmList {
  72. var al AlarmList
  73. Db.Select("COUNT(id)").Table("`warn_platform_alarm`").
  74. Where("arm_handle = 1").Find(&al.Backlog)
  75. Db.Select("COUNT(id)").Table("`warn_platform_alarm`").
  76. Where("SUBSTR(arm_end_time FROM 1 FOR 7)=SUBSTR(NOW() FROM 1 FOR 7) AND arm_handle = 3").Find(&al.LastMonthAlarm)
  77. Db.Select("COUNT(id)").Table("`warn_platform_alarm`").
  78. Where("YEAR(arm_end_time)=YEAR(NOW()) AND arm_handle = 3").Find(&al.LastYearAlarm)
  79. Db.Select("arm_content,arm_device_type_name,dict_value AS arm_level_name,arm_time AS create_time").
  80. Table("`warn_platform_alarm` AS w JOIN `dict` AS d ON w.arm_level = d.dict_key").
  81. Where("w.arm_handle = 1 AND d.`code` = 'arm_level_type'").Order("create_time DESC").Limit(7).Find(&al.List)
  82. return al
  83. }
  84. type OverView struct {
  85. Id int64 `gorm:"primary_key" json:"id"`
  86. TenantId string `json:"tenantId"`
  87. PadScreen string `json:"padScreen"`
  88. Site string `json:"site"`
  89. SiteValue int64 `json:"siteValue"`
  90. }
  91. func (o *OverView) TableName() string {
  92. return "big_screen_overview"
  93. }
  94. type OverViewInfo struct {
  95. Id int64 `gorm:"primary_key" json:"id"`
  96. SiteValue int64 `json:"siteValue"`
  97. }
  98. func (o *OverView) Query(tenantId, padScreen string) []OverViewInfo {
  99. var rsp []OverViewInfo
  100. Db.Select("id, site_value").Table(o.TableName()).Where("tenant_id = ? AND pad_screen = ?", tenantId, padScreen).Find(&rsp)
  101. return rsp
  102. }
  103. func (o *OverView) Submit(data OverView) {
  104. Db.Model(&o).Select("pad_screen", "site_value").Where("id=?", data.Id).Updates(&data)
  105. }
  106. func GetEnvData(id string) Environment {
  107. var env Environment
  108. //"lampPoleLocation"
  109. Db.Select("air, create_date, temperature, humidity, pm25, pm10, noise, hpa, wind_direction, wind_speed").
  110. Table("data_environment").Where("device_id=?", id).
  111. Order("create_date DESC").Limit(1).Find(&env)
  112. fmt.Printf("==============env:%+v\n", env)
  113. return env
  114. }
  115. // GetLEDProgramList
  116. // SELECT m.id,m.name,m.duration,d.dict_value, end_time
  117. // FROM `media_publish_libraries` m JOIN `dict` d
  118. // ON dict_key = m.resolution
  119. // WHERE m.tenant_id = '000000' and m.sys_type=0 and m.is_deleted = 0 AND d.code = 'resolution_type'
  120. // ORDER BY id desc LIMIT 10
  121. func GetLEDProgramList(tenantId string) []InfoBoardProgram {
  122. var list []InfoBoardProgram
  123. Db.Select("m.id,m.name,m.duration,d.dict_value AS resolution_name, end_time ,(LENGTH(info_id) - LENGTH(REPLACE(info_id, ',', '')) + 1) AS count").
  124. Table("`media_publish_libraries` m JOIN `dict` d ON dict_key = m.resolution").
  125. Where("d.code='resolution_type' AND m.sys_type=0 AND m.is_deleted=0 AND m.tenant_id=?", tenantId).
  126. Order("id DESC").Limit(10).Find(&list)
  127. return list
  128. }
  129. func GetProgramUrl(id string) Program {
  130. var rsp Program
  131. //SELECT name FROM `media_publish_libraries` WHERE id = 45
  132. t1 := Db.Select("name").Table("media_publish_libraries").Where("id=(?)", id)
  133. //SELECT id FROM `media_program` WHERE name =?
  134. t2 := Db.Select("id").Table("media_program").Where("name=(?)", t1)
  135. //SELECT library_id FROM media_program_relation WHERE program_id = ?
  136. t3 := Db.Select("library_id").Table("media_program_relation").Where("program_id=(?)", t2)
  137. //SELECT material_address FROM `media_library` WHERE id =?
  138. Db.Select("material_address AS send_url").Table("media_library").Where("id =(?)", t3).Find(&rsp)
  139. return rsp
  140. }
  141. func GetBridgeSensors(tenantId string) []Sensor {
  142. var rsp []Sensor
  143. //SELECT id,name FROM `device_bridge_sensor` WHERE tenant_id = '000000' AND is_deleted = 0
  144. Db.Select("id,name").Table("device_bridge_sensor").Where("tenant_id = ? AND is_deleted = 0", tenantId).Find(&rsp)
  145. return rsp
  146. }