|
@@ -0,0 +1,273 @@
|
|
|
+package data_manage
|
|
|
+
|
|
|
+import (
|
|
|
+ "eta/eta_api/utils"
|
|
|
+ "fmt"
|
|
|
+ "github.com/beego/beego/v2/client/orm"
|
|
|
+ "github.com/rdlucklib/rdluck_tools/paging"
|
|
|
+ "strings"
|
|
|
+ "time"
|
|
|
+)
|
|
|
+
|
|
|
+// BaseFromBloombergIndex 彭博原始指标表
|
|
|
+type BaseFromBloombergIndex struct {
|
|
|
+ BaseFromBloombergIndexId int `orm:"column(base_from_bloomberg_index_id);pk"`
|
|
|
+ IndexCode string `description:"指标编码"`
|
|
|
+ IndexName string `description:"指标名称"`
|
|
|
+ Unit string `description:"单位"`
|
|
|
+ Source int `description:"数据来源"`
|
|
|
+ Frequency string `description:"频度"`
|
|
|
+ StartDate time.Time `description:"开始日期"`
|
|
|
+ EndDate time.Time `description:"结束日期"`
|
|
|
+ Describe string `description:"指标描述"`
|
|
|
+ Sort int `description:"排序"`
|
|
|
+ IsStop int `description:"是否停更:0-否;1-停更"`
|
|
|
+ EdbExist int `description:"指标库是否已添加:0-否;1-是"`
|
|
|
+ TerminalCode string `description:"所属终端编码"`
|
|
|
+ FilePath string `description:"文件存储路径"`
|
|
|
+ CreateTime time.Time `description:"创建时间"`
|
|
|
+ ModifyTime time.Time `description:"修改时间"`
|
|
|
+}
|
|
|
+
|
|
|
+var BaseFromBloombergIndexCols = struct {
|
|
|
+ BaseFromBloombergIndexId string
|
|
|
+ IndexCode string
|
|
|
+ IndexName string
|
|
|
+ Unit string
|
|
|
+ Source string
|
|
|
+ Frequency string
|
|
|
+ StartDate string
|
|
|
+ EndDate string
|
|
|
+ Describe string
|
|
|
+ Sort string
|
|
|
+ IsStop string
|
|
|
+ EdbExist string
|
|
|
+ TerminalCode string
|
|
|
+ FilePath string
|
|
|
+ CreateTime string
|
|
|
+ ModifyTime string
|
|
|
+}{
|
|
|
+ BaseFromBloombergIndexId: "base_from_bloomberg_index_id",
|
|
|
+ IndexCode: "index_code",
|
|
|
+ IndexName: "index_name",
|
|
|
+ Unit: "unit",
|
|
|
+ Source: "source",
|
|
|
+ Frequency: "frequency",
|
|
|
+ StartDate: "start_date",
|
|
|
+ EndDate: "end_date",
|
|
|
+ Describe: "describe",
|
|
|
+ Sort: "sort",
|
|
|
+ IsStop: "is_stop",
|
|
|
+ EdbExist: "edb_exist",
|
|
|
+ TerminalCode: "terminal_code",
|
|
|
+ FilePath: "file_path",
|
|
|
+ CreateTime: "create_time",
|
|
|
+ ModifyTime: "modify_time",
|
|
|
+}
|
|
|
+
|
|
|
+func (m *BaseFromBloombergIndex) TableName() string {
|
|
|
+ return "base_from_bloomberg_index"
|
|
|
+}
|
|
|
+
|
|
|
+func (m *BaseFromBloombergIndex) PrimaryId() string {
|
|
|
+ return BaseFromBloombergIndexCols.BaseFromBloombergIndexId
|
|
|
+}
|
|
|
+
|
|
|
+func (m *BaseFromBloombergIndex) Create() (err error) {
|
|
|
+ o := orm.NewOrmUsingDB("data")
|
|
|
+ id, err := o.Insert(m)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ m.BaseFromBloombergIndexId = int(id)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func (m *BaseFromBloombergIndex) CreateMulti(items []*BaseFromBloombergIndex) (err error) {
|
|
|
+ if len(items) == 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ o := orm.NewOrmUsingDB("data")
|
|
|
+ _, err = o.InsertMulti(len(items), items)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func (m *BaseFromBloombergIndex) Update(cols []string) (err error) {
|
|
|
+ o := orm.NewOrmUsingDB("data")
|
|
|
+ _, err = o.Update(m, cols...)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func (m *BaseFromBloombergIndex) Del() (err error) {
|
|
|
+ o := orm.NewOrmUsingDB("data")
|
|
|
+ sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
|
|
|
+ _, err = o.Raw(sql, m.BaseFromBloombergIndexId).Exec()
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func (m *BaseFromBloombergIndex) MultiDel(menuIds []int) (err error) {
|
|
|
+ if len(menuIds) == 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ o := orm.NewOrmUsingDB("data")
|
|
|
+ sql := fmt.Sprintf(`DELETE FROM %s WHERE %s IN (%s)`, m.TableName(), m.PrimaryId(), utils.GetOrmInReplace(len(menuIds)))
|
|
|
+ _, err = o.Raw(sql, menuIds).Exec()
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func (m *BaseFromBloombergIndex) GetItemById(id int) (item *BaseFromBloombergIndex, err error) {
|
|
|
+ o := orm.NewOrmUsingDB("data")
|
|
|
+ sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), m.PrimaryId())
|
|
|
+ err = o.Raw(sql, id).QueryRow(&item)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func (m *BaseFromBloombergIndex) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *BaseFromBloombergIndex, err error) {
|
|
|
+ o := orm.NewOrmUsingDB("data")
|
|
|
+ order := ``
|
|
|
+ if orderRule != "" {
|
|
|
+ order = ` ORDER BY ` + orderRule
|
|
|
+ }
|
|
|
+ sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 %s %s LIMIT 1`, m.TableName(), condition, order)
|
|
|
+ err = o.Raw(sql, pars).QueryRow(&item)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func (m *BaseFromBloombergIndex) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
|
|
|
+ o := orm.NewOrmUsingDB("data")
|
|
|
+ sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
|
|
|
+ err = o.Raw(sql, pars).QueryRow(&count)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func (m *BaseFromBloombergIndex) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromBloombergIndex, err error) {
|
|
|
+ o := orm.NewOrmUsingDB("data")
|
|
|
+ fields := strings.Join(fieldArr, ",")
|
|
|
+ if len(fieldArr) == 0 {
|
|
|
+ fields = `*`
|
|
|
+ }
|
|
|
+ order := `ORDER BY create_time DESC`
|
|
|
+ if orderRule != "" {
|
|
|
+ order = ` ORDER BY ` + orderRule
|
|
|
+ }
|
|
|
+ sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
|
|
|
+ _, err = o.Raw(sql, pars).QueryRows(&items)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func (m *BaseFromBloombergIndex) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*BaseFromBloombergIndex, err error) {
|
|
|
+ o := orm.NewOrmUsingDB("data")
|
|
|
+ fields := strings.Join(fieldArr, ",")
|
|
|
+ if len(fieldArr) == 0 {
|
|
|
+ fields = `*`
|
|
|
+ }
|
|
|
+ order := `ORDER BY create_time DESC`
|
|
|
+ if orderRule != "" {
|
|
|
+ order = ` ORDER BY ` + orderRule
|
|
|
+ }
|
|
|
+ sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s LIMIT ?,?`, fields, m.TableName(), condition, order)
|
|
|
+ _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// BaseFromBloombergIndexItem 彭博原始指标信息
|
|
|
+type BaseFromBloombergIndexItem struct {
|
|
|
+ BaseFromBloombergIndexId int
|
|
|
+ IndexCode string `description:"指标编码"`
|
|
|
+ IndexName string `description:"指标名称"`
|
|
|
+ Unit string `description:"单位"`
|
|
|
+ Source int `description:"数据来源"`
|
|
|
+ Frequency string `description:"频度"`
|
|
|
+ StartDate string `description:"开始日期"`
|
|
|
+ EndDate string `description:"结束日期"`
|
|
|
+ Describe string `description:"指标描述"`
|
|
|
+ Sort int `description:"排序"`
|
|
|
+ IsStop int `description:"是否停更:0-否;1-停更"`
|
|
|
+ EdbExist int `description:"指标库是否已添加:0-否;1-是"`
|
|
|
+ CreateTime string `description:"创建时间"`
|
|
|
+ ModifyTime string `description:"修改时间"`
|
|
|
+}
|
|
|
+
|
|
|
+func FormatBaseFromBloombergIndex2Item(origin *BaseFromBloombergIndex) (item *BaseFromBloombergIndexItem) {
|
|
|
+ if origin == nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ item = new(BaseFromBloombergIndexItem)
|
|
|
+ item.BaseFromBloombergIndexId = origin.BaseFromBloombergIndexId
|
|
|
+ item.IndexCode = origin.IndexCode
|
|
|
+ item.IndexName = origin.IndexName
|
|
|
+ item.Unit = origin.Unit
|
|
|
+ item.Source = origin.Source
|
|
|
+ item.Frequency = origin.Frequency
|
|
|
+ item.StartDate = utils.TimeTransferString(utils.FormatDate, origin.StartDate)
|
|
|
+ item.EndDate = utils.TimeTransferString(utils.FormatDate, origin.EndDate)
|
|
|
+ item.Describe = origin.Describe
|
|
|
+ item.Sort = origin.Sort
|
|
|
+ item.IsStop = origin.IsStop
|
|
|
+ item.EdbExist = origin.EdbExist
|
|
|
+ item.CreateTime = utils.TimeTransferString(utils.FormatDateTime, origin.CreateTime)
|
|
|
+ item.ModifyTime = utils.TimeTransferString(utils.FormatDateTime, origin.ModifyTime)
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// BloombergSourceListReq 指标列表筛选
|
|
|
+type BloombergSourceListReq struct {
|
|
|
+ PageSize int `form:"PageSize"`
|
|
|
+ CurrentIndex int `form:"CurrentIndex"`
|
|
|
+ Frequency string `form:"Frequency" description:"频度"`
|
|
|
+ Keywords string `form:"Keywords" description:"指标ID/指标名称"`
|
|
|
+ ListAll bool `form:"ListAll" description:"列表全选"`
|
|
|
+ SortField int `form:"SortField" description:"排序字段: 0-默认; 1-开始时间; 2-最新时间; 3-更新时间"`
|
|
|
+ SortRule int `form:"SortRule" description:"排序方式: 0-默认; 1-正序; 2-倒序"`
|
|
|
+}
|
|
|
+
|
|
|
+// BloombergSourceListResp 指标列表响应体
|
|
|
+type BloombergSourceListResp struct {
|
|
|
+ List []*BaseFromBloombergIndexItem
|
|
|
+ Paging *paging.PagingItem `description:"分页数据"`
|
|
|
+}
|
|
|
+
|
|
|
+// UpdateEdbExist 标记已添加指标库
|
|
|
+func (m *BaseFromBloombergIndex) UpdateEdbExist(indexCode string) (err error) {
|
|
|
+ o := orm.NewOrmUsingDB("data")
|
|
|
+ sql := fmt.Sprintf(`UPDATE %s SET %s = ? WHERE %s = ? LIMIT 1`, m.TableName(), BaseFromBloombergIndexCols.EdbExist, BaseFromBloombergIndexCols.IndexCode)
|
|
|
+ _, err = o.Raw(sql, 1, indexCode).Exec()
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// --------------------------------------------- 以下为测试用 ---------------------------------------------
|
|
|
+
|
|
|
+// BaseFromBloombergData 彭博原始指标表
|
|
|
+//type BaseFromBloombergData struct {
|
|
|
+// BaseFromBloombergDataId int `orm:"column(base_from_bloomberg_data_id);pk"`
|
|
|
+// BaseFromBloombergIndexId int `description:"指标ID"`
|
|
|
+// IndexCode string `description:"指标编码"`
|
|
|
+// DataTime time.Time `description:"数据日期"`
|
|
|
+// Value float64 `description:"数据值"`
|
|
|
+// CreateTime time.Time `description:"创建时间"`
|
|
|
+// ModifyTime time.Time `description:"修改时间"`
|
|
|
+// DataTimestamp int `description:"数据日期时间戳"`
|
|
|
+//}
|
|
|
+//
|
|
|
+//func (m *BaseFromBloombergData) TableName() string {
|
|
|
+// return "base_from_bloomberg_data"
|
|
|
+//}
|
|
|
+//
|
|
|
+//func (m *BaseFromBloombergData) Create() (err error) {
|
|
|
+// o := orm.NewOrmUsingDB("data")
|
|
|
+// id, err := o.Insert(m)
|
|
|
+// if err != nil {
|
|
|
+// return
|
|
|
+// }
|
|
|
+// m.BaseFromBloombergDataId = int(id)
|
|
|
+// return
|
|
|
+//}
|
|
|
+//
|
|
|
+//func (m *BaseFromBloombergData) CreateMulti(items []*BaseFromBloombergData) (err error) {
|
|
|
+// if len(items) == 0 {
|
|
|
+// return
|
|
|
+// }
|
|
|
+// o := orm.NewOrmUsingDB("data")
|
|
|
+// _, err = o.InsertMulti(len(items), items)
|
|
|
+// return
|
|
|
+//}
|