base_from_gpr_risk.go 10 KB

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