xyxie 9 月之前
父節點
當前提交
56422001be
共有 2 個文件被更改,包括 120 次插入30 次删除
  1. 12 30
      controllers/data_manage/edb_info.go
  2. 108 0
      models/data_manage/multiple_graph_config_chart_mapping.go

+ 12 - 30
controllers/data_manage/edb_info.go

@@ -3834,41 +3834,23 @@ func (this *ChartInfoController) EdbInfoReplace() {
 	//replaceChartTotal, replaceCalculateTotal, err := data.EdbInfoReplace(oldEdbInfo, newEdbInfo, sysAdminId, sysUser.RealName)
 	_, _, err = data.EdbInfoReplace(oldEdbInfo, newEdbInfo, sysAdminId, sysUser.RealName)
 	//msgContent := ``
-	isFail := false
-	var errmsg string
 	if err != nil {
-		//msgContent = oldEdbInfo.EdbName + "指标替换" + newEdbInfo.EdbName + "指标,全部替换失败,涉及" + strconv.Itoa(replaceChartTotal) + "张图表,\n\n " + strconv.Itoa(replaceCalculateTotal) + "个计算指标"
-		isFail = true
-		errmsg = "replace err:" + err.Error()
-	} else {
-		//msgContent = oldEdbInfo.EdbName + "指标替换" + newEdbInfo.EdbName + "指标,全部替换成功,涉及" + strconv.Itoa(replaceChartTotal) + "张图表,\n\n" + strconv.Itoa(replaceCalculateTotal) + "个计算指标"
-		isFail = false
+		br.Msg = "替换失败"
+		br.ErrMsg = "替换失败 replace err:" + err.Error()
+		return
 	}
 
-	// 添加站内信息
-	//{
-	//	msgItem := new(company.CompanyApprovalMessage)
-	//	msgItem.CreateUserId = sysAdminId
-	//	msgItem.ReceiveUserId = sysAdminId
-	//	msgItem.MessageStatus = 0
-	//	msgItem.Remark = "指标替换"
-	//	msgItem.OperationStatus = 1
-	//	msgItem.Content = msgContent
-	//	msgItem.CreateTime = time.Now()
-	//	msgItem.ModifyTime = time.Now()
-	//	msgItem.MessageType = 3 //1:申请消息,2:审批结果,3:文字消息
-	//	msgItem.SourceType = 4  //消息来源
-	//	err = company.AddCompanyApprovalMessage(msgItem)
-	//}
-
-	if isFail {
+	// 替换相关性图表配置
+	_, err = data_manage.ReplaceMultipleGraphConfigChartEdb(oldEdbInfo, newEdbInfo)
+	if err != nil {
 		br.Msg = "替换失败"
-		br.ErrMsg = "替换失败 err:" + errmsg
-	} else {
-		br.Msg = "替换成功"
-		br.ErrMsg = "替换成功"
-		br.Ret = 200
+		br.ErrMsg = "替换失败 replace err:" + err.Error()
+		return
 	}
+
+	br.Msg = "替换成功"
+	br.ErrMsg = "替换成功"
+	br.Ret = 200
 	br.IsAddLog = true
 	return
 }

+ 108 - 0
models/data_manage/multiple_graph_config_chart_mapping.go

@@ -1,7 +1,12 @@
 package data_manage
 
 import (
+	"eta/eta_api/services/alarm_msg"
+	"eta/eta_api/utils"
+	"fmt"
 	"github.com/beego/beego/v2/client/orm"
+	"strconv"
+	"strings"
 	"time"
 )
 
@@ -60,3 +65,106 @@ func GetMultipleGraphConfigChartMappingListById(configId int) (items []*Multiple
 
 	return
 }
+
+// ReplaceMultipleGraphConfigChartEdb 替换配置中的指标
+func ReplaceMultipleGraphConfigChartEdb(oldEdbInfo, newEdbInfo *EdbInfo) (replaceConfigTotal int, err error) {
+	var errmsg string
+	logMsg := `` // 记录替换的日志
+
+	o := orm.NewOrmUsingDB("data")
+	to, err := o.Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err != nil {
+			_ = to.Rollback()
+		} else {
+			_ = to.Commit()
+			if logMsg != `` {
+				utils.FileLog.Info(fmt.Sprintf("替换替换配置中的指标记录,旧的指标id:%d,新的指标id:%d;%s", oldEdbInfo.EdbInfoId, newEdbInfo.EdbInfoId, logMsg))
+			}
+		}
+		if errmsg != "" {
+			fmt.Println("errmsg:" + errmsg)
+		}
+		if err != nil && errmsg != "" {
+			go alarm_msg.SendAlarmMsg("替换替换配置中的指标记录失败提醒,errmsg:"+errmsg, 3)
+		}
+	}()
+	//替换multiple_graph_config中的指标
+	{
+		multipleGraphConfigList := make([]*MultipleGraphConfig, 0)
+		csql := `SELECT * FROM multiple_graph_config WHERE (edb_info_id_a=? or edb_info_id_b=?)`
+		_, err = to.Raw(csql, oldEdbInfo.EdbInfoId, oldEdbInfo.EdbInfoId).QueryRows(&multipleGraphConfigList)
+		if err != nil {
+			errmsg = "获取指标关联图表配置信息失败:Err:" + err.Error()
+			return
+		}
+		replaceConfigTotal = len(multipleGraphConfigList)
+		configIdMap := make(map[int]int)
+		configIds := make([]int, 0)
+		configIdStr := make([]string, 0)
+		for _, mv := range multipleGraphConfigList {
+			if _, ok := configIdMap[mv.MultipleGraphConfigId]; !ok {
+				//判断如果达到1000个数,则执行更新语句
+				if len(configIds) >= 1000 {
+					//更新配置中的指标A
+					sql := `UPDATE multiple_graph_config SET edb_info_id_a=?, update_time=? WHERE multiple_graph_config_id IN (?) and edb_info_id_a=?`
+					_, err = to.Raw(sql, newEdbInfo.EdbInfoId, time.Now(), configIds, oldEdbInfo.EdbInfoId).Exec()
+					if err != nil {
+						errmsg = "更新指标A关联图表配置信息失败:Err:" + err.Error()
+						return
+					}
+					//更新配置中的指标B
+					sql = `UPDATE multiple_graph_config SET edb_info_id_b=?, update_time=? WHERE multiple_graph_config_id IN (?) and edb_info_id_b=?`
+					_, err = to.Raw(sql, newEdbInfo.EdbInfoId, time.Now(), configIds, oldEdbInfo.EdbInfoId).Exec()
+					if err != nil {
+						errmsg = "更新指标B关联图表配置信息失败:Err:" + err.Error()
+						return
+					}
+					// 更新指标id
+					sql = `UPDATE multiple_graph_config_edb_mapping SET edb_info_id=?, modify_time=? WHERE multiple_graph_config_id IN (?) and edb_info_id=?`
+					_, err = to.Raw(sql, newEdbInfo.EdbInfoId, time.Now(), configIds, oldEdbInfo.EdbInfoId).Exec()
+					if err != nil {
+						errmsg = "更新指标id关联图表配置信息失败:Err:" + err.Error()
+						return
+					}
+					logMsg += `涉及到的配置id:` + strings.Join(configIdStr, ",") + ";"
+					configIds = make([]int, 0)
+					configIdStr = make([]string, 0)
+				}
+				configIds = append(configIds, mv.MultipleGraphConfigId)
+				configIdStr = append(configIdStr, strconv.Itoa(mv.MultipleGraphConfigId))
+				configIdMap[mv.MultipleGraphConfigId] = mv.MultipleGraphConfigId
+			}
+		}
+		if len(configIds) >= 1000 {
+			//更新配置中的指标A
+			sql := `UPDATE multiple_graph_config SET edb_info_id_a=?, update_time=? WHERE multiple_graph_config_id IN (?) and edb_info_id_a=?`
+			_, err = to.Raw(sql, newEdbInfo.EdbInfoId, time.Now(), configIds, oldEdbInfo.EdbInfoId).Exec()
+			if err != nil {
+				errmsg = "更新指标A关联图表配置信息失败:Err:" + err.Error()
+				return
+			}
+			//更新配置中的指标B
+			sql = `UPDATE multiple_graph_config SET edb_info_id_b=?, update_time=? WHERE multiple_graph_config_id IN (?) and edb_info_id_b=?`
+			_, err = to.Raw(sql, newEdbInfo.EdbInfoId, time.Now(), configIds, oldEdbInfo.EdbInfoId).Exec()
+			if err != nil {
+				errmsg = "更新指标B关联图表配置信息失败:Err:" + err.Error()
+				return
+			}
+			// 更新指标id
+			sql = `UPDATE multiple_graph_config_edb_mapping SET edb_info_id=?, modify_time=? WHERE multiple_graph_config_id IN (?) and edb_info_id=?`
+			_, err = to.Raw(sql, newEdbInfo.EdbInfoId, time.Now(), configIds, oldEdbInfo.EdbInfoId).Exec()
+			if err != nil {
+				errmsg = "更新指标id关联图表配置信息失败:Err:" + err.Error()
+				return
+			}
+			logMsg += `涉及到的配置id:` + strings.Join(configIdStr, ",") + ";"
+			configIds = make([]int, 0)
+			configIdStr = make([]string, 0)
+		}
+	}
+	return
+}