|
@@ -290,7 +290,11 @@ func getEdbDataMapList(chartInfoId, chartType int, calendar, startDate, endDate
|
|
|
}
|
|
|
|
|
|
if chartType == 2 {
|
|
|
- latestDateStr := v.LatestDate
|
|
|
+ latestDate, tmpErr := time.Parse(utils.FormatDate, v.LatestDate)
|
|
|
+ if tmpErr != nil {
|
|
|
+ err = errors.New(fmt.Sprint("获取最后实际数据的日期失败,Err:" + tmpErr.Error() + ";LatestDate:" + v.LatestDate))
|
|
|
+ return
|
|
|
+ }
|
|
|
if calendar == "农历" {
|
|
|
if len(dataList) <= 0 {
|
|
|
result := new(models.EdbDataResult)
|
|
@@ -302,7 +306,7 @@ func getEdbDataMapList(chartInfoId, chartType int, calendar, startDate, endDate
|
|
|
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
|
|
@@ -311,7 +315,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
|
|
@@ -330,7 +334,7 @@ func getEdbDataMapList(chartInfoId, chartType int, calendar, startDate, endDate
|
|
|
}
|
|
|
|
|
|
|
|
|
-func GetSeasonEdbInfoDataListByXDate(dataList []*models.EdbDataList, latestDateStr string, seasonExtraConfig string) (quarterDataListSort models.QuarterDataList, err error) {
|
|
|
+func GetSeasonEdbInfoDataListByXDate(dataList []*models.EdbDataList, latestDate time.Time, seasonExtraConfig string) (quarterDataListSort models.QuarterDataList, err error) {
|
|
|
xStartDate := "01-01"
|
|
|
xEndDate := "12-31"
|
|
|
jumpYear := 0
|
|
@@ -354,12 +358,14 @@ func GetSeasonEdbInfoDataListByXDate(dataList []*models.EdbDataList, latestDateS
|
|
|
if length == 0 {
|
|
|
return
|
|
|
}
|
|
|
- legendMap := make(map[string]string)
|
|
|
+ legendMap := make(map[string]string, 0)
|
|
|
if len(legends) > 0 {
|
|
|
for _, v := range legends {
|
|
|
legendMap[v.Name] = v.Value
|
|
|
}
|
|
|
}
|
|
|
+ latestDateStr := latestDate.Format(utils.FormatDate)
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
@@ -370,9 +376,6 @@ func GetSeasonEdbInfoDataListByXDate(dataList []*models.EdbDataList, latestDateS
|
|
|
return
|
|
|
}
|
|
|
startYear := startDateT.Year()
|
|
|
- if jumpYear == 1 {
|
|
|
- startYear = startYear - 1
|
|
|
- }
|
|
|
|
|
|
lastDate := dataList[length-1].DataTime
|
|
|
lastDateT, tmpErr := time.Parse(utils.FormatDate, lastDate)
|
|
@@ -381,10 +384,11 @@ func GetSeasonEdbInfoDataListByXDate(dataList []*models.EdbDataList, latestDateS
|
|
|
return
|
|
|
}
|
|
|
endYear := lastDateT.Year()
|
|
|
- dataMap := make(map[string]models.QuarterXDateItem)
|
|
|
+ nowYear := time.Now().Year()
|
|
|
+ dataMap := make(map[string]models.QuarterXDateItem, 0)
|
|
|
|
|
|
quarterDataList := make([]*models.QuarterData, 0)
|
|
|
- quarterMap := make(map[string][]*models.EdbDataList)
|
|
|
+ quarterMap := make(map[string][]*models.EdbDataList, 0)
|
|
|
|
|
|
|
|
|
leftNameFlag := true
|
|
@@ -414,12 +418,15 @@ func GetSeasonEdbInfoDataListByXDate(dataList []*models.EdbDataList, latestDateS
|
|
|
|
|
|
break
|
|
|
}
|
|
|
-
|
|
|
if startT.Before(lastDateT) && endT.After(lastDateT) {
|
|
|
if endYear > currentStartYear {
|
|
|
leftNameFlag = false
|
|
|
}
|
|
|
}
|
|
|
+ if endT.Year() > nowYear {
|
|
|
+
|
|
|
+ nowYear = endT.Year()
|
|
|
+ }
|
|
|
item := models.QuarterXDateItem{
|
|
|
StartDate: startT,
|
|
|
EndDate: endT,
|
|
@@ -427,7 +434,6 @@ func GetSeasonEdbInfoDataListByXDate(dataList []*models.EdbDataList, latestDateS
|
|
|
}
|
|
|
dataMap[name] = item
|
|
|
}
|
|
|
-
|
|
|
for k, v := range dataMap {
|
|
|
if leftNameFlag {
|
|
|
v.ChartLegend = strconv.Itoa(v.StartDate.Year())
|
|
@@ -437,12 +443,18 @@ func GetSeasonEdbInfoDataListByXDate(dataList []*models.EdbDataList, latestDateS
|
|
|
dataMap[k] = v
|
|
|
}
|
|
|
|
|
|
- nowYear := time.Now().Year()
|
|
|
for _, v := range dataList {
|
|
|
dataTimeT, _ := time.Parse(utils.FormatDate, v.DataTime)
|
|
|
year := dataTimeT.Year()
|
|
|
newItemDate := dataTimeT.AddDate(nowYear-year, 0, 0)
|
|
|
for k, dateItem := range dataMap {
|
|
|
+ tmpVal := models.EdbDataList{
|
|
|
+ EdbDataId: v.EdbDataId,
|
|
|
+ EdbInfoId: v.EdbInfoId,
|
|
|
+ DataTime: v.DataTime,
|
|
|
+ DataTimestamp: v.DataTimestamp,
|
|
|
+ Value: v.Value,
|
|
|
+ }
|
|
|
if (dateItem.StartDate.Before(dataTimeT) && dateItem.EndDate.After(dataTimeT)) || dateItem.StartDate == dataTimeT || dateItem.EndDate == dataTimeT {
|
|
|
if jumpYear == 1 {
|
|
|
|
|
@@ -450,27 +462,31 @@ func GetSeasonEdbInfoDataListByXDate(dataList []*models.EdbDataList, latestDateS
|
|
|
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
|
|
|
- v.DataTimestamp = timestamp
|
|
|
+ tmpVal.DataTimestamp = timestamp
|
|
|
+ tmpV := &tmpVal
|
|
|
if findVal, ok := quarterMap[k]; !ok {
|
|
|
- findVal = append(findVal, v)
|
|
|
+ findVal = append(findVal, tmpV)
|
|
|
quarterMap[k] = findVal
|
|
|
} else {
|
|
|
- findVal = append(findVal, v)
|
|
|
+ findVal = append(findVal, tmpV)
|
|
|
quarterMap[k] = findVal
|
|
|
}
|
|
|
|
|
|
if v.DataTime == latestDateStr {
|
|
|
- dateItem.CuttingDataTimestamp = v.DataTimestamp
|
|
|
+ dateItem.CuttingDataTimestamp = timestamp
|
|
|
dataMap[k] = dateItem
|
|
|
}
|
|
|
- break
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- latestDate, _ := time.Parse(utils.FormatDate, latestDateStr)
|
|
|
for k, v := range dataMap {
|
|
|
itemList := quarterMap[k]
|
|
|
quarterItem := new(models.QuarterData)
|
|
@@ -479,7 +495,6 @@ func GetSeasonEdbInfoDataListByXDate(dataList []*models.EdbDataList, latestDateS
|
|
|
if le, ok := legendMap[v.ShowName]; ok {
|
|
|
quarterItem.ChartLegend = le
|
|
|
}
|
|
|
- quarterItem.Year = quarterItem.ChartLegend
|
|
|
quarterItem.DataList = itemList
|
|
|
quarterItem.CuttingDataTimestamp = v.CuttingDataTimestamp
|
|
|
|
|
@@ -493,7 +508,6 @@ func GetSeasonEdbInfoDataListByXDate(dataList []*models.EdbDataList, latestDateS
|
|
|
quarterDataList = append(quarterDataList, quarterItem)
|
|
|
}
|
|
|
|
|
|
-
|
|
|
if len(quarterDataList) > 0 {
|
|
|
quarterDataListSort = quarterDataList
|
|
|
sort.Sort(quarterDataListSort)
|
|
@@ -502,7 +516,7 @@ func GetSeasonEdbInfoDataListByXDate(dataList []*models.EdbDataList, latestDateS
|
|
|
}
|
|
|
|
|
|
|
|
|
-func GetSeasonEdbInfoDataListByXDateNong(result *models.EdbDataResult, latestDateStr string, seasonExtraConfig string, calendarPreYear int) (quarterDataListSort models.QuarterDataList, err error) {
|
|
|
+func GetSeasonEdbInfoDataListByXDateNong(result *models.EdbDataResult, latestDate time.Time, seasonExtraConfig string, calendarPreYear int) (quarterDataListSort models.QuarterDataList, err error) {
|
|
|
xStartDate := "01-01"
|
|
|
xEndDate := "12-31"
|
|
|
jumpYear := 0
|
|
@@ -526,21 +540,22 @@ func GetSeasonEdbInfoDataListByXDateNong(result *models.EdbDataResult, latestDat
|
|
|
if length == 0 {
|
|
|
return
|
|
|
}
|
|
|
- legendMap := make(map[string]string)
|
|
|
+ legendMap := make(map[string]string, 0)
|
|
|
if len(legends) > 0 {
|
|
|
for _, v := range legends {
|
|
|
legendMap[v.Name] = v.Value
|
|
|
}
|
|
|
}
|
|
|
+ latestDateYear := latestDate.Year()
|
|
|
|
|
|
|
|
|
|
|
|
startYear := result.List[0].Year
|
|
|
- if jumpYear == 1 {
|
|
|
+
|
|
|
if startYear != calendarPreYear {
|
|
|
startYear = startYear - 1
|
|
|
}
|
|
|
- }
|
|
|
+ }*/
|
|
|
itemLength := len(result.List[length-1].Items)
|
|
|
|
|
|
lastDate := result.List[length-1].Items[itemLength-1].DataTime
|
|
@@ -550,11 +565,13 @@ func GetSeasonEdbInfoDataListByXDateNong(result *models.EdbDataResult, latestDat
|
|
|
return
|
|
|
}
|
|
|
endYear := lastDateT.Year()
|
|
|
- dataMap := make(map[string]models.QuarterXDateItem)
|
|
|
+ nowYear := time.Now().Year()
|
|
|
+ dataMap := make(map[string]models.QuarterXDateItem, 0)
|
|
|
|
|
|
quarterDataList := make([]*models.QuarterData, 0)
|
|
|
resultData := make([]*models.QuarterData, 0)
|
|
|
- quarterMap := make(map[string][]*models.EdbDataList)
|
|
|
+ quarterMap := make(map[string][]*models.EdbDataList, 0)
|
|
|
+
|
|
|
|
|
|
leftNameFlag := true
|
|
|
for currentStartYear := startYear; currentStartYear <= endYear; currentStartYear++ {
|
|
@@ -582,12 +599,15 @@ func GetSeasonEdbInfoDataListByXDateNong(result *models.EdbDataResult, latestDat
|
|
|
|
|
|
break
|
|
|
}
|
|
|
-
|
|
|
- if (startT.Before(lastDateT) && endT.After(lastDateT)) || startT == lastDateT || endT == lastDateT {
|
|
|
+ if startT.Before(lastDateT) && endT.After(lastDateT) {
|
|
|
if endYear > currentStartYear {
|
|
|
leftNameFlag = false
|
|
|
}
|
|
|
}
|
|
|
+ if endT.Year() > nowYear {
|
|
|
+
|
|
|
+ nowYear = endT.Year()
|
|
|
+ }
|
|
|
item := models.QuarterXDateItem{
|
|
|
StartDate: startT,
|
|
|
EndDate: endT,
|
|
@@ -604,7 +624,7 @@ func GetSeasonEdbInfoDataListByXDateNong(result *models.EdbDataResult, latestDat
|
|
|
dataMap[k] = v
|
|
|
}
|
|
|
|
|
|
- yearDataListMap := make(map[int]*models.EdbDataItems)
|
|
|
+ yearDataListMap := make(map[int]*models.EdbDataItems, 0)
|
|
|
|
|
|
for _, lv := range result.List {
|
|
|
yearDataListMap[lv.Year] = lv
|
|
@@ -631,33 +651,93 @@ func GetSeasonEdbInfoDataListByXDateNong(result *models.EdbDataResult, latestDat
|
|
|
|
|
|
for name, dateItem := range dataMap {
|
|
|
lv, ok1 := yearDataListMap[dateItem.EndDate.Year()]
|
|
|
+ if dateItem.EndDate.Year() > maxY {
|
|
|
+ lv, ok1 = yearDataListMap[dateItem.StartDate.Year()]
|
|
|
+ }
|
|
|
if !ok1 {
|
|
|
- break
|
|
|
+ continue
|
|
|
}
|
|
|
-
|
|
|
for _, item := range lv.Items {
|
|
|
+ tmpVal := models.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 == endYear && item.DataTime == latestDateStr {
|
|
|
- if dv, ok1 := dataMap[name]; ok1 {
|
|
|
- dv.CuttingDataTimestamp = item.DataTimestamp
|
|
|
- dataMap[name] = dv
|
|
|
+ } 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
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- latestDate, _ := time.Parse(utils.FormatDate, latestDateStr)
|
|
|
+ }
|
|
|
for k, v := range dataMap {
|
|
|
itemList := quarterMap[k]
|
|
|
quarterItem := new(models.QuarterData)
|
|
@@ -666,24 +746,16 @@ func GetSeasonEdbInfoDataListByXDateNong(result *models.EdbDataResult, latestDat
|
|
|
if le, ok := legendMap[v.ShowName]; ok {
|
|
|
quarterItem.ChartLegend = le
|
|
|
}
|
|
|
- quarterItem.Year = quarterItem.ChartLegend
|
|
|
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)
|
|
|
}
|
|
|
|
|
|
- if result.List[0].Year != calendarPreYear || jumpYear == 1 {
|
|
|
+ if result.List[0].Year != calendarPreYear {
|
|
|
itemList := make([]*models.EdbDataList, 0)
|
|
|
items := new(models.QuarterData)
|
|
|
-
|
|
|
+
|
|
|
items.DataList = itemList
|
|
|
|
|
|
newResult := make([]*models.QuarterData, 0)
|