Przeglądaj źródła

农历图例,多出的新的一年的节点

xyxie 1 rok temu
rodzic
commit
8c53b10b0f
1 zmienionych plików z 81 dodań i 15 usunięć
  1. 81 15
      services/data/chart_info.go

+ 81 - 15
services/data/chart_info.go

@@ -910,7 +910,7 @@ func GetSeasonEdbInfoDataListByXDate(dataList []*data_manage.EdbDataList, latest
 				}
 
 				if v.DataTime == latestDateStr {
-					dateItem.CuttingDataTimestamp = v.DataTimestamp
+					dateItem.CuttingDataTimestamp = timestamp
 					dataMap[k] = dateItem
 				}
 				//break
@@ -995,6 +995,7 @@ func GetSeasonEdbInfoDataListByXDateNong(result *data_manage.EdbDataResult, late
 		return
 	}
 	endYear := lastDateT.Year()
+	nowYear := time.Now().Year()
 	dataMap := make(map[string]data_manage.QuarterXDateItem, 0)
 
 	quarterDataList := make([]*data_manage.QuarterData, 0)
@@ -1026,6 +1027,10 @@ func GetSeasonEdbInfoDataListByXDateNong(result *data_manage.EdbDataResult, late
 			//如果最新的日期在起始日之前,则跳出循环
 			break
 		}
+		if endT.Year() > nowYear {
+			//如果最新的日期比真实年份要大,则数据全部按照最大的年份补齐
+			nowYear = endT.Year()
+		}
 		item := data_manage.QuarterXDateItem{
 			StartDate:   startT,
 			EndDate:     endT,
@@ -1062,26 +1067,87 @@ func GetSeasonEdbInfoDataListByXDateNong(result *data_manage.EdbDataResult, late
 
 	for name, dateItem := range dataMap {
 		lv, ok1 := yearDataListMap[dateItem.EndDate.Year()]
+		if dateItem.EndDate.Year() > maxY {
+			lv, ok1 = yearDataListMap[dateItem.StartDate.Year()]
+		}
 		if !ok1 {
 			continue
 		}
-
 		for _, item := range lv.Items {
+			tmpVal := data_manage.EdbDataList{
+				EdbDataId:     item.EdbDataId,
+				EdbInfoId:     item.EdbInfoId,
+				DataTime:      item.DataTime,
+				DataTimestamp: item.DataTimestamp,
+				Value:         item.Value,
+			}
 			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)
-					quarterMap[name] = findVal
-				} else {
-					findVal = append(findVal, item)
-					quarterMap[name] = findVal
+			year := dataTimeT.Year()
+			newItemDate := dataTimeT.AddDate(nowYear-year, 0, 0)
+			if dateItem.EndDate.Year() > maxY {
+				if (dateItem.StartDate.Before(dataTimeT) && dateItem.EndDate.After(dataTimeT)) || dateItem.StartDate == dataTimeT || dateItem.EndDate == dataTimeT {
+					if jumpYear == 1 {
+						//计算前一年最大的日期, 只补齐数据到去年
+						beforeYearMaxDate := fmt.Sprintf("%d-12-31", dateItem.StartDate.Year())
+						beforeYearMaxDateT, _ := time.Parse(utils.FormatDate, beforeYearMaxDate)
+						if dataTimeT.Before(beforeYearMaxDateT) || dataTimeT == beforeYearMaxDateT {
+							newItemDate = dataTimeT.AddDate(nowYear-year-1, 0, 0)
+						} else {
+							newItemDate = dataTimeT.AddDate(nowYear-year, 0, 0)
+						}
+					} else {
+						newItemDate = dataTimeT.AddDate(nowYear-year, 0, 0)
+					}
+					timestamp := newItemDate.UnixNano() / 1e6
+					tmpVal.DataTimestamp = timestamp
+					tmpV := &tmpVal
+					if findVal, ok := quarterMap[name]; !ok {
+						findVal = append(findVal, tmpV)
+						quarterMap[name] = findVal
+					} else {
+						findVal = append(findVal, tmpV)
+						quarterMap[name] = findVal
+					}
+					if lv.Year >= latestDateYear {
+						// 切割的日期时间字符串
+						cuttingDataTimeStr := latestDate.AddDate(0, 0, lv.BetweenDay).Format(utils.FormatDate)
+						if item.DataTime == cuttingDataTimeStr {
+							dateItem.CuttingDataTimestamp = timestamp
+							dataMap[name] = dateItem
+						}
+					}
 				}
-				if lv.Year >= latestDateYear {
-					// 切割的日期时间字符串
-					cuttingDataTimeStr := latestDate.AddDate(0, 0, lv.BetweenDay).Format(utils.FormatDate)
-					if item.DataTime == cuttingDataTimeStr {
-						dateItem.CuttingDataTimestamp = item.DataTimestamp
-						dataMap[name] = dateItem
+			} else {
+				if (startTmpT.Before(dataTimeT) && endTmpT.After(dataTimeT)) || startTmpT == dataTimeT || endTmpT == dataTimeT {
+					if jumpYear == 1 {
+						//计算前一年最大的日期, 只补齐数据到去年
+						beforeYearMaxDate := fmt.Sprintf("%d-12-31", startTmpT.Year())
+						beforeYearMaxDateT, _ := time.Parse(utils.FormatDate, beforeYearMaxDate)
+						if dataTimeT.Before(beforeYearMaxDateT) || dataTimeT == beforeYearMaxDateT {
+							newItemDate = dataTimeT.AddDate(nowYear-year-1, 0, 0)
+						} else {
+							newItemDate = dataTimeT.AddDate(nowYear-year, 0, 0)
+						}
+					} else {
+						newItemDate = dataTimeT.AddDate(nowYear-year, 0, 0)
+					}
+					timestamp := newItemDate.UnixNano() / 1e6
+					tmpVal.DataTimestamp = timestamp
+					tmpV := &tmpVal
+					if findVal, ok := quarterMap[name]; !ok {
+						findVal = append(findVal, tmpV)
+						quarterMap[name] = findVal
+					} else {
+						findVal = append(findVal, tmpV)
+						quarterMap[name] = findVal
+					}
+					if lv.Year >= latestDateYear {
+						// 切割的日期时间字符串
+						cuttingDataTimeStr := latestDate.AddDate(0, 0, lv.BetweenDay).Format(utils.FormatDate)
+						if item.DataTime == cuttingDataTimeStr {
+							dateItem.CuttingDataTimestamp = timestamp
+							dataMap[name] = dateItem
+						}
 					}
 				}
 			}