query.go 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package edb_info
  2. import (
  3. "hongze/hongze_yb/global"
  4. "hongze/hongze_yb/utils"
  5. )
  6. // GetEdbInfoById 主键获取指标信息
  7. func GetEdbInfoById(edbInfoId int) (item *EdbInfo, err error) {
  8. err = global.MYSQL["data"].Where("edb_info_id = ? ", edbInfoId).First(&item).Error
  9. return
  10. }
  11. // GetEdbInfoAllCalculateByEdbInfoIdList 根据指标id集合 获取基础指标对应的所有计算指标
  12. func GetEdbInfoAllCalculateByEdbInfoIdList(edbInfoIdList []int) (list []*EdbInfo, err error) {
  13. num := len(edbInfoIdList)
  14. if num <= 0 {
  15. return
  16. }
  17. sql := ` SELECT b.* FROM edb_info_calculate_mapping AS a
  18. INNER JOIN edb_info AS b ON a.edb_info_id=b.edb_info_id
  19. WHERE a.from_edb_info_id IN (?)
  20. GROUP BY a.edb_info_id
  21. ORDER BY a.edb_info_id ASC `
  22. err = global.MYSQL["data"].Raw(sql, edbInfoIdList).Scan(&list).Error
  23. return
  24. }
  25. // GetEdbInfoByIdList 根据指标id集合 获取 指标列表
  26. func GetEdbInfoByIdList(edbInfoIdList []int) (items []*EdbInfo, err error) {
  27. num := len(edbInfoIdList)
  28. if num <= 0 {
  29. return
  30. }
  31. sql := ` SELECT * FROM edb_info WHERE edb_info_id IN (?) `
  32. err = global.MYSQL["data"].Raw(sql, edbInfoIdList).Scan(&items).Error
  33. return
  34. }
  35. // GetRefreshEdbInfoFromBase 查询基础指标
  36. func GetRefreshEdbInfoFromBase(edbInfoId, source int) (baseEdbInfoArr, calculateInfoArr []*EdbInfo, err error) {
  37. calculateList, err := GetEdbInfoCalculateMap(edbInfoId)
  38. if err != nil && err != utils.ErrNoRow {
  39. return
  40. }
  41. for _, item := range calculateList {
  42. if item.EdbType == 1 {
  43. baseEdbInfoArr = append(baseEdbInfoArr, item)
  44. } else {
  45. calculateInfoArr = append(calculateInfoArr, item)
  46. newBaseEdbInfoArr, newCalculateInfoArr, _ := GetRefreshEdbInfoFromBase(item.EdbInfoId, item.Source)
  47. baseEdbInfoArr = append(baseEdbInfoArr, newBaseEdbInfoArr...)
  48. calculateInfoArr = append(calculateInfoArr, newCalculateInfoArr...)
  49. }
  50. }
  51. return
  52. }
  53. // GetEdbInfoCalculateMap 获取计算指标关联信息
  54. func GetEdbInfoCalculateMap(edbInfoId int) (list []*EdbInfo, err error) {
  55. sql := ` SELECT b.* FROM edb_info_calculate_mapping AS a
  56. INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id
  57. WHERE a.edb_info_id=? ORDER BY sort ASC `
  58. err = global.MYSQL["data"].Raw(sql, edbInfoId).Scan(&list).Error
  59. return
  60. }
  61. // GetPredictEdbInfoAllCalculate 根据基础预测指标id集合 获取 所有的普通指标列表数据
  62. func GetPredictEdbInfoAllCalculate(edbInfoIdList []int) (list []*EdbInfo, err error) {
  63. num := len(edbInfoIdList)
  64. if num <= 0 {
  65. return
  66. }
  67. sql := ` SELECT b.* FROM predict_edb_conf AS a
  68. INNER JOIN edb_info AS b ON a.source_edb_info_id=b.edb_info_id
  69. WHERE a.predict_edb_info_id IN (?)
  70. GROUP BY a.source_edb_info_id
  71. ORDER BY a.source_edb_info_id ASC `
  72. err = global.MYSQL["data"].Raw(sql, edbInfoIdList).Scan(&list).Error
  73. return
  74. }