base_from_bloomberg.go 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package data
  2. import (
  3. "eta_gn/eta_api/models/data_manage"
  4. "eta_gn/eta_api/utils"
  5. "fmt"
  6. )
  7. type BloombergIndexSource2EdbReq struct {
  8. EdbCode string
  9. EdbName string
  10. Frequency string
  11. Unit string
  12. ClassifyId int
  13. AdminId int
  14. AdminRealName string
  15. }
  16. func BloombergIndexSource2Edb(req BloombergIndexSource2EdbReq, lang string) (edb *data_manage.EdbInfo, err error, errMsg string, skip bool) {
  17. if req.EdbCode == "" {
  18. err = fmt.Errorf("指标ID为空")
  19. return
  20. }
  21. defer func() {
  22. if err != nil {
  23. tips := fmt.Sprintf("BloombergIndexSource2Edb新增失败, Err: %s", err.Error())
  24. fmt.Println(tips)
  25. utils.FileLog.Info(tips)
  26. }
  27. }()
  28. source := utils.DATA_SOURCE_BLOOMBERG
  29. dataList, e := data_manage.GetEdbDataAllByEdbCode(req.EdbCode, source, utils.DATA_SUB_SOURCE_EDB, utils.EDB_DATA_LIMIT)
  30. if e != nil {
  31. err = fmt.Errorf("获取指标数据失败, Err: %s", e.Error())
  32. return
  33. }
  34. if len(dataList) == 0 {
  35. res, e := AddEdbData(source, req.EdbCode, req.Frequency)
  36. if e != nil {
  37. err = fmt.Errorf("index_lib: 新增指标数据失败, Err: %s", e.Error())
  38. return
  39. }
  40. if res == nil {
  41. err = fmt.Errorf("index_lib: 新增指标数据失败, res nil")
  42. return
  43. }
  44. if res.Ret != 200 {
  45. err = fmt.Errorf("index_lib: 新增指标数据失败, Ret: %d", res.Ret)
  46. return
  47. }
  48. }
  49. exist, e := data_manage.GetEdbInfoByEdbCode(source, req.EdbCode)
  50. if e != nil && !utils.IsErrNoRow(e) {
  51. err = fmt.Errorf("获取指标是否存在失败, err: %s", e.Error())
  52. return
  53. }
  54. if exist != nil {
  55. skip = true
  56. return
  57. }
  58. var startDate, endDate string
  59. minMax, e := data_manage.GetEdbInfoMaxAndMinInfo(source, utils.DATA_SUB_SOURCE_EDB, req.EdbCode)
  60. if e != nil && !utils.IsErrNoRow(e) {
  61. err = fmt.Errorf("MinMax: 获取指标极值失败, err: %s", e.Error())
  62. return
  63. }
  64. if minMax != nil {
  65. startDate = minMax.MinDate
  66. endDate = minMax.MaxDate
  67. }
  68. edbInfo, e, msg, _ := EdbInfoAdd(source, utils.DATA_SUB_SOURCE_EDB, req.ClassifyId, req.EdbCode, req.EdbName, req.Frequency, req.Unit, startDate, endDate, req.AdminId, req.AdminRealName, lang)
  69. if e != nil {
  70. errMsg = msg
  71. err = fmt.Errorf("EdbInfo: 新增指标失败, err: %s", e.Error())
  72. return
  73. }
  74. edb = edbInfo
  75. indexOb := new(data_manage.BaseFromBloombergIndex)
  76. if e = indexOb.UpdateEdbExist(req.EdbCode); e != nil {
  77. err = fmt.Errorf("BaseIndex: 标记已添加指标库失败, err: %s", e.Error())
  78. return
  79. }
  80. go AddOrEditEdbInfoToEs(edbInfo.EdbInfoId)
  81. return
  82. }