notice_set_service.go 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. package service
  2. import (
  3. "fmt"
  4. systemService "iot_manager_service/app/system/service"
  5. "iot_manager_service/app/warn/dao"
  6. "iot_manager_service/app/warn/model"
  7. "strconv"
  8. "strings"
  9. )
  10. var NoticeSetService = new(noticeSetService)
  11. type noticeSetService struct{}
  12. func (s noticeSetService) GetList(tenantId int, searchValue string) ([]model.NoticeSetRecords, error) {
  13. code := dao.ViewsAllCode{TenantId: tenantId}
  14. deviceTypeGroups, _ := code.GetGroupByDeviceType(searchValue)
  15. var deviceTypeGroupsNew []model.NoticeSetRecords
  16. noteiceSets := s.getNoteiceSets(tenantId)
  17. for _, group := range deviceTypeGroups {
  18. var deviceNew []model.NoticeSetRecords
  19. code.DeviceType = group.DeviceType
  20. devices, _ := code.GetDatasByDeviceType(searchValue)
  21. for _, device := range devices {
  22. key := strconv.Itoa(tenantId) + strconv.Itoa(3) + strconv.Itoa(device.DeviceType) + strconv.Itoa(device.DeviceId)
  23. set := noteiceSets[key]
  24. deviceNew = append(deviceNew, model.NoticeSetRecords{
  25. Rtype: 3,
  26. RtypeName: device.DeviceName + "(" + device.Sn + ")",
  27. DeviceType: device.DeviceType,
  28. DeviceId: device.DeviceId,
  29. ID: device.Sn,
  30. DevUserNoticeModesName: set.DevUserNoticeModesName,
  31. BusinessNoticeModesName: set.BusinessNoticeModesName,
  32. DevUserIdsName: set.DevUserIdsName,
  33. BusinessUserIdsName: set.BusinessUserIdsName,
  34. DevUserIds: set.DevUserIds,
  35. BusinessUserIds: set.BusinessUserIds,
  36. })
  37. }
  38. key := strconv.Itoa(tenantId) + strconv.Itoa(2) + strconv.Itoa(group.DeviceType) + strconv.Itoa(999999)
  39. //set.TenantId + strconv.Itoa(set.RType) + strconv.Itoa(set.DeviceType) + strconv.Itoa(set.DeviceId)
  40. //fmt.Printf("key = %v", key)
  41. //println("")
  42. set := noteiceSets[key]
  43. //fmt.Printf("set = %v", set)
  44. deviceTypeGroupsNew = append(deviceTypeGroupsNew, model.NoticeSetRecords{
  45. Rtype: 2,
  46. RtypeName: group.DeviceTypeName + "(" + strconv.Itoa(len(deviceNew)) + "台)",
  47. Children: deviceNew,
  48. DeviceType: group.DeviceType,
  49. DeviceId: 0,
  50. ID: strconv.Itoa(group.DeviceType),
  51. DevUserNoticeModesName: set.DevUserNoticeModesName,
  52. BusinessNoticeModesName: set.BusinessNoticeModesName,
  53. DevUserIdsName: set.DevUserIdsName,
  54. BusinessUserIdsName: set.BusinessUserIdsName,
  55. DevUserIds: set.DevUserIds,
  56. BusinessUserIds: set.BusinessUserIds,
  57. })
  58. }
  59. key := strconv.Itoa(tenantId) + strconv.Itoa(1) + strconv.Itoa(0) + strconv.Itoa(999999)
  60. set := noteiceSets[key]
  61. data := []model.NoticeSetRecords{
  62. {
  63. Rtype: 0,
  64. RtypeName: "全部设备",
  65. Children: deviceTypeGroupsNew,
  66. DeviceType: 0,
  67. DeviceId: 0,
  68. ID: "999999",
  69. DevUserNoticeModesName: set.DevUserNoticeModesName,
  70. BusinessNoticeModesName: set.BusinessNoticeModesName,
  71. DevUserIdsName: set.DevUserIdsName,
  72. BusinessUserIdsName: set.BusinessUserIdsName,
  73. DevUserIds: set.DevUserIds,
  74. BusinessUserIds: set.BusinessUserIds,
  75. },
  76. }
  77. //fmt.Printf("noteiceSets = %v", noteiceSets)
  78. return data, nil
  79. }
  80. func (s noticeSetService) Update(post model.NoticeUpdateData, tenantId int) error {
  81. rtype := post.Rtype
  82. if rtype == 0 {
  83. rtype = 1
  84. }
  85. deviceId := 999999
  86. if rtype == 3 {
  87. deviceId = post.DeviceID
  88. }
  89. set := dao.NoticeSet{
  90. TenantId: strconv.Itoa(tenantId),
  91. DeviceType: post.DeviceType,
  92. DeviceId: deviceId,
  93. DeviceSn: post.ID,
  94. RType: rtype,
  95. DevUserNoticeModes: post.NoticeOperationType,
  96. BusinessNoticeModes: post.NoticeBusinessType,
  97. DevUserNoticeModesName: post.ShowOperationTypeName,
  98. BusinessNoticeModesName: post.ShowBusinessTypeName,
  99. DevUserIds: post.NoticeOperationMan,
  100. BusinessUserIds: post.NoticeBusinessMan,
  101. DevUserIdsName: s.getUserName(post.NoticeOperationMan),
  102. BusinessUserIdsName: s.getUserName(post.NoticeBusinessMan),
  103. }
  104. return set.UpdateOrSave()
  105. }
  106. func (s noticeSetService) getNoteiceSets(tenantId int) map[string]dao.NoticeSet {
  107. noticeSet := dao.NoticeSet{TenantId: strconv.Itoa(tenantId)}
  108. list, _ := noticeSet.GetList()
  109. news := make(map[string]dao.NoticeSet)
  110. for _, set := range list {
  111. key := set.TenantId + strconv.Itoa(set.RType) + strconv.Itoa(set.DeviceType) + strconv.Itoa(set.DeviceId)
  112. fmt.Printf("xxxkey = %v", key)
  113. set.BusinessUserIdsName = strings.ReplaceAll(set.BusinessUserIdsName, " | ", ",")
  114. set.DevUserIdsName = strings.ReplaceAll(set.DevUserIdsName, " | ", ",")
  115. news[key] = set
  116. }
  117. return news
  118. }
  119. func (s noticeSetService) GetById(id string) (*model.NoticeSetDetail, error) {
  120. noticeSet := dao.NoticeSet{DeviceSn: id}
  121. data, err := noticeSet.GetById()
  122. if err != nil {
  123. return nil, err
  124. }
  125. detail := &model.NoticeSetDetail{
  126. ID: data.DeviceSn,
  127. RidType: data.RType,
  128. NoticeOperationType: data.DevUserNoticeModes,
  129. NoticeBusinessType: data.BusinessNoticeModes,
  130. NoticeOperationMan: data.DevUserIds,
  131. NoticeBusinessMan: data.BusinessUserIds,
  132. }
  133. return detail, nil
  134. }
  135. func (s noticeSetService) UserList(account string, name string, current int, size int) ([]model.NoticeSetDUserList, error) {
  136. var list []model.NoticeSetDUserList
  137. userList, _ := systemService.UserService.List(account, name, current, size)
  138. for _, user := range userList {
  139. idStr := strconv.Itoa(int(user.ID))
  140. list = append(list, model.NoticeSetDUserList{ID: idStr, Name: user.Name})
  141. }
  142. return list, nil
  143. }
  144. func (s noticeSetService) getUserName(ids string) string {
  145. split := strings.Split(ids, ",")
  146. fm := make(map[string]int)
  147. for i, v := range split {
  148. fm[v] = i
  149. }
  150. userList, _ := systemService.UserService.List("", "", 0, 1000)
  151. new := []string{}
  152. for _, detail := range userList {
  153. id := strconv.Itoa(int(detail.ID))
  154. if _, ok := fm[id]; ok {
  155. new = append(new, detail.Name)
  156. }
  157. }
  158. return strings.Join(new, ",")
  159. }
  160. func (s noticeSetService) Remove(id string, tenant_id int) error {
  161. fmt.Printf("id = %v", id)
  162. noticeSet := dao.NoticeSet{DeviceSn: id, TenantId: strconv.Itoa(tenant_id)}
  163. return noticeSet.Delete()
  164. }