intelligentLightingService.go 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. package service
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "iot_manager_service/app/device/dao"
  6. "iot_manager_service/app/device/model"
  7. "iot_manager_service/util"
  8. "strconv"
  9. "time"
  10. )
  11. var IntelligentLightingService = new(intelligentLightingService)
  12. type intelligentLightingService struct{}
  13. func (s *intelligentLightingService) GetDetailByLight(id int) (model.RspIntelligentLightDetail, *util.Errors) {
  14. detail := model.RspIntelligentLightDetail{}
  15. lightControl, _ := LightControlService.GetOne(id)
  16. if lightControl != nil {
  17. lightControl.LampPoleName = lightControl.LampPoleName + "(" + lightControl.LampPoleSN + ")"
  18. detail.LightControlList = []dao.LightControl{*lightControl}
  19. detail.LampPoleName = lightControl.LampPoleName
  20. }
  21. detail.LightRelMap = s.GetLightRelation(id, model.RelationTypeLight)
  22. return detail, nil
  23. }
  24. func (s *intelligentLightingService) GetDetailByGroup(id int) (model.RspIntelligentLightDetailByGroup, *util.Errors) {
  25. detail := model.RspIntelligentLightDetailByGroup{}
  26. lampPoleGroup, _ := LightControlService.GetByGroupId(id)
  27. if len(lampPoleGroup) > 0 {
  28. detail.LightControlList = lampPoleGroup
  29. detail.LampPoleGroupName = lampPoleGroup[0].LampPoleName
  30. }
  31. detail.CountLampPole = LampPoleService.CountLampPole(id)
  32. detail.LightRelMap = s.GetLightRelation(id, model.RelationTypeLampPoleGroup)
  33. return detail, nil
  34. }
  35. func (s *intelligentLightingService) GetLightRelation(rId, relationType int) model.IntelligentLightSimple {
  36. detail := model.IntelligentLightSimple{}
  37. // 获取照明策略关联
  38. intelligentLight := dao.IntelligentLight{
  39. Rid: rId,
  40. RelationType: relationType,
  41. TenantID: "000000", //todo 使用登录态
  42. }
  43. relations, _ := intelligentLight.GetByRidAndType()
  44. if len(relations) == 0 {
  45. return detail
  46. }
  47. lightId := relations[0].LightID
  48. // 获取策略详情(日期,如果是年,使用当前年起始日期)
  49. lightStrategy, _ := LightStrategyService.GetOne(lightId)
  50. if lightStrategy == nil {
  51. return detail
  52. }
  53. //获取灯控名称和SN
  54. detail.LightName = lightStrategy.LightName
  55. detail.LightSn = lightStrategy.LightSn
  56. //全年
  57. if lightStrategy.IsAllYear == model.IsYear {
  58. year := time.Now().Year()
  59. detail.EffectiveDate = fmt.Sprintf("%d-01-01 ~ %d-12-31", year, year)
  60. } else {
  61. detail.EffectiveDate = lightStrategy.StartTime + " ~ " + lightStrategy.EndTime
  62. }
  63. // 获取策略时间(每日的时间策略)
  64. timeConditions := TimeConditionService.GetByLightId(lightId)
  65. for _, timeCondition := range timeConditions {
  66. if timeCondition.StartTime == "" && timeCondition.EndTime == "" {
  67. timeCondition.StartTime = "日落"
  68. timeCondition.EndTime = "日出"
  69. }
  70. detail.TimeConditionList = append(detail.TimeConditionList, model.TimeConditionSimple{
  71. Luminance: strconv.Itoa(timeCondition.Luminance) + "%",
  72. Times: timeCondition.StartTime + " ~ " + timeCondition.EndTime,
  73. })
  74. }
  75. return detail
  76. }
  77. func (s *intelligentLightingService) BatchGet(ids []int) []dao.IntelligentLight {
  78. // 创建查询实例
  79. intelligent := &dao.IntelligentLight{}
  80. intelligentLights, err := intelligent.BatchGet(ids)
  81. if err != nil {
  82. return nil
  83. }
  84. return intelligentLights
  85. }
  86. func (s *intelligentLightingService) List(searchValue, groupId string, current, size int) ([]model.RspIntelligentLightListDetail,
  87. *util.Errors) {
  88. var result []model.RspIntelligentLightListDetail
  89. //获取策略关联信息
  90. intelligent := &dao.IntelligentLight{
  91. RelationType: model.RelationTypeLampPoleGroup,
  92. TenantID: "000000", //todo 使用登录态
  93. }
  94. gId := -1
  95. if groupId != "" {
  96. gId, _ = strconv.Atoi(groupId)
  97. intelligent.Rid = gId
  98. }
  99. list, err := intelligent.GetByType()
  100. fmt.Printf("list = %+v \n", list)
  101. if err != nil {
  102. return nil, util.FailResponse(err.Error(), nil)
  103. }
  104. data, err := json.Marshal(list)
  105. if err != nil {
  106. return nil, util.FailResponse(err.Error(), nil)
  107. }
  108. fmt.Println("data = ", string(data))
  109. err = json.Unmarshal(data, &result)
  110. if err != nil {
  111. return nil, util.FailResponse(err.Error(), nil)
  112. }
  113. return result, nil
  114. }