sci_data.go 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. package data_manage
  2. import (
  3. "eta_gn/eta_api/global"
  4. "eta_gn/eta_api/utils"
  5. "github.com/rdlucklib/rdluck_tools/paging"
  6. )
  7. type SciClassify struct {
  8. TypeName string `orm:"column(type_name)" description:"分类名称"`
  9. TypeCode string `orm:"column(type_code)" description:"分类名称编码"`
  10. }
  11. //func GetSciClassify() (items []*SciClassify, err error) {
  12. // sql := `SELECT CONCAT(type_2,type_3) AS type_name,CONCAT(type_2,'#',type_3) type_code FROM base_from_sci_index GROUP BY CONCAT(type_2,type_3) ORDER BY CONCAT(type_2,type_3) ASC `
  13. // o := orm.NewOrmUsingDB("data")
  14. // o.Raw(sql).QueryRows(&items)
  15. // return
  16. //}
  17. type SciFrequency struct {
  18. Frequency string `description:"频度"`
  19. }
  20. func GetSciFrequencyByClassifyId(classifyId int) (items []*GlFrequency, err error) {
  21. //o := orm.NewOrmUsingDB("data")
  22. //sql := ` SELECT frequency FROM base_from_sci_index WHERE classify_id = ? `
  23. //sql += ` GROUP BY frequency ORDER BY frequency ASC `
  24. //_, err = o.Raw(sql, classifyId).QueryRows(&items)
  25. sql := ` SELECT frequency FROM base_from_sci_index WHERE classify_id = ? `
  26. sql += ` GROUP BY frequency ORDER BY frequency ASC `
  27. err = global.DmSQL["data"].Raw(sql, classifyId).Find(&items).Error
  28. return
  29. }
  30. type SciIndex struct {
  31. BaseFromSciIndexId int `orm:"column(base_from_sci_index_id);pk"`
  32. Interface string
  33. Name string
  34. IndexCode string
  35. IndexName string
  36. Type1 string `orm:"column(type_1)"`
  37. Type2 string `orm:"column(type_2)"`
  38. Type3 string `orm:"column(type_3)"`
  39. Frequency string
  40. Unit string
  41. ApiStartTime string
  42. ApiUpdateTime string
  43. StartTime string
  44. FinishTime string
  45. CreateTime string
  46. ModifyTime string
  47. }
  48. func GetSciIndex(condition string, pars interface{}) (items []*SciIndex, err error) {
  49. //o := orm.NewOrmUsingDB("data")
  50. //sql := ` SELECT * FROM base_from_sci_index WHERE 1=1 `
  51. //if condition != "" {
  52. // sql += condition
  53. //}
  54. //sql += `ORDER BY sort ASC, base_from_sci_index_id asc`
  55. //_, err = o.Raw(sql, pars).QueryRows(&items)
  56. sql := ` SELECT * FROM base_from_sci_index WHERE 1=1 `
  57. if condition != "" {
  58. sql += condition
  59. }
  60. sql += `ORDER BY sort ASC, base_from_sci_index_id asc`
  61. err = global.DmSQL["data"].Raw(sql, pars).Find(&items).Error
  62. return
  63. }
  64. type SciExportIndex struct {
  65. TypeName string
  66. IndexCode string
  67. IndexName string
  68. Type1 string `orm:"column(type_1)"`
  69. Type2 string `orm:"column(type_2)"`
  70. Type3 string `orm:"column(type_3)"`
  71. Frequency string
  72. Unit string
  73. ModifyTime string
  74. }
  75. //func GetExportSciIndex(typeCodes []string) (items []*SciExportIndex, err error) {
  76. // if len(typeCodes) == 0 {
  77. // return
  78. // }
  79. // o := orm.NewOrmUsingDB("data")
  80. // sql := ` SELECT *,CONCAT(type_2, "#", type_3) AS type_name FROM base_from_sci_index WHERE CONCAT(type_2, "#", type_3) IN (` + utils.GetOrmInReplace(len(typeCodes)) + `) ORDER BY frequency ASC,index_code ASC`
  81. // _, err = o.Raw(sql, typeCodes).QueryRows(&items)
  82. // return
  83. //}
  84. func GetSciFrequency(classifyId int) (items []*string, err error) {
  85. //sql := `SELECT DISTINCT frequency FROM base_from_sci_index WHERE classify_id=? ORDER BY FIELD(frequency,'日度','周度','月度','季度','半年','年度') `
  86. //o := orm.NewOrmUsingDB("data")
  87. //_, err = o.Raw(sql, classifyId).QueryRows(&items)
  88. sql := `SELECT DISTINCT frequency FROM base_from_sci_index WHERE classify_id=? ORDER BY FIELD(frequency,'日度','周度','月度','季度','半年','年度') `
  89. err = global.DmSQL["data"].Raw(sql, classifyId).Find(&items).Error
  90. return
  91. }
  92. func GetSciFrequencyByCode(code string) (items []*string, err error) {
  93. //sql := `SELECT DISTINCT frequency FROM base_from_sci_index WHERE index_code=? ORDER BY FIELD(frequency,'日度','周度','月度','季度','半年','年度') `
  94. //o := orm.NewOrmUsingDB("data")
  95. //_, err = o.Raw(sql, code).QueryRows(&items)
  96. sql := `SELECT DISTINCT frequency FROM base_from_sci_index WHERE index_code=? ORDER BY FIELD(frequency,'日度','周度','月度','季度','半年','年度') `
  97. err = global.DmSQL["data"].Raw(sql, code).Find(&items).Error
  98. return
  99. }
  100. type SciIndexList struct {
  101. BaseFromSciIndexId int `orm:"column(base_from_sci_index_id);pk"`
  102. Interface string
  103. Name string
  104. IndexCode string
  105. IndexName string
  106. Type1 string `orm:"column(type_1)"`
  107. Type2 string `orm:"column(type_2)"`
  108. Type3 string `orm:"column(type_3)"`
  109. Frequency string
  110. Unit string
  111. ApiStartTime string
  112. ApiUpdateTime string
  113. StartTime string
  114. FinishTime string
  115. ModifyTime string
  116. DataList []*SciIndexData
  117. Paging *paging.PagingItem `description:"分页数据"`
  118. }
  119. type SciIndexData struct {
  120. Value string `orm:"column(value)" description:"日期"`
  121. DataTime string `orm:"column(data_time)" description:"值"`
  122. }
  123. func GetSciIndexData(indexCode string, startSize, pageSize int) (items []*SciIndexData, err error) {
  124. //o := orm.NewOrmUsingDB("data")
  125. //sql := ` SELECT * FROM base_from_sci_data WHERE index_code=? ORDER BY data_time DESC LIMIT ?,? `
  126. //_, err = o.Raw(sql, indexCode, startSize, pageSize).QueryRows(&items)
  127. sql := ` SELECT * FROM base_from_sci_data WHERE index_code=? ORDER BY data_time DESC LIMIT ?,? `
  128. err = global.DmSQL["data"].Raw(sql, indexCode, startSize, pageSize).Find(&items).Error
  129. return
  130. }
  131. func GetSciIndexDataCount(indexCode string) (count int, err error) {
  132. //o := orm.NewOrmUsingDB("data")
  133. //sql := ` SELECT COUNT(1) AS count FROM base_from_sci_data WHERE index_code=? `
  134. //err = o.Raw(sql, indexCode).QueryRow(&count)
  135. sql := ` SELECT COUNT(1) AS count FROM base_from_sci_data WHERE index_code=? `
  136. err = global.DmSQL["data"].Raw(sql, indexCode).Scan(&count).Error
  137. return
  138. }
  139. // GetSciItemList 模糊查询Sci数据库指标列表
  140. func GetSciItemList(keyword string) (items []*SciIndex, err error) {
  141. //o := orm.NewOrmUsingDB("data")
  142. //sql := "SELECT * FROM base_from_sci_index WHERE CONCAT(index_name,index_code) LIKE ? "
  143. //_, err = o.Raw(sql, utils.GetLikeKeyword(keyword)).QueryRows(&items)
  144. sql := "SELECT * FROM base_from_sci_index WHERE CONCAT(index_name,index_code) LIKE ? "
  145. err = global.DmSQL["data"].Raw(sql, utils.GetLikeKeyword(keyword)).Find(&items).Error
  146. return
  147. }
  148. func GetSciIndexDataByCode(indexCode string) (items []*SciIndexData, err error) {
  149. //o := orm.NewOrmUsingDB("data")
  150. //sql := ` SELECT * FROM base_from_sci_data WHERE index_code=? ORDER BY data_time DESC `
  151. //_, err = o.Raw(sql, indexCode).QueryRows(&items)
  152. sql := ` SELECT * FROM base_from_sci_data WHERE index_code=? ORDER BY data_time DESC `
  153. err = global.DmSQL["data"].Raw(sql, indexCode).Find(&items).Error
  154. return
  155. }
  156. func GetSciDataMaxCount(classifyId int) (count int, err error) {
  157. //o := orm.NewOrmUsingDB("data")
  158. //sql := `SELECT MAX(t.num) AS count FROM (
  159. // SELECT COUNT(1) AS num FROM base_from_sci_index AS a
  160. // INNER JOIN base_from_sci_data AS b ON a.index_code=b.index_code
  161. // WHERE a.classify_id=?
  162. // GROUP BY a.base_from_sci_index_id
  163. // )AS t `
  164. //err = o.Raw(sql, classifyId).QueryRow(&count)
  165. sql := `SELECT MAX(t.num) AS count FROM (
  166. SELECT COUNT(1) AS num FROM base_from_sci_index AS a
  167. INNER JOIN base_from_sci_data AS b ON a.index_code=b.index_code
  168. WHERE a.classify_id=?
  169. GROUP BY a.base_from_sci_index_id
  170. )AS t `
  171. err = global.DmSQL["data"].Raw(sql, classifyId).Scan(&count).Error
  172. return
  173. }
  174. type ExportSciDataMaxCount struct {
  175. TypeName string
  176. Count int
  177. }
  178. //
  179. //func GetExportSciDataMaxCount(typeCodes []string) (items []*ExportSciDataMaxCount, err error) {
  180. // if len(typeCodes) == 0 {
  181. // return
  182. // }
  183. // o := orm.NewOrmUsingDB("data")
  184. // sql := ` SELECT
  185. // MAX(t.num) AS count,
  186. // t.type_name
  187. // FROM
  188. // (
  189. // SELECT
  190. // COUNT(1) AS num,
  191. // CONCAT(a.type_2, "#", a.type_3) AS type_name
  192. // FROM
  193. // base_from_sci_index AS a
  194. // INNER JOIN base_from_sci_data AS b ON a.index_code = b.index_code
  195. // WHERE
  196. // CONCAT(a.type_2, "#", a.type_3) IN (` + utils.GetOrmInReplace(len(typeCodes)) + `)
  197. // GROUP BY
  198. // a.base_from_sci_index_id
  199. // ) AS t
  200. // GROUP BY
  201. // type_name `
  202. // _, err = o.Raw(sql, typeCodes).QueryRows(&items)
  203. // return
  204. //}
  205. type ExportSciIndexData struct {
  206. Value string `orm:"column(value)" description:"日期"`
  207. DataTime string `orm:"column(data_time)" description:"值"`
  208. IndexCode string `orm:"column(index_code)" description:"指标编码"`
  209. }
  210. //func GetExportSciIndexDataByCodes(indexCodes []string) (items []*ExportSciIndexData, err error) {
  211. // if len(indexCodes) == 0 {
  212. // return
  213. // }
  214. // o := orm.NewOrmUsingDB("data")
  215. // sql := ` SELECT index_code,data_time,value FROM base_from_sci_data WHERE index_code IN (` + utils.GetOrmInReplace(len(indexCodes)) + `) ORDER BY data_time DESC `
  216. // _, err = o.Raw(sql, indexCodes).QueryRows(&items)
  217. // return
  218. //}