浏览代码

Merge branch 'hotfix/bug7634_season_chart' of eta_server/eta_api into custom_20250224

xyxie 1 月之前
父节点
当前提交
077b5b04ce
共有 3 个文件被更改,包括 236 次插入169 次删除
  1. 172 117
      services/data/chart_info.go
  2. 63 51
      services/data/chart_info_excel_balance.go
  3. 1 1
      services/data/chart_theme.go

+ 172 - 117
services/data/chart_info.go

@@ -619,7 +619,16 @@ func GetEdbDataMapList(chartInfoId, chartType int, calendar, startDate, endDate
 func getEdbDataMapList(chartInfoId, chartType int, calendar, startDate, endDate string, mappingList []*data_manage.ChartEdbInfoMapping, seasonExtraConfig string) (edbDataListMap map[int][]*data_manage.EdbDataList, edbList []*data_manage.ChartEdbInfoMapping, err error) {
 	// 指标对应的所有数据
 	edbDataListMap = make(map[int][]*data_manage.EdbDataList)
-
+	// 设置季节性图的左右轴
+	seasonXStartDateWithYear := ""
+	seasonXEndDateWithYear := ""
+	// 如果是季节性图则进入特殊排序
+	if chartType == 2 {
+		// 根据设置的左右轴,对mappingList进行排序,1左轴排在前面,0右轴排在前面
+		sort.Slice(mappingList, func(i, j int) bool {
+			return mappingList[i].IsAxis > mappingList[j].IsAxis
+		})
+	}
 	for _, v := range mappingList {
 		//fmt.Println("v:", v.EdbInfoId)
 		item := new(data_manage.ChartEdbInfoMapping)
@@ -817,77 +826,87 @@ func getEdbDataMapList(chartInfoId, chartType int, calendar, startDate, endDate
 						err = errors.New("获取农历数据失败,Err:" + tmpErr.Error())
 						return
 					}
-					quarterDataList, tErr := GetSeasonEdbInfoDataListByXDateNong(result, latestDate, seasonExtraConfig, calendarPreYear)
+					quarterDataList, seasonXStartDateWithYearTmp, seasonXEndDateWithYearTmp, tErr := GetSeasonEdbInfoDataListByXDateNong(result, latestDate, seasonExtraConfig, calendarPreYear)
 					if tErr != nil {
 						err = errors.New("获取季节性图表数据失败,Err:" + tErr.Error())
 						return
 					}
 					item.DataList = quarterDataList
+					seasonXStartDateWithYear = seasonXStartDateWithYearTmp
+					seasonXEndDateWithYear = seasonXEndDateWithYearTmp
 				}
 
 			} else {
-				quarterDataList, tErr := GetSeasonEdbInfoDataListByXDate(dataList, latestDate, seasonExtraConfig)
+				quarterDataList, seasonXStartDateWithYearTmp, seasonXEndDateWithYearTmp, tErr := GetSeasonEdbInfoDataListByXDate(dataList, latestDate, seasonExtraConfig)
 				if tErr != nil {
 					err = errors.New("获取季节性图表数据失败,Err:" + tErr.Error())
 					return
 				}
 				item.DataList = quarterDataList
+				seasonXStartDateWithYear = seasonXStartDateWithYearTmp
+				seasonXEndDateWithYear = seasonXEndDateWithYearTmp
 			}
 
 		} else if chartType == 2 && item.IsAxis == 0 {
 			// 右轴数据处理
-			xStartDate := "01-01"
-
-			jumpYear := 0
-			var seasonExtra data_manage.SeasonExtraItem
-			if seasonExtraConfig != "" {
-				err = json.Unmarshal([]byte(seasonExtraConfig), &seasonExtra)
-				if err != nil {
-					return
-				}
-			}
-
-			if seasonExtra.XStartDate != "" {
-				xStartDate = seasonExtra.XStartDate
-				jumpYear = seasonExtra.JumpYear
-			}
-
-			length := len(dataList)
-			if length == 0 {
-				return
-			}
-			latestDate, tmpErr := time.Parse(utils.FormatDate, v.LatestDate)
-			if tmpErr != nil {
-				//item.DataList = dataList
-				item.IsNullData = true
-				edbList = append(edbList, item)
-				continue
-				err = errors.New(fmt.Sprint("获取最后实际数据的日期失败,Err:" + tmpErr.Error() + ";LatestDate:" + v.LatestDate))
-				return
-			}
-
-			var rightAxisDate time.Time
-			if jumpYear == 1 {
-				latestDate = latestDate.AddDate(-1, 0, 0)
-			}
-			latestDateStr := fmt.Sprintf("%d-%s", latestDate.Year(), xStartDate)
-			rightAxisDate, err = time.Parse(utils.FormatDate, latestDateStr)
-			if err != nil {
-				return
-			}
-			nowYear := time.Now().Year()
+			// xStartDate := "01-01"
+
+			// jumpYear := 0
+			// var seasonExtra data_manage.SeasonExtraItem
+			// if seasonExtraConfig != "" {
+			// 	err = json.Unmarshal([]byte(seasonExtraConfig), &seasonExtra)
+			// 	if err != nil {
+			// 		return
+			// 	}
+			// }
+
+			// if seasonExtra.XStartDate != "" {
+			// 	xStartDate = seasonExtra.XStartDate
+			// 	jumpYear = seasonExtra.JumpYear
+			// }
+
+			// length := len(dataList)
+			// if length == 0 {
+			// 	return
+			// }
+			// latestDate, tmpErr := time.Parse(utils.FormatDate, v.LatestDate)
+			// if tmpErr != nil {
+			// 	//item.DataList = dataList
+			// 	item.IsNullData = true
+			// 	edbList = append(edbList, item)
+			// 	continue
+			// 	err = errors.New(fmt.Sprint("获取最后实际数据的日期失败,Err:" + tmpErr.Error() + ";LatestDate:" + v.LatestDate))
+			// 	return
+			// }
+
+			// var rightAxisDate time.Time
+			// if jumpYear == 1 {
+			// 	latestDate = latestDate.AddDate(-1, 0, 0)
+			// }
+			// latestDateStr := fmt.Sprintf("%d-%s", latestDate.Year(), xStartDate)
+			// rightAxisDate, err = time.Parse(utils.FormatDate, latestDateStr)
+			// if err != nil {
+			// 	return
+			// }
+			// nowYear := time.Now().Year()
 			newDataList := make([]*data_manage.EdbDataList, 0)
+			seasonXStartDateWithYearT, _ := time.Parse(utils.FormatDate, seasonXStartDateWithYear)
+			seasonXEndDateWithYearT, _ := time.Parse(utils.FormatDate, seasonXEndDateWithYear)
 			for _, v := range dataList {
 				dataTime, e := time.Parse(utils.FormatDate, v.DataTime)
 				if e != nil {
 					err = errors.New("季节性图处理右轴指标数据转换日期失败,Err:" + e.Error())
 					return
 				}
-				dataTimeT, _ := time.Parse(utils.FormatDate, v.DataTime)
-				year := dataTimeT.Year()
-				newItemDate := dataTimeT.AddDate(nowYear-year, 0, 0)
-				v.DataTimestamp = newItemDate.UnixNano() / 1e6
-				if dataTime.Equal(rightAxisDate) || dataTime.After(rightAxisDate) {
+				//dataTimeT, _ := time.Parse(utils.FormatDate, v.DataTime)
+				// year := dataTimeT.Year()
+				// newItemDate := dataTimeT.AddDate(nowYear-year, 0, 0)
+				// v.DataTimestamp = newItemDate.UnixNano() / 1e6
+				// if dataTime.Equal(rightAxisDate) || dataTime.After(rightAxisDate) {
+				// 	newDataList = append(newDataList, v)
+				// }
+				// 如果数据时间在横轴的开始日期和结束日期之间,则加入到数据列表中
+				if (dataTime.After(seasonXStartDateWithYearT) && dataTime.Before(seasonXEndDateWithYearT)) || dataTime.Equal(seasonXStartDateWithYearT) || dataTime.Equal(seasonXEndDateWithYearT) {
 					newDataList = append(newDataList, v)
 				}
 			}
@@ -904,7 +923,7 @@ func getEdbDataMapList(chartInfoId, chartType int, calendar, startDate, endDate
 }
 
 // GetSeasonEdbInfoDataListByXDate 季节性图的指标数据根据横轴展示
-func GetSeasonEdbInfoDataListByXDate(dataList []*data_manage.EdbDataList, latestDate time.Time, seasonExtraConfig string) (quarterDataListSort data_manage.QuarterDataList, err error) {
+func GetSeasonEdbInfoDataListByXDate(dataList []*data_manage.EdbDataList, latestDate time.Time, seasonExtraConfig string) (quarterDataListSort data_manage.QuarterDataList, xStartDateWithYear string, xEndDateWithYear string, err error) {
 	xStartDate := "01-01"
 	xEndDate := "12-31"
 	jumpYear := 0
@@ -954,7 +973,7 @@ func GetSeasonEdbInfoDataListByXDate(dataList []*data_manage.EdbDataList, latest
 		return
 	}
 	endYear := lastDateT.Year()
-	nowYear := time.Now().Year()
+	nowYear := endYear
 	chartLegendMaxYear := 0
 	dataMap := make(map[string]data_manage.QuarterXDateItem, 0)
 
@@ -1006,6 +1025,8 @@ func GetSeasonEdbInfoDataListByXDate(dataList []*data_manage.EdbDataList, latest
 		chartLegendMap[name] = idx
 		idx++
 		fmt.Println("年份" + showName + "日期" + startStr + " " + endStr)
+		xStartDateWithYear = startStr
+		xEndDateWithYear = endStr
 		if lastDateT.Before(endT) {
 			//如果最新的日期在起始日之前,则跳出循环
 			break
@@ -1101,7 +1122,7 @@ func GetSeasonEdbInfoDataListByXDate(dataList []*data_manage.EdbDataList, latest
 }
 
 // GetSeasonEdbInfoDataListByXDateNong 季节性图的指标数据根据横轴选择农历时展示
-func GetSeasonEdbInfoDataListByXDateNong(result *data_manage.EdbDataResult, latestDate time.Time, seasonExtraConfig string, calendarPreYear int) (quarterDataListSort data_manage.QuarterDataList, err error) {
+func GetSeasonEdbInfoDataListByXDateNong(result *data_manage.EdbDataResult, latestDate time.Time, seasonExtraConfig string, calendarPreYear int) (quarterDataListSort data_manage.QuarterDataList, xStartDateWithYear string, xEndDateWithYear string, err error) {
 	xStartDate := "01-01"
 	xEndDate := "12-31"
 	jumpYear := 0
@@ -1153,7 +1174,7 @@ func GetSeasonEdbInfoDataListByXDateNong(result *data_manage.EdbDataResult, late
 		return
 	}
 	endYear := lastDateT.Year()
-	nowYear := time.Now().Year()
+	nowYear := endYear
 	chartLegendMaxYear := 0
 	dataMap := make(map[string]data_manage.QuarterXDateItem, 0)
 
@@ -1206,6 +1227,8 @@ func GetSeasonEdbInfoDataListByXDateNong(result *data_manage.EdbDataResult, late
 		endTmpT = endT
 		chartLegendMap[showName] = idx
 		idx++
+		xStartDateWithYear = startStr
+		xEndDateWithYear = endStr
 		if lastDateT.Before(endT) {
 			//如果最新的日期在起始日之前,则跳出循环
 			break
@@ -1272,10 +1295,10 @@ func GetSeasonEdbInfoDataListByXDateNong(result *data_manage.EdbDataResult, late
 				Value:         item.Value,
 			}
 			dataTimeT, _ := time.Parse(utils.FormatDate, item.DataTime)
-			year := dataTimeT.Year()
-			newItemDate := dataTimeT.AddDate(nowYear-year, 0, 0)
-			timestamp := newItemDate.UnixNano() / 1e6
-			tmpVal.DataTimestamp = timestamp
+			// year := dataTimeT.Year()
+			// newItemDate := dataTimeT.AddDate(nowYear-year, 0, 0)
+			// timestamp := newItemDate.UnixNano() / 1e6
+			// tmpVal.DataTimestamp = timestamp
 			if (startTmpT.Before(dataTimeT) && endTmpT.After(dataTimeT)) || startTmpT == dataTimeT || endTmpT == dataTimeT {
 				tmpV := &tmpVal
 				if findVal, ok := quarterMap[name]; !ok {
@@ -3308,7 +3331,15 @@ func GetChartConvertEdbData(chartInfoId, chartType int, calendar, startDate, end
 func getEdbConvertDataMapList(chartInfoId, chartType int, calendar, startDate, endDate string, mappingList []*data_manage.ChartEdbInfoMapping, seasonExtraConfig string, isAxis int) (edbDataListMap map[int][]*data_manage.EdbDataList, edbList []*data_manage.ChartEdbInfoMapping, err error) {
 	// 指标对应的所有数据
 	edbDataListMap = make(map[int][]*data_manage.EdbDataList)
-
+	seasonXStartDateWithYear := ""
+	seasonXEndDateWithYear := ""
+	// 如果是季节性图则进入特殊排序
+	if chartType == 2 {
+		// 根据设置的左右轴,对mappingList进行排序,1左轴排在前面,0右轴排在前面
+		sort.Slice(mappingList, func(i, j int) bool {
+			return mappingList[i].IsAxis > mappingList[j].IsAxis
+		})
+	}
 	for _, v := range mappingList {
 		//fmt.Println("v:", v.EdbInfoId)
 		item := new(data_manage.ChartEdbInfoMapping)
@@ -3499,34 +3530,39 @@ func getEdbConvertDataMapList(chartInfoId, chartType int, calendar, startDate, e
 						err = errors.New("获取农历数据失败,Err:" + tmpErr.Error())
 						return
 					}
-					quarterDataList, tErr := GetSeasonEdbInfoDataListByXDateNong(result, latestDate, seasonExtraConfig, calendarPreYear)
+					quarterDataList, seasonXStartDateWithYearTmp, seasonXEndDateWithYearTmp, tErr := GetSeasonEdbInfoDataListByXDateNong(result, latestDate, seasonExtraConfig, calendarPreYear)
 					if tErr != nil {
 						err = errors.New("获取季节性图表数据失败,Err:" + tErr.Error())
 						return
 					}
 					item.DataList = quarterDataList
+					seasonXStartDateWithYear = seasonXStartDateWithYearTmp
+					seasonXEndDateWithYear = seasonXEndDateWithYearTmp
 				}
 
 			} else {
-				quarterDataList, tErr := GetSeasonEdbInfoDataListByXDate(dataList, latestDate, seasonExtraConfig)
+				quarterDataList, seasonXStartDateWithYearTmp, seasonXEndDateWithYearTmp, tErr := GetSeasonEdbInfoDataListByXDate(dataList, latestDate, seasonExtraConfig)
 				if tErr != nil {
 					err = errors.New("获取季节性图表数据失败,Err:" + tErr.Error())
 					return
 				}
 				item.DataList = quarterDataList
+				seasonXStartDateWithYear = seasonXStartDateWithYearTmp
+				seasonXEndDateWithYear = seasonXEndDateWithYearTmp
 			}
 
 		} else if chartType == 2 && isAxis == 0 {
 			// 右轴数据处理,只要最新一年
-			latestDate, tmpErr := time.Parse(utils.FormatDate, v.LatestDate)
-			if tmpErr != nil {
-				//item.DataList = dataList
-				item.IsNullData = true
-				edbList = append(edbList, item)
-				continue
-				err = errors.New(fmt.Sprint("获取最后实际数据的日期失败,Err:" + tmpErr.Error() + ";LatestDate:" + v.LatestDate))
-				return
-			}
+			// latestDate, tmpErr := time.Parse(utils.FormatDate, v.LatestDate)
+			// if tmpErr != nil {
+			// 	//item.DataList = dataList
+			// 	item.IsNullData = true
+			// 	edbList = append(edbList, item)
+			// 	continue
+			// 	err = errors.New(fmt.Sprint("获取最后实际数据的日期失败,Err:" + tmpErr.Error() + ";LatestDate:" + v.LatestDate))
+			// 	return
+			// }
+
 			newDataList := make([]*data_manage.EdbDataList, 0)
 			for _, v := range dataList {
 				dataTime, e := time.Parse(utils.FormatDate, v.DataTime)
@@ -3534,7 +3570,9 @@ func getEdbConvertDataMapList(chartInfoId, chartType int, calendar, startDate, e
 					err = errors.New("季节性图处理右轴指标数据转换日期失败,Err:" + e.Error())
 					return
 				}
-				if dataTime.Year() == latestDate.Year() {
+				seasonXStartDateWithYearT, _ := time.Parse(utils.FormatDate, seasonXStartDateWithYear)
+				seasonXEndDateWithYearT, _ := time.Parse(utils.FormatDate, seasonXEndDateWithYear)
+				if (dataTime.After(seasonXStartDateWithYearT) && dataTime.Before(seasonXEndDateWithYearT)) || dataTime.Equal(seasonXStartDateWithYearT) || dataTime.Equal(seasonXEndDateWithYearT) {
 					newDataList = append(newDataList, v)
 				}
 			}
@@ -5003,6 +5041,13 @@ func CalculatePercentile(x float64, min float64, max float64) float64 {
 func getEdbDataMapListForSeason(chartInfoId, chartType int, calendar, startDate, endDate string, mappingList []*data_manage.ChartEdbInfoMapping, seasonExtraConfig string) (edbDataListMap map[int][]*data_manage.EdbDataList, edbList []*data_manage.ChartEdbInfoMapping, err error) {
 	// 指标对应的所有数据
 	edbDataListMap = make(map[int][]*data_manage.EdbDataList)
+	seasonXStartDateWithYear := ""
+	seasonXEndDateWithYear := ""
+	if chartType == 2 {
+		sort.Slice(mappingList, func(i, j int) bool {
+			return mappingList[i].IsAxis > mappingList[j].IsAxis
+		})
+	}
 
 	for _, v := range mappingList {
 		//fmt.Println("v:", v.EdbInfoId)
@@ -5206,66 +5251,70 @@ func getEdbDataMapListForSeason(chartInfoId, chartType int, calendar, startDate,
 						err = errors.New("获取农历数据失败,Err:" + tmpErr.Error())
 						return
 					}
-					quarterDataList, tErr := GetSeasonEdbInfoDataListByXDateNong(result, latestDate, seasonExtraConfig, calendarPreYear)
+					quarterDataList, seasonXStartDateWithYearTmp, seasonXEndDateWithYearTmp, tErr := GetSeasonEdbInfoDataListByXDateNong(result, latestDate, seasonExtraConfig, calendarPreYear)
 					if tErr != nil {
 						err = errors.New("获取季节性图表数据失败,Err:" + tErr.Error())
 						return
 					}
+					seasonXStartDateWithYear = seasonXStartDateWithYearTmp
+					seasonXEndDateWithYear = seasonXEndDateWithYearTmp
 					item.DataList = quarterDataList
 				}
 
 			} else {
-				quarterDataList, tErr := GetSeasonEdbInfoDataListByXDate(newDataList, latestDate, seasonExtraConfig)
+				quarterDataList, seasonXStartDateWithYearTmp, seasonXEndDateWithYearTmp, tErr := GetSeasonEdbInfoDataListByXDate(newDataList, latestDate, seasonExtraConfig)
 				if tErr != nil {
 					err = errors.New("获取季节性图表数据失败,Err:" + tErr.Error())
 					return
 				}
+				seasonXStartDateWithYear = seasonXStartDateWithYearTmp
+				seasonXEndDateWithYear = seasonXEndDateWithYearTmp
 				item.DataList = quarterDataList
 			}
 
 		} else if chartType == 2 && item.IsAxis == 0 {
 			// 右轴数据处理
-			xStartDate := "01-01"
-
-			jumpYear := 0
-			var seasonExtra data_manage.SeasonExtraItem
-			if seasonExtraConfig != "" {
-				err = json.Unmarshal([]byte(seasonExtraConfig), &seasonExtra)
-				if err != nil {
-					return
-				}
-			}
-
-			if seasonExtra.XStartDate != "" {
-				xStartDate = seasonExtra.XStartDate
-				jumpYear = seasonExtra.JumpYear
-			}
-
-			length := len(newDataList)
-			if length == 0 {
-				return
-			}
-			latestDate, tmpErr := time.Parse(utils.FormatDate, v.LatestDate)
-			if tmpErr != nil {
-				//item.DataList = newDataList
-				item.IsNullData = true
-				edbList = append(edbList, item)
-				continue
-				err = errors.New(fmt.Sprint("获取最后实际数据的日期失败,Err:" + tmpErr.Error() + ";LatestDate:" + v.LatestDate))
-				return
-			}
-
-			var rightAxisDate time.Time
-			if jumpYear == 1 {
-				latestDate = latestDate.AddDate(-1, 0, 0)
-			}
-			latestDateStr := fmt.Sprintf("%d-%s", latestDate.Year(), xStartDate)
-			rightAxisDate, err = time.Parse(utils.FormatDate, latestDateStr)
-			if err != nil {
-				return
-			}
-
-			nowYear := time.Now().Year()
+			// xStartDate := "01-01"
+
+			// jumpYear := 0
+			// var seasonExtra data_manage.SeasonExtraItem
+			// if seasonExtraConfig != "" {
+			// 	err = json.Unmarshal([]byte(seasonExtraConfig), &seasonExtra)
+			// 	if err != nil {
+			// 		return
+			// 	}
+			// }
+
+			// if seasonExtra.XStartDate != "" {
+			// 	xStartDate = seasonExtra.XStartDate
+			// 	jumpYear = seasonExtra.JumpYear
+			// }
+
+			// length := len(newDataList)
+			// if length == 0 {
+			// 	return
+			// }
+			// latestDate, tmpErr := time.Parse(utils.FormatDate, v.LatestDate)
+			// if tmpErr != nil {
+			// 	//item.DataList = newDataList
+			// 	item.IsNullData = true
+			// 	edbList = append(edbList, item)
+			// 	continue
+			// 	err = errors.New(fmt.Sprint("获取最后实际数据的日期失败,Err:" + tmpErr.Error() + ";LatestDate:" + v.LatestDate))
+			// 	return
+			// }
+
+			// var rightAxisDate time.Time
+			// if jumpYear == 1 {
+			// 	latestDate = latestDate.AddDate(-1, 0, 0)
+			// }
+			// latestDateStr := fmt.Sprintf("%d-%s", latestDate.Year(), xStartDate)
+			// rightAxisDate, err = time.Parse(utils.FormatDate, latestDateStr)
+			// if err != nil {
+			// 	return
+			// }
+
+			// nowYear := time.Now().Year()
 			newList := make([]*data_manage.EdbDataList, 0)
 			for _, v := range dataList {
 				dataTime, e := time.Parse(utils.FormatDate, v.DataTime)
@@ -5273,11 +5322,17 @@ func getEdbDataMapListForSeason(chartInfoId, chartType int, calendar, startDate,
 					err = errors.New("季节性图处理右轴指标数据转换日期失败,Err:" + e.Error())
 					return
 				}
-				dataTimeT, _ := time.Parse(utils.FormatDate, v.DataTime)
-				year := dataTimeT.Year()
-				newItemDate := dataTimeT.AddDate(nowYear-year, 0, 0)
-				v.DataTimestamp = newItemDate.UnixNano() / 1e6
-				if dataTime.Equal(rightAxisDate) || dataTime.After(rightAxisDate) {
+				// dataTimeT, _ := time.Parse(utils.FormatDate, v.DataTime)
+				// year := dataTimeT.Year()
+				// newItemDate := dataTimeT.AddDate(nowYear-year, 0, 0)
+				// v.DataTimestamp = newItemDate.UnixNano() / 1e6
+				// if dataTime.Equal(rightAxisDate) || dataTime.After(rightAxisDate) {
+				// 	newList = append(newList, v)
+				// }
+				seasonXStartDateWithYearT, _ := time.Parse(utils.FormatDate, seasonXStartDateWithYear)
+				seasonXEndDateWithYearT, _ := time.Parse(utils.FormatDate, seasonXEndDateWithYear)
+
+				if (dataTime.After(seasonXStartDateWithYearT) && dataTime.Before(seasonXEndDateWithYearT)) || dataTime.Equal(seasonXStartDateWithYearT) || dataTime.Equal(seasonXEndDateWithYearT) {
 					newList = append(newList, v)
 				}
 			}

+ 63 - 51
services/data/chart_info_excel_balance.go

@@ -771,7 +771,13 @@ func GetBalanceExcelChartDetail(chartInfo *data_manage.ChartInfoView, mappingLis
 func GetBalanceExcelEdbDataMapList(chartInfoId, chartType int, calendar, startDate, endDate string, mappingList []*data_manage.ChartEdbInfoMapping, seasonExtraConfig string, dataListMap map[int][]*data_manage.EdbDataList) (edbDataListMap map[int][]*data_manage.EdbDataList, edbList []*data_manage.ChartEdbInfoMapping, err error) {
 	// 指标对应的所有数据
 	edbDataListMap = make(map[int][]*data_manage.EdbDataList)
-
+	seasonXStartDateWithYear := ""
+	seasonXEndDateWithYear := ""
+	if chartType == 2 {
+		sort.Slice(mappingList, func(i, j int) bool {
+			return mappingList[i].IsAxis > mappingList[j].IsAxis
+		})
+	}
 	for _, v := range mappingList {
 		//fmt.Println("v:", v.EdbInfoId)
 		item := new(data_manage.ChartEdbInfoMapping)
@@ -962,66 +968,70 @@ func GetBalanceExcelEdbDataMapList(chartInfoId, chartType int, calendar, startDa
 						err = errors.New("获取农历数据失败,Err:" + tmpErr.Error())
 						return
 					}
-					quarterDataList, tErr := GetSeasonEdbInfoDataListByXDateNong(result, latestDate, seasonExtraConfig, calendarPreYear)
+					quarterDataList, seasonXStartDateWithYearTmp, seasonXEndDateWithYearTmp, tErr := GetSeasonEdbInfoDataListByXDateNong(result, latestDate, seasonExtraConfig, calendarPreYear)
 					if tErr != nil {
 						err = errors.New("获取季节性图表数据失败,Err:" + tErr.Error())
 						return
 					}
+					seasonXStartDateWithYear = seasonXStartDateWithYearTmp
+					seasonXEndDateWithYear = seasonXEndDateWithYearTmp
 					item.DataList = quarterDataList
 				}
 
 			} else {
-				quarterDataList, tErr := GetSeasonEdbInfoDataListByXDate(dataList, latestDate, seasonExtraConfig)
+				quarterDataList, seasonXStartDateWithYearTmp, seasonXEndDateWithYearTmp, tErr := GetSeasonEdbInfoDataListByXDate(dataList, latestDate, seasonExtraConfig)
 				if tErr != nil {
 					err = errors.New("获取季节性图表数据失败,Err:" + tErr.Error())
 					return
 				}
+				seasonXStartDateWithYear = seasonXStartDateWithYearTmp
+				seasonXEndDateWithYear = seasonXEndDateWithYearTmp
 				item.DataList = quarterDataList
 			}
 
 		} else if chartType == 2 && item.IsAxis == 0 {
 			// 右轴数据处理
-			xStartDate := "01-01"
-
-			jumpYear := 0
-			var seasonExtra data_manage.SeasonExtraItem
-			if seasonExtraConfig != "" {
-				err = json.Unmarshal([]byte(seasonExtraConfig), &seasonExtra)
-				if err != nil {
-					return
-				}
-			}
-
-			if seasonExtra.XStartDate != "" {
-				xStartDate = seasonExtra.XStartDate
-				jumpYear = seasonExtra.JumpYear
-			}
-
-			length := len(dataList)
-			if length == 0 {
-				return
-			}
-			latestDate, tmpErr := time.Parse(utils.FormatDate, v.LatestDate)
-			if tmpErr != nil {
-				//item.DataList = dataList
-				item.IsNullData = true
-				edbList = append(edbList, item)
-				continue
-				err = errors.New(fmt.Sprint("获取最后实际数据的日期失败,Err:" + tmpErr.Error() + ";LatestDate:" + v.LatestDate))
-				return
-			}
-
-			var rightAxisDate time.Time
-			if jumpYear == 1 {
-				latestDate = latestDate.AddDate(-1, 0, 0)
-				latestDateStr := fmt.Sprintf("%d-%s", latestDate.Year(), xStartDate)
-				rightAxisDate, err = time.Parse(utils.FormatDate, latestDateStr)
-				if err != nil {
-					return
-				}
-			}
-
-			nowYear := time.Now().Year()
+			// xStartDate := "01-01"
+
+			// jumpYear := 0
+			// var seasonExtra data_manage.SeasonExtraItem
+			// if seasonExtraConfig != "" {
+			// 	err = json.Unmarshal([]byte(seasonExtraConfig), &seasonExtra)
+			// 	if err != nil {
+			// 		return
+			// 	}
+			// }
+
+			// if seasonExtra.XStartDate != "" {
+			// 	xStartDate = seasonExtra.XStartDate
+			// 	jumpYear = seasonExtra.JumpYear
+			// }
+
+			// length := len(dataList)
+			// if length == 0 {
+			// 	return
+			// }
+			// latestDate, tmpErr := time.Parse(utils.FormatDate, v.LatestDate)
+			// if tmpErr != nil {
+			// 	//item.DataList = dataList
+			// 	item.IsNullData = true
+			// 	edbList = append(edbList, item)
+			// 	continue
+			// 	err = errors.New(fmt.Sprint("获取最后实际数据的日期失败,Err:" + tmpErr.Error() + ";LatestDate:" + v.LatestDate))
+			// 	return
+			// }
+
+			// var rightAxisDate time.Time
+			// if jumpYear == 1 {
+			// 	latestDate = latestDate.AddDate(-1, 0, 0)
+			// 	latestDateStr := fmt.Sprintf("%d-%s", latestDate.Year(), xStartDate)
+			// 	rightAxisDate, err = time.Parse(utils.FormatDate, latestDateStr)
+			// 	if err != nil {
+			// 		return
+			// 	}
+			// }
+
+			// nowYear := time.Now().Year()
 			newDataList := make([]*data_manage.EdbDataList, 0)
 			for _, v := range dataList {
 				dataTime, e := time.Parse(utils.FormatDate, v.DataTime)
@@ -1029,11 +1039,13 @@ func GetBalanceExcelEdbDataMapList(chartInfoId, chartType int, calendar, startDa
 					err = errors.New("季节性图处理右轴指标数据转换日期失败,Err:" + e.Error())
 					return
 				}
-				dataTimeT, _ := time.Parse(utils.FormatDate, v.DataTime)
-				year := dataTimeT.Year()
-				newItemDate := dataTimeT.AddDate(nowYear-year, 0, 0)
-				v.DataTimestamp = newItemDate.UnixNano() / 1e6
-				if dataTime.Equal(rightAxisDate) || dataTime.After(rightAxisDate) {
+				// dataTimeT, _ := time.Parse(utils.FormatDate, v.DataTime)
+				// year := dataTimeT.Year()
+				// newItemDate := dataTimeT.AddDate(nowYear-year, 0, 0)
+				// v.DataTimestamp = newItemDate.UnixNano() / 1e6
+				seasonXStartDateWithYearT, _ := time.Parse(utils.FormatDate, seasonXStartDateWithYear)
+				seasonXEndDateWithYearT, _ := time.Parse(utils.FormatDate, seasonXEndDateWithYear)
+				if dataTime.Equal(seasonXStartDateWithYearT) || (dataTime.After(seasonXStartDateWithYearT) && dataTime.Before(seasonXEndDateWithYearT)) || dataTime.Equal(seasonXEndDateWithYearT) {
 					newDataList = append(newDataList, v)
 				}
 			}
@@ -1231,7 +1243,7 @@ func GetBalanceExcelSeasonChartLegendPreview(dataList []*data_manage.EdbDataList
 				err = errors.New("获取农历数据失败,Err:" + tmpErr.Error())
 				return
 			}
-			quarterDataList, err = GetSeasonEdbInfoDataListByXDateNong(result, latestDate, seasonExtraConfig, calendarPreYear)
+			quarterDataList, _, _, err = GetSeasonEdbInfoDataListByXDateNong(result, latestDate, seasonExtraConfig, calendarPreYear)
 			if err != nil {
 				err = errors.New("获取季节性图表数据失败,Err:" + err.Error())
 				return
@@ -1239,7 +1251,7 @@ func GetBalanceExcelSeasonChartLegendPreview(dataList []*data_manage.EdbDataList
 		}
 
 	} else {
-		quarterDataList, err = GetSeasonEdbInfoDataListByXDate(dataList, latestDate, seasonExtraConfig)
+		quarterDataList, _, _, err = GetSeasonEdbInfoDataListByXDate(dataList, latestDate, seasonExtraConfig)
 		if err != nil {
 			err = errors.New("获取季节性图表数据失败,Err:" + err.Error())
 			return

+ 1 - 1
services/data/chart_theme.go

@@ -300,7 +300,7 @@ func getThemePreviewEdbDataMapList(chartType int, calendar, startDate, endDate s
 				continue
 			}
 
-			quarterDataList, tErr := GetSeasonEdbInfoDataListByXDate(dataList, latestDate, seasonExtraConfig)
+			quarterDataList, _, _, tErr := GetSeasonEdbInfoDataListByXDate(dataList, latestDate, seasonExtraConfig)
 			if tErr != nil {
 				err = errors.New("获取季节性图表数据失败,Err:" + tErr.Error())
 				return