Browse Source

Merge branch 'feature/eta1.5.7_edb_replace' of eta_server/eta_mobile into master

xyxie 8 months ago
parent
commit
911fdd199e
4 changed files with 149 additions and 0 deletions
  1. 22 0
      cache/replace_edb_info.go
  2. 3 0
      controllers/data_manage/edb_info.go
  3. 123 0
      models/data_manage/edb_info.go
  4. 1 0
      utils/constants.go

+ 22 - 0
cache/replace_edb_info.go

@@ -0,0 +1,22 @@
+package cache
+
+import (
+	"eta/eta_mobile/models/data_manage"
+	"eta/eta_mobile/utils"
+	"fmt"
+)
+
+// 将替换指标操作加入到队列中
+func AddReplaceEdbInfo(oldEdbInfo, newEdbInfo *data_manage.EdbInfo) bool {
+	record := new(data_manage.ReplaceEdbInfoItem)
+	record.OldEdbInfo = oldEdbInfo
+	record.NewEdbInfo = newEdbInfo
+	if utils.Re == nil {
+		err := utils.Rc.LPush(utils.CACHE_KEY_REPLACE_EDB, record)
+		if err != nil {
+			fmt.Println("AddReplaceEdbInfo LPush Err:" + err.Error())
+		}
+		return true
+	}
+	return false
+}

+ 3 - 0
controllers/data_manage/edb_info.go

@@ -2,6 +2,7 @@ package data_manage
 
 import (
 	"encoding/json"
+	"eta/eta_mobile/cache"
 	"eta/eta_mobile/controllers"
 	"eta/eta_mobile/models"
 	"eta/eta_mobile/models/company"
@@ -3843,6 +3844,8 @@ func (this *ChartInfoController) EdbInfoReplace() {
 	} else {
 		//msgContent = oldEdbInfo.EdbName + "指标替换" + newEdbInfo.EdbName + "指标,全部替换成功,涉及" + strconv.Itoa(replaceChartTotal) + "张图表,\n\n" + strconv.Itoa(replaceCalculateTotal) + "个计算指标"
 		isFail = false
+		//加入到缓存队列中处理
+		go cache.AddReplaceEdbInfo(oldEdbInfo, newEdbInfo)
 	}
 
 	// 添加站内信息

+ 123 - 0
models/data_manage/edb_info.go

@@ -1,6 +1,8 @@
 package data_manage
 
 import (
+	"encoding/json"
+	"eta/eta_mobile/models/data_manage/line_equation/request"
 	"eta/eta_mobile/models/mgo"
 	"eta/eta_mobile/services/alarm_msg"
 	"eta/eta_mobile/utils"
@@ -8,6 +10,7 @@ import (
 	"github.com/beego/beego/v2/client/orm"
 	"github.com/rdlucklib/rdluck_tools/paging"
 	"go.mongodb.org/mongo-driver/bson"
+	"strconv"
 	"strings"
 	"time"
 )
@@ -851,7 +854,122 @@ func ReplaceChartEdb(oldEdbInfo, newEdbInfo *EdbInfo) (relationEdbInfoIdList []i
 			return
 		}
 		replaceChartTotal = len(chartEdbMappingList)
+		// 查询所有的相关的图表信息
+		chartInfoIds := make([]string, 0)
+		if len(chartEdbMappingList) > 0 {
+			for _, chartEdbMapping := range chartEdbMappingList {
+				chartInfoIds = append(chartInfoIds, strconv.Itoa(chartEdbMapping.ChartInfoId))
+			}
+		}
 
+		if len(chartInfoIds) > 0 {
+			chartInfoList, e := GetChartInfoListByChartIdList(chartInfoIds)
+			if e != nil {
+				err = e
+				errmsg = "获取图表信息失败:Err:" + e.Error()
+				return
+			}
+			for _, chartInfo := range chartInfoList {
+				updateStr := make([]string, 0)
+				if chartInfo.EdbInfoIds != "" && strings.Contains(chartInfo.EdbInfoIds, strconv.Itoa(oldEdbInfo.EdbInfoId)) {
+					//需要更换
+					//解析字符串
+					edbInfoIds := strings.Split(chartInfo.EdbInfoIds, ",")
+					for i, edbInfoId := range edbInfoIds {
+						if edbInfoId == strconv.Itoa(oldEdbInfo.EdbInfoId) {
+							edbInfoIds[i] = strconv.Itoa(newEdbInfo.EdbInfoId)
+						}
+					}
+					chartInfo.EdbInfoIds = strings.Join(edbInfoIds, ",")
+					updateStr = append(updateStr, "EdbInfoIds")
+				}
+				if chartInfo.ExtraConfig != "" {
+					//判断是否是拟合方程或者散点图截面图
+					if chartInfo.Source == utils.CHART_SOURCE_LINE_EQUATION {
+						//解析配置内容
+						var lineChartInfoConfig request.LineChartInfoReq
+						err = json.Unmarshal([]byte(chartInfo.ExtraConfig), &lineChartInfoConfig)
+						if err != nil {
+							errmsg = "获取图表配置信息失败 json.Unmarshal:Err:" + err.Error()
+							return
+						}
+						xEdbInfoIdList := lineChartInfoConfig.XEdbInfoIdList
+						yEdbInfoIdList := lineChartInfoConfig.YEdbInfoIdList
+						if len(xEdbInfoIdList) > 0 {
+							// 循环判断是否存在
+							for k, xEdbInfoId := range xEdbInfoIdList {
+								if xEdbInfoId == oldEdbInfo.EdbInfoId {
+									xEdbInfoIdList[k] = newEdbInfo.EdbInfoId
+								}
+							}
+						}
+						if len(yEdbInfoIdList) > 0 {
+							// 循环判断是否存在
+							for k, yEdbInfoId := range yEdbInfoIdList {
+								if yEdbInfoId == oldEdbInfo.EdbInfoId {
+									yEdbInfoIdList[k] = newEdbInfo.EdbInfoId
+								}
+							}
+						}
+						// 替换新的指标信息
+						lineChartInfoConfig.XEdbInfoIdList = xEdbInfoIdList
+						lineChartInfoConfig.YEdbInfoIdList = yEdbInfoIdList
+						// 重新序列化
+						lineChartInfoConfigJson, e := json.Marshal(lineChartInfoConfig)
+						if e != nil {
+							err = e
+							errmsg = "图表配置信息序列化失败:json.Marshal Err: " + e.Error()
+							return
+						}
+						lineChartInfoConfigStr := string(lineChartInfoConfigJson)
+						// 更新图表配置信息
+						chartInfo.ExtraConfig = lineChartInfoConfigStr
+						updateStr = append(updateStr, "ExtraConfig")
+					} else if chartInfo.ChartType == utils.CHART_TYPE_SECTION_SCATTER {
+						//解析配置内容
+						var tmpExtraConfig SectionScatterReq
+						err = json.Unmarshal([]byte(chartInfo.ExtraConfig), &tmpExtraConfig)
+						if err != nil {
+							errmsg = "获取截面散点图配置信息失败 json.Unmarshal:Err:" + err.Error()
+							return
+						}
+						//找到指标信息,并替换
+						if len(tmpExtraConfig.SeriesList) > 0 {
+							for k1, series := range tmpExtraConfig.SeriesList {
+								for k2, item := range series.EdbInfoList {
+									if item.XEdbInfoId == oldEdbInfo.EdbInfoId {
+										tmpExtraConfig.SeriesList[k1].EdbInfoList[k2].XEdbInfoId = newEdbInfo.EdbInfoId
+									}
+									if item.YEdbInfoId == oldEdbInfo.EdbInfoId {
+										tmpExtraConfig.SeriesList[k1].EdbInfoList[k2].YEdbInfoId = newEdbInfo.EdbInfoId
+									}
+								}
+							}
+						}
+						// 重新序列化
+						sectionScatterConfigJson, e := json.Marshal(tmpExtraConfig)
+						if e != nil {
+							err = e
+							errmsg = "图表配置信息序列化失败:json.Marshal Err: " + e.Error()
+							return
+						}
+						sectionScatterConfigStr := string(sectionScatterConfigJson)
+						// 更新图表配置信息
+						chartInfo.ExtraConfig = sectionScatterConfigStr
+						updateStr = append(updateStr, "ExtraConfig")
+					}
+				}
+				if len(updateStr) > 0 {
+					updateStr = append(updateStr, "ModifyTime")
+					chartInfo.ModifyTime = time.Now()
+					err = chartInfo.Update(updateStr)
+					if err != nil {
+						errmsg = "更新图表信息失败:chartInfo.Update Err: " + err.Error()
+						return
+					}
+				}
+			}
+		}
 		if len(chartEdbMappingList) > 0 {
 			chartInfoIdList := make([]string, 0)
 			for _, mv := range chartEdbMappingList {
@@ -1651,3 +1769,8 @@ func getAllDataByMongo(edbInfoId, source, subSource int, startDataTime string) (
 
 	return
 }
+
+type ReplaceEdbInfoItem struct {
+	OldEdbInfo *EdbInfo
+	NewEdbInfo *EdbInfo
+}

+ 1 - 0
utils/constants.go

@@ -214,6 +214,7 @@ const (
 	CACHE_EN_PPT_EDITING              = "eta:en_ppt:editing:"               // 英文PPT用户编辑中
 	CACHE_SMART_REPORT_EDITING        = "eta:smart_report:editing:"         // 智能研报用户编辑中
 	CACHE_SMART_REPORT_SEND_MSG       = "eta:smart_report:sending:"         // 智能研报用户报告推送
+	CACHE_KEY_REPLACE_EDB             = "eta:replace_edb"                   //系统用户操作日志队列
 )
 
 // 模板消息推送类型