소스 검색

编辑预测指标时,处理指标引用

xyxie 6 달 전
부모
커밋
83ca8bbaba
4개의 변경된 파일40개의 추가작업 그리고 17개의 파일을 삭제
  1. 20 2
      controllers/data_manage/predict_edb_info.go
  2. 5 0
      services/data/edb_info.go
  3. 13 13
      services/data/edb_info_relation.go
  4. 2 2
      services/edb_info_replace.go

+ 20 - 2
controllers/data_manage/predict_edb_info.go

@@ -568,7 +568,16 @@ func (this *PredictEdbInfoController) Add() {
 	resp := respItem.Data
 
 	edbInfoIdArr := make([]int, 0)
-	edbInfoIdArr = append(edbInfoIdArr, sourceEdbInfoId)
+	//查询相关的指标
+	edbMappingList, err := data_manage.GetAllCalculateByEdbInfoIdV2(req.EdbInfoId)
+	if err != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "获取引用的指标信息失败,Err:" + err.Error()
+		return
+	}
+	for _, v := range edbMappingList {
+		edbInfoIdArr = append(edbInfoIdArr, v.FromEdbInfoId)
+	}
 	// 添加指标引用记录
 	_ = data.SavePredictEdbInfoRelation(edbInfoIdArr, resp.EdbInfoId)
 	//添加es
@@ -774,7 +783,16 @@ func (this *PredictEdbInfoController) Edit() {
 	resp := respItem.Data
 
 	edbInfoIdArr := make([]int, 0)
-	edbInfoIdArr = append(edbInfoIdArr, req.SourceEdbInfoId)
+	//查询相关的指标
+	edbMappingList, err := data_manage.GetAllCalculateByEdbInfoIdV2(req.EdbInfoId)
+	if err != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "获取引用的指标信息失败,Err:" + err.Error()
+		return
+	}
+	for _, v := range edbMappingList {
+		edbInfoIdArr = append(edbInfoIdArr, v.FromEdbInfoId)
+	}
 	// 添加指标引用记录
 	_ = data.SavePredictEdbInfoRelation(edbInfoIdArr, resp.EdbInfoId)
 	//修改es

+ 5 - 0
services/data/edb_info.go

@@ -2965,4 +2965,9 @@ func handleByDelEdbInfo(edbInfo *data_manage.EdbInfo) {
 	if edbInfo.Source == utils.DATA_SOURCE_MANUAL {
 		_ = models.UpdateManualIsJoinEdbStatus(edbInfo.EdbCode, 0)
 	}
+
+	if edbInfo.EdbInfoType == utils.PREDICT_EDB_INFO_TYPE && edbInfo.EdbType == 1 {
+		// 删除图表中的指标引用
+		_ = data_manage.DeleteEdbRelationByObjectId(edbInfo.EdbInfoId, utils.EDB_RELATION_CHART)
+	}
 }

+ 13 - 13
services/data/edb_info_relation.go

@@ -15,12 +15,12 @@ import (
 // SaveChartEdbInfoRelation 添加/编辑图表指标引用关联记录
 func SaveChartEdbInfoRelation(edbInfoIds []int, chartInfo *data_manage.ChartInfo) (err error) {
 	//更新指标刷新状态为启用
-	err = saveEdbInfoRelation(edbInfoIds, chartInfo.ChartInfoId, utils.EDB_RELATION_CHART, chartInfo.Source)
+	err = saveEdbInfoRelation(edbInfoIds, chartInfo.ChartInfoId, utils.EDB_RELATION_CHART, chartInfo.Source, false)
 	return
 }
 
 // saveEdbInfoRelation 添加/编辑图表指标引用关联记录
-func saveEdbInfoRelation(edbInfoIds []int, objectId, objectType, objectSubType int) (err error) {
+func saveEdbInfoRelation(edbInfoIds []int, objectId, objectType, objectSubType int, needPredict bool) (err error) {
 	// 实现添加引用记录的逻辑
 	if len(edbInfoIds) == 0 {
 		return
@@ -43,13 +43,13 @@ func saveEdbInfoRelation(edbInfoIds []int, objectId, objectType, objectSubType i
 	// 过滤预测指标
 	edbInfoList := make([]*data_manage.EdbInfo, 0)
 	for _, v := range edbInfoListTmp {
-		if v.EdbInfoType == 0 {
+		if v.EdbInfoType == 0 || (v.EdbType == 1 && v.EdbInfoType == 1 && needPredict) {
 			edbInfoList = append(edbInfoList, v)
 		}
 	}
 	// 查询计算指标信息,并且建立关联关系
 	// 查询间接引用的指标信息
-	calculateEdbMappingListMap, calculateEdbMappingIdsMap, e := GetEdbListByEdbInfoId(edbInfoList)
+	calculateEdbMappingListMap, calculateEdbMappingIdsMap, e := GetEdbListByEdbInfoId(edbInfoList, needPredict)
 	if e != nil {
 		err = fmt.Errorf("查询计算指标信息失败,%s", e.Error())
 		return
@@ -103,7 +103,7 @@ func saveEdbInfoRelation(edbInfoIds []int, objectId, objectType, objectSubType i
 			}
 			tmp.RelationCode = fmt.Sprintf("%d_%d_%d_%d", tmp.EdbInfoId, tmp.ReferObjectId, tmp.ReferObjectType, tmp.ReferObjectSubType)
 			addList = append(addList, tmp)
-			if edbInfo.EdbType == 2 && edbInfo.EdbInfoType == 0 {
+			if (edbInfo.EdbType == 2 && edbInfo.EdbInfoType == 0) || (edbInfo.EdbType == 1 && edbInfo.EdbInfoType == 1 && needPredict) {
 				childEdbMappingIds, ok1 := calculateEdbMappingIdsMap[edbInfo.EdbInfoId]
 				if !ok1 {
 					continue
@@ -165,7 +165,7 @@ func SaveSandBoxEdbInfoRelation(sandBoxId int, sandBoxContent string) (err error
 		return
 	}
 	//更新指标刷新状态为启用
-	err = saveEdbInfoRelation(edbInfoIds, sandBoxId, utils.EDB_RELATION_SANDBOX, 0)
+	err = saveEdbInfoRelation(edbInfoIds, sandBoxId, utils.EDB_RELATION_SANDBOX, 0, false)
 	return
 }
 
@@ -254,7 +254,7 @@ func SaveCalendarEdbInfoRelation(chartPermissionId int, matterDate string, editM
 	}
 	// 查询计算指标信息,并且建立关联关系
 	// 查询间接引用的指标信息
-	calculateEdbMappingListMap, calculateEdbMappingIdsMap, e := GetEdbListByEdbInfoId(edbInfoList)
+	calculateEdbMappingListMap, calculateEdbMappingIdsMap, e := GetEdbListByEdbInfoId(edbInfoList, false)
 	if e != nil {
 		err = fmt.Errorf("查询计算指标信息失败,%s", e.Error())
 		return
@@ -427,13 +427,13 @@ func GetEdbRelationList(source, edbType int, classifyId, sysUserId, frequency, k
 }
 
 // 查找当前计算指标的所有溯源指标
-func GetEdbListByEdbInfoId(edbInfoList []*data_manage.EdbInfo) (edbMappingListMap map[int]*data_manage.EdbInfoCalculateMapping, edbInfoMappingRootIdsMap map[int][]int, err error) {
+func GetEdbListByEdbInfoId(edbInfoList []*data_manage.EdbInfo, needPredict bool) (edbMappingListMap map[int]*data_manage.EdbInfoCalculateMapping, edbInfoMappingRootIdsMap map[int][]int, err error) {
 	if len(edbInfoList) == 0 {
 		return
 	}
 	edbInfoIds := make([]int, 0)
 	for _, v := range edbInfoList {
-		if v.EdbType == 2 && v.EdbInfoType == 0 { //普通计算指标,排除预算指标
+		if (v.EdbType == 2 && v.EdbInfoType == 0) || (v.EdbType == 1 && v.EdbInfoType == 1 && needPredict) { //普通计算指标,或者是基础预测指标
 			edbInfoIds = append(edbInfoIds, v.EdbInfoId)
 		}
 	}
@@ -463,7 +463,7 @@ func GetEdbListByEdbInfoId(edbInfoList []*data_manage.EdbInfo) (edbMappingListMa
 	edbInfoMappingRootIdsMap = make(map[int][]int, 0)
 	edbMappingMap := make(map[int]struct{})
 	for _, edbInfo := range edbInfoList {
-		if edbInfo.EdbType == 2 && edbInfo.EdbInfoType == 0 {
+		if (edbInfo.EdbType == 2 && edbInfo.EdbInfoType == 0) || (edbInfo.EdbType == 1 && edbInfo.EdbInfoType == 1 && needPredict) {
 			edbInfoId := edbInfo.EdbInfoId
 			edbMappingList, err = getCalculateEdbInfoByEdbInfoId(allEdbMappingMap, edbInfoId, hasFindMap, edbInfoIdMap, edbMappingList, edbMappingMap, edbInfoMappingRootIdsMap, edbInfoId)
 			if err != nil {
@@ -607,7 +607,7 @@ func SaveExcelEdbInfoRelation(excelInfoId, source int, addChildExcel bool) (err
 				if !ok {
 					continue
 				}
-				err = saveEdbInfoRelation(edbInfoIds, v.ExcelInfoId, utils.EDB_RELATION_TABLE, source)
+				err = saveEdbInfoRelation(edbInfoIds, v.ExcelInfoId, utils.EDB_RELATION_TABLE, source, false)
 			}
 			//更新
 		}
@@ -627,14 +627,14 @@ func SaveExcelEdbInfoRelation(excelInfoId, source int, addChildExcel bool) (err
 	if len(edbInfoIds) == 0 {
 		return
 	}
-	err = saveEdbInfoRelation(edbInfoIds, excelInfoId, utils.EDB_RELATION_TABLE, source)
+	err = saveEdbInfoRelation(edbInfoIds, excelInfoId, utils.EDB_RELATION_TABLE, source, false)
 	return
 }
 
 // SavePredictEdbInfoRelation 添加/编辑预测指标引用关联记录
 func SavePredictEdbInfoRelation(edbInfoIds []int, edbInfoId int) (err error) {
 	//更新指标刷新状态为启用
-	err = saveEdbInfoRelation(edbInfoIds, edbInfoId, utils.EDB_RELATION_PREDICT_EDB, 1)
+	err = saveEdbInfoRelation(edbInfoIds, edbInfoId, utils.EDB_RELATION_PREDICT_EDB, 1, true)
 	return
 }
 

+ 2 - 2
services/edb_info_replace.go

@@ -288,7 +288,7 @@ func ReplaceEdbInRelation(oldEdbInfo, newEdbInfo *data_manage.EdbInfo) {
 	if newEdbInfo.EdbType == 2 {
 		edbInfoList := make([]*data_manage.EdbInfo, 0)
 		edbInfoList = append(edbInfoList, newEdbInfo)
-		calculateEdbMappingListMap, calculateEdbMappingIdsMap, err = data.GetEdbListByEdbInfoId(edbInfoList)
+		calculateEdbMappingListMap, calculateEdbMappingIdsMap, err = data.GetEdbListByEdbInfoId(edbInfoList, false)
 		if err != nil {
 			err = fmt.Errorf("查询指标关联指标列表失败 Err:%s", err)
 			return
@@ -379,7 +379,7 @@ func ReplaceEdbInRelation(oldEdbInfo, newEdbInfo *data_manage.EdbInfo) {
 						return
 					}
 				}
-				calculateEdbMappingListMap, calculateEdbMappingIdsMap, err = data.GetEdbListByEdbInfoId(edbInfoList)
+				calculateEdbMappingListMap, calculateEdbMappingIdsMap, err = data.GetEdbListByEdbInfoId(edbInfoList, false)
 				if err != nil {
 					err = fmt.Errorf("查询指标关联指标列表失败 Err:%s", err)
 					return