jiayue_platform.go 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. package index_data
  2. import (
  3. "eta/eta_bridge/global"
  4. "eta/eta_bridge/models/jiayue"
  5. "eta/eta_bridge/models/response"
  6. "eta/eta_bridge/services/alarm_msg"
  7. "fmt"
  8. "strconv"
  9. "strings"
  10. )
  11. // GetIndexFromJiaYue 获取嘉悦指标信息
  12. func GetIndexFromJiaYue(indexCode string, sourceArr []string) (data *response.IndexResp, err error) {
  13. defer func() {
  14. if err != nil {
  15. global.LOG.Info("GetIndexFromJiaYue Err: " + err.Error())
  16. go alarm_msg.SendAlarmMsg("GetIndexFromJiaYue Err: "+err.Error(), 3)
  17. return
  18. }
  19. }()
  20. indexCond := ``
  21. indexPars := make([]interface{}, 0)
  22. // 指标存在无编码情况, 尝试转换indexCode为int查自增ID
  23. indexId, e := strconv.Atoi(indexCode)
  24. if e == nil && indexId > 0 {
  25. indexCond = ` (ID = :1 OR SOURCE_CODE = :1)`
  26. indexPars = append(indexPars, indexId, indexCode)
  27. } else {
  28. indexCond = ` SOURCE_CODE = :1`
  29. indexPars = append(indexPars, indexCode)
  30. }
  31. if len(sourceArr) > 0 {
  32. indexCond += ` AND SOURCE_TYPE IN (:1)`
  33. indexPars = append(indexPars, sourceArr)
  34. }
  35. indexes, e := jiayue.GetDictIndex(indexCond, indexPars)
  36. if e != nil {
  37. err = fmt.Errorf("GetDictIndex err: %s", e.Error())
  38. return
  39. }
  40. if len(indexes) <= 0 {
  41. global.LOG.Info(indexCode + "指标信息不存在")
  42. return
  43. }
  44. index := indexes[0]
  45. if index.Id <= 0 {
  46. err = fmt.Errorf("指标信息有误")
  47. return
  48. }
  49. data = new(response.IndexResp)
  50. data.Id = index.Id
  51. data.IndexCode = indexCode
  52. data.IndexName = index.Name
  53. data.Unit = index.Unit
  54. data.Frequency = index.Frequency
  55. data.LastDate = index.DateLast
  56. data.LastUpdateTime = index.TimeLastUpdate
  57. data.Status = index.Status
  58. return
  59. }
  60. // GetIndexAndDataFromJiaYue 获取指标和数据
  61. func GetIndexAndDataFromJiaYue(indexCode, startDate, endDate string, sourceArr []string) (data *response.IndexResp, err error) {
  62. defer func() {
  63. if err != nil {
  64. global.LOG.Info("GetIndexAndDataFromJiaYue Err: " + err.Error())
  65. go alarm_msg.SendAlarmMsg("GetIndexAndDataFromJiaYue Err: "+err.Error(), 3)
  66. return
  67. }
  68. }()
  69. indexCond := ``
  70. indexPars := make([]interface{}, 0)
  71. // 指标存在无编码情况, 尝试转换indexCode为int查自增ID
  72. indexId, e := strconv.Atoi(indexCode)
  73. if e == nil && indexId > 0 {
  74. indexCond = ` (ID = :1 OR SOURCE_CODE = :1)`
  75. indexPars = append(indexPars, indexId, indexCode)
  76. } else {
  77. indexCond = ` SOURCE_CODE = :1`
  78. indexPars = append(indexPars, indexCode)
  79. }
  80. if len(sourceArr) > 0 {
  81. indexCond += ` AND SOURCE_TYPE IN (:1)`
  82. indexPars = append(indexPars, sourceArr)
  83. }
  84. indexes, e := jiayue.GetDictIndex(indexCond, indexPars)
  85. if e != nil {
  86. err = fmt.Errorf("GetDictIndex err: %s", e.Error())
  87. return
  88. }
  89. if len(indexes) <= 0 {
  90. global.LOG.Info(indexCode + "指标信息不存在")
  91. return
  92. }
  93. index := indexes[0]
  94. // 获取指标数据
  95. if index.Id <= 0 {
  96. err = fmt.Errorf("指标信息有误")
  97. return
  98. }
  99. if index.TableName == "" {
  100. err = fmt.Errorf("指标信息数据表名为空")
  101. return
  102. }
  103. dataCond := " INDEX_ID = :1"
  104. dataPars := make([]interface{}, 0)
  105. dataPars = append(dataPars, index.Id)
  106. if startDate != "" {
  107. dataCond += " AND INDEX_DATE >= TO_DATE (:1, 'yyyy-mm-dd')"
  108. dataPars = append(dataPars, startDate)
  109. }
  110. if endDate != "" {
  111. dataCond += " AND INDEX_DATE <= TO_DATE (:1, 'yyyy-mm-dd')"
  112. dataPars = append(dataPars, endDate)
  113. }
  114. indexData, e := jiayue.GetDictData(index.TableName, dataCond, dataPars)
  115. if e != nil {
  116. err = fmt.Errorf("GetDictData err: %s", e.Error())
  117. return
  118. }
  119. var list []response.IndexData
  120. for _, v := range indexData {
  121. t := response.IndexData{
  122. Val: v.IndexValue,
  123. DataTime: v.IndexDate,
  124. UpdateTime: v.UpdateTime,
  125. }
  126. list = append(list, t)
  127. }
  128. data = new(response.IndexResp)
  129. data.Id = index.Id
  130. data.IndexData = list
  131. data.IndexCode = indexCode
  132. data.IndexName = index.Name
  133. data.Unit = index.Unit
  134. data.Frequency = index.Frequency
  135. data.LastDate = index.DateLast
  136. data.LastUpdateTime = index.TimeLastUpdate
  137. data.Status = index.Status
  138. return
  139. }
  140. // GetPageIndexesFromJiaYue 分页获取指标数据
  141. func GetPageIndexesFromJiaYue(pageIndex, pageSize int, sourceArr []string, keyword, frequency string, sortField, sortRule int) (total int, result []jiayue.DictIndex, err error) {
  142. defer func() {
  143. if err != nil {
  144. global.LOG.Info("GetPageIndexesFromJiaYue Err: " + err.Error())
  145. go alarm_msg.SendAlarmMsg("GetPageIndexesFromJiaYue Err: "+err.Error(), 3)
  146. return
  147. }
  148. }()
  149. indexCond := ``
  150. indexPars := make([]interface{}, 0)
  151. // 筛选项
  152. if len(sourceArr) > 0 {
  153. indexCond += ` SOURCE_TYPE IN (:1)`
  154. indexPars = append(indexPars, sourceArr)
  155. }
  156. keyword = strings.TrimSpace(keyword)
  157. if keyword != "" {
  158. kw := fmt.Sprint("%", keyword, "%")
  159. indexCond += ` AND (ID LIKE :1 OR CODE LIKE :1 OR NAME LIKE :1)`
  160. indexPars = append(indexPars, kw, kw, kw)
  161. }
  162. if frequency != "" {
  163. indexCond += ` AND FREQUENCY = :1`
  164. indexPars = append(indexPars, frequency)
  165. }
  166. // 总记录数
  167. t, e := jiayue.GetDictIndexCount(indexCond, indexPars)
  168. if e != nil {
  169. err = fmt.Errorf("GetDictIndexCount err: %s", e.Error())
  170. return
  171. }
  172. total = t
  173. // 列表数据
  174. indexes, e := jiayue.GetDictPageIndex(indexCond, indexPars, pageIndex, pageSize, sortField, sortRule)
  175. if e != nil {
  176. err = fmt.Errorf("GetDictPageIndex err: %s", e.Error())
  177. return
  178. }
  179. result = indexes
  180. return
  181. }