Browse Source

商品价格曲线修改

xyxie 9 months ago
parent
commit
a09db09174
1 changed files with 28 additions and 14 deletions
  1. 28 14
      services/data/future_good/chart_info.go

+ 28 - 14
services/data/future_good/chart_info.go

@@ -296,7 +296,7 @@ func GetChartEdbData(chartInfoId int, startDate, endDate string, baseEdbInfoMapp
 		v.DataList = dataList
 	}
 
-	xEdbIdValue, yDataList, err = BarChartData(baseEdbInfoMapping, edbInfoMappingList, edbList, futureGoodEdbInfoList, edbDataListMap, barChartInfoDateList, regionType, baseEdbInfoMapping.EndDate)
+	xEdbIdValue, yDataList, err = BarChartData(baseEdbInfoMapping, edbInfoMappingList, futureGoodEdbInfoList, edbDataListMap, barChartInfoDateList, regionType, baseEdbInfoMapping.EndDate)
 
 	if len(barChartInfoConf.XDataList) > 0 {
 		xDataList = barChartInfoConf.XDataList
@@ -419,7 +419,7 @@ func GetChartEdbData(chartInfoId int, startDate, endDate string, baseEdbInfoMapp
 }
 
 // BarChartData 获取数据
-func BarChartData(baseEdbInfoMapping *data_manage.ChartEdbInfoMapping, edbInfoMappingList, allEdbInfoMappingList []*data_manage.ChartEdbInfoMapping, futureGoodMappingList []*future_good2.FutureGoodEdbInfo, edbDataListMap map[int][]*data_manage.EdbDataList, barChartInfoDateList []data_manage.BarChartInfoDateReq, regionType, latestDate string) (edbIdList []int, yDataList []data_manage.YData, err error) {
+func BarChartData(baseEdbInfoMapping *data_manage.ChartEdbInfoMapping, edbInfoMappingList []*data_manage.ChartEdbInfoMapping, futureGoodMappingList []*future_good2.FutureGoodEdbInfo, edbDataListMap map[int][]*data_manage.EdbDataList, barChartInfoDateList []data_manage.BarChartInfoDateReq, regionType, latestDate string) (edbIdList []int, yDataList []data_manage.YData, err error) {
 	// 指标数据数组(10086:{"2022-12-02":100.01,"2022-12-01":102.3})
 	// 现货指标数据map
 	baseEdbDataMap := make(map[int]map[string]float64)
@@ -496,23 +496,37 @@ func BarChartData(baseEdbInfoMapping *data_manage.ChartEdbInfoMapping, edbInfoMa
 		noDataIdMap := make(map[int]int, 0) // 没有数据的指标map
 		xEdbInfoIdList := make([]int, 0)    // 当前数据的指标id列表
 
-		// 现货指标
+		// 先找到基准日期
 		var realDateTime time.Time
+		realDateTime, findDataValue, isFind, tmpErr := GetNeedDateData(findDateTime, edbDataListMap[baseEdbInfoMapping.EdbInfoId], baseEdbDataMap[baseEdbInfoMapping.EdbInfoId], futureGoodEdbDataMap)
+		if tmpErr != nil {
+			err = tmpErr
+			return
+		}
+		findDataList = append(findDataList, findDataValue)
+		yDataMap[baseEdbInfoMapping.EdbInfoId] = findDataValue
+		if isFind {
+			maxDate = realDateTime
+		} else {
+			noDataIdList = append(noDataIdList, baseEdbInfoMapping.EdbInfoId)
+			noDataIdMap[baseEdbInfoMapping.EdbInfoId] = baseEdbInfoMapping.EdbInfoId
+		}
+		// 处理其余现货指标
 		for _, v := range edbInfoMappingList {
-			realDateTimeTmp, findDataValue, isFind, tmpErr := GetNeedDateData(findDateTime, edbDataListMap[v.EdbInfoId], baseEdbDataMap[v.EdbInfoId], futureGoodEdbDataMap)
-			if tmpErr != nil {
-				err = tmpErr
+			if v.EdbInfoId == baseEdbInfoMapping.EdbInfoId {
+				continue
+			}
+			tmpRealDateTime, findDataValueTmp, isFindTmp, e := GetNeedDateData(realDateTime, edbDataListMap[v.EdbInfoId], baseEdbDataMap[v.EdbInfoId], futureGoodEdbDataMap)
+			if e != nil {
+				err = e
 				return
 			}
-			findDataList = append(findDataList, findDataValue)
+			findDataList = append(findDataList, findDataValueTmp)
 			yDataMap[v.EdbInfoId] = findDataValue
-			// todo 日期如何确定
-			if v.EdbInfoId == baseEdbInfoMapping.EdbInfoId {
-				realDateTime = realDateTimeTmp
-			}
-			if isFind {
-				if v.EdbInfoId == baseEdbInfoMapping.EdbInfoId {
-					maxDate = realDateTimeTmp
+			if isFindTmp {
+				// todo 是否需要变更 maxDate
+				if maxDate.IsZero() || maxDate.Before(tmpRealDateTime) {
+					maxDate = tmpRealDateTime
 				}
 			} else {
 				noDataIdList = append(noDataIdList, v.EdbInfoId)