Browse Source

指标库里的季度指标回撤更改

xyxie 1 year ago
parent
commit
9b7e58b166
2 changed files with 88 additions and 33 deletions
  1. 3 24
      controllers/data_manage/chart_info.go
  2. 85 9
      services/data/edb_data.go

+ 3 - 24
controllers/data_manage/chart_info.go

@@ -2023,10 +2023,8 @@ func GetChartInfoDetailFromUniqueCode(chartInfo *data_manage.ChartInfoView, isCa
 
 	dateType := chartInfo.DateType
 
-	startDate := chartInfo.SeasonStartDate
-	endDate := chartInfo.SeasonEndDate
-	seasonStartDate := chartInfo.SeasonStartDate
-	seasonEndDate := chartInfo.SeasonEndDate
+	startDate := chartInfo.StartDate
+	endDate := chartInfo.EndDate
 	startYear := chartInfo.StartYear
 	calendar := chartInfo.Calendar
 	chartType := chartInfo.ChartType
@@ -2043,21 +2041,7 @@ func GetChartInfoDetailFromUniqueCode(chartInfo *data_manage.ChartInfoView, isCa
 		errMsg = "获取图表,指标信息失败,Err:" + err.Error()
 		return
 	}
-	if chartType == 2 {
-		startDate = seasonStartDate
-		endDate = seasonEndDate
-		if dateType <= 0 {
-			if startDate != "" {
-				dateType = 5
-			} else {
-				dateType = utils.DateTypeNYears
-			}
-		}
-	} else {
-		if dateType <= 0 {
-			dateType = 3
-		}
-	}
+
 	yearMax := 0
 	if dateType == utils.DateTypeNYears {
 		for _, v := range mappingList {
@@ -2076,11 +2060,6 @@ func GetChartInfoDetailFromUniqueCode(chartInfo *data_manage.ChartInfoView, isCa
 	}
 	startDate, endDate = utils.GetDateByDateTypeV2(dateType, startDate, endDate, startYear, yearMax)
 
-	if chartInfo.ChartType == 2 {
-		chartInfo.StartDate = startDate
-		chartInfo.EndDate = endDate
-	}
-
 	extraConfigStr := chartInfo.ExtraConfig //图表额外数据参数
 	var barConfig data_manage.BarChartInfoReq
 	// 柱方图的一些配置

+ 85 - 9
services/data/edb_data.go

@@ -212,6 +212,12 @@ func GetChartEdbSeasonalData(calendar, startDate, endDate string, edbInfo *data_
 	}
 
 	latestDateStr := edbInfo.LatestDate //实际数据的截止日期
+	latestDate, tmpErr := time.Parse(utils.FormatDate, edbInfo.LatestDate)
+	if tmpErr != nil {
+		err = errors.New(fmt.Sprint("获取最后实际数据的日期失败,Err:" + tmpErr.Error() + ";LatestDate:" + edbInfo.LatestDate))
+		return
+	}
+	latestDateYear := latestDate.Year() //实际数据截止年份
 
 	if calendar == "农历" {
 		if len(dataList) <= 0 {
@@ -222,19 +228,89 @@ func GetChartEdbSeasonalData(calendar, startDate, endDate string, edbInfo *data_
 				err = errors.New("获取农历数据失败,Err:" + tmpErr.Error())
 				return
 			}
-			quarterDataList, tErr := GetSeasonEdbInfoDataListByXDateNong(result, latestDateStr, "", calendarPreYear)
-			if tErr != nil {
-				err = errors.New("获取季节性图表数据失败,Err:" + tErr.Error())
-				return
+			// 处理季节图的截止日期
+			for k, edbDataItems := range result.List {
+				var cuttingDataTimestamp int64
+
+				// 切割的日期时间字符串
+				cuttingDataTimeStr := latestDate.AddDate(0, 0, edbDataItems.BetweenDay).Format(utils.FormatDate)
+				//如果等于最后的实际日期,那么遍历找到该日期对应的时间戳,并将其赋值为 切割时间戳
+				if edbDataItems.Year >= latestDateYear {
+					for _, tmpData := range edbDataItems.Items {
+						if tmpData.DataTime == cuttingDataTimeStr {
+							cuttingDataTimestamp = tmpData.DataTimestamp
+							break
+						}
+					}
+				}
+				edbDataItems.CuttingDataTimestamp = cuttingDataTimestamp
+				result.List[k] = edbDataItems
+			}
+
+			if result.List[0].Year != calendarPreYear {
+				itemList := make([]*data_manage.EdbDataList, 0)
+				items := new(data_manage.EdbDataItems)
+				//items.Year = calendarPreYear
+				items.Items = itemList
+
+				newResult := new(data_manage.EdbDataResult)
+				newResult.List = append(newResult.List, items)
+				newResult.List = append(newResult.List, result.List...)
+				resultData = newResult
+			} else {
+				resultData = result
 			}
-			resultData = quarterDataList
 		}
 
 	} else {
-		quarterDataList, tErr := GetSeasonEdbInfoDataListByXDate(dataList, latestDateStr, "")
-		if tErr != nil {
-			err = errors.New("获取季节性图表数据失败,Err:" + tErr.Error())
-			return
+		currentYear := time.Now().Year()
+
+		quarterDataList := make([]*data_manage.QuarterData, 0)
+		quarterMap := make(map[int][]*data_manage.EdbDataList)
+		var quarterArr []int
+
+		for _, v := range dataList {
+			itemDate, tmpErr := time.Parse(utils.FormatDate, v.DataTime)
+			if tmpErr != nil {
+				err = errors.New("季度指标日期转换,Err:" + tmpErr.Error() + ";DataTime:" + v.DataTime)
+				return
+			}
+			year := itemDate.Year()
+			newItemDate := itemDate.AddDate(currentYear-year, 0, 0)
+			timestamp := newItemDate.UnixNano() / 1e6
+			v.DataTimestamp = timestamp
+			if findVal, ok := quarterMap[year]; !ok {
+				quarterArr = append(quarterArr, year)
+				findVal = append(findVal, v)
+				quarterMap[year] = findVal
+			} else {
+				findVal = append(findVal, v)
+				quarterMap[year] = findVal
+			}
+		}
+		for _, v := range quarterArr {
+			itemList := quarterMap[v]
+			quarterItem := new(data_manage.QuarterData)
+			quarterItem.Year = v
+			quarterItem.DataList = itemList
+
+			//如果等于最后的实际日期,那么将切割时间戳记录
+			if v == latestDateYear {
+				var cuttingDataTimestamp int64
+				for _, tmpData := range itemList {
+					if tmpData.DataTime == latestDateStr {
+						cuttingDataTimestamp = tmpData.DataTimestamp
+						break
+					}
+				}
+				quarterItem.CuttingDataTimestamp = cuttingDataTimestamp
+			} else if v > latestDateYear {
+				//如果大于最后的实际日期,那么第一个点就是切割的时间戳
+				if len(itemList) > 0 {
+					quarterItem.CuttingDataTimestamp = itemList[0].DataTimestamp - 100
+				}
+			}
+			quarterDataList = append(quarterDataList, quarterItem)
 		}
 		resultData = quarterDataList
 	}