edb_data.go 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package services
  2. import (
  3. "eta/eta_forum_hub/models"
  4. "eta/eta_forum_hub/models/mgodb"
  5. "fmt"
  6. )
  7. func BatchAddOrUpdateEdbData(req []*models.AddEdbDataReq) (err error) {
  8. for _, reqData := range req {
  9. if reqData.EdbType == 1 {
  10. err = AddOrUpdateEdbData(reqData.EdbCode, reqData.DataList)
  11. if err != nil {
  12. return
  13. }
  14. } else {
  15. err = AddOrUpdateEdbDataCalculate(reqData.EdbCode, reqData.DataList)
  16. if err != nil {
  17. return
  18. }
  19. }
  20. }
  21. return
  22. }
  23. func AddOrUpdateEdbData(edbCode string, dataList []*mgodb.EdbDataBase) (err error) {
  24. addList := make([]interface{}, 0)
  25. existList, err := mgodb.GetEdbDataBaseByEdbCode(edbCode)
  26. if err != nil {
  27. err = fmt.Errorf("查询指标数据出错 error, %v", err)
  28. return
  29. }
  30. existMap := make(map[string]string, len(existList))
  31. for _, exist := range existList {
  32. existMap[exist.DataTime] = exist.Value
  33. }
  34. for _, v := range dataList {
  35. if oldVal, ok := existMap[v.DataTime]; !ok {
  36. v.EdbInfoId = 0
  37. addList = append(addList, v)
  38. } else {
  39. if v.Value != oldVal {
  40. err = mgodb.ModifyValueEdbDataValue(v.EdbCode, v.DataTime, v.Value)
  41. if err != nil {
  42. err = fmt.Errorf("更新指标数据出错 error, %v", err)
  43. return
  44. }
  45. }
  46. }
  47. }
  48. if len(addList) > 0 {
  49. err = mgodb.InsertEdbDataBatch(addList)
  50. }
  51. return
  52. }
  53. func AddOrUpdateEdbDataCalculate(edbCode string, dataList []*mgodb.EdbDataBase) (err error) {
  54. addList := make([]interface{}, 0)
  55. existList, err := mgodb.GetEdbDataCalculateByEdbCode(edbCode)
  56. if err != nil {
  57. err = fmt.Errorf("查询指标数据出错 error, %v", err)
  58. return
  59. }
  60. existMap := make(map[string]string, len(existList))
  61. for _, exist := range existList {
  62. existMap[exist.DataTime] = exist.Value
  63. }
  64. for _, v := range dataList {
  65. if oldVal, ok := existMap[v.DataTime]; !ok {
  66. v.EdbInfoId = 0
  67. addList = append(addList, v)
  68. } else {
  69. if v.Value != oldVal {
  70. err = mgodb.ModifyValueEdbCalculateDataValue(v.EdbCode, v.DataTime, v.Value)
  71. if err != nil {
  72. err = fmt.Errorf("更新指标数据出错 error, %v", err)
  73. return
  74. }
  75. }
  76. }
  77. }
  78. if len(addList) > 0 {
  79. err = mgodb.InsertEdbCalculateDataBatch(addList)
  80. }
  81. return
  82. }