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