edb_info_relation.go 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package data
  2. import (
  3. "eta/eta_api/models/data_manage"
  4. "eta/eta_api/services/alarm_msg"
  5. "eta/eta_api/utils"
  6. "fmt"
  7. )
  8. // SaveChartEdbInfoRelation 添加/编辑图表指标引用关联记录
  9. func SaveChartEdbInfoRelation(edbInfoIds []int, chartInfo *data_manage.ChartInfo) (err error) {
  10. // 实现添加引用记录的逻辑
  11. if len(edbInfoIds) == 0 {
  12. return
  13. }
  14. defer func() {
  15. if err != nil {
  16. tips := "SaveChartEdbInfoRelation-添加/编辑图表指标引用关联记录失败, ErrMsg:\n" + err.Error()
  17. utils.FileLog.Info(tips)
  18. go alarm_msg.SendAlarmMsg(tips, 3)
  19. }
  20. }()
  21. refreshIds := make([]int, 0)
  22. indexCodeList := make([]string, 0)
  23. // 查询指标信息
  24. edbInfoList, e := data_manage.GetEdbInfoByIdList(edbInfoIds)
  25. if e != nil {
  26. err = fmt.Errorf("查询指标信息失败,%s", e.Error())
  27. return
  28. }
  29. // 只统计钢联化工和wind来源的指标
  30. for _, edbInfo := range edbInfoList {
  31. if edbInfo.Source != utils.DATA_SOURCE_WIND && edbInfo.Source != utils.DATA_SOURCE_MYSTEEL_CHEMICAL {
  32. continue
  33. }
  34. refreshIds = append(refreshIds, edbInfo.EdbInfoId)
  35. if edbInfo.Source == utils.DATA_SOURCE_MYSTEEL_CHEMICAL {
  36. indexCodeList = append(indexCodeList, edbInfo.EdbCode)
  37. }
  38. }
  39. // 循转组装引用
  40. // 查询已有的引用关系
  41. existList, e := data_manage.GetEdbInfoRelationByReferObjectId(chartInfo.ChartInfoId, utils.EDB_RELATION_CHART)
  42. if e != nil {
  43. err = fmt.Errorf("查询已有的引用关系失败,%s", e.Error())
  44. return
  45. }
  46. deleteMap := make(map[int]bool)
  47. relationMap := make(map[int]bool)
  48. for _, exist := range existList {
  49. deleteMap[exist.EdbInfoId] = true
  50. relationMap[exist.EdbInfoId] = true
  51. }
  52. // 新增不存在的引用关系
  53. // 删除不再需要的引用关系
  54. addList := make([]*data_manage.EdbInfoRelation, 0)
  55. deleteRelationIds := make([]int, 0)
  56. for _, edbInfo := range edbInfoList {
  57. if edbInfo.Source != utils.DATA_SOURCE_WIND && edbInfo.Source != utils.DATA_SOURCE_MYSTEEL_CHEMICAL {
  58. continue
  59. }
  60. if _, ok := relationMap[edbInfo.EdbInfoId]; ok {
  61. delete(deleteMap, edbInfo.EdbInfoId)
  62. } else {
  63. tmp := &data_manage.EdbInfoRelation{
  64. ReferObjectId: chartInfo.ChartInfoId,
  65. ReferObjectType: utils.EDB_RELATION_CHART,
  66. ReferObjectSubType: chartInfo.Source,
  67. EdbInfoId: edbInfo.EdbInfoId,
  68. EdbName: edbInfo.EdbName,
  69. Source: edbInfo.Source,
  70. EdbCode: edbInfo.EdbCode,
  71. }
  72. addList = append(addList, tmp)
  73. }
  74. }
  75. // 删除不再需要的引用关系
  76. for deleteId, _ := range deleteMap {
  77. deleteRelationIds = append(deleteRelationIds, deleteId)
  78. }
  79. //更新指标刷新状态为启用
  80. err = data_manage.AddOrUpdateEdbInfoRelation(addList, deleteRelationIds, refreshIds, indexCodeList)
  81. if err != nil {
  82. err = fmt.Errorf("删除不再需要的引用关系失败,%s", err.Error())
  83. return
  84. }
  85. return
  86. }