|
@@ -817,16 +817,31 @@ func EditChartInfo(req request.EditChartReq, sysUser *system.Admin) (chartItem *
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-func Modify(tagId int) {
|
|
|
- // todo 找出标签关联的图表
|
|
|
+// ModifyChartEdbMapping
|
|
|
+// @Description: 修改图表的关系表
|
|
|
+// @author: Roc
|
|
|
+// @datetime 2023-12-11 17:32:31
|
|
|
+// @param tagId int
|
|
|
+func ModifyChartEdbMapping(tagId int) {
|
|
|
+ errMsgList := make([]string, 0)
|
|
|
+ defer func() {
|
|
|
+ if len(errMsgList) > 0 {
|
|
|
+ utils.FileLog.Error("修改跨品种分析的图表关联指标失败:\n" + strings.Join(errMsgList, "\n"))
|
|
|
+ }
|
|
|
+ }()
|
|
|
+ // 找出标签关联的图表
|
|
|
list, err := cross_varietyModel.GeChartInfoCrossVarietyListByTagId(tagId)
|
|
|
if err != nil {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+ chartInfoIdList := make([]int, 0)
|
|
|
+
|
|
|
tagIdList := make([]int, 0)
|
|
|
tagIdMap := make(map[int]int, 0)
|
|
|
for _, v := range list {
|
|
|
+ chartInfoIdList = append(chartInfoIdList, v.ChartInfoId)
|
|
|
+
|
|
|
if _, ok := tagIdMap[v.ChartXTagId]; !ok {
|
|
|
tagIdList = append(tagIdList, v.ChartXTagId)
|
|
|
tagIdMap[v.ChartXTagId] = 1
|
|
@@ -838,5 +853,106 @@ func Modify(tagId int) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ // 找出所有标签关联的品种和对应的指标
|
|
|
+ chartTagVarietyList, err := cross_varietyModel.GetChartTagVarietyListByTagIdList(tagIdList)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 所有指标id
|
|
|
+ allEdbInfoIdList := make([]int, 0)
|
|
|
+
|
|
|
+ // 标签关联品种的指标列表
|
|
|
+ tagVarietyEdbMap := make(map[string][]int)
|
|
|
+ for _, v := range chartTagVarietyList {
|
|
|
+ if v.EdbInfoId <= 0 {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ key := fmt.Sprint(v.ChartTagId, "_", v.ChartVarietyId)
|
|
|
+ tagVarietyEdbList, ok := tagVarietyEdbMap[key]
|
|
|
+ if !ok {
|
|
|
+ tagVarietyEdbList = make([]int, 0)
|
|
|
+ }
|
|
|
+ tagVarietyEdbMap[key] = append(tagVarietyEdbList, v.EdbInfoId)
|
|
|
+ allEdbInfoIdList = append(allEdbInfoIdList, v.EdbInfoId)
|
|
|
+ }
|
|
|
+
|
|
|
+ edbInfoMap := make(map[int]*data_manage.EdbInfo)
|
|
|
+ // 获取指标列表
|
|
|
+ if len(allEdbInfoIdList) > 0 {
|
|
|
+ allEdbInfoList, tmpErr := data_manage.GetEdbInfoByIdList(allEdbInfoIdList)
|
|
|
+ if tmpErr != nil {
|
|
|
+ err = tmpErr
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, v := range allEdbInfoList {
|
|
|
+ edbInfoMap[v.EdbInfoId] = v
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 图表关联的品种列表
|
|
|
+ chartVarietyMappingList, err := cross_varietyModel.GetChartVarietyMappingListByChartInfoIdList(chartInfoIdList)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 图表关联的品种map
|
|
|
+ chartVarietyMappingListMap := make(map[int][]int)
|
|
|
+ for _, v := range chartVarietyMappingList {
|
|
|
+ if v.ChartInfoId <= 0 {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ varietyMappingList, ok := chartVarietyMappingListMap[v.ChartInfoId]
|
|
|
+ if !ok {
|
|
|
+ varietyMappingList = make([]int, 0)
|
|
|
+ }
|
|
|
+ chartVarietyMappingListMap[v.ChartInfoId] = append(varietyMappingList, v.ChartVarietyId)
|
|
|
+ }
|
|
|
+
|
|
|
+ // 处理图表
|
|
|
+ for _, v := range list {
|
|
|
+ // 获取关联的指标id
|
|
|
+ edbInfoList := make([]*data_manage.EdbInfo, 0)
|
|
|
+ edbInfoIdMap := make(map[int]int, 0)
|
|
|
+
|
|
|
+ // 找出图表关联的品种
|
|
|
+ varietyIdList, ok := chartVarietyMappingListMap[v.ChartInfoId]
|
|
|
+ if ok {
|
|
|
+ // 获取品种与标签的id
|
|
|
+ for _, varietyId := range varietyIdList {
|
|
|
+ // 先处理x轴
|
|
|
+ key := fmt.Sprint(v.ChartXTagId, "_", varietyId)
|
|
|
+ if tmpEdbInfoIdList, ok2 := tagVarietyEdbMap[key]; ok2 {
|
|
|
+ for _, edbInfoId := range tmpEdbInfoIdList {
|
|
|
+ if _, ok3 := edbInfoIdMap[edbInfoId]; !ok3 {
|
|
|
+ if edbInfo, ok4 := edbInfoMap[edbInfoId]; ok4 {
|
|
|
+ edbInfoList = append(edbInfoList, edbInfo)
|
|
|
+ }
|
|
|
+ edbInfoIdMap[edbInfoId] = edbInfoId
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 处理y轴
|
|
|
+ key = fmt.Sprint(v.ChartYTagId, "_", varietyId)
|
|
|
+ if tmpEdbInfoIdList, ok2 := tagVarietyEdbMap[key]; ok2 {
|
|
|
+ for _, edbInfoId := range tmpEdbInfoIdList {
|
|
|
+ if _, ok3 := edbInfoIdMap[edbInfoId]; !ok3 {
|
|
|
+ if edbInfo, ok4 := edbInfoMap[edbInfoId]; ok4 {
|
|
|
+ edbInfoList = append(edbInfoList, edbInfo)
|
|
|
+ }
|
|
|
+ edbInfoIdMap[edbInfoId] = edbInfoId
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ tmpErr := data_manage.ModifyChartEdbMapping(v.ChartInfoId, edbInfoList)
|
|
|
+ if tmpErr != nil {
|
|
|
+ errMsgList = append(errMsgList, fmt.Sprint("修改", v.ChartInfoId, "失败,err:", tmpErr))
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
return
|
|
|
}
|