|
@@ -19,7 +19,6 @@ import (
|
|
|
func GetChartEdbData(chartInfoId int, startDate, endDate string, baseEdbInfoMapping *models.ChartEdbInfoMapping, edbInfoMappingList []*models.ChartEdbInfoMapping, futureGoodEdbInfoMapping *models.ChartEdbInfoMapping, barChartInfoConf data_manage.FutureGoodBarChartInfoReq, needData bool) (barConfigEdbInfoIdList []data_manage.BarChartInfoEdbItemReq, edbList []*models.ChartEdbInfoMapping, xEdbIdValue []int, xDataList []data_manage.XData, yDataList []models.YData, err error) {
|
|
|
edbList = make([]*models.ChartEdbInfoMapping, 0)
|
|
|
barChartInfoDateList := barChartInfoConf.DateList
|
|
|
- baseEdbInfoId := barChartInfoConf.BaseEdbInfoId
|
|
|
if futureGoodEdbInfoMapping == nil {
|
|
|
err = errors.New("商品指标未选取")
|
|
|
return
|
|
@@ -275,13 +274,32 @@ func GetChartEdbData(chartInfoId int, startDate, endDate string, baseEdbInfoMapp
|
|
|
// todo item
|
|
|
//item.DataList = dataList
|
|
|
}
|
|
|
+ futureEdbInfoIds := make([]int, 0)
|
|
|
+ for _, v := range futureGoodMappingList {
|
|
|
+ futureEdbInfoIds = append(futureEdbInfoIds, v.EdbInfoId)
|
|
|
+ }
|
|
|
+ tmpDataListMap := make(map[int][]*future_good2.FutureGoodEdbData)
|
|
|
+ if len(futureEdbInfoIds) > 0 {
|
|
|
+ // 期货数据
|
|
|
+ tmpDataList, tmpErr := future_good2.GetFutureGoodEdbDataListByIdsAndDate(futureEdbInfoIds, startDate, endDate)
|
|
|
+ if tmpErr != nil {
|
|
|
+ err = tmpErr
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ for _, v := range tmpDataList {
|
|
|
+ if _, ok := tmpDataListMap[v.FutureGoodEdbInfoId]; !ok {
|
|
|
+ tmpDataListMap[v.FutureGoodEdbInfoId] = make([]*future_good2.FutureGoodEdbData, 0)
|
|
|
+ }
|
|
|
+ tmpDataListMap[v.FutureGoodEdbInfoId] = append(tmpDataListMap[v.FutureGoodEdbInfoId], v)
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- // 期货数据
|
|
|
for _, v := range futureGoodMappingList {
|
|
|
dataList := make([]*models.EdbDataList, 0)
|
|
|
-
|
|
|
- tmpDataList, tmpErr := future_good2.GetFutureGoodEdbDataListByDate(v.EdbInfoId, startDate, endDate)
|
|
|
- if tmpErr != nil {
|
|
|
+ tmpDataList, ok := tmpDataListMap[v.EdbInfoId]
|
|
|
+ if !ok {
|
|
|
+ err = fmt.Errorf("期货数据不存在 FutureGoodEdbInfoId: %d", v.EdbInfoId)
|
|
|
return
|
|
|
}
|
|
|
for _, tmpData := range tmpDataList {
|
|
@@ -340,13 +358,13 @@ func GetChartEdbData(chartInfoId int, startDate, endDate string, baseEdbInfoMapp
|
|
|
}
|
|
|
|
|
|
// 基础指标
|
|
|
- {
|
|
|
- edbInfoIdList = append(edbInfoIdList, baseEdbInfoId)
|
|
|
- tmpVal, ok := yDataMap[baseEdbInfoId]
|
|
|
+ for _, tmp := range edbInfoMappingList {
|
|
|
+ edbInfoIdList = append(edbInfoIdList, tmp.EdbInfoId)
|
|
|
+ tmpVal, ok := yDataMap[tmp.EdbInfoId]
|
|
|
valueList = append(valueList, tmpVal)
|
|
|
if !ok || tmpVal == 0 {
|
|
|
- noDataEdbInfoIdList = append(noDataEdbInfoIdList, baseEdbInfoId)
|
|
|
- noDataEdbIdMap[baseEdbInfoId] = baseEdbInfoId
|
|
|
+ noDataEdbInfoIdList = append(noDataEdbInfoIdList, tmp.EdbInfoId)
|
|
|
+ noDataEdbIdMap[tmp.EdbInfoId] = tmp.EdbInfoId
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -407,7 +425,6 @@ func GetChartEdbData(chartInfoId int, startDate, endDate string, baseEdbInfoMapp
|
|
|
}
|
|
|
baseEdbLen := len(edbInfoMappingList)
|
|
|
tmpXDataList, newYDataList, err := handleResultData(regionType, futureGoodEdbType, baseEdbLen, yDataList, futureGoodEdbInfoList, maxIndex)
|
|
|
-
|
|
|
if err != nil {
|
|
|
return
|
|
|
}
|
|
@@ -519,19 +536,10 @@ func BarChartData(baseEdbInfoMapping *models.ChartEdbInfoMapping, edbInfoMapping
|
|
|
xEdbInfoIdList = append(xEdbInfoIdList, v.EdbInfoId)
|
|
|
continue
|
|
|
}
|
|
|
- tmpRealDateTime, findDataValueTmp, isFindTmp, e := GetNeedDateData(realDateTime, edbDataListMap[v.EdbInfoId], baseEdbDataMap[v.EdbInfoId], futureGoodEdbDataMap)
|
|
|
- if e != nil {
|
|
|
- err = e
|
|
|
- return
|
|
|
- }
|
|
|
+ findDataValueTmp, isFindTmp := baseEdbDataMap[v.EdbInfoId][realDateTime.Format(utils.FormatDate)]
|
|
|
findDataList = append(findDataList, findDataValueTmp)
|
|
|
- yDataMap[v.EdbInfoId] = findDataValue
|
|
|
- if isFindTmp {
|
|
|
- // todo 是否需要变更 maxDate
|
|
|
- if maxDate.IsZero() || maxDate.Before(tmpRealDateTime) {
|
|
|
- maxDate = tmpRealDateTime
|
|
|
- }
|
|
|
- } else {
|
|
|
+ yDataMap[v.EdbInfoId] = findDataValueTmp
|
|
|
+ if !isFindTmp {
|
|
|
noDataIdList = append(noDataIdList, v.EdbInfoId)
|
|
|
noDataIdMap[v.EdbInfoId] = v.EdbInfoId
|
|
|
}
|
|
@@ -777,7 +785,7 @@ func handleResultData(regionType string, futureGoodEdbType, baseEdbLen int, yDat
|
|
|
currYear := findDateTime.Year() // 当前年份
|
|
|
//v.XEdbInfoIdList
|
|
|
for edbInfoIndex, edbInfoId := range v.XEdbInfoIdList {
|
|
|
- // 第一个不处理
|
|
|
+ // 现货指标不处理
|
|
|
if edbInfoIndex <= baseEdbLen-1 {
|
|
|
continue
|
|
|
}
|