|
@@ -114,6 +114,7 @@ func GetChartEdbData(chartInfoId int, startDate, endDate string, baseEdbInfoMapp
|
|
|
// 寻找主力合约
|
|
|
zlFutureGoodEdbInfo, err = future_good2.GetFutureGoodEdbInfo(futureGoodEdbInfoMapping.EdbInfoId)
|
|
|
if err != nil {
|
|
|
+ err = fmt.Errorf("查不到期货指标,GetFutureGoodEdbInfo err: %v", err)
|
|
|
return
|
|
|
}
|
|
|
regionType = zlFutureGoodEdbInfo.RegionType
|
|
@@ -123,7 +124,7 @@ func GetChartEdbData(chartInfoId int, startDate, endDate string, baseEdbInfoMapp
|
|
|
if zlFutureGoodEdbInfo.DateSourceId != zlFutureGoodEdbInfo.FutureGoodEdbInfoId {
|
|
|
sourceDateFutureGoodEdbInfo, tmpErr := future_good2.GetFutureGoodEdbInfo(zlFutureGoodEdbInfo.DateSourceId)
|
|
|
if tmpErr != nil {
|
|
|
- err = tmpErr
|
|
|
+ err = fmt.Errorf("获取期货指标 %d 的日期来源的指标信息失败,错误:%s", zlFutureGoodEdbInfo.DateSourceId, tmpErr.Error())
|
|
|
return
|
|
|
}
|
|
|
latestDate = sourceDateFutureGoodEdbInfo.EndDate // 最新日期是这个
|
|
@@ -145,6 +146,7 @@ func GetChartEdbData(chartInfoId int, startDate, endDate string, baseEdbInfoMapp
|
|
|
latestDateTime, _ := time.ParseInLocation(utils.FormatDate, latestDate, time.Local)
|
|
|
_, futureGoodEdbInfoList, err := getFutureGoodEdbInfoList(latestDateTime, tmpFutureGoodEdbInfoList, barChartInfoDateList)
|
|
|
if err != nil {
|
|
|
+ err = fmt.Errorf("获取期货指标列表失败,getFutureGoodEdbInfoList 错误:%s", err.Error())
|
|
|
return
|
|
|
}
|
|
|
|
|
@@ -158,7 +160,7 @@ func GetChartEdbData(chartInfoId int, startDate, endDate string, baseEdbInfoMapp
|
|
|
EdbName: v.FutureGoodEdbName,
|
|
|
EdbAliasName: v.FutureGoodEdbName,
|
|
|
EdbNameEn: v.FutureGoodEdbNameEn,
|
|
|
- EdbType: baseEdbInfoMapping.EdbType, //todo baseEdbInfoMapping
|
|
|
+ EdbType: baseEdbInfoMapping.EdbType,
|
|
|
Frequency: baseEdbInfoMapping.Frequency,
|
|
|
FrequencyEn: baseEdbInfoMapping.FrequencyEn,
|
|
|
Unit: baseEdbInfoMapping.Unit,
|
|
@@ -298,8 +300,9 @@ func GetChartEdbData(chartInfoId int, startDate, endDate string, baseEdbInfoMapp
|
|
|
dataList := make([]*data_manage.EdbDataList, 0)
|
|
|
tmpDataList, ok := tmpDataListMap[v.EdbInfoId]
|
|
|
if !ok {
|
|
|
- err = fmt.Errorf("期货数据不存在 FutureGoodEdbInfoId: %d", v.EdbInfoId)
|
|
|
- return
|
|
|
+ /*err = fmt.Errorf("期货数据不存在 FutureGoodEdbInfoId: %d", v.EdbInfoId)
|
|
|
+ return*/
|
|
|
+ continue
|
|
|
}
|
|
|
for _, tmpData := range tmpDataList {
|
|
|
dataList = append(dataList, &data_manage.EdbDataList{
|
|
@@ -388,8 +391,8 @@ func GetChartEdbData(chartInfoId int, startDate, endDate string, baseEdbInfoMapp
|
|
|
|
|
|
for i := lenEdbId - 1; i >= 0; i-- {
|
|
|
// 如果没有在无数据的指标列表中找到,那么就找到了最大x轴的下标
|
|
|
- if _, ok := noDataEdbIdMap[edbInfoIdList[i]]; !ok || utils.InArrayByInt(baseEdbIds, edbInfoIdList[i]) {
|
|
|
- // 如果最大x轴的下标 小于 当前下标,那么就重新赋值
|
|
|
+ if _, ok := noDataEdbIdMap[edbInfoIdList[i]]; !ok || utils.InArrayByInt(baseEdbIds, edbInfoIdList[i]) { //以往的逻辑是碰到第一个无数据的期货指标,那后续的月份都是无数据的,因此需要特殊处理,改成多个现货指标之后需要排除无值的现货指标
|
|
|
+ // 如果最大x轴的下标 小于 当前下标,那么就重新赋值,
|
|
|
if maxIndex < i-1 {
|
|
|
maxIndex = i - 1
|
|
|
}
|
|
@@ -457,8 +460,7 @@ func BarChartData(baseEdbInfoMapping *data_manage.ChartEdbInfoMapping, edbInfoMa
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // 期货指标数据map
|
|
|
- futureGoodEdbDataMap := make(map[int]map[string]float64)
|
|
|
+ edbDataMap := make(map[int]map[string]float64)
|
|
|
for edbInfoId, edbDataList := range edbDataListMap {
|
|
|
if _, ok := edbInfoMappingMap[edbInfoId]; ok {
|
|
|
continue
|
|
@@ -467,7 +469,7 @@ func BarChartData(baseEdbInfoMapping *data_manage.ChartEdbInfoMapping, edbInfoMa
|
|
|
for _, edbData := range edbDataList {
|
|
|
edbDateData[edbData.DataTime] = edbData.Value
|
|
|
}
|
|
|
- futureGoodEdbDataMap[edbInfoId] = edbDateData
|
|
|
+ edbDataMap[edbInfoId] = edbDateData
|
|
|
}
|
|
|
|
|
|
// edbIdList 指标展示顺序;x轴的指标顺序
|
|
@@ -518,7 +520,7 @@ func BarChartData(baseEdbInfoMapping *data_manage.ChartEdbInfoMapping, edbInfoMa
|
|
|
|
|
|
// 先找到基准日期
|
|
|
var realDateTime time.Time
|
|
|
- realDateTime, findDataValue, isFind, tmpErr := GetNeedDateData(findDateTime, edbDataListMap[baseEdbInfoMapping.EdbInfoId], baseEdbDataMap[baseEdbInfoMapping.EdbInfoId], futureGoodEdbDataMap)
|
|
|
+ realDateTime, findDataValue, isFind, tmpErr := GetNeedDateData(findDateTime, edbDataListMap[baseEdbInfoMapping.EdbInfoId], baseEdbDataMap[baseEdbInfoMapping.EdbInfoId], edbDataMap)
|
|
|
if tmpErr != nil {
|
|
|
err = tmpErr
|
|
|
return
|
|
@@ -590,7 +592,7 @@ func BarChartData(baseEdbInfoMapping *data_manage.ChartEdbInfoMapping, edbInfoMa
|
|
|
//}
|
|
|
//tmpRealDateTime := findDateTime // 按照配置找到的日期
|
|
|
tmpRealDateTime := realDateTime // 实际现货的日期
|
|
|
- tmpFindDataValue, tmpIsFind := futureGoodEdbDataMap[futureGoodMapping.FutureGoodEdbInfoId][tmpRealDateTime.Format(utils.FormatDate)]
|
|
|
+ tmpFindDataValue, tmpIsFind := edbDataMap[futureGoodMapping.FutureGoodEdbInfoId][tmpRealDateTime.Format(utils.FormatDate)]
|
|
|
yDataMap[futureGoodMapping.FutureGoodEdbInfoId] = tmpFindDataValue
|
|
|
|
|
|
findDataList = append(findDataList, tmpFindDataValue)
|
|
@@ -680,7 +682,6 @@ func handleResultData(regionType string, futureGoodEdbType, baseEdbLen int, yDat
|
|
|
if i > maxIndex {
|
|
|
break
|
|
|
}
|
|
|
- // todo x轴 内容调整
|
|
|
xDataList = append(xDataList, data_manage.XData{
|
|
|
Name: fmt.Sprint("M+", i),
|
|
|
NameEn: fmt.Sprint("M+", i),
|