gn_platform.go 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. package index_data
  2. import (
  3. "eta_gn/eta_bridge/global"
  4. "eta_gn/eta_bridge/models/gn"
  5. "eta_gn/eta_bridge/services/alarm_msg"
  6. "eta_gn/eta_bridge/utils"
  7. "fmt"
  8. "github.com/rdlucklib/rdluck_tools/paging"
  9. "github.com/shopspring/decimal"
  10. "strings"
  11. "time"
  12. )
  13. // TODO 过滤前后空格
  14. // GetPageIndexesFromGn 分页获取指标数据
  15. func GetPageIndexesFromGn(pageIndex, pageSize int, modifyTime string) (list []gn.IndexInfo, page *paging.PagingItem, err error) {
  16. defer func() {
  17. if err != nil {
  18. global.LOG.Info("GetPageIndexesFromGn Err: " + err.Error())
  19. go alarm_msg.SendAlarmMsg("GetPageIndexesFromGn Err: "+err.Error(), 3)
  20. return
  21. }
  22. }()
  23. req := IndexInfoReq{
  24. UpdateTime: "",
  25. Size: pageSize,
  26. PageNo: pageIndex,
  27. }
  28. resp, err := GetIndexInfoList(req)
  29. if err != nil {
  30. return
  31. }
  32. page = paging.GetPaging(resp.Data.PageNo, resp.Data.Size, resp.Data.Total)
  33. list = make([]gn.IndexInfo, 0)
  34. for _, v := range resp.Data.Records {
  35. //if v.INDEXLEVELTHREE == `` {
  36. // continue
  37. //}
  38. if v.INDEXLEVELONE == `` {
  39. v.INDEXLEVELONE = `未分类`
  40. }
  41. if v.INDEXLEVELTWO == `` {
  42. v.INDEXLEVELTWO = `未分类`
  43. }
  44. if v.INDEXLEVELTHREE == `` {
  45. v.INDEXLEVELTHREE = `未分类`
  46. }
  47. list = append(list, gn.IndexInfo{
  48. ClassifyNameOne: strings.TrimSpace(v.INDEXLEVELONE),
  49. ClassifyNameTwo: strings.TrimSpace(v.INDEXLEVELTWO),
  50. ClassifyNameThree: strings.TrimSpace(v.INDEXLEVELTHREE),
  51. DataIndexCode: fmt.Sprint(v.INDEXID),
  52. SourceEdbCode: strings.TrimSpace(v.INDEXORIGINCODE),
  53. EdbName: strings.TrimSpace(v.INDEXORIGINNAME),
  54. Frequency: strings.TrimSpace(v.DATAFREQ),
  55. Unit: strings.TrimSpace(v.DATAUNIT),
  56. SourceName: strings.TrimSpace(v.DATASOURCE),
  57. })
  58. }
  59. return
  60. }
  61. // GetIndexAndDataFromGn 获取指标和数据
  62. func GetIndexAndDataFromGn(indexCode, startDate, endDate string) (list []gn.IndexData, err error) {
  63. defer func() {
  64. if err != nil {
  65. global.LOG.Info("GetIndexAndDataFromGn Err: " + err.Error())
  66. go alarm_msg.SendAlarmMsg("GetIndexAndDataFromGn Err: "+err.Error(), 3)
  67. return
  68. }
  69. }()
  70. var dataDate string
  71. dateList := make([]string, 0)
  72. if startDate != `` {
  73. dateList = append(dateList, startDate)
  74. }
  75. if endDate != `` {
  76. dateList = append(dateList, endDate)
  77. }
  78. if len(dateList) > 0 {
  79. dataDate = strings.Join(dateList, ",")
  80. }
  81. req := IndexValueReq{
  82. IndexId: indexCode,
  83. DataDate: dataDate,
  84. Size: 100,
  85. PageNo: 1,
  86. }
  87. list = make([]gn.IndexData, 0)
  88. isEnd := false
  89. for i := 1; !isEnd; i++ {
  90. req.PageNo = i
  91. tmpList, page, tmpErr := getIndexAndDataFromGn(req)
  92. if tmpErr != nil {
  93. err = tmpErr
  94. return
  95. }
  96. list = append(list, tmpList...)
  97. isEnd = page.IsEnd
  98. }
  99. return
  100. }
  101. // getIndexAndDataFromGn
  102. // @Description: 获取数据
  103. // @param req
  104. // @return list
  105. // @return page
  106. // @return err
  107. func getIndexAndDataFromGn(req IndexValueReq) (list []gn.IndexData, page *paging.PagingItem, err error) {
  108. defer func() {
  109. if err != nil {
  110. global.LOG.Info("GetIndexAndDataFromGn Err: " + err.Error())
  111. go alarm_msg.SendAlarmMsg("GetIndexAndDataFromGn Err: "+err.Error(), 3)
  112. return
  113. }
  114. }()
  115. resp, err := GetIndexValueList(req)
  116. if err != nil {
  117. return
  118. }
  119. page = paging.GetPaging(resp.Data.PageNo, resp.Data.Size, resp.Data.Total)
  120. list = make([]gn.IndexData, 0)
  121. for _, v := range resp.Data.Records {
  122. // 非数值数据,过滤
  123. //脏数据:
  124. // 停产
  125. // TODO、
  126. // 1-2
  127. // 空字符串
  128. // 空数据,过滤
  129. if v.VALUE == `` {
  130. continue
  131. }
  132. valF, tmpErr := decimal.NewFromString(strings.TrimSpace(v.VALUE))
  133. if tmpErr != nil {
  134. //err = tmpErr
  135. continue
  136. }
  137. val, _ := valF.Float64()
  138. dataTime, tmpErr := time.ParseInLocation(utils.FormatDateTime, v.DATADATE, time.Local)
  139. if tmpErr != nil {
  140. continue
  141. }
  142. list = append(list, gn.IndexData{
  143. Val: val,
  144. UpdateTime: v.UPDATETIME,
  145. DataTime: dataTime.Format(utils.FormatDate),
  146. })
  147. }
  148. return
  149. }