Browse Source

处理切割时间

xyxie 1 year ago
parent
commit
c50e25ee2a
1 changed files with 17 additions and 25 deletions
  1. 17 25
      services/data/chart_info.go

+ 17 - 25
services/data/chart_info.go

@@ -729,8 +729,7 @@ func getEdbDataMapList(chartInfoId, chartType int, calendar, startDate, endDate
 		}
 
 		if chartType == 2 {
-			latestDateStr := v.LatestDate //实际数据的截止日期
-			_, tmpErr := time.Parse(utils.FormatDate, v.LatestDate)
+			latestDate, tmpErr := time.Parse(utils.FormatDate, v.LatestDate)
 			if tmpErr != nil {
 				//item.DataList = dataList
 				item.IsNullData = true
@@ -739,20 +738,18 @@ func getEdbDataMapList(chartInfoId, chartType int, calendar, startDate, endDate
 				err = errors.New(fmt.Sprint("获取最后实际数据的日期失败,Err:" + tmpErr.Error() + ";LatestDate:" + v.LatestDate))
 				return
 			}
-			//latestDateYear := latestDate.Year() //实际数据截止年份
 
 			if calendar == "农历" {
 				if len(dataList) <= 0 {
 					result := new(data_manage.EdbDataResult)
 					item.DataList = result
 				} else {
-					// todo 关于处理 calendarPreYear 上一年的数据
 					result, tmpErr := data_manage.AddCalculateQuarterV4(dataList)
 					if tmpErr != nil {
 						err = errors.New("获取农历数据失败,Err:" + tmpErr.Error())
 						return
 					}
-					quarterDataList, tErr := GetSeasonEdbInfoDataListByXDateNong(result, latestDateStr, seasonExtraConfig, calendarPreYear)
+					quarterDataList, tErr := GetSeasonEdbInfoDataListByXDateNong(result, latestDate, seasonExtraConfig, calendarPreYear)
 					if tErr != nil {
 						err = errors.New("获取季节性图表数据失败,Err:" + tErr.Error())
 						return
@@ -761,7 +758,7 @@ func getEdbDataMapList(chartInfoId, chartType int, calendar, startDate, endDate
 				}
 
 			} else {
-				quarterDataList, tErr := GetSeasonEdbInfoDataListByXDate(dataList, latestDateStr, seasonExtraConfig)
+				quarterDataList, tErr := GetSeasonEdbInfoDataListByXDate(dataList, latestDate, seasonExtraConfig)
 				if tErr != nil {
 					err = errors.New("获取季节性图表数据失败,Err:" + tErr.Error())
 					return
@@ -780,7 +777,7 @@ func getEdbDataMapList(chartInfoId, chartType int, calendar, startDate, endDate
 }
 
 // GetSeasonEdbInfoDataListByXDate 季节性图的指标数据根据横轴展示
-func GetSeasonEdbInfoDataListByXDate(dataList []*data_manage.EdbDataList, latestDateStr string, seasonExtraConfig string) (quarterDataListSort data_manage.QuarterDataList, err error) {
+func GetSeasonEdbInfoDataListByXDate(dataList []*data_manage.EdbDataList, latestDate time.Time, seasonExtraConfig string) (quarterDataListSort data_manage.QuarterDataList, err error) {
 	xStartDate := "01-01"
 	xEndDate := "12-31"
 	jumpYear := 0
@@ -810,6 +807,8 @@ func GetSeasonEdbInfoDataListByXDate(dataList []*data_manage.EdbDataList, latest
 			legendMap[v.Name] = v.Value
 		}
 	}
+	latestDateStr := latestDate.Format(utils.FormatDate)
+
 	//判断横轴的两个时间之间是不是跨年了,如果跨年了,则横轴截止年份比起始年份+1,如果不跨年,截止年份等于起始年份
 	//根据数据确定最早的年份,和最近年份
 	//根据横轴的日期,汇总所有的年份
@@ -920,7 +919,6 @@ func GetSeasonEdbInfoDataListByXDate(dataList []*data_manage.EdbDataList, latest
 			}
 		}
 	}
-	latestDate, _ := time.Parse(utils.FormatDate, latestDateStr)
 	for k, v := range dataMap {
 		itemList := quarterMap[k]
 		quarterItem := new(data_manage.QuarterData)
@@ -942,7 +940,6 @@ func GetSeasonEdbInfoDataListByXDate(dataList []*data_manage.EdbDataList, latest
 		quarterDataList = append(quarterDataList, quarterItem)
 	}
 
-	// todo 处理图例名称
 	if len(quarterDataList) > 0 {
 		quarterDataListSort = quarterDataList
 		sort.Sort(quarterDataListSort)
@@ -951,7 +948,7 @@ func GetSeasonEdbInfoDataListByXDate(dataList []*data_manage.EdbDataList, latest
 }
 
 // GetSeasonEdbInfoDataListByXDateNong 季节性图的指标数据根据横轴选择农历时展示
-func GetSeasonEdbInfoDataListByXDateNong(result *data_manage.EdbDataResult, latestDateStr string, 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, err error) {
 	xStartDate := "01-01"
 	xEndDate := "12-31"
 	jumpYear := 0
@@ -981,6 +978,7 @@ func GetSeasonEdbInfoDataListByXDateNong(result *data_manage.EdbDataResult, late
 			legendMap[v.Name] = v.Value
 		}
 	}
+	latestDateYear := latestDate.Year()
 	//判断横轴的两个时间之间是不是跨年了,如果跨年了,则横轴截止年份比起始年份+1,如果不跨年,截止年份等于起始年份
 	//根据数据确定最早的年份,和最近年份
 	//根据横轴的日期,汇总所有的年份
@@ -1086,7 +1084,6 @@ func GetSeasonEdbInfoDataListByXDateNong(result *data_manage.EdbDataResult, late
 
 		for _, item := range lv.Items {
 			dataTimeT, _ := time.Parse(utils.FormatDate, item.DataTime)
-			//查出当前年份里最大的数据的年份,和第二大的年份
 			if (startTmpT.Before(dataTimeT) && endTmpT.After(dataTimeT)) || startTmpT == dataTimeT || endTmpT == dataTimeT {
 				if findVal, ok := quarterMap[name]; !ok {
 					findVal = append(findVal, item)
@@ -1095,18 +1092,20 @@ func GetSeasonEdbInfoDataListByXDateNong(result *data_manage.EdbDataResult, late
 					findVal = append(findVal, item)
 					quarterMap[name] = findVal
 				}
-				// todo 统计截止日
-				if lv.Year == endYear && item.DataTime == latestDateStr {
-					if dv, ok1 := dataMap[name]; ok1 {
-						dv.CuttingDataTimestamp = item.DataTimestamp
-						dataMap[name] = dv
+
+				if lv.Year >= latestDateYear {
+					// 切割的日期时间字符串
+					cuttingDataTimeStr := latestDate.AddDate(0, 0, lv.BetweenDay).Format(utils.FormatDate)
+					if item.DataTime == cuttingDataTimeStr {
+						if dv, ok1 := dataMap[name]; ok1 {
+							dv.CuttingDataTimestamp = item.DataTimestamp
+							dataMap[name] = dv
+						}
 					}
 				}
 			}
 		}
 	}
-
-	latestDate, _ := time.Parse(utils.FormatDate, latestDateStr)
 	for k, v := range dataMap {
 		itemList := quarterMap[k]
 		quarterItem := new(data_manage.QuarterData)
@@ -1118,13 +1117,6 @@ func GetSeasonEdbInfoDataListByXDateNong(result *data_manage.EdbDataResult, late
 		quarterItem.DataList = itemList
 		quarterItem.CuttingDataTimestamp = v.CuttingDataTimestamp
 
-		//如果等于最后的实际日期,那么将切割时间戳记录
-		if quarterItem.CuttingDataTimestamp == 0 {
-			//如果大于最后的实际日期,那么第一个点就是切割的时间戳
-			if latestDate.Before(v.StartDate) && len(itemList) > 0 {
-				quarterItem.CuttingDataTimestamp = itemList[0].DataTimestamp - 100
-			}
-		}
 		quarterDataList = append(quarterDataList, quarterItem)
 	}