|
@@ -1,6 +1,7 @@
|
|
|
package services
|
|
|
|
|
|
import (
|
|
|
+ "encoding/json"
|
|
|
"errors"
|
|
|
"eta/eta_forum_hub/models"
|
|
|
"eta/eta_forum_hub/models/system"
|
|
@@ -162,6 +163,7 @@ func AddChartInfo(req *models.AddChartReq, sysUserId int, sysUserRealName string
|
|
|
// todo 先整理好指标信息,生成指标ID,再将图表和指标ID进行绑定
|
|
|
chartEdbInfoList := req.ChartEdbMapping
|
|
|
mapList := make([]*models.ChartEdbMapping, 0)
|
|
|
+ newEdbInfoIdMap := make(map[int]int) // ETA系统和ETA社区指标ID的映射关系
|
|
|
for _, v := range chartEdbInfoList {
|
|
|
mapItem := new(models.ChartEdbMapping)
|
|
|
mapItem.ChartInfoId = int(newId)
|
|
@@ -203,6 +205,7 @@ func AddChartInfo(req *models.AddChartReq, sysUserId int, sysUserRealName string
|
|
|
mapItem.ConvertEnUnit = v.ConvertEnUnit
|
|
|
mapItem.EdbCode = edbCode
|
|
|
mapList = append(mapList, mapItem)
|
|
|
+ newEdbInfoIdMap[v.EdbInfoId] = mapItem.EdbInfoId
|
|
|
}
|
|
|
if len(mapList) <= 0 {
|
|
|
errMsg = `图表指标映射不能为空`
|
|
@@ -215,6 +218,22 @@ func AddChartInfo(req *models.AddChartReq, sysUserId int, sysUserRealName string
|
|
|
err = errors.New("保存失败,Err:" + err.Error())
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+ extraConfig := chartInfo.ExtraConfig
|
|
|
+ barConfig := chartInfo.BarConfig
|
|
|
+ //更新图表配置里的config信息
|
|
|
+ e, _ := transferChartConfigEdbInfoId(chartInfo, newEdbInfoIdMap)
|
|
|
+ if e == nil {
|
|
|
+ //更新图表的特殊字段
|
|
|
+ if chartInfo.ExtraConfig != extraConfig || chartInfo.BarConfig != barConfig {
|
|
|
+ err = chartInfo.Update([]string{"ExtraConfig", "BarConfig"})
|
|
|
+ if err != nil {
|
|
|
+ errMsg = `保存失败`
|
|
|
+ err = errors.New("保存图表配置失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
//添加es数据
|
|
|
go EsAddOrEditChartInfo(chartInfo.ChartInfoId)
|
|
|
|
|
@@ -362,6 +381,7 @@ func UpdateChartInfoAndEdbInfo(req *models.AddChartReq, sysUserId int, sysUserRe
|
|
|
// todo 先整理好指标信息,生成指标ID,再将图表和指标ID进行绑定
|
|
|
chartEdbInfoList := req.ChartEdbMapping
|
|
|
addMappingList := make([]*models.ChartEdbMapping, 0)
|
|
|
+ newEdbInfoIdMap := make(map[int]int) // ETA系统和ETA社区指标ID的映射关系
|
|
|
for _, v := range chartEdbInfoList {
|
|
|
mapItem := new(models.ChartEdbMapping)
|
|
|
mapItem.ChartInfoId = chartInfo.ChartInfoId
|
|
@@ -437,7 +457,7 @@ func UpdateChartInfoAndEdbInfo(req *models.AddChartReq, sysUserId int, sysUserRe
|
|
|
mapItem.EdbCode = edbCode
|
|
|
addMappingList = append(addMappingList, mapItem)
|
|
|
}
|
|
|
-
|
|
|
+ newEdbInfoIdMap[v.EdbInfoId] = mapItem.EdbInfoId
|
|
|
}
|
|
|
if len(addMappingList) > 0 {
|
|
|
err = models.AddChartEdbMapping(addMappingList)
|
|
@@ -464,6 +484,21 @@ func UpdateChartInfoAndEdbInfo(req *models.AddChartReq, sysUserId int, sysUserRe
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ extraConfig := chartInfo.ExtraConfig
|
|
|
+ barConfig := chartInfo.BarConfig
|
|
|
+ //更新图表配置里的config信息
|
|
|
+ e, _ := transferChartConfigEdbInfoId(chartInfo, newEdbInfoIdMap)
|
|
|
+ if e == nil {
|
|
|
+ //更新图表的特殊字段
|
|
|
+ if chartInfo.ExtraConfig != extraConfig || chartInfo.BarConfig != barConfig {
|
|
|
+ err = chartInfo.Update([]string{"ExtraConfig", "BarConfig"})
|
|
|
+ if err != nil {
|
|
|
+ errMsg = `保存失败`
|
|
|
+ err = errors.New("保存图表配置失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
//添加es数据
|
|
|
go EsAddOrEditChartInfo(chartInfo.ChartInfoId)
|
|
|
|
|
@@ -549,3 +584,80 @@ func EsDeleteChartInfo(chartInfoId int) {
|
|
|
err = elastic.EsDeleteDataV2(utils.CHART_INDEX_NAME, strconv.Itoa(chartInfoId))
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+func transferChartConfigEdbInfoId(chartInfo *models.ChartInfo, newEdbInfoIdMap map[int]int) (err error, errMsg string) {
|
|
|
+ chartType := chartInfo.ChartType
|
|
|
+ switch chartType {
|
|
|
+ case 7: // 柱形图
|
|
|
+ var barConfig models.BarChartInfoReq
|
|
|
+ if chartInfo.BarConfig == `` {
|
|
|
+ errMsg = "柱方图未配置"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ err = json.Unmarshal([]byte(chartInfo.BarConfig), &barConfig)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "柱方图配置异常"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //替换里面的edbInfoId
|
|
|
+ for i := 0; i < len(barConfig.EdbInfoIdList); i++ {
|
|
|
+ if newId, ok := newEdbInfoIdMap[barConfig.EdbInfoIdList[i].EdbInfoId]; ok {
|
|
|
+ barConfig.EdbInfoIdList[i].EdbInfoId = newId
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for i := 0; i < len(barConfig.XEdbList); i++ {
|
|
|
+ if newId, ok := newEdbInfoIdMap[barConfig.XEdbList[i].EdbInfoId]; ok {
|
|
|
+ barConfig.XEdbList[i].EdbInfoId = newId
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ for i := 0; i < len(barConfig.YEdbList); i++ {
|
|
|
+ if newId, ok := newEdbInfoIdMap[barConfig.YEdbList[i].EdbInfoId]; ok {
|
|
|
+ barConfig.YEdbList[i].EdbInfoId = newId
|
|
|
+ }
|
|
|
+ }
|
|
|
+ configStr, e := json.Marshal(barConfig)
|
|
|
+ if e != nil {
|
|
|
+ errMsg = "柱方图配置异常"
|
|
|
+ err = errors.New(errMsg + "json.Marshal 失败" + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ chartInfo.BarConfig = string(configStr)
|
|
|
+ return
|
|
|
+ case 10: // 截面散点图
|
|
|
+ var tmpExtraConfig models.SectionScatterReq
|
|
|
+ if chartInfo.ExtraConfig == `` {
|
|
|
+ errMsg = "截面散点图未配置"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ err = json.Unmarshal([]byte(chartInfo.ExtraConfig), &tmpExtraConfig)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "截面散点配置异常"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //替换里面的edbInfoId
|
|
|
+ for i := 0; i < len(tmpExtraConfig.SeriesList); i++ {
|
|
|
+ for j := 0; j < len(tmpExtraConfig.SeriesList[i].EdbInfoList); j++ {
|
|
|
+ if newId, ok := newEdbInfoIdMap[tmpExtraConfig.SeriesList[i].EdbInfoList[j].XEdbInfoId]; ok {
|
|
|
+ tmpExtraConfig.SeriesList[i].EdbInfoList[j].XEdbInfoId = newId
|
|
|
+ }
|
|
|
+ if newId, ok := newEdbInfoIdMap[tmpExtraConfig.SeriesList[i].EdbInfoList[j].YEdbInfoId]; ok {
|
|
|
+ tmpExtraConfig.SeriesList[i].EdbInfoList[j].YEdbInfoId = newId
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ configStr, e := json.Marshal(tmpExtraConfig)
|
|
|
+ if e != nil {
|
|
|
+ errMsg = "截面散点配置异常"
|
|
|
+ err = errors.New(errMsg + "json.Marshal 失败" + e.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ chartInfo.ExtraConfig = string(configStr)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|