jiayue_platform.go 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  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. "strings"
  12. "time"
  13. )
  14. func GetIndexFromJiaYue(indexCode, source, startDate, endDate string) (data *response.IndexResp, err error, errMsg string) {
  15. defer func() {
  16. if err != nil {
  17. global.LOG.Info("GetIndexFromJiaYue Err: " + errMsg)
  18. go alarm_msg.SendAlarmMsg("GetIndexFromJiaYue Err: "+errMsg, 3)
  19. return
  20. }
  21. }()
  22. var sourceArray []interface{}
  23. if source == "wind" {
  24. sourceArray = append(sourceArray, "wind", "wind_stop", "wind_p", "wind_tmp")
  25. } else if source == "manual" {
  26. sourceArray = append(sourceArray, "manual", "manul", "munal")
  27. } else {
  28. sourceArray = append(sourceArray, source)
  29. }
  30. var indexPars []interface{}
  31. indexCond := ` SOURCE_TYPE IN (` + utils.GetOracleInReplace(len(sourceArray)) + `)`
  32. indexPars = append(indexPars, sourceArray...)
  33. if source == "wind" {
  34. indexCond += " AND SOURCE_CODE = :1 "
  35. indexPars = append(indexPars, indexCode)
  36. } else {
  37. indexId, e := strconv.Atoi(indexCode)
  38. if e != nil {
  39. err = fmt.Errorf("类型错误,请输入正确的指标code")
  40. return
  41. }
  42. indexCond += " AND ID = :1 "
  43. indexPars = append(indexPars, indexId)
  44. }
  45. indexList, err := jiayue.GetDictIndex(indexCond, indexPars)
  46. if err != nil {
  47. errMsg = fmt.Sprintf("嘉悦物产指标信息查询失败,Err: %s", err)
  48. return
  49. }
  50. if len(indexList) <= 0 {
  51. global.LOG.Info(indexCode + "指标信息不存在")
  52. return
  53. }
  54. index := indexList[0]
  55. //获取指标数据
  56. if index.TableName == "" {
  57. errMsg = "指标信息不全,指标数据对应的表名为空"
  58. err = errors.New(errMsg)
  59. return
  60. }
  61. if index.Id <= 0 {
  62. errMsg = "指标信息不全,指标对应的序号为空"
  63. err = errors.New(errMsg)
  64. return
  65. }
  66. var pars []interface{}
  67. condition := " INDEX_ID = :1"
  68. pars = append(pars, index.Id)
  69. if startDate != "" {
  70. condition += " AND INDEX_DATE >= TO_DATE (:1, 'yyyy-mm-dd')"
  71. pars = append(pars, startDate)
  72. }
  73. if endDate != "" {
  74. condition += " AND INDEX_DATE <= TO_DATE (:1, 'yyyy-mm-dd')"
  75. pars = append(pars, endDate)
  76. }
  77. indexData, err := jiayue.GetDictData(index.TableName, condition, pars)
  78. if err != nil {
  79. errMsg = fmt.Sprintf("嘉悦物产指标数据信息查询失败,Err: %s", err)
  80. return
  81. }
  82. var list []response.IndexData
  83. for _, v := range indexData {
  84. var dataTimeStr string
  85. if v.IndexDate != "" {
  86. dataTime, e := time.ParseInLocation(utils.FormatDateDefault, v.IndexDate, time.Local)
  87. if e != nil {
  88. err = e
  89. fmt.Println("解析时间失败:", err)
  90. return
  91. }
  92. dataTimeStr = dataTime.Format(utils.FormatDate)
  93. }
  94. var updateTimeStr string
  95. if v.UpdateTime != "" {
  96. updateTime, e := time.ParseInLocation(utils.FormatDateDefault, v.UpdateTime, time.Local)
  97. if e != nil {
  98. err = e
  99. fmt.Println("解析时间失败:", err)
  100. return
  101. }
  102. updateTimeStr = updateTime.Format(utils.FormatDateTime)
  103. }
  104. tmp := response.IndexData{
  105. Val: v.IndexValue,
  106. DataTime: dataTimeStr,
  107. UpdateTime: updateTimeStr,
  108. }
  109. list = append(list, tmp)
  110. }
  111. var dateLastStr string
  112. if index.DateLast != "" {
  113. dateLast, e := time.ParseInLocation(utils.FormatDateDefault, index.DateLast, time.Local)
  114. if e != nil {
  115. err = e
  116. fmt.Println("解析时间失败:", err)
  117. return
  118. }
  119. dateLastStr = dateLast.Format(utils.FormatDate)
  120. }
  121. //if !index.TimeLastUpdate.IsZero() {
  122. // timeLastUpdate, e := time.ParseInLocation(utils.FormatDateDefault, index.TimeLastUpdate, time.Local)
  123. // if e != nil {
  124. // err = e
  125. // fmt.Println("解析时间失败:", err)
  126. // return
  127. // }
  128. // timeLastUpdateStr = timeLastUpdate.Format(utils.FormatDateTime)
  129. //}
  130. data = new(response.IndexResp)
  131. data.IndexData = list
  132. data.IndexCode = indexCode
  133. data.LastDate = dateLastStr
  134. data.LastUpdateTime = utils.TimeTransferString(utils.FormatDateTime, index.TimeLastUpdate)
  135. data.Status = index.Status
  136. return
  137. }
  138. // GetPageIndexesFromJiaYue 分页获取指标数据
  139. func GetPageIndexesFromJiaYue(pageIndex, pageSize int, sourceArr []string, keyword, frequency string) (total int, result []jiayue.DictIndex, err error) {
  140. defer func() {
  141. if err != nil {
  142. global.LOG.Info("GetPageIndexesFromJiaYue Err: " + err.Error())
  143. go alarm_msg.SendAlarmMsg("GetPageIndexesFromJiaYue Err: "+err.Error(), 3)
  144. return
  145. }
  146. }()
  147. indexCond := ``
  148. indexPars := make([]interface{}, 0)
  149. // 筛选项
  150. if len(sourceArr) > 0 {
  151. indexCond += ` SOURCE_TYPE IN (:1)`
  152. indexPars = append(indexPars, sourceArr)
  153. }
  154. keyword = strings.TrimSpace(keyword)
  155. if keyword != "" {
  156. kw := fmt.Sprint("%", keyword, "%")
  157. indexCond += ` AND (ID = :1 OR CODE = :1 OR NAME = :1)`
  158. indexPars = append(indexPars, kw, kw, kw)
  159. }
  160. if frequency != "" {
  161. indexCond += ` AND FREQUENCY = :1`
  162. indexPars = append(indexPars, frequency)
  163. }
  164. // 总记录数
  165. t, e := jiayue.GetDictIndexCount(indexCond, indexPars)
  166. if e != nil {
  167. err = fmt.Errorf("GetDictIndexCount err: %s", e.Error())
  168. return
  169. }
  170. total = t
  171. // 列表数据
  172. indexes, e := jiayue.GetDictPageIndex(indexCond, indexPars, pageIndex, pageSize)
  173. if e != nil {
  174. err = fmt.Errorf("GetDictPageIndex err: %s", e.Error())
  175. return
  176. }
  177. result = indexes
  178. return
  179. }