base_from_usda_fas.go 11 KB

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