edb_data.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package services
  2. import (
  3. "eta/eta_forum_admin/models"
  4. "eta/eta_forum_admin/models/mgodb"
  5. "fmt"
  6. "strconv"
  7. )
  8. func BatchAddOrUpdateEdbData(req []*models.AddEdbDataReq) (err error) {
  9. for _, reqData := range req {
  10. err = AddOrUpdateEdbData(reqData.EdbCode, reqData.DataList)
  11. if err != nil {
  12. return
  13. }
  14. }
  15. return
  16. }
  17. func AddOrUpdateEdbData(edbCode string, dataList []*mgodb.EdbDataBase) (err error) {
  18. addList := make([]interface{}, 0)
  19. existList, err := mgodb.GetEdbDataBaseByEdbCode(edbCode)
  20. if err != nil {
  21. err = fmt.Errorf("查询指标数据出错 error, %v", err)
  22. return
  23. }
  24. existMap := make(map[string]string, len(existList))
  25. for _, exist := range existList {
  26. existMap[exist.DataTime] = exist.Value
  27. }
  28. for _, v := range dataList {
  29. if oldVal, ok := existMap[v.DataTime]; !ok {
  30. v.EdbInfoId = 0
  31. addList = append(addList, v)
  32. } else {
  33. if v.Value != oldVal {
  34. err = mgodb.ModifyValueEdbInfoDataStatus(v.EdbCode, v.DataTime, v.Value)
  35. if err != nil {
  36. err = fmt.Errorf("更新指标数据出错 error, %v", err)
  37. return
  38. }
  39. }
  40. }
  41. }
  42. if len(addList) > 0 {
  43. err = mgodb.InsertBatch(addList)
  44. }
  45. return
  46. }
  47. // GetEdbDataList 获取指标的数据(日期正序返回)
  48. func GetEdbDataList(endInfoId int, startDate, endDate string) (list []*models.EdbDataList, err error) {
  49. dataList, err := mgodb.GetEdbDataList(endInfoId, startDate, endDate)
  50. if err != nil {
  51. err = fmt.Errorf("查询指标数据出错 error, %v", err)
  52. return
  53. }
  54. list = make([]*models.EdbDataList, 0)
  55. for _, v := range dataList {
  56. // 字符串转成浮点数
  57. f, _ := strconv.ParseFloat(v.Value, 64)
  58. list = append(list, &models.EdbDataList{
  59. EdbDataId: 0,
  60. EdbInfoId: v.EdbInfoId,
  61. DataTime: v.DataTime,
  62. DataTimestamp: v.DataTimestamp,
  63. Value: f,
  64. },
  65. )
  66. }
  67. return
  68. }