Browse Source

批量计算,指标搜素

xyxie 1 year ago
parent
commit
b4a6fe26aa

+ 130 - 19
controllers/data_manage/edb_info_calculate.go

@@ -8,6 +8,7 @@ import (
 	"eta/eta_api/services/data"
 	"eta/eta_api/utils"
 	"fmt"
+	"github.com/rdlucklib/rdluck_tools/paging"
 	"net/url"
 	"strconv"
 	"strings"
@@ -1899,27 +1900,21 @@ func (this *ChartInfoController) CalculateComputeCorrelation() {
 // @Param   Keyword   query   string  false       "关键词搜索"
 // @Param   Frequency   query   string  false       "频度"
 // @Success 200 {object} data_manage.EdbInfoSearchResp
-// @router /edb_info/calculate/multi/choice [post]
-func (this *EdbInfoCalculateController) CalculateMultiChoice() {
+// @router /edb_info/calculate/multi/choice [get]
+func (this *ChartInfoController) CalculateMultiChoice() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
 		this.Data["json"] = br
 		this.ServeJSON()
 	}()
 
-	var req data_manage.CalculateMultiChoiceReq
-	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
-	if err != nil {
-		br.Msg = "参数解析异常!"
-		br.ErrMsg = "参数解析失败,Err:" + err.Error()
-		return
-	}
-
-	frequency := req.Frequency
-	sysUserIds := req.SysUserIds
-	classifyIds := req.ClassifyIds
-	keyword := req.Keyword
-	selectAll := req.SelectAll
+	//来源类型,1:中文,2:英文
+	frequency := this.GetString("Frequency")
+	keyword := this.GetString("Keyword")
+	sysUserIds := this.GetString("SysUserIds")
+	classifyIds := this.GetString("ClassifyIds")
+	edbInfoIds := this.GetString("EdbInfoIds")
+	selectAll, _ := this.GetBool("SelectAll")
 
 	var edbIdArr []int
 
@@ -1931,7 +1926,7 @@ func (this *EdbInfoCalculateController) CalculateMultiChoice() {
 
 		if classifyIds != "" {
 			classifyIdsArr := strings.Split(classifyIds, ",")
-			condition += ` AND classify_id IN (` + utils.GetOrmInReplace(len(classifyIds)) + `) `
+			condition += ` AND classify_id IN (` + utils.GetOrmInReplace(len(classifyIdsArr)) + `) `
 			pars = append(pars, classifyIdsArr)
 		}
 
@@ -1952,12 +1947,11 @@ func (this *EdbInfoCalculateController) CalculateMultiChoice() {
 
 			if len(keyWordArr) > 0 {
 				for _, v := range keyWordArr {
-					condition += ` AND CONCAT(index_name,index_code) LIKE ?`
+					condition += ` AND CONCAT(edb_name,edb_code) LIKE ?`
 					pars = append(pars, utils.GetLikeKeyword(v))
 				}
 			}
 		}
-
 		edbList, e := data_manage.GetEdbInfoFilter(condition, pars)
 		if e != nil {
 			br.Msg = "获取指标列表失败"
@@ -1970,7 +1964,7 @@ func (this *EdbInfoCalculateController) CalculateMultiChoice() {
 		}
 	} else {
 		//未勾选全选EdbCode就是需要的code
-		edbIdStrArr := strings.Split(req.EdbInfoIds, ",")
+		edbIdStrArr := strings.Split(edbInfoIds, ",")
 		for _, v := range edbIdStrArr {
 			id, e := strconv.Atoi(v)
 			if e != nil {
@@ -2021,3 +2015,120 @@ func (this *EdbInfoCalculateController) CalculateMultiChoice() {
 	br.Msg = "获取成功"
 	br.Data = resp
 }
+
+// CalculateMultiSearch
+// @Title 批量计算-查询指标
+// @Description 批量计算-查询指标
+// @Param   ClassifyIds   query   int  true       "指标库分类IDs"
+// @Param   SysUserIds   query   int  true       "创建人"
+// @Param   Keyword   query   string  false       "关键词搜索"
+// @Param   Frequency   query   string  false       "频度"
+// @Success 200 {object} data_manage.EdbInfoSearchResp
+// @router /edb_info/calculate/multi/search [get]
+func (this *ChartInfoController) CalculateMultiSearch() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+	//来源类型,1:中文,2:英文
+	frequency := this.GetString("Frequency")
+	keyword := this.GetString("Keyword")
+	sysUserIds := this.GetString("SysUserIds")
+	classifyIds := this.GetString("ClassifyIds")
+
+	pageSize, _ := this.GetInt("PageSize")
+	currentIndex, _ := this.GetInt("CurrentIndex")
+
+	var startSize int
+	if pageSize <= 0 {
+		pageSize = utils.PageSize50
+	}
+	if currentIndex <= 0 {
+		currentIndex = 1
+	}
+	startSize = utils.StartIndex(currentIndex, pageSize)
+
+	var edbIdArr []int
+
+	condition := ` AND edb_info_type = 0 `
+	var pars []interface{}
+
+	if classifyIds != "" {
+		classifyIdsArr := strings.Split(classifyIds, ",")
+		condition += ` AND classify_id IN (` + utils.GetOrmInReplace(len(classifyIdsArr)) + `) `
+		pars = append(pars, classifyIdsArr)
+	}
+
+	if frequency != "" {
+		frequencyArr := strings.Split(frequency, ",")
+		condition += ` AND frequency IN (` + utils.GetOrmInReplace(len(frequencyArr)) + `) `
+		pars = append(pars, frequencyArr)
+	}
+
+	if sysUserIds != "" {
+		sysUserIdSlice := strings.Split(sysUserIds, ",")
+		condition += ` AND sys_user_id IN (` + utils.GetOrmInReplace(len(sysUserIdSlice)) + `)`
+		pars = append(pars, sysUserIdSlice)
+	}
+
+	if keyword != "" {
+		keyWordArr := strings.Split(keyword, " ")
+
+		if len(keyWordArr) > 0 {
+			for _, v := range keyWordArr {
+				condition += ` AND CONCAT(edb_name,edb_code) LIKE ?`
+				pars = append(pars, utils.GetLikeKeyword(v))
+			}
+		}
+	}
+
+	total, e := data_manage.GetEdbInfoByConditionCount(condition, pars)
+	if e != nil {
+		br.Msg = "获取指标列表总数失败"
+		br.ErrMsg = "获取指标列表总数失败,Err:" + e.Error()
+		return
+	}
+
+	searchItemList := make([]data_manage.EdbInfoBase, 0)
+	page := paging.GetPaging(currentIndex, pageSize, total)
+	resp := new(data_manage.CalculateMultiChoiceResp)
+
+	edbList, e := data_manage.GetEdbInfoListByCondition(condition, pars, startSize, pageSize)
+	if e != nil {
+		br.Msg = "获取指标列表失败"
+		br.ErrMsg = "获取指标列表失败,Err:" + e.Error()
+		return
+	}
+
+	for _, v := range edbList {
+		edbIdArr = append(edbIdArr, v.EdbInfoId)
+	}
+
+	if len(edbIdArr) > 0 {
+		list, err := data_manage.GetEdbInfoByIdList(edbIdArr)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			br.Msg = "获取指标列表失败"
+			br.ErrMsg = "获取指标列表失败,Err:" + err.Error()
+			return
+		}
+		for _, info := range list {
+			searchItem := data_manage.EdbInfoBase{
+				Frequency:  info.Frequency,
+				Unit:       info.Unit,
+				EdbName:    info.EdbName,
+				EdbInfoId:  info.EdbInfoId,
+				ClassifyId: info.ClassifyId,
+			}
+			searchItemList = append(searchItemList, searchItem)
+		}
+	}
+
+	resp.SearchItem = searchItemList
+	resp.Paging = page
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}

+ 2 - 0
models/data_manage/edb_info_calculate.go

@@ -5,6 +5,7 @@ import (
 	"eta/eta_api/utils"
 	"fmt"
 	"github.com/beego/beego/v2/client/orm"
+	"github.com/rdlucklib/rdluck_tools/paging"
 	"github.com/yidane/formula"
 	"strconv"
 	"strings"
@@ -583,4 +584,5 @@ type CalculateMultiChoiceReq struct {
 
 type CalculateMultiChoiceResp struct {
 	SearchItem []EdbInfoBase `description:"查询结果"`
+	Paging     *paging.PagingItem
 }

+ 18 - 0
routers/commentsRouter.go

@@ -2131,6 +2131,24 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ChartInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ChartInfoController"],
+        beego.ControllerComments{
+            Method: "CalculateMultiChoice",
+            Router: `/edb_info/calculate/multi/choice`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ChartInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ChartInfoController"],
+        beego.ControllerComments{
+            Method: "CalculateMultiSearch",
+            Router: `/edb_info/calculate/multi/search`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ChartInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ChartInfoController"],
         beego.ControllerComments{
             Method: "CalculateSave",