Browse Source

Merge branch 'feature/eta_1.8.2' into debug

hsun 10 months ago
parent
commit
c7a609de68

+ 115 - 2
controllers/data_manage/bloomberg_data.go

@@ -96,12 +96,11 @@ func (this *BloombergDataController) List() {
 	}
 	orderType := map[int]string{0: "DESC", 1: "ASC", 2: "DESC"}
 	orderRule := fmt.Sprintf("%s %s", orderFields[params.SortField], orderType[params.SortRule])
-	fmt.Println(orderRule)
 
 	// 列表
 	edbList := make([]*data_manage.BaseFromBloombergIndex, 0)
 	if params.ListAll {
-		list, e := bloombergOb.GetItemsByCondition(cond, pars, []string{}, orderRule)
+		list, e := bloombergOb.GetItemsByCondition(cond, pars, []string{}, orderRule, 0)
 		if e != nil {
 			br.Msg = "获取失败"
 			br.ErrMsg = "获取Bloomberg原始指标列表失败, Err: " + e.Error()
@@ -359,3 +358,117 @@ func (this *BloombergDataController) NameCheck() {
 	br.Ret = 200
 	br.Success = true
 }
+
+// AddCheck
+// @Title 新增校验
+// @Description 新增校验
+// @Param	request	body data_manage.BloombergSourceBatchAddCheckReq true "type json string"
+// @Success 200 string "操作成功"
+// @router /bloomberg_source/add_check [post]
+func (this *BloombergDataController) AddCheck() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		if br.ErrMsg == "" {
+			br.IsSendEmail = false
+		}
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+	var req *data_manage.BloombergSourceBatchAddCheckReq
+	if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + e.Error()
+		return
+	}
+	codeMax := 30
+	codeLen := len(req.IndexCodes)
+
+	// 排序, 默认创建时间倒序
+	orderFields := map[int]string{
+		0: data_manage.BaseFromBloombergIndexCols.CreateTime, 1: data_manage.BaseFromBloombergIndexCols.StartDate,
+		2: data_manage.BaseFromBloombergIndexCols.EndDate, 3: data_manage.BaseFromBloombergIndexCols.ModifyTime,
+	}
+	orderType := map[int]string{0: "DESC", 1: "ASC", 2: "DESC"}
+	orderRule := fmt.Sprintf("%s %s", orderFields[req.SortField], orderType[req.SortRule])
+
+	// 非全选-不需要频率等筛选条件
+	bloombergOb := new(data_manage.BaseFromBloombergIndex)
+	if !req.ListAll {
+		if codeLen == 0 {
+			br.Msg = "请选择指标"
+			return
+		}
+		if codeLen > codeMax {
+			br.Msg = fmt.Sprintf("最多只能选择%d个指标", codeMax)
+			return
+		}
+
+		// 查询选中的指标
+		cond := fmt.Sprintf(` AND %s IN (%s)`, data_manage.BaseFromBloombergIndexCols.IndexCode, utils.GetOrmInReplace(codeLen))
+		pars := make([]interface{}, 0)
+		pars = append(pars, req.IndexCodes)
+		list, e := bloombergOb.GetItemsByCondition(cond, pars, []string{}, orderRule, 0)
+		if e != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取Bloomberg原始指标列表失败, Err: " + e.Error()
+			return
+		}
+		resp := make([]*data_manage.BaseFromBloombergIndexItem, 0)
+		for _, v := range list {
+			resp = append(resp, data_manage.FormatBaseFromBloombergIndex2Item(v))
+		}
+
+		br.Data = resp
+		br.Msg = "校验成功"
+		br.Ret = 200
+		br.Success = true
+		return
+	}
+
+	// 全选-需要频率等筛选条件
+	cond := ``
+	pars := make([]interface{}, 0)
+	// 筛选项
+	req.Keywords = strings.TrimSpace(req.Keywords)
+	if req.Keywords != "" {
+		cond += fmt.Sprintf(` AND (%s LIKE ? OR %s LIKE ?)`, data_manage.BaseFromBloombergIndexCols.IndexCode, data_manage.BaseFromBloombergIndexCols.IndexName)
+		kw := fmt.Sprint("%", req.Keywords, "%")
+		pars = append(pars, kw, kw)
+	}
+	if req.Frequency != "" {
+		cond += fmt.Sprintf(` AND %s = ?`, data_manage.BaseFromBloombergIndexCols.Frequency)
+		pars = append(pars, req.Frequency)
+	}
+	// 排除对应指标
+	if codeLen > 0 {
+		cond += fmt.Sprintf(` AND %s NOT IN (%s)`, data_manage.BaseFromBloombergIndexCols.IndexCode, utils.GetOrmInReplace(codeLen))
+		pars = append(pars, req.IndexCodes)
+	}
+	// 查询max+1个指标
+	list, e := bloombergOb.GetItemsByCondition(cond, pars, []string{}, orderRule, codeMax+1)
+	if e != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取Bloomberg原始指标列表失败, Err: " + e.Error()
+		return
+	}
+	if len(list) > codeMax {
+		br.Msg = fmt.Sprintf("最多只能选择%d个指标", codeMax)
+		return
+	}
+	resp := make([]*data_manage.BaseFromBloombergIndexItem, 0)
+	for _, v := range list {
+		resp = append(resp, data_manage.FormatBaseFromBloombergIndex2Item(v))
+	}
+
+	br.Data = resp
+	br.Msg = "校验成功"
+	br.Ret = 200
+	br.Success = true
+}

+ 10 - 1
models/data_manage/base_from_bloomberg_index.go

@@ -140,7 +140,7 @@ func (m *BaseFromBloombergIndex) GetCountByCondition(condition string, pars []in
 	return
 }
 
-func (m *BaseFromBloombergIndex) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*BaseFromBloombergIndex, err error) {
+func (m *BaseFromBloombergIndex) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, limit int) (items []*BaseFromBloombergIndex, err error) {
 	o := orm.NewOrmUsingDB("data")
 	fields := strings.Join(fieldArr, ",")
 	if len(fieldArr) == 0 {
@@ -151,6 +151,9 @@ func (m *BaseFromBloombergIndex) GetItemsByCondition(condition string, pars []in
 		order = ` ORDER BY ` + orderRule
 	}
 	sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
+	if limit > 0 {
+		sql += fmt.Sprintf(` LIMIT %d`, limit)
+	}
 	_, err = o.Raw(sql, pars).QueryRows(&items)
 	return
 }
@@ -235,6 +238,12 @@ func (m *BaseFromBloombergIndex) UpdateEdbExist(indexCode string) (err error) {
 	return
 }
 
+// BloombergSourceBatchAddCheckReq Bloomberg批量添加校验
+type BloombergSourceBatchAddCheckReq struct {
+	BloombergSourceListReq
+	IndexCodes []string `form:"IndexCodes" description:"全选为false时, 该数组为选中; 全选为true时, 该数组为不选的指标"`
+}
+
 // --------------------------------------------- 以下为测试用 ---------------------------------------------
 
 // BaseFromBloombergData 彭博原始指标表

+ 9 - 0
routers/commentsRouter.go

@@ -1870,6 +1870,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:BloombergDataController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:BloombergDataController"],
+        beego.ControllerComments{
+            Method: "AddCheck",
+            Router: `/bloomberg_source/add_check`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:BloombergDataController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:BloombergDataController"],
         beego.ControllerComments{
             Method: "BatchAdd",