jiayue_platform.go 3.9 KB

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