|
@@ -23,7 +23,6 @@ import (
|
|
|
func GetChartEdbData(chartInfoId int, startDate, endDate string, baseEdbInfoMapping *chartEdbMappingModel.ChartEdbInfoMapping, edbInfoMappingList []*chartEdbMappingModel.ChartEdbInfoMappingList, futureGoodEdbInfoMapping *chartEdbMappingModel.ChartEdbInfoMappingList, barChartInfoConf request.FutureGoodBarChartInfoReq, needData bool) (barConfigEdbInfoIdList []request.BarChartInfoEdbItemReq, edbList []*chartEdbMappingModel.ChartEdbInfoMappingList, xEdbIdValue []int, xDataList []request.XData, yDataList []chart_info.YData, sourceArr []string, err error) {
|
|
|
edbList = make([]*chartEdbMappingModel.ChartEdbInfoMappingList, 0)
|
|
|
barChartInfoDateList := barChartInfoConf.DateList
|
|
|
- baseEdbInfoId := barChartInfoConf.BaseEdbInfoId
|
|
|
if futureGoodEdbInfoMapping == nil {
|
|
|
err = errors.New("商品指标未选取")
|
|
|
return
|
|
@@ -287,12 +286,32 @@ func GetChartEdbData(chartInfoId int, startDate, endDate string, baseEdbInfoMapp
|
|
|
//item.DataList = dataList
|
|
|
}
|
|
|
|
|
|
+ futureEdbInfoIds := make([]int, 0)
|
|
|
+ for _, v := range futureGoodMappingList {
|
|
|
+ futureEdbInfoIds = append(futureEdbInfoIds, v.EdbInfoId)
|
|
|
+ }
|
|
|
+ tmpDataListMap := make(map[int][]*future_good_edb_data.FutureGoodEdbData)
|
|
|
+ if len(futureEdbInfoIds) > 0 {
|
|
|
+ // 期货数据
|
|
|
+ tmpDataList, tmpErr := future_good_edb_data.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_good_edb_data.FutureGoodEdbData, 0)
|
|
|
+ }
|
|
|
+ tmpDataListMap[v.FutureGoodEdbInfoID] = append(tmpDataListMap[v.FutureGoodEdbInfoID], v)
|
|
|
+ }
|
|
|
+ }
|
|
|
// 期货数据
|
|
|
for _, v := range futureGoodMappingList {
|
|
|
dataList := make([]*edbDataModel.EdbDataList, 0)
|
|
|
-
|
|
|
- tmpDataList, tmpErr := future_good_edb_data.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 {
|
|
@@ -356,13 +375,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
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -534,19 +553,10 @@ func BarChartData(baseEdbInfoMapping *chartEdbMappingModel.ChartEdbInfoMapping,
|
|
|
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
|
|
|
}
|