Selaa lähdekoodia

添加逻辑图指标引用

xyxie 9 kuukautta sitten
vanhempi
commit
cf98304683

+ 9 - 2
controllers/sandbox/sandbox.go

@@ -8,6 +8,7 @@ import (
 	"eta/eta_api/models/sandbox"
 	"eta/eta_api/models/sandbox/request"
 	"eta/eta_api/models/sandbox/response"
+	"eta/eta_api/services/data"
 	sandboxService "eta/eta_api/services/sandbox"
 	"eta/eta_api/utils"
 	"fmt"
@@ -1029,7 +1030,7 @@ func (this *SandboxController) EditSandboxClassify() {
 		br.ErrMsg = "查询子级分类id失败,Err:" + err.Error()
 		return
 	}
-	err  = sandbox.UpdateSandboxClassifyChartPermissionById(req.ChartPermissionId, req.ChartPermissionName, ids)
+	err = sandbox.UpdateSandboxClassifyChartPermissionById(req.ChartPermissionId, req.ChartPermissionName, ids)
 	if err != nil {
 		br.Msg = "修改子级分类错误"
 		br.ErrMsg = "修改子级分类错误,Err:" + err.Error()
@@ -1646,7 +1647,7 @@ func (this *SandboxController) ChartClassifyMove() {
 					br.ErrMsg = "获取上级分类信息失败,Err:" + err.Error()
 					return
 				}
-				err  = sandbox.UpdateSandboxClassifyChartPermissionById(parentChartClassifyInfo.ChartPermissionId, parentChartClassifyInfo.ChartPermissionName, ids)
+				err = sandbox.UpdateSandboxClassifyChartPermissionById(parentChartClassifyInfo.ChartPermissionId, parentChartClassifyInfo.ChartPermissionName, ids)
 				if err != nil {
 					br.Msg = "修改子级分类错误"
 					br.ErrMsg = "修改子级分类错误,Err:" + err.Error()
@@ -1802,6 +1803,7 @@ func (this *SandboxController) SaveV2() {
 
 	var errMsg string
 
+	var sandBoxData *sandbox.Sandbox
 	if req.SandboxId <= 0 {
 		//新增沙盘
 		sandboxResp, err = sandboxService.AddSandboxV2(req, sysUser.AdminId, sysUser.RealName)
@@ -1813,6 +1815,7 @@ func (this *SandboxController) SaveV2() {
 			br.ErrMsg = "保存失败,Err:" + err.Error()
 			return
 		}
+		sandBoxData = sandboxResp.Sandbox
 	} else {
 		//编辑沙盘
 		sandboxInfo := &sandbox.Sandbox{
@@ -1841,8 +1844,12 @@ func (this *SandboxController) SaveV2() {
 			br.ErrMsg = "保存失败,Err:" + err.Error()
 			return
 		}
+		sandBoxData = sandboxInfo
 	}
 
+	//解析逻辑图的指标
+	_ = data.SaveSandBoxEdbInfoRelation(sandBoxData.SandboxId, sandBoxData.Content)
+
 	msg := "保存成功"
 	br.Ret = 200
 	br.Success = true

+ 28 - 0
models/sandbox/sandbox.go

@@ -402,3 +402,31 @@ func GetFirstSandboxByClassifyId(classifyId int) (item *Sandbox, err error) {
 	err = o.Raw(sql, classifyId).QueryRow(&item)
 	return
 }
+
+// ContentDataStruct 沙盘内容结构体
+type ContentDataStruct struct {
+	Cells []struct {
+		Data *NodeData `json:"data,omitempty"`
+	} `json:"cells"`
+}
+
+type NodeData struct {
+	LinkData []*LinkData `json:"linkData"`
+	LinkFold bool        `json:"linkFold"`
+}
+
+type LinkData struct {
+	RId          string       `json:"RId"`
+	Id           int          `json:"Id"`
+	Name         string       `json:"Name"`
+	Type         int          `json:"Type"`
+	Editing      bool         `json:"editing"`
+	DatabaseType int          `json:"databaseType"`
+	DetailParams DetailParams `json:"detailParams"`
+}
+
+type DetailParams struct {
+	Code       string `json:"code"`
+	Id         int    `json:"id"`
+	ClassifyId int    `json:"classifyId"`
+}

+ 27 - 5
services/data/edb_info_relation.go

@@ -3,6 +3,7 @@ package data
 import (
 	"eta/eta_api/models/data_manage"
 	"eta/eta_api/services/alarm_msg"
+	"eta/eta_api/services/sandbox"
 	"eta/eta_api/utils"
 	"fmt"
 	"time"
@@ -10,13 +11,20 @@ import (
 
 // SaveChartEdbInfoRelation 添加/编辑图表指标引用关联记录
 func SaveChartEdbInfoRelation(edbInfoIds []int, chartInfo *data_manage.ChartInfo) (err error) {
+	//更新指标刷新状态为启用
+	err = saveEdbInfoRelation(edbInfoIds, chartInfo.ChartInfoId, utils.EDB_RELATION_CHART, chartInfo.Source)
+	return
+}
+
+// saveEdbInfoRelation 添加/编辑图表指标引用关联记录
+func saveEdbInfoRelation(edbInfoIds []int, objectId, objectType, objectSubType int) (err error) {
 	// 实现添加引用记录的逻辑
 	if len(edbInfoIds) == 0 {
 		return
 	}
 	defer func() {
 		if err != nil {
-			tips := "SaveChartEdbInfoRelation-添加/编辑图表指标引用关联记录失败, ErrMsg:\n" + err.Error()
+			tips := "实现添加引用记录的逻辑-添加/编辑图表指标引用关联记录失败, ErrMsg:\n" + err.Error()
 			utils.FileLog.Info(tips)
 			go alarm_msg.SendAlarmMsg(tips, 3)
 		}
@@ -41,7 +49,7 @@ func SaveChartEdbInfoRelation(edbInfoIds []int, chartInfo *data_manage.ChartInfo
 	}
 	// 循转组装引用
 	// 查询已有的引用关系
-	existList, e := data_manage.GetEdbInfoRelationByReferObjectId(chartInfo.ChartInfoId, utils.EDB_RELATION_CHART)
+	existList, e := data_manage.GetEdbInfoRelationByReferObjectId(objectId, objectType)
 	if e != nil {
 		err = fmt.Errorf("查询已有的引用关系失败,%s", e.Error())
 		return
@@ -65,9 +73,9 @@ func SaveChartEdbInfoRelation(edbInfoIds []int, chartInfo *data_manage.ChartInfo
 			delete(deleteMap, edbInfo.EdbInfoId)
 		} else {
 			tmp := &data_manage.EdbInfoRelation{
-				ReferObjectId:      chartInfo.ChartInfoId,
-				ReferObjectType:    utils.EDB_RELATION_CHART,
-				ReferObjectSubType: chartInfo.Source,
+				ReferObjectId:      objectId,
+				ReferObjectType:    objectType,
+				ReferObjectSubType: objectSubType,
 				EdbInfoId:          edbInfo.EdbInfoId,
 				EdbName:            edbInfo.EdbName,
 				Source:             edbInfo.Source,
@@ -91,3 +99,17 @@ func SaveChartEdbInfoRelation(edbInfoIds []int, chartInfo *data_manage.ChartInfo
 	}
 	return
 }
+
+// SaveSandBoxEdbInfoRelation 添加/编辑 eta逻辑图指标引用
+func SaveSandBoxEdbInfoRelation(sandBoxId int, sandBoxContent string) (err error) {
+	edbInfoIds, err := sandbox.GetSandBoxEdbIdsByContent(sandBoxContent)
+	if err != nil {
+		return
+	}
+	if len(edbInfoIds) == 0 {
+		return
+	}
+	//更新指标刷新状态为启用
+	err = saveEdbInfoRelation(edbInfoIds, sandBoxId, utils.EDB_RELATION_SANDBOX, 0)
+	return
+}

+ 42 - 0
services/sandbox/sandbox.go

@@ -599,6 +599,27 @@ type ContentStruct struct {
 	} `json:"cells"`
 }
 
+type SendBoxNodeData struct {
+	linkData []SandBoxLinkData `json:"linkData"`
+	linkFold bool              `json:"linkFold"`
+}
+
+type SandBoxLinkData struct {
+	RId          string              `json:"RId"`
+	Id           int                 `json:"Id"`
+	Name         string              `json:"Name"`
+	Type         int                 `json:"Type"`
+	Editing      bool                `json:"editing"`
+	DatabaseType int                 `json:"databaseType"`
+	DetailParams SandBoxDetailParams `json:"detailParams"`
+}
+
+type SandBoxDetailParams struct {
+	Code       string `json:"code"`
+	Id         int    `json:"id"`
+	ClassifyId int    `json:"classifyId"`
+}
+
 // checkoutContent 校验内容是否变更
 func checkoutContent(oldContent, reqContent string) (isUpdate bool) {
 	defer func() {
@@ -852,3 +873,24 @@ func sandboxClassifyHaveChildV2(allNode []*sandbox.SandboxClassifyItems, node *s
 	}
 	return
 }
+
+func GetSandBoxEdbIdsByContent(content string) (edbInfoIds []int, err error) {
+	var contentInfo sandbox.ContentDataStruct
+	err = json.Unmarshal([]byte(content), &contentInfo)
+	if err != nil {
+		err = fmt.Errorf("json.Unmarshal err:%s", err.Error())
+		return
+	}
+	// 遍历所有节点
+	for _, node := range contentInfo.Cells {
+		if node.Data == nil {
+			continue
+		}
+		for _, v := range node.Data.LinkData {
+			if v.Type == 1 {
+				edbInfoIds = append(edbInfoIds, v.Id)
+			}
+		}
+	}
+	return
+}