Browse Source

保存指标,当指标被删除时,需要重新新增指标

xyxie 6 months ago
parent
commit
4df46753dd

+ 1 - 1
controllers/data_manage/range_analysis/chart_classify.go

@@ -524,7 +524,7 @@ func (this *RangeChartClassifyController) DeleteChartClassify() {
 			return
 		}
 		if multiConfig != nil { // 删除配置关联指标数据
-			e = data_manage.DeleteMultipleGraphConfigEdbMappingByChartInfoId(chartInfo.ChartInfoId, multiConfig.MultipleGraphConfigId, utils.CHART_SOURCE_RANGE_ANALYSIS)
+			e = data_manage.DeleteMultipleGraphConfigByChartInfoId(chartInfo.ChartInfoId, multiConfig.MultipleGraphConfigId, utils.CHART_SOURCE_RANGE_ANALYSIS)
 			if e != nil {
 				br.Msg = "删除失败"
 				br.ErrMsg = "删除图表关联配置失败, Err: " + e.Error()

+ 15 - 7
controllers/data_manage/range_analysis/chart_info.go

@@ -1306,27 +1306,37 @@ func (this *RangeChartChartInfoController) MultipleGraphConfigSaveEdb() {
 		_ = utils.Rc.Delete(cacheKey)
 	}()
 	fromEdbInfoIds := make([]int, 0)
+	edbInfoIds := make([]int, 0)
 	for _, v := range req.EdbInfoList {
+		if v.EdbInfoId > 0 {
+			edbInfoIds = append(edbInfoIds, v.EdbInfoId)
+		}
 		fromEdbInfoIds = append(fromEdbInfoIds, v.FromEdbInfoId)
+		edbInfoIds = append(edbInfoIds, v.FromEdbInfoId)
 	}
-	fromEdbInfoMappingList, err := data_manage.GetChartEdbMappingListByEdbInfoIdList(fromEdbInfoIds)
+	edbInfoMappingList, err := data_manage.GetChartEdbMappingListByEdbInfoIdList(edbInfoIds)
 	if err != nil {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取图表,指标信息失败,Err:" + err.Error()
 		return
 	}
-	fromEdbInfoMap := make(map[int]*data_manage.ChartEdbInfoMapping, 0)
-	for _, v := range fromEdbInfoMappingList {
-		fromEdbInfoMap[v.EdbInfoId] = v
+	edbInfoMap := make(map[int]*data_manage.ChartEdbInfoMapping, 0)
+	for _, v := range edbInfoMappingList {
+		edbInfoMap[v.EdbInfoId] = v
 	}
 
 	for _, v := range req.EdbInfoList {
-		if _, ok := fromEdbInfoMap[v.FromEdbInfoId]; !ok {
+		if _, ok := edbInfoMap[v.FromEdbInfoId]; !ok {
 			br.Msg = "指标信息不存在"
 			br.ErrMsg = "指标信息不存在,EdbInfoId:" + strconv.Itoa(v.FromEdbInfoId)
 			br.IsSendEmail = false
 			return
 		}
+		if v.EdbInfoId > 0 {
+			if _, ok := edbInfoMap[v.EdbInfoId]; !ok {
+				v.EdbInfoId = 0
+			}
+		}
 	}
 	// 区间计算图表配置校验
 	extraConfig := req.ExtraConfig
@@ -1358,7 +1368,6 @@ func (this *RangeChartChartInfoController) MultipleGraphConfigSaveEdb() {
 		return
 	}
 	deleteEdbInfoIds := make([]int, 0) // 需要解除绑定的指标ID
-	fromEdbMap := make(map[int]int)
 	configMapping := make(map[int]*data_manage.MultipleGraphConfigEdbMapping, 0)
 	if len(multipleGraphConfigEdbMappingList) == 0 || req.IsSaveAs {
 		// 需要新增的指标
@@ -1380,7 +1389,6 @@ func (this *RangeChartChartInfoController) MultipleGraphConfigSaveEdb() {
 
 		// 说明指标还在,没有被删除
 		for _, v := range oldEdbCalculateMappingList {
-			fromEdbMap[v.FromEdbInfoId] = v.EdbInfoId
 			if !utils.InArrayByInt(fromEdbInfoIds, v.FromEdbInfoId) && (config.EdbInfoMode == 1 || req.EdbInfoType != v.FromEdbInfoType) {
 				deleteEdbInfoIds = append(deleteEdbInfoIds, v.EdbInfoId)
 			}

+ 7 - 3
models/data_manage/multiple_graph_config_edb_mapping.go

@@ -75,7 +75,7 @@ func DeleteMultipleGraphConfigEdbMappingByEdbIds(configId, source int, edbIds []
 	return
 }
 
-func DeleteMultipleGraphConfigEdbMappingByChartInfoId(chartInfoId, configId, source int) (err error) {
+func DeleteMultipleGraphConfigByChartInfoId(chartInfoId, configId, source int) (err error) {
 	o := orm.NewOrmUsingDB("data")
 	to, err := o.Begin()
 	if err != nil {
@@ -88,8 +88,12 @@ func DeleteMultipleGraphConfigEdbMappingByChartInfoId(chartInfoId, configId, sou
 			_ = to.Commit()
 		}
 	}()
-
-	sql := ` DELETE FROM multiple_graph_config_chart_mapping WHERE chart_info_id=? and multiple_graph_config_id = ? and	source=?`
+	sql := ` DELETE FROM multiple_graph_config WHERE multiple_graph_config_id = ?`
+	_, err = to.Raw(sql, configId).Exec()
+	if err != nil {
+		return
+	}
+	sql = ` DELETE FROM multiple_graph_config_chart_mapping WHERE chart_info_id=? and multiple_graph_config_id = ? and	source=?`
 	_, err = to.Raw(sql, chartInfoId, configId, source).Exec()
 	if err != nil {
 		return

+ 32 - 4
services/data/range_analysis/chart_info.go

@@ -509,8 +509,22 @@ func GetChartDataByEdbInfoList(chartInfoId int, dateType, startYear int, startDa
 			err = fmt.Errorf("获取区间计算图表, 指标信息失败, Err:" + e.Error())
 			return
 		}
-		// 查询是否已经生成指标
-		dataResp.ConfigEdbNum = len(multipleGraphConfigEdbMappingList)
+		if len(multipleGraphConfigEdbMappingList) > 0 {
+			// 查询指标是否已存在,如果已经被删除了,则返回0值
+			edbIds := make([]int, 0)
+			for _, v := range multipleGraphConfigEdbMappingList {
+				edbIds = append(edbIds, v.EdbInfoId)
+			}
+			var condition string
+			var pars []interface{}
+			condition = " edb_info_id in (" + utils.GetOrmInReplace(len(edbIds)) + ") "
+			pars = append(pars, edbIds)
+			count, _ := data_manage.GetEdbInfoCountByCondition(condition, pars)
+			if count > 0 {
+				// 查询是否已经生成指标
+				dataResp.ConfigEdbNum = len(multipleGraphConfigEdbMappingList)
+			}
+		}
 	}
 	edbList, err = GetChartEdbInfoFormat(chartInfoId, edbInfoMappingList)
 	if err != nil {
@@ -634,8 +648,22 @@ func GetChartDataByEdbInfoListBySeries(chartInfoId int, dateType, startYear int,
 			err = fmt.Errorf("获取区间计算图表, 指标信息失败, Err:" + e.Error())
 			return
 		}
-		// 查询是否已经生成指标
-		dataResp.ConfigEdbNum = len(multipleGraphConfigEdbMappingList)
+		if len(multipleGraphConfigEdbMappingList) > 0 {
+			// 查询指标是否已存在,如果已经被删除了,则返回0值
+			edbIds := make([]int, 0)
+			for _, v := range multipleGraphConfigEdbMappingList {
+				edbIds = append(edbIds, v.EdbInfoId)
+			}
+			var condition string
+			var pars []interface{}
+			condition = " edb_info_id in (" + utils.GetOrmInReplace(len(edbIds)) + ") "
+			pars = append(pars, edbIds)
+			count, _ := data_manage.GetEdbInfoCountByCondition(condition, pars)
+			if count > 0 {
+				// 查询是否已经生成指标
+				dataResp.ConfigEdbNum = len(multipleGraphConfigEdbMappingList)
+			}
+		}
 	}
 
 	edbList, err = GetChartEdbInfoFormat(chartInfoId, edbInfoMappingList)