base_from_gpr_risk.go 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. package data_manage
  2. import (
  3. "eta/eta_api/utils"
  4. "time"
  5. "database/sql"
  6. "eta/eta_api/global"
  7. "github.com/rdlucklib/rdluck_tools/paging"
  8. )
  9. type BaseFromGprRiskIndex struct {
  10. BaseFromGprRiskIndexId int `orm:"column(base_from_gpr_risk_index_id);pk"`
  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 BaseFromGprRiskIndexList struct {
  24. BaseFromGprRiskIndexId int `orm:"column(base_from_gpr_risk_index_id);pk"`
  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 []*BaseFromGprRiskData `gorm:"-"`
  42. Paging *paging.PagingItem `description:"分页数据" gorm:"-"`
  43. }
  44. type BaseFromGprRiskIndexSearchList struct {
  45. List []*BaseFromGprRiskIndexList
  46. Paging *paging.PagingItem `description:"分页数据"`
  47. }
  48. type GprRiskSingleDataResp struct {
  49. BaseFromGprRiskIndexId int
  50. ClassifyId int
  51. EdbInfoId int
  52. IndexCode string
  53. IndexName string
  54. Frequency string
  55. Unit string
  56. StartTime string
  57. CreateTime string
  58. ModifyTime string
  59. EdbExist int `description:"指标库是否已添加:0-否;1-是"`
  60. Data []*GprRiskSingleData
  61. Paging *paging.PagingItem `description:"分页数据"`
  62. }
  63. type GprRiskSingleData struct {
  64. Value string `orm:"column(value)" description:"日期"`
  65. DataTime string `orm:"column(data_time)" description:"值"`
  66. }
  67. func GetGprRiskIndexByClassifyId(classifyId int) (items []*BaseFromGprRiskIndex, err error) {
  68. sql := ` SELECT base_from_gpr_risk_index_id, classify_id, index_code, index_name FROM base_from_gpr_risk_index WHERE classify_id=? ORDER BY sort ASC, base_from_gpr_risk_index_id ASC `
  69. err = global.DbMap[utils.DbNameIndex].Raw(sql, classifyId).Find(&items).Error
  70. return
  71. }
  72. func GetGprRiskIndex(condition string, pars []interface{}) (items []*BaseFromGprRiskIndexList, err error) {
  73. sql := ` SELECT * FROM base_from_gpr_risk_index WHERE 1=1 `
  74. if condition != "" {
  75. sql += condition
  76. }
  77. sql += ` ORDER BY sort ASC, base_from_gpr_risk_index_id asc`
  78. err = global.DbMap[utils.DbNameIndex].Raw(sql, pars...).Find(&items).Error
  79. return
  80. }
  81. func GetGprRiskIndexPage(condition string, pars interface{}, startSize, pageSize int) (items []*BaseFromGprRiskIndexList, err error) {
  82. sql := ` SELECT * FROM base_from_gpr_risk_index WHERE 1=1 `
  83. if condition != "" {
  84. sql += condition
  85. }
  86. sql += ` ORDER BY sort ASC, base_from_gpr_risk_index_id asc LIMIT ?,?`
  87. err = global.DbMap[utils.DbNameIndex].Raw(sql, pars, startSize, pageSize).Find(&items).Error
  88. return
  89. }
  90. func GetGprRiskIndexPageCount(condition string, pars interface{}) (count int, err error) {
  91. sql := ` SELECT COUNT(1) AS count FROM base_from_gpr_risk_index WHERE 1=1 `
  92. if condition != "" {
  93. sql += condition
  94. }
  95. err = global.DbMap[utils.DbNameIndex].Raw(sql, pars).Scan(&count).Error
  96. return
  97. }
  98. func GetGprRiskIndexDataCount(indexCode string) (count int, err error) {
  99. sql := ` SELECT COUNT(1) AS count FROM base_from_gpr_risk_data WHERE index_code=? `
  100. err = global.DbMap[utils.DbNameIndex].Raw(sql, indexCode).Scan(&count).Error
  101. return
  102. }
  103. func GetGprRiskIndexDataByDataTime(indexCodes []string, startDate, endDate string) (items []*BaseFromGprRiskData, err error) {
  104. sql := ` SELECT * FROM base_from_gpr_risk_data WHERE index_code in (` + utils.GetOrmInReplace(len(indexCodes)) + `) and data_time >=? and data_time <? ORDER BY data_time DESC `
  105. err = global.DbMap[utils.DbNameIndex].Raw(sql, indexCodes, startDate, endDate).Find(&items).Error
  106. return
  107. }
  108. func GetGprRiskIndexDataTimePageByCodes(indexCodes []string, startSize, pageSize int) (dataTimes []string, err error) {
  109. //sql := ` SELECT data_time FROM base_from_gpr_risk_data WHERE index_code in (` + utils.GetOrmInReplace(len(indexCodes)) + `) GROUP BY data_time ORDER BY data_time DESC LIMIT ?,? `
  110. sql := ` SELECT data_time FROM base_from_gpr_risk_data WHERE index_code in ? GROUP BY data_time ORDER BY data_time DESC LIMIT ?,? `
  111. err = global.DbMap[utils.DbNameIndex].Raw(sql, indexCodes, startSize, pageSize).Find(&dataTimes).Error
  112. return
  113. }
  114. func GetGprRiskIndexDataTimePageCount(indexCodes []string) (count int, err error) {
  115. sql := ` SELECT COUNT(DISTINCT data_time) AS count FROM base_from_gpr_risk_data WHERE index_code in (` + utils.GetOrmInReplace(len(indexCodes)) + `) `
  116. err = global.DbMap[utils.DbNameIndex].Raw(sql, indexCodes).Scan(&count).Error
  117. return
  118. }
  119. func GetGprRiskIndexDataByCodes(indexCode []string) (items []*BaseFromGprRiskData, err error) {
  120. if len(indexCode) == 0 {
  121. return
  122. }
  123. sql := ` SELECT * FROM base_from_gpr_risk_data WHERE index_code in (` + utils.GetOrmInReplace(len(indexCode)) + `) ORDER BY data_time DESC `
  124. err = global.DbMap[utils.DbNameIndex].Raw(sql, indexCode).Find(&items).Error
  125. return
  126. }
  127. // GetGprRiskByConditionAndFrequency 根据条件获取涌益咨询指标列表
  128. func GetGprRiskByConditionAndFrequency(condition, frequency string, pars []interface{}) (items []*BaseFromGprRiskIndex, err error) {
  129. sql := ` SELECT * FROM base_from_gpr_risk_index WHERE 1=1 `
  130. if condition != "" {
  131. sql += condition
  132. }
  133. sql += ` AND frequency=?`
  134. sql += ` ORDER BY sort ASC, base_from_gpr_risk_index_id ASC`
  135. err = global.DbMap[utils.DbNameIndex].Raw(sql, pars, frequency).Find(&items).Error
  136. return
  137. }
  138. func GetGprRiskFrequencyByCondition(condition string, pars []interface{}) (items []string, err error) {
  139. sql := `SELECT DISTINCT frequency FROM base_from_gpr_risk_index WHERE 1=1 `
  140. if condition != "" {
  141. sql += condition
  142. }
  143. sql += ` ORDER BY FIELD(frequency,'日度','周度','旬度','月度','季度','半年度','年度') `
  144. err = global.DbMap[utils.DbNameIndex].Raw(sql, pars...).Find(&items).Error
  145. return
  146. }
  147. // GetGprRiskDataDataTimeByIndexId 根据指标id获取指标数据的日期列表
  148. func GetGprRiskDataDataTimeByIndexId(indexIdList []int) (items []string, err error) {
  149. if len(indexIdList) == 0 {
  150. return
  151. }
  152. sql := ` SELECT DISTINCT data_time FROM base_from_gpr_risk_data WHERE base_from_gpr_risk_index_id IN (` + utils.GetOrmInReplace(len(indexIdList)) + `) ORDER BY data_time DESC`
  153. err = global.DbMap[utils.DbNameIndex].Raw(sql, indexIdList).Find(&items).Error
  154. return
  155. }
  156. type BaseFromGprRiskData struct {
  157. BaseFromGprRiskDataId int `orm:"column(base_from_gpr_risk_data_id);pk"`
  158. BaseFromGprRiskIndexId int
  159. IndexCode string
  160. DataTime string
  161. Value string
  162. CreateTime string
  163. ModifyTime string
  164. DataTimestamp int64
  165. }
  166. type BaseFromGprRiskIndexSearchItem struct {
  167. BaseFromGprRiskIndexId int `orm:"column(base_from_gpr_risk_index_id);pk"`
  168. ClassifyId int
  169. ParentClassifyId int
  170. IndexCode string
  171. IndexName string
  172. }
  173. // BatchCheckGprRiskEdbReq 指标数据结构体
  174. type BatchCheckGprRiskEdbReq struct {
  175. //IsJoinEdb int `form:"IsJoinEdb" description:"是否加到指标库,0:未加到指标库"`
  176. Frequencies string `description:"频度;枚举值:日度、周度、月度、季度、半年度、年度"`
  177. Keyword string `description:"关键字"`
  178. ClassifyIds string `description:"所选品种id列表"`
  179. ListAll bool `form:"ListAll" json:"ListAll" description:"列表全选"`
  180. TradeCodeList string `form:"TradeCodeList" json:"TradeCodeList" description:"全选为false时, 该数组为选中; 全选为true时, 该数组为不选的指标"`
  181. }
  182. // GetGprRiskItemList 模糊查询GprRisk数据库指标列表
  183. func GetGprRiskItemList(condition string) (items []*BaseFromGprRiskIndexSearchItem, err error) {
  184. sql := "SELECT * FROM base_from_gpr_risk_index WHERE 1=1"
  185. if condition != "" {
  186. sql += condition
  187. }
  188. err = global.DbMap[utils.DbNameIndex].Raw(sql).Find(&items).Error
  189. return
  190. }
  191. func GetGprRiskIndexDataByCode(indexCode string, pageIndex, pageSize int) (list []*BaseFromGprRiskData, err error) {
  192. sql := `SELECT * FROM base_from_gpr_risk_data WHERE index_code=? order by data_time desc limit ?,?`
  193. err = global.DbMap[utils.DbNameIndex].Raw(sql, indexCode, pageIndex, pageSize).Find(&list).Error
  194. return
  195. }
  196. func GetGprRiskIndexDataTotalByCode(indexCode string) (total int64, err error) {
  197. sqlStr := `SELECT count(*) FROM base_from_gpr_risk_data WHERE index_code=?`
  198. var totalNull sql.NullInt64
  199. err = global.DbMap[utils.DbNameIndex].Raw(sqlStr, indexCode).Scan(&totalNull).Error
  200. if !totalNull.Valid {
  201. total = 0
  202. } else {
  203. total = totalNull.Int64
  204. }
  205. return
  206. }
  207. func GetBaseFromGprRiskIndexByIndexCode(indexCode string) (list *BaseFromGprRiskIndex, err error) {
  208. sql := ` SELECT * FROM base_from_gpr_risk_index WHERE index_code=? `
  209. err = global.DbMap[utils.DbNameIndex].Raw(sql, indexCode).First(&list).Error
  210. return
  211. }
  212. type BaseFromGprRiskIndexType struct {
  213. Type2 string `orm:"column(type_2)"`
  214. Type3 string `orm:"column(type_3)"`
  215. }
  216. // Update 更新GprRisk指标基础信息
  217. func (item *BaseFromGprRiskIndex) Update(cols []string) (err error) {
  218. err = global.DbMap[utils.DbNameIndex].Select(cols).Updates(item).Error
  219. return
  220. }
  221. // EditGprRiskIndexInfoResp 新增指标的返回
  222. type EditGprRiskIndexInfoResp struct {
  223. BaseFromGprRiskIndexId int `description:"指标ID"`
  224. IndexCode string `description:"指标code"`
  225. }
  226. type GprRiskIndexSource2EdbReq struct {
  227. EdbCode string
  228. EdbName string
  229. Frequency string
  230. Unit string
  231. ClassifyId int
  232. AdminId int
  233. AdminRealName string
  234. }
  235. func GetGprRiskFrequencyByClassifyId(classifyId int) (items []*GlFrequency, err error) {
  236. sql := ` SELECT frequency FROM base_from_gpr_risk_index WHERE classify_id = ? `
  237. sql += ` GROUP BY frequency ORDER BY frequency ASC `
  238. err = global.DbMap[utils.DbNameIndex].Raw(sql, classifyId).Find(&items).Error
  239. return
  240. }