jiayue_platform.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. package index_data
  2. import (
  3. "errors"
  4. "eta/eta_bridge/global"
  5. "eta/eta_bridge/models/jiayue"
  6. "eta/eta_bridge/models/response"
  7. "eta/eta_bridge/services/alarm_msg"
  8. "eta/eta_bridge/utils"
  9. "fmt"
  10. "time"
  11. )
  12. func GetIndexFromJiaYue(indexCode, source, startDate, endDate string) (data *response.IndexResp, err error, errMsg string) {
  13. defer func() {
  14. if err != nil {
  15. global.LOG.Info("GetIndexFromJiaYue Err: " + errMsg)
  16. go alarm_msg.SendAlarmMsg("GetIndexFromJiaYue Err: "+errMsg, 3)
  17. return
  18. }
  19. }()
  20. var sourceArray []interface{}
  21. if source == "wind" {
  22. sourceArray = append(sourceArray, "wind", "wind_stop", "wind_p", "wind_tmp")
  23. } else if source == "manual" {
  24. sourceArray = append(sourceArray, "manual", "manul", "munal")
  25. } else {
  26. sourceArray = append(sourceArray, source)
  27. }
  28. var indexPars []interface{}
  29. indexCond := ` SOURCE_TYPE IN (` + utils.GetOracleInReplace(len(sourceArray)) + `)`
  30. indexPars = append(indexPars, sourceArray...)
  31. if source == "wind" {
  32. indexCond += " AND SOURCE_CODE = :1 "
  33. indexPars = append(indexPars, indexCode)
  34. } else {
  35. indexCond += " AND ID = :1 "
  36. indexPars = append(indexPars, indexCode)
  37. }
  38. indexList, err := jiayue.GetDictIndex(indexCond, indexPars)
  39. if err != nil {
  40. errMsg = fmt.Sprintf("嘉悦物产指标信息查询失败,Err: %s", err)
  41. return
  42. }
  43. if len(indexList) <= 0 {
  44. return
  45. }
  46. index := indexList[0]
  47. //获取指标数据
  48. if index.TableName == "" {
  49. errMsg = "指标信息不全,指标数据对应的表名为空"
  50. err = errors.New(errMsg)
  51. return
  52. }
  53. if index.Id <= 0 {
  54. errMsg = "指标信息不全,指标对应的序号为空"
  55. err = errors.New(errMsg)
  56. return
  57. }
  58. var pars []interface{}
  59. condition := " INDEX_ID = :1"
  60. pars = append(pars, index.Id)
  61. if startDate != "" {
  62. condition += " AND INDEX_DATE >= TO_DATE (:1, 'yyyy-mm-dd')"
  63. pars = append(pars, startDate)
  64. }
  65. if endDate != "" {
  66. condition += " AND INDEX_DATE <= TO_DATE (:1, 'yyyy-mm-dd')"
  67. pars = append(pars, endDate)
  68. }
  69. indexData, err := jiayue.GetDictData(index.TableName, condition, pars)
  70. if err != nil {
  71. errMsg = fmt.Sprintf("嘉悦物产指标数据信息查询失败,Err: %s", err)
  72. return
  73. }
  74. var list []response.IndexData
  75. for _, v := range indexData {
  76. var dataTimeStr string
  77. if v.IndexDate != "" {
  78. dataTime, e := time.ParseInLocation(utils.FormatDateDefault, v.IndexDate, time.Local)
  79. if e != nil {
  80. err = e
  81. fmt.Println("解析时间失败:", err)
  82. return
  83. }
  84. dataTimeStr = dataTime.Format(utils.FormatDate)
  85. }
  86. var updateTimeStr string
  87. if v.UpdateTime != "" {
  88. updateTime, e := time.ParseInLocation(utils.FormatDateDefault, v.UpdateTime, time.Local)
  89. if e != nil {
  90. err = e
  91. fmt.Println("解析时间失败:", err)
  92. return
  93. }
  94. updateTimeStr = updateTime.Format(utils.FormatDateTime)
  95. }
  96. tmp := response.IndexData{
  97. Val: v.IndexValue,
  98. DataTime: dataTimeStr,
  99. UpdateTime: updateTimeStr,
  100. }
  101. list = append(list, tmp)
  102. }
  103. var dateLastStr, timeLastUpdateStr string
  104. if index.DateLast != "" {
  105. dateLast, e := time.ParseInLocation(utils.FormatDateDefault, index.DateLast, time.Local)
  106. if e != nil {
  107. err = e
  108. fmt.Println("解析时间失败:", err)
  109. return
  110. }
  111. dateLastStr = dateLast.Format(utils.FormatDate)
  112. }
  113. if index.TimeLastUpdate != "" {
  114. timeLastUpdate, e := time.ParseInLocation(utils.FormatDateDefault, index.TimeLastUpdate, time.Local)
  115. if e != nil {
  116. err = e
  117. fmt.Println("解析时间失败:", err)
  118. return
  119. }
  120. timeLastUpdateStr = timeLastUpdate.Format(utils.FormatDateTime)
  121. }
  122. data = new(response.IndexResp)
  123. data.IndexData = list
  124. data.IndexCode = indexCode
  125. data.LastDate = dateLastStr
  126. data.LastUpdateTime = timeLastUpdateStr
  127. data.Status = index.Status
  128. return
  129. }