base_from_gpr_risk.go 12 KB

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