base_from_gpr_risk.go 11 KB

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