base_from_gpr_risk.go 11 KB

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