|
@@ -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
|
|
|
+}
|