gn_platform.go 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. package index_data
  2. import (
  3. "eta_gn/eta_bridge/global"
  4. "eta_gn/eta_bridge/models/gn"
  5. "eta_gn/eta_bridge/models/index"
  6. "eta_gn/eta_bridge/services/alarm_msg"
  7. "eta_gn/eta_bridge/utils"
  8. "fmt"
  9. "github.com/rdlucklib/rdluck_tools/paging"
  10. "github.com/shopspring/decimal"
  11. "strings"
  12. "time"
  13. )
  14. func GetPageIndexesFromGn(pageIndex, pageSize int, modifyTime, indexId string) (list []gn.IndexInfo, page *paging.PagingItem, err error) {
  15. defer func() {
  16. if err != nil {
  17. global.LOG.Info("GetPageIndexesFromGn Err: " + err.Error())
  18. go alarm_msg.SendAlarmMsg("GetPageIndexesFromGn Err: "+err.Error(), 3)
  19. return
  20. }
  21. }()
  22. req := IndexInfoReq{
  23. UpdateTime: "",
  24. Size: pageSize,
  25. PageNo: pageIndex,
  26. }
  27. if indexId != "" {
  28. req.IndexId = indexId
  29. }
  30. resp, err := GetIndexInfoList(req)
  31. if err != nil {
  32. return
  33. }
  34. page = paging.GetPaging(resp.Data.PageNo, resp.Data.Size, resp.Data.Total)
  35. list = make([]gn.IndexInfo, 0)
  36. for _, v := range resp.Data.Records {
  37. if v.INDEXLEVELONE == `` {
  38. v.INDEXLEVELONE = `其它指标`
  39. }
  40. list = append(list, gn.IndexInfo{
  41. ClassifyNameOne: strings.TrimSpace(v.INDEXLEVELONE),
  42. ClassifyNameTwo: strings.TrimSpace(v.INDEXLEVELTWO),
  43. ClassifyNameThree: strings.TrimSpace(v.INDEXLEVELTHREE),
  44. DataIndexCode: fmt.Sprint(v.UNIQUE_ID),
  45. SourceEdbCode: strings.TrimSpace(v.INDEXORIGINCODE),
  46. EdbName: strings.TrimSpace(v.INDEXNAME),
  47. Frequency: strings.TrimSpace(v.DATAFREQ),
  48. Unit: strings.TrimSpace(v.DATAUNIT),
  49. SourceName: strings.TrimSpace(v.DATASOURCE),
  50. SourceCode: strings.TrimSpace(v.DATASOURCECODE),
  51. })
  52. }
  53. return
  54. }
  55. func GetIndexAndDataFromGn(indexCode, startDate, endDate string) (list []gn.IndexData, err error) {
  56. defer func() {
  57. if err != nil {
  58. global.LOG.Info("GetIndexAndDataFromGn Err: " + err.Error())
  59. go alarm_msg.SendAlarmMsg("GetIndexAndDataFromGn Err: "+err.Error(), 3)
  60. return
  61. }
  62. }()
  63. var dataDate string
  64. dateList := make([]string, 0)
  65. if startDate == `` {
  66. startDate = `1901-01-01`
  67. }
  68. dateList = append(dateList, startDate)
  69. if endDate == `` {
  70. endDate = time.Now().AddDate(0, 1, 0).Format(utils.FormatDate)
  71. }
  72. dateList = append(dateList, endDate)
  73. if len(dateList) > 0 {
  74. dataDate = strings.Join(dateList, ",")
  75. }
  76. req := IndexValueReq{
  77. UniqueId: indexCode,
  78. DataDate: dataDate,
  79. Size: 500,
  80. PageNo: 1,
  81. }
  82. list = make([]gn.IndexData, 0)
  83. isEnd := false
  84. for i := 1; !isEnd; i++ {
  85. req.PageNo = i
  86. tmpList, page, tmpErr := getIndexAndDataFromGn(req)
  87. if tmpErr != nil {
  88. err = tmpErr
  89. return
  90. }
  91. list = append(list, tmpList...)
  92. isEnd = page.IsEnd
  93. }
  94. return
  95. }
  96. func getIndexAndDataFromGn(req IndexValueReq) (list []gn.IndexData, page *paging.PagingItem, err error) {
  97. defer func() {
  98. if err != nil {
  99. global.LOG.Info("GetIndexAndDataFromGn Err: " + err.Error())
  100. go alarm_msg.SendAlarmMsg("GetIndexAndDataFromGn Err: "+err.Error(), 3)
  101. return
  102. }
  103. }()
  104. resp, err := GetIndexValueList(req)
  105. if err != nil {
  106. return
  107. }
  108. page = paging.GetPaging(resp.Data.PageNo, resp.Data.Size, resp.Data.Total)
  109. list = make([]gn.IndexData, 0)
  110. for _, v := range resp.Data.Records {
  111. if v.VALUE == `` {
  112. continue
  113. }
  114. valF, tmpErr := decimal.NewFromString(strings.TrimSpace(v.VALUE))
  115. if tmpErr != nil {
  116. continue
  117. }
  118. val, _ := valF.Float64()
  119. dataTime, tmpErr := time.ParseInLocation(utils.FormatDateTime, v.DATADATE, time.Local)
  120. if tmpErr != nil {
  121. continue
  122. }
  123. list = append(list, gn.IndexData{
  124. Val: val,
  125. UpdateTime: v.UPDATETIME,
  126. DataTime: dataTime.Format(utils.FormatDate),
  127. })
  128. }
  129. return
  130. }
  131. func FixData() {
  132. edbInfoList, err := index.GetAllBaseEdbInfo()
  133. if err != nil {
  134. fmt.Println("获取指标列表失败:", err)
  135. return
  136. }
  137. sourceMap := map[int]string{
  138. 96: `S02`,
  139. 97: `S04`,
  140. 98: `S03`,
  141. 99: `S05`,
  142. 100: `S08`,
  143. 101: `S01`,
  144. }
  145. count := len(edbInfoList)
  146. for k, v := range edbInfoList {
  147. fmt.Println("剩余:", count-k, "条数据")
  148. list, _, err := getData(1, 100, v.EdbCode, sourceMap[v.Source])
  149. if err != nil {
  150. fmt.Println("获取指标数据失败:", err)
  151. continue
  152. }
  153. if len(list) > 0 {
  154. uniqueCode := list[0].DataIndexCode
  155. fmt.Println(v.EdbCode, " === ", uniqueCode)
  156. v.OriginalEdbCode = uniqueCode
  157. err = v.Update([]string{"OriginalEdbCode"})
  158. if err != nil {
  159. fmt.Println("修改指标原始编码失败:", err)
  160. continue
  161. }
  162. }
  163. }
  164. }
  165. func getData(pageIndex, pageSize int, edbCode, dataSource string) (list []gn.IndexInfo, page *paging.PagingItem, err error) {
  166. defer func() {
  167. if err != nil {
  168. global.LOG.Info("GetPageIndexesFromGn Err: " + err.Error())
  169. go alarm_msg.SendAlarmMsg("GetPageIndexesFromGn Err: "+err.Error(), 3)
  170. return
  171. }
  172. }()
  173. req := IndexInfoV2Req{
  174. UpdateTime: "",
  175. Size: pageSize,
  176. PageNo: pageIndex,
  177. EdbCode: edbCode,
  178. SourceCode: dataSource,
  179. }
  180. resp, err := GetIndexInfoListV2(req)
  181. if err != nil {
  182. return
  183. }
  184. page = paging.GetPaging(resp.Data.PageNo, resp.Data.Size, resp.Data.Total)
  185. list = make([]gn.IndexInfo, 0)
  186. for _, v := range resp.Data.Records {
  187. if v.INDEXLEVELONE == `` {
  188. v.INDEXLEVELONE = `其它指标`
  189. }
  190. list = append(list, gn.IndexInfo{
  191. ClassifyNameOne: strings.TrimSpace(v.INDEXLEVELONE),
  192. ClassifyNameTwo: strings.TrimSpace(v.INDEXLEVELTWO),
  193. ClassifyNameThree: strings.TrimSpace(v.INDEXLEVELTHREE),
  194. DataIndexCode: fmt.Sprint(v.UNIQUE_ID),
  195. SourceEdbCode: strings.TrimSpace(v.INDEXORIGINCODE),
  196. EdbName: strings.TrimSpace(v.INDEXORIGINNAME),
  197. Frequency: strings.TrimSpace(v.DATAFREQ),
  198. Unit: strings.TrimSpace(v.DATAUNIT),
  199. SourceName: strings.TrimSpace(v.DATASOURCE),
  200. SourceCode: strings.TrimSpace(v.DATASOURCECODE),
  201. })
  202. }
  203. return
  204. }