base_from_gpr_risk.go 13 KB

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