Browse Source

拟合方程替换指标

xyxie 10 months ago
parent
commit
cc63537763

+ 3 - 0
controllers/data_manage/edb_info.go

@@ -3899,6 +3899,9 @@ func (this *ChartInfoController) EdbInfoReplace() {
 	}*/
 	//}()
 
+	// 替换拟合方程指标
+	_, _ = data_manage.ReplaceEdbInfoInLineEquationMultipleGraphConfig(oldEdbInfo, newEdbInfo)
+
 	//go func() {
 	excel2.ReplaceEdbInExcel(oldEdbInfo, newEdbInfo)
 	//}()

+ 126 - 0
models/data_manage/multiple_graph_config.go

@@ -1,7 +1,14 @@
 package data_manage
 
 import (
+	"encoding/json"
+	"eta/eta_api/models/data_manage/line_equation/request"
+	"eta/eta_api/services/alarm_msg"
+	"eta/eta_api/utils"
+	"fmt"
 	"github.com/beego/beego/v2/client/orm"
+	"strconv"
+	"strings"
 	"time"
 )
 
@@ -80,3 +87,122 @@ type RollingCorrelationConfig struct {
 	CalculateValue int    `description:"计算窗口"`
 	CalculateUnit  string `description:"计算频度"`
 }
+
+// ReplaceEdbInfoInLineEquationMultipleGraphConfig 获取拟合方程配置
+func ReplaceEdbInfoInLineEquationMultipleGraphConfig(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("替换拟合方程中的指标记录 替换总数%d,旧的指标id:%d,新的指标id:%d;%s", replaceConfigTotal, 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=0 AND edb_info_id_b=0 AND curve !=""`
+		_, err = to.Raw(csql).QueryRows(&multipleGraphConfigList)
+		if err != nil {
+			errmsg = "获取指标关联图表配置信息失败:Err:" + err.Error()
+			return
+		}
+		if len(multipleGraphConfigList) == 0 {
+			return
+		}
+		updateList := make([]*MultipleGraphConfig, 0)
+		configIds := make([]int, 0)
+		configIdStr := make([]string, 0)
+		for _, mv := range multipleGraphConfigList {
+			if !strings.Contains(mv.Curve, strconv.Itoa(oldEdbInfo.EdbInfoId)) {
+				continue
+			}
+			//解析curve内容
+			var lineChartInfoConfig request.LineChartInfoReq
+			if err = json.Unmarshal([]byte(mv.Curve), &lineChartInfoConfig); err != nil {
+				errmsg = "获取跨品种分析配置信息失败:Err:" + err.Error()
+				return
+			}
+			updateFlag := false
+			// 遍历跨品种配置里的指标列表
+			for k, edbInfoId := range lineChartInfoConfig.XEdbInfoIdList {
+				if edbInfoId == oldEdbInfo.EdbInfoId {
+					updateFlag = true
+					lineChartInfoConfig.XEdbInfoIdList[k] = newEdbInfo.EdbInfoId
+				}
+			}
+			for k, edbInfoId := range lineChartInfoConfig.YEdbInfoIdList {
+				if edbInfoId == oldEdbInfo.EdbInfoId {
+					updateFlag = true
+					lineChartInfoConfig.YEdbInfoIdList[k] = newEdbInfo.EdbInfoId
+				}
+			}
+			if !updateFlag {
+				continue
+			}
+			newCurve, _ := json.Marshal(lineChartInfoConfig)
+			mv.Curve = string(newCurve)
+			//判断如果达到1000个数,则执行更新语句
+			updateList = append(updateList, mv)
+			configIds = append(configIds, mv.MultipleGraphConfigId)
+			configIdStr = append(configIdStr, strconv.Itoa(mv.MultipleGraphConfigId))
+			if len(updateList) >= 10 {
+				numStr := utils.GetOrmInReplace(len(configIds))
+				// 准备批量更新的 SQL 语句
+				updateSQL := `UPDATE multiple_graph_config SET   
+    curve = CASE multiple_graph_config_id  `
+				for _, updateItem := range updateList {
+					updateSQL += `WHEN ` + strconv.Itoa(updateItem.MultipleGraphConfigId) + ` THEN '` + updateItem.Curve + `' `
+				}
+				updateSQL += `END, modify_time = ? WHERE multiple_graph_config_id IN (` + numStr + `)`
+				_, err = to.Raw(updateSQL, time.Now(), configIds).Exec()
+				if err != nil {
+					errmsg = "更新指标A关联图表配置信息失败:Err:" + err.Error()
+					return
+				}
+				logMsg += `涉及到的配置id:` + strings.Join(configIdStr, ",") + ";"
+				replaceConfigTotal += len(configIds)
+				configIds = make([]int, 0)
+				updateList = make([]*MultipleGraphConfig, 0)
+				configIdStr = make([]string, 0)
+			}
+		}
+		if len(configIds) >= 0 {
+			numStr := utils.GetOrmInReplace(len(configIds))
+			// 准备批量更新的 SQL 语句
+			updateSQL := `UPDATE multiple_graph_config SET   
+    curve = CASE multiple_graph_config_id  `
+			for _, updateItem := range updateList {
+				updateSQL += `WHEN ` + strconv.Itoa(updateItem.MultipleGraphConfigId) + ` THEN '` + updateItem.Curve + `' `
+			}
+			updateSQL += `END, modify_time = ? WHERE multiple_graph_config_id IN (` + numStr + `)`
+			_, err = to.Raw(updateSQL, time.Now(), configIds).Exec()
+			if err != nil {
+				errmsg = "更新指标A关联图表配置信息失败:Err:" + err.Error()
+				return
+			}
+			logMsg += `涉及到的配置id:` + strings.Join(configIdStr, ",") + ";"
+			replaceConfigTotal += len(configIds)
+			configIds = make([]int, 0)
+			updateList = make([]*MultipleGraphConfig, 0)
+			configIdStr = make([]string, 0)
+		}
+	}
+	return
+}

+ 6 - 3
models/data_manage/multiple_graph_config_chart_mapping.go

@@ -66,7 +66,7 @@ func GetMultipleGraphConfigChartMappingListById(configId int) (items []*Multiple
 	return
 }
 
-// ReplaceMultipleGraphConfigChartEdb 替换配置中的指标
+// ReplaceMultipleGraphConfigChartEdb 替换相关性分析配置中的指标
 func ReplaceMultipleGraphConfigChartEdb(oldEdbInfo, newEdbInfo *EdbInfo) (replaceConfigTotal int, err error) {
 	var errmsg string
 	logMsg := `` // 记录替换的日志
@@ -82,14 +82,14 @@ func ReplaceMultipleGraphConfigChartEdb(oldEdbInfo, newEdbInfo *EdbInfo) (replac
 		} else {
 			_ = to.Commit()
 			if logMsg != `` {
-				utils.FileLog.Info(fmt.Sprintf("替换替换配置中的指标记录,旧的指标id:%d,新的指标id:%d;%s", oldEdbInfo.EdbInfoId, newEdbInfo.EdbInfoId, logMsg))
+				utils.FileLog.Info(fmt.Sprintf("替换相关性分析中的指标记录 替换总数%d,旧的指标id:%d,新的指标id:%d;%s", replaceConfigTotal, oldEdbInfo.EdbInfoId, newEdbInfo.EdbInfoId, logMsg))
 			}
 		}
 		if errmsg != "" {
 			fmt.Println("errmsg:" + errmsg)
 		}
 		if err != nil && errmsg != "" {
-			go alarm_msg.SendAlarmMsg("替换替换配置中的指标记录失败提醒,errmsg:"+errmsg, 3)
+			go alarm_msg.SendAlarmMsg("替换统计分析配置中的指标记录失败提醒,errmsg:"+errmsg, 3)
 		}
 	}()
 	//替换multiple_graph_config中的指标
@@ -130,6 +130,8 @@ func ReplaceMultipleGraphConfigChartEdb(oldEdbInfo, newEdbInfo *EdbInfo) (replac
 						errmsg = "更新指标B关联图表配置信息失败:Err:" + err.Error()
 						return
 					}
+
+					// 更新
 					// 更新指标id
 					sql = `UPDATE multiple_graph_config_edb_mapping SET edb_info_id=?, modify_time=? WHERE edb_info_id=? and multiple_graph_config_id IN (` + numStr + `)`
 					_, err = to.Raw(sql, newEdbInfo.EdbInfoId, time.Now(), oldEdbInfo.EdbInfoId, configIds).Exec()
@@ -172,6 +174,7 @@ func ReplaceMultipleGraphConfigChartEdb(oldEdbInfo, newEdbInfo *EdbInfo) (replac
 		}
 	}
 
+	// 替换拟合方程曲线替换指标
 	// 替换跨品种标签绑定得到指标ID
 	sql := `UPDATE chart_tag_variety SET edb_info_id=?, modify_time=? WHERE edb_info_id=?`
 	_, err = to.Raw(sql, newEdbInfo.EdbInfoId, time.Now(), oldEdbInfo.EdbInfoId).Exec()