base_from_usda_fas.go 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. package data_manage
  2. import (
  3. "eta/eta_api/utils"
  4. "time"
  5. "github.com/beego/beego/v2/client/orm"
  6. "github.com/rdlucklib/rdluck_tools/paging"
  7. )
  8. type BaseFromUsdaFasIndex struct {
  9. BaseFromUsdaFasIndexId int `orm:"column(base_from_usda_fas_index_id);pk"`
  10. ClassifyId int
  11. IndexCode string
  12. IndexName string
  13. Frequency string
  14. Unit string
  15. Sort int
  16. CreateTime time.Time
  17. ModifyTime time.Time
  18. }
  19. type BaseFromUsdaFasIndexList struct {
  20. BaseFromUsdaFasIndexId int `orm:"column(base_from_usda_fas_index_id);pk"`
  21. ClassifyId int
  22. Interface string
  23. EdbInfoId int
  24. EdbUniqueCode string `description:"指标库唯一编码"`
  25. EdbClassifyId int `description:"指标库分类ID"`
  26. StartDate string
  27. EndDate string
  28. EndValue float64
  29. IndexCode string
  30. IndexName string
  31. Frequency string
  32. Unit string
  33. Sort int
  34. CreateTime string
  35. ModifyTime string
  36. EdbExist int `description:"指标库是否已添加:0-否;1-是"`
  37. DataList []*BaseFromUsdaFasData
  38. Paging *paging.PagingItem `description:"分页数据"`
  39. }
  40. type BaseFromUsdaFasIndexSearchList struct {
  41. List []*BaseFromUsdaFasIndexList
  42. Paging *paging.PagingItem `description:"分页数据"`
  43. }
  44. type UsdaFasSingleDataResp struct {
  45. BaseFromUsdaFasIndexId int
  46. ClassifyId int
  47. EdbInfoId int
  48. IndexCode string
  49. IndexName string
  50. Frequency string
  51. Unit string
  52. StartTime string
  53. CreateTime string
  54. ModifyTime string
  55. EdbExist int `description:"指标库是否已添加:0-否;1-是"`
  56. Data []*UsdaFasSingleData
  57. }
  58. type UsdaFasSingleData struct {
  59. Value string `orm:"column(value)" description:"日期"`
  60. DataTime string `orm:"column(data_time)" description:"值"`
  61. }
  62. func GetUsdaFasIndexByClassifyId(classifyId int) (items []*BaseFromUsdaFasIndex, err error) {
  63. o := orm.NewOrmUsingDB("data")
  64. sql := ` SELECT base_from_usda_fas_index_id, classify_id, index_code, index_name FROM base_from_usda_fas_index WHERE classify_id=? ORDER BY sort ASC, base_from_usda_fas_index_id ASC `
  65. _, err = o.Raw(sql, classifyId).QueryRows(&items)
  66. return
  67. }
  68. func GetUsdaFasIndex(condition string, pars interface{}) (items []*BaseFromUsdaFasIndexList, err error) {
  69. o := orm.NewOrmUsingDB("data")
  70. sql := ` SELECT * FROM base_from_usda_fas_index WHERE 1=1 `
  71. if condition != "" {
  72. sql += condition
  73. }
  74. sql += ` ORDER BY sort ASC, base_from_usda_fas_index_id asc`
  75. _, err = o.Raw(sql, pars).QueryRows(&items)
  76. return
  77. }
  78. func GetUsdaFasIndexPage(condition string, pars interface{}, startSize, pageSize int) (items []*BaseFromUsdaFasIndexList, err error) {
  79. o := orm.NewOrmUsingDB("data")
  80. sql := ` SELECT * FROM base_from_usda_fas_index WHERE 1=1 `
  81. if condition != "" {
  82. sql += condition
  83. }
  84. sql += ` ORDER BY sort ASC, base_from_usda_fas_index_id asc LIMIT ?,?`
  85. _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
  86. return
  87. }
  88. func GetUsdaFasIndexPageCount(condition string, pars interface{}) (count int, err error) {
  89. o := orm.NewOrmUsingDB("data")
  90. sql := ` SELECT COUNT(1) AS count FROM base_from_usda_fas_index WHERE 1=1 `
  91. if condition != "" {
  92. sql += condition
  93. }
  94. err = o.Raw(sql, pars).QueryRow(&count)
  95. return
  96. }
  97. func GetUsdaFasIndexDataCount(indexCode string) (count int, err error) {
  98. o := orm.NewOrmUsingDB("data")
  99. sql := ` SELECT COUNT(1) AS count FROM base_from_usda_fas_data WHERE index_code=? `
  100. err = o.Raw(sql, indexCode).QueryRow(&count)
  101. return
  102. }
  103. func GetUsdaFasIndexDataByDataTime(indexCodes []string, startDate, endDate string) (items []*BaseFromUsdaFasData, err error) {
  104. o := orm.NewOrmUsingDB("data")
  105. sql := ` SELECT * FROM base_from_usda_fas_data WHERE index_code in (` + utils.GetOrmInReplace(len(indexCodes)) + `) and data_time >=? and data_time <? ORDER BY data_time DESC `
  106. _, err = o.Raw(sql, indexCodes, startDate, endDate).QueryRows(&items)
  107. return
  108. }
  109. func GetUsdaFasIndexDataTimePageByCodes(indexCodes []string, startSize, pageSize int) (dataTimes []string, err error) {
  110. o := orm.NewOrmUsingDB("data")
  111. sql := ` SELECT data_time FROM base_from_usda_fas_data WHERE index_code in (` + utils.GetOrmInReplace(len(indexCodes)) + `) GROUP BY data_time ORDER BY data_time DESC LIMIT ?,? `
  112. _, err = o.Raw(sql, indexCodes, startSize, pageSize).QueryRows(&dataTimes)
  113. return
  114. }
  115. func GetUsdaFasIndexDataTimePageCount(indexCodes []string) (count int, err error) {
  116. o := orm.NewOrmUsingDB("data")
  117. sql := ` SELECT COUNT(1) AS count FROM base_from_usda_fas_data WHERE index_code in (` + utils.GetOrmInReplace(len(indexCodes)) + `) GROUP BY data_time `
  118. err = o.Raw(sql, indexCodes).QueryRow(&count)
  119. return
  120. }
  121. func GetUsdaFasIndexDataByCodes(indexCode []string) (items []*BaseFromUsdaFasData, err error) {
  122. if len(indexCode) == 0 {
  123. return
  124. }
  125. o := orm.NewOrmUsingDB("data")
  126. sql := ` SELECT * FROM base_from_usda_fas_data WHERE index_code in (` + utils.GetOrmInReplace(len(indexCode)) + `) ORDER BY data_time DESC `
  127. _, err = o.Raw(sql, indexCode).QueryRows(&items)
  128. return
  129. }
  130. // GetUsdaFasByConditionAndFrequency 根据条件获取涌益咨询指标列表
  131. func GetUsdaFasByConditionAndFrequency(condition, frequency string, pars []interface{}) (items []*BaseFromUsdaFasIndex, err error) {
  132. o := orm.NewOrmUsingDB("data")
  133. sql := ` SELECT * FROM base_from_usda_fas_index WHERE 1=1 `
  134. if condition != "" {
  135. sql += condition
  136. }
  137. sql += ` AND frequency=?`
  138. sql += ` ORDER BY sort ASC, base_from_usda_fas_index_id ASC`
  139. _, err = o.Raw(sql, pars, frequency).QueryRows(&items)
  140. return
  141. }
  142. func GetUsdaFasFrequencyByCondition(condition string, pars []interface{}) (items []string, err error) {
  143. sql := `SELECT DISTINCT frequency FROM base_from_usda_fas_index WHERE 1=1 `
  144. if condition != "" {
  145. sql += condition
  146. }
  147. sql += ` ORDER BY FIELD(frequency,'日度','周度','旬度','月度','季度','半年度','年度') `
  148. o := orm.NewOrmUsingDB("data")
  149. _, err = o.Raw(sql, pars...).QueryRows(&items)
  150. return
  151. }
  152. // GetUsdaFasDataDataTimeByIndexId 根据指标id获取指标数据的日期列表
  153. func GetUsdaFasDataDataTimeByIndexId(indexIdList []int) (items []string, err error) {
  154. if len(indexIdList) == 0 {
  155. return
  156. }
  157. o := orm.NewOrmUsingDB("data")
  158. sql := ` SELECT DISTINCT data_time FROM base_from_usda_fas_data WHERE base_from_usda_fas_index_id IN (` + utils.GetOrmInReplace(len(indexIdList)) + `) ORDER BY data_time DESC`
  159. _, err = o.Raw(sql, indexIdList).QueryRows(&items)
  160. return
  161. }
  162. type BaseFromUsdaFasData struct {
  163. BaseFromUsdaFasDataId int `orm:"column(base_from_usda_fas_data_id);pk"`
  164. BaseFromUsdaFasIndexId int
  165. IndexCode string
  166. DataTime string
  167. Value string
  168. CreateTime string
  169. ModifyTime string
  170. DataTimestamp int64
  171. }
  172. type BaseFromUsdaFasIndexSearchItem struct {
  173. BaseFromUsdaFasIndexId int `orm:"column(base_from_usda_fas_index_id);pk"`
  174. ClassifyId int
  175. ParentClassifyId int
  176. IndexCode string
  177. IndexName string
  178. }
  179. // BatchCheckUsdaFasEdbReq 指标数据结构体
  180. type BatchCheckUsdaFasEdbReq struct {
  181. //IsJoinEdb int `form:"IsJoinEdb" description:"是否加到指标库,0:未加到指标库"`
  182. Frequencies string `description:"频度;枚举值:日度、周度、月度、季度、半年度、年度"`
  183. Keyword string `description:"关键字"`
  184. ClassifyIds string `description:"所选品种id列表"`
  185. ListAll bool `form:"ListAll" json:"ListAll" description:"列表全选"`
  186. TradeCodeList string `form:"TradeCodeList" json:"TradeCodeList" description:"全选为false时, 该数组为选中; 全选为true时, 该数组为不选的指标"`
  187. }
  188. // GetUsdaFasItemList 模糊查询UsdaFas数据库指标列表
  189. func GetUsdaFasItemList(condition string) (items []*BaseFromUsdaFasIndexSearchItem, err error) {
  190. o := orm.NewOrmUsingDB("data")
  191. sql := "SELECT * FROM base_from_usda_fas_index WHERE 1=1"
  192. if condition != "" {
  193. sql += condition
  194. }
  195. _, err = o.Raw(sql).QueryRows(&items)
  196. return
  197. }
  198. func GetUsdaFasIndexDataByCode(indexCode string) (list []*BaseFromUsdaFasData, err error) {
  199. o := orm.NewOrmUsingDB("data")
  200. sql := `SELECT * FROM base_from_usda_fas_data WHERE index_code=? `
  201. _, err = o.Raw(sql, indexCode).QueryRows(&list)
  202. return
  203. }
  204. func GetBaseFromUsdaFasIndexByIndexCode(indexCode string) (list *BaseFromUsdaFasIndex, err error) {
  205. o := orm.NewOrmUsingDB("data")
  206. sql := ` SELECT * FROM base_from_usda_fas_index WHERE index_code=? `
  207. err = o.Raw(sql, indexCode).QueryRow(&list)
  208. return
  209. }
  210. type BaseFromUsdaFasIndexType struct {
  211. Type2 string `orm:"column(type_2)"`
  212. Type3 string `orm:"column(type_3)"`
  213. }
  214. // Update 更新UsdaFas指标基础信息
  215. func (item *BaseFromUsdaFasIndex) Update(cols []string) (err error) {
  216. o := orm.NewOrmUsingDB("data")
  217. _, err = o.Update(item, cols...)
  218. return
  219. }
  220. // EditUsdaFasIndexInfoResp 新增指标的返回
  221. type EditUsdaFasIndexInfoResp struct {
  222. BaseFromUsdaFasIndexId int `description:"指标ID"`
  223. IndexCode string `description:"指标code"`
  224. }
  225. type UsdaFasIndexSource2EdbReq struct {
  226. EdbCode string
  227. EdbName string
  228. Frequency string
  229. Unit string
  230. ClassifyId int
  231. AdminId int
  232. AdminRealName string
  233. }
  234. func GetUsdaFasFrequencyByClassifyId(classifyId int) (items []*GlFrequency, err error) {
  235. o := orm.NewOrmUsingDB("data")
  236. sql := ` SELECT frequency FROM base_from_usda_fas_index WHERE classify_id = ? `
  237. sql += ` GROUP BY frequency ORDER BY frequency ASC `
  238. _, err = o.Raw(sql, classifyId).QueryRows(&items)
  239. return
  240. }