xyxie 1 year ago
parent
commit
a3481106c2

+ 131 - 0
controllers/data_manage/edb_info_calculate.go

@@ -1890,3 +1890,134 @@ func (this *ChartInfoController) CalculateComputeCorrelation() {
 	br.Msg = "计算成功"
 	br.IsAddLog = true
 }
+
+// CalculateMultiChoice
+// @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/choice [post]
+func (this *EdbInfoCalculateController) 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
+
+	var edbIdArr []int
+
+	if selectAll {
+		// 如果勾了列表全选,那么EdbCode传的就是排除的code
+
+		var condition string
+		var pars []interface{}
+
+		if classifyIds != "" {
+			classifyIdsArr := strings.Split(classifyIds, ",")
+			condition += ` AND classify_id IN (` + utils.GetOrmInReplace(len(classifyIds)) + `) `
+			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(index_name,index_code) LIKE ?`
+					pars = append(pars, utils.GetLikeKeyword(v))
+				}
+			}
+		}
+
+		edbList, e := data_manage.GetEdbInfoFilter(condition, pars)
+		if e != nil {
+			br.Msg = "获取指标列表失败"
+			br.ErrMsg = "获取指标列表失败,Err:" + e.Error()
+			return
+		}
+
+		for _, v := range edbList {
+			edbIdArr = append(edbIdArr, v.EdbInfoId)
+		}
+	} else {
+		//未勾选全选EdbCode就是需要的code
+		edbIdStrArr := strings.Split(req.EdbInfoIds, ",")
+		for _, v := range edbIdStrArr {
+			id, e := strconv.Atoi(v)
+			if e != nil {
+				br.Msg = "获取指标列表失败"
+				br.ErrMsg = "获取指标列表失败,Err:" + e.Error()
+				return
+			}
+			edbIdArr = append(edbIdArr, id)
+		}
+	}
+
+	if len(edbIdArr) > 100 {
+		br.Msg = "最多只能选择100个指标"
+		return
+	}
+
+	if len(edbIdArr) <= 0 {
+		br.Msg = "无符合指标或指标代码错误"
+		return
+	}
+
+	list, err := data_manage.GetEdbInfoByIdList(edbIdArr)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		br.Msg = "获取指标列表失败"
+		br.ErrMsg = "获取指标列表失败,Err:" + err.Error()
+		return
+	}
+
+	searchItemList := make([]data_manage.EdbInfoBase, 0)
+
+	resp := new(data_manage.CalculateMultiChoiceResp)
+
+	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
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}

+ 22 - 0
models/data_manage/edb_info_calculate.go

@@ -157,6 +157,14 @@ func DeleteCalculateData(edbInfoId int) (err error) {
 	return
 }
 
+type EdbInfoBase struct {
+	EdbInfoId  int    `description:"指标id"`
+	EdbName    string `description:"指标名称"`
+	Frequency  string `description:"频度"`
+	Unit       string `description:"单位"`
+	ClassifyId int    `description:"分类id"`
+}
+
 type CalculateEdbInfoItem struct {
 	EdbInfoId     int    `description:"指标id"`
 	EdbName       string `description:"指标名称"`
@@ -562,3 +570,17 @@ type BatchEdbInfoCalculateBatchSaveSuccessResp struct {
 	EdbInfoId   int    `description:"指标ID"`
 	UniqueCode  string `description:"指标唯一编码"`
 }
+
+// CalculateMultiSearchReq 批量计算模块下的指标搜索
+type CalculateMultiChoiceReq struct {
+	ClassifyIds string `description:"分类ID, 用英文逗号拼接"`
+	Frequency   string `description:"频度"`
+	SysUserIds  string `description:"创建人ID,用英文逗号拼接"`
+	Keyword     string `description:"关键字"`
+	SelectAll   bool   `description:"是否全选"`
+	EdbInfoIds  string `description:"指标Id, 用英文逗号拼接"`
+}
+
+type CalculateMultiChoiceResp struct {
+	SearchItem []EdbInfoBase `description:"查询结果"`
+}