|
@@ -15,46 +15,42 @@ import (
|
|
|
)
|
|
|
|
|
|
// GetChartEdbData 获取图表的指标数据
|
|
|
-func GetChartEdbData(chartInfoId int, startDate, endDate string, baseEdbInfoMapping *data_manage.ChartEdbInfoMapping, edbInfoMappingList []*data_manage.ChartEdbInfoMapping, futureGoodEdbInfoMapping *data_manage.ChartEdbInfoMapping, barChartInfoConf data_manage.FutureGoodBarChartInfoReq, needData bool) (barConfigEdbInfoIdList []data_manage.BarChartInfoEdbItemReq, edbList []*data_manage.ChartEdbInfoMapping, xEdbIdValue []int, xDataList []data_manage.XData, yDataList []data_manage.YData, err error) {
|
|
|
+func GetChartEdbData(chartInfoId int, startDate, endDate string, edbInfoMapping, futureGoodEdbInfoMapping *data_manage.ChartEdbInfoMapping, barChartInfoDateList []data_manage.BarChartInfoDateReq, needData bool) (barConfigEdbInfoIdList []data_manage.BarChartInfoEdbItemReq, edbList []*data_manage.ChartEdbInfoMapping, xEdbIdValue []int, xDataList []data_manage.XData, yDataList []data_manage.YData, err error) {
|
|
|
edbList = make([]*data_manage.ChartEdbInfoMapping, 0)
|
|
|
- barChartInfoDateList := barChartInfoConf.DateList
|
|
|
+
|
|
|
if futureGoodEdbInfoMapping == nil {
|
|
|
err = errors.New("商品指标未选取")
|
|
|
return
|
|
|
}
|
|
|
- if len(edbInfoMappingList) == 0 {
|
|
|
+ if edbInfoMapping == nil {
|
|
|
err = errors.New("ETA指标未选取")
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
// 指标对应的所有数据
|
|
|
edbDataListMap := make(map[int][]*data_manage.EdbDataList)
|
|
|
|
|
|
- // todo item
|
|
|
- //item := new(data_manage.ChartEdbInfoMapping)
|
|
|
+ item := new(data_manage.ChartEdbInfoMapping)
|
|
|
+ edbInfoMapping.FrequencyEn = data.GetFrequencyEn(edbInfoMapping.Frequency)
|
|
|
|
|
|
+ if edbInfoMapping.Unit == `无` {
|
|
|
+ edbInfoMapping.Unit = ``
|
|
|
+ }
|
|
|
if futureGoodEdbInfoMapping.Unit == `无` {
|
|
|
futureGoodEdbInfoMapping.Unit = ``
|
|
|
}
|
|
|
|
|
|
if chartInfoId <= 0 {
|
|
|
- for k, edbInfoMapping := range edbInfoMappingList {
|
|
|
- edbInfoMapping.FrequencyEn = data.GetFrequencyEn(edbInfoMapping.Frequency)
|
|
|
- if edbInfoMapping.Unit == `无` {
|
|
|
- edbInfoMapping.Unit = ``
|
|
|
- }
|
|
|
- edbInfoMapping.IsAxis = 1
|
|
|
- edbInfoMapping.LeadValue = 0
|
|
|
- edbInfoMapping.LeadUnit = ""
|
|
|
- edbInfoMapping.ChartEdbMappingId = 0
|
|
|
- edbInfoMapping.ChartInfoId = 0
|
|
|
- edbInfoMapping.IsOrder = false
|
|
|
- edbInfoMapping.EdbInfoType = 1
|
|
|
- edbInfoMapping.ChartStyle = ""
|
|
|
- edbInfoMapping.ChartColor = ""
|
|
|
- edbInfoMapping.ChartWidth = 0
|
|
|
- edbInfoMappingList[k] = edbInfoMapping
|
|
|
- }
|
|
|
+ edbInfoMapping.IsAxis = 1
|
|
|
+ edbInfoMapping.LeadValue = 0
|
|
|
+ edbInfoMapping.LeadUnit = ""
|
|
|
+ edbInfoMapping.ChartEdbMappingId = 0
|
|
|
+ edbInfoMapping.ChartInfoId = 0
|
|
|
+ edbInfoMapping.IsOrder = false
|
|
|
+ edbInfoMapping.EdbInfoType = 1
|
|
|
+ edbInfoMapping.ChartStyle = ""
|
|
|
+ edbInfoMapping.ChartColor = ""
|
|
|
+ edbInfoMapping.ChartWidth = 0
|
|
|
+
|
|
|
futureGoodEdbInfoMapping.IsAxis = 1
|
|
|
futureGoodEdbInfoMapping.LeadValue = 0
|
|
|
futureGoodEdbInfoMapping.LeadUnit = ""
|
|
@@ -66,43 +62,21 @@ func GetChartEdbData(chartInfoId int, startDate, endDate string, baseEdbInfoMapp
|
|
|
futureGoodEdbInfoMapping.ChartColor = ""
|
|
|
futureGoodEdbInfoMapping.ChartWidth = 0
|
|
|
} else {
|
|
|
- for k, edbInfoMapping := range edbInfoMappingList {
|
|
|
- edbInfoMapping.FrequencyEn = data.GetFrequencyEn(edbInfoMapping.Frequency)
|
|
|
- if edbInfoMapping.Unit == `无` {
|
|
|
- edbInfoMapping.Unit = ``
|
|
|
- }
|
|
|
- edbInfoMapping.LeadUnitEn = data.GetLeadUnitEn(edbInfoMapping.LeadUnit)
|
|
|
- edbInfoMappingList[k] = edbInfoMapping
|
|
|
- }
|
|
|
+ edbInfoMapping.LeadUnitEn = data.GetLeadUnitEn(edbInfoMapping.LeadUnit)
|
|
|
futureGoodEdbInfoMapping.LeadUnitEn = data.GetLeadUnitEn(futureGoodEdbInfoMapping.LeadUnit)
|
|
|
}
|
|
|
|
|
|
- //查询横轴配置项
|
|
|
- xDataItemMap := make(map[int]data_manage.XData)
|
|
|
- for k, v := range barChartInfoConf.XDataList {
|
|
|
- xDataItemMap[k] = v
|
|
|
- }
|
|
|
-
|
|
|
// 普通的指标数据
|
|
|
{
|
|
|
- edbList = edbInfoMappingList
|
|
|
-
|
|
|
- for k, edbInfoMapping := range edbInfoMappingList {
|
|
|
- tmp := data_manage.BarChartInfoEdbItemReq{
|
|
|
- EdbInfoId: edbInfoMapping.EdbInfoId,
|
|
|
- Name: edbInfoMapping.EdbName,
|
|
|
- NameEn: edbInfoMapping.EdbNameEn,
|
|
|
- Source: edbInfoMapping.Source,
|
|
|
- }
|
|
|
- // 如果有配置,则用配置中的指标名称替换
|
|
|
- xItem, ok := xDataItemMap[k]
|
|
|
- if ok && xItem.Name != "" {
|
|
|
- tmp.Name = xItem.Name
|
|
|
- tmp.NameEn = xItem.NameEn
|
|
|
- tmp.IsHide = xItem.IsHide
|
|
|
- }
|
|
|
- barConfigEdbInfoIdList = append(barConfigEdbInfoIdList, tmp)
|
|
|
- }
|
|
|
+ edbList = append(edbList, edbInfoMapping)
|
|
|
+
|
|
|
+ barConfigEdbInfoIdList = append(barConfigEdbInfoIdList, data_manage.BarChartInfoEdbItemReq{
|
|
|
+ EdbInfoId: edbInfoMapping.EdbInfoId,
|
|
|
+ //Name: edbInfoMapping.EdbName,
|
|
|
+ Name: "现货价",
|
|
|
+ NameEn: "Spot Price",
|
|
|
+ Source: edbInfoMapping.Source,
|
|
|
+ })
|
|
|
}
|
|
|
|
|
|
// 获取主力合约和最新日期
|
|
@@ -158,30 +132,30 @@ func GetChartEdbData(chartInfoId int, startDate, endDate string, baseEdbInfoMapp
|
|
|
EdbName: v.FutureGoodEdbName,
|
|
|
EdbAliasName: v.FutureGoodEdbName,
|
|
|
EdbNameEn: v.FutureGoodEdbNameEn,
|
|
|
- EdbType: baseEdbInfoMapping.EdbType, //todo baseEdbInfoMapping
|
|
|
- Frequency: baseEdbInfoMapping.Frequency,
|
|
|
- FrequencyEn: baseEdbInfoMapping.FrequencyEn,
|
|
|
- Unit: baseEdbInfoMapping.Unit,
|
|
|
- UnitEn: baseEdbInfoMapping.UnitEn,
|
|
|
+ EdbType: edbInfoMapping.EdbType,
|
|
|
+ Frequency: edbInfoMapping.Frequency,
|
|
|
+ FrequencyEn: edbInfoMapping.FrequencyEn,
|
|
|
+ Unit: edbInfoMapping.Unit,
|
|
|
+ UnitEn: edbInfoMapping.UnitEn,
|
|
|
StartDate: v.StartDate,
|
|
|
EndDate: v.EndDate,
|
|
|
ModifyTime: v.ModifyTime.Format(utils.FormatDateTime),
|
|
|
ChartEdbMappingId: v.FutureGoodEdbInfoId,
|
|
|
- ChartInfoId: baseEdbInfoMapping.ChartInfoId,
|
|
|
+ ChartInfoId: edbInfoMapping.ChartInfoId,
|
|
|
MaxData: v.MaxValue,
|
|
|
MinData: v.MinValue,
|
|
|
- IsOrder: baseEdbInfoMapping.IsOrder,
|
|
|
- IsAxis: baseEdbInfoMapping.IsAxis,
|
|
|
- EdbInfoType: baseEdbInfoMapping.EdbInfoType,
|
|
|
- EdbInfoCategoryType: baseEdbInfoMapping.EdbInfoCategoryType,
|
|
|
- LeadValue: baseEdbInfoMapping.LeadValue,
|
|
|
- LeadUnit: baseEdbInfoMapping.LeadUnit,
|
|
|
- LeadUnitEn: baseEdbInfoMapping.LeadUnitEn,
|
|
|
- ChartStyle: baseEdbInfoMapping.ChartStyle,
|
|
|
- ChartColor: baseEdbInfoMapping.ChartColor,
|
|
|
- PredictChartColor: baseEdbInfoMapping.PredictChartColor,
|
|
|
- ChartWidth: baseEdbInfoMapping.ChartWidth,
|
|
|
- ChartType: baseEdbInfoMapping.ChartType,
|
|
|
+ IsOrder: edbInfoMapping.IsOrder,
|
|
|
+ IsAxis: edbInfoMapping.IsAxis,
|
|
|
+ EdbInfoType: edbInfoMapping.EdbInfoType,
|
|
|
+ EdbInfoCategoryType: edbInfoMapping.EdbInfoCategoryType,
|
|
|
+ LeadValue: edbInfoMapping.LeadValue,
|
|
|
+ LeadUnit: edbInfoMapping.LeadUnit,
|
|
|
+ LeadUnitEn: edbInfoMapping.LeadUnitEn,
|
|
|
+ ChartStyle: edbInfoMapping.ChartStyle,
|
|
|
+ ChartColor: edbInfoMapping.ChartColor,
|
|
|
+ PredictChartColor: edbInfoMapping.PredictChartColor,
|
|
|
+ ChartWidth: edbInfoMapping.ChartWidth,
|
|
|
+ ChartType: edbInfoMapping.ChartType,
|
|
|
LatestDate: v.LatestDate.Format(utils.FormatDateTime),
|
|
|
LatestValue: v.LatestValue,
|
|
|
UniqueCode: futureGoodEdbInfoMapping.UniqueCode + strconv.Itoa(k),
|
|
@@ -192,21 +166,12 @@ func GetChartEdbData(chartInfoId int, startDate, endDate string, baseEdbInfoMapp
|
|
|
}
|
|
|
futureGoodMappingList = append(futureGoodMappingList, newMappingInfo)
|
|
|
|
|
|
- tmp := data_manage.BarChartInfoEdbItemReq{
|
|
|
+ barConfigEdbInfoIdList = append(barConfigEdbInfoIdList, data_manage.BarChartInfoEdbItemReq{
|
|
|
EdbInfoId: newMappingInfo.EdbInfoId,
|
|
|
Name: fmt.Sprint("M+", v.Month),
|
|
|
NameEn: fmt.Sprint("M+", v.Month),
|
|
|
Source: newMappingInfo.Source,
|
|
|
- }
|
|
|
- // 判断如果有配置,需要替换为配置内容
|
|
|
- xItem, ok := xDataItemMap[k]
|
|
|
- if ok && xItem.Name != "" {
|
|
|
- tmp.Name = xItem.Name
|
|
|
- tmp.NameEn = xItem.NameEn
|
|
|
- tmp.IsHide = xItem.IsHide
|
|
|
- }
|
|
|
- barConfigEdbInfoIdList = append(barConfigEdbInfoIdList, tmp)
|
|
|
-
|
|
|
+ })
|
|
|
}
|
|
|
|
|
|
if regionType == `海外` {
|
|
@@ -218,30 +183,30 @@ func GetChartEdbData(chartInfoId int, startDate, endDate string, baseEdbInfoMapp
|
|
|
EdbName: zlFutureGoodEdbInfo.FutureGoodEdbName,
|
|
|
EdbAliasName: zlFutureGoodEdbInfo.FutureGoodEdbName,
|
|
|
EdbNameEn: zlFutureGoodEdbInfo.FutureGoodEdbNameEn,
|
|
|
- EdbType: baseEdbInfoMapping.EdbType,
|
|
|
- Frequency: baseEdbInfoMapping.Frequency,
|
|
|
- FrequencyEn: baseEdbInfoMapping.FrequencyEn,
|
|
|
- Unit: baseEdbInfoMapping.Unit,
|
|
|
- UnitEn: baseEdbInfoMapping.UnitEn,
|
|
|
+ EdbType: edbInfoMapping.EdbType,
|
|
|
+ Frequency: edbInfoMapping.Frequency,
|
|
|
+ FrequencyEn: edbInfoMapping.FrequencyEn,
|
|
|
+ Unit: edbInfoMapping.Unit,
|
|
|
+ UnitEn: edbInfoMapping.UnitEn,
|
|
|
StartDate: zlFutureGoodEdbInfo.StartDate,
|
|
|
EndDate: zlFutureGoodEdbInfo.EndDate,
|
|
|
ModifyTime: zlFutureGoodEdbInfo.ModifyTime.Format(utils.FormatDateTime),
|
|
|
ChartEdbMappingId: zlFutureGoodEdbInfo.FutureGoodEdbInfoId,
|
|
|
- ChartInfoId: baseEdbInfoMapping.ChartInfoId,
|
|
|
+ ChartInfoId: edbInfoMapping.ChartInfoId,
|
|
|
MaxData: zlFutureGoodEdbInfo.MaxValue,
|
|
|
MinData: zlFutureGoodEdbInfo.MinValue,
|
|
|
- IsOrder: baseEdbInfoMapping.IsOrder,
|
|
|
- IsAxis: baseEdbInfoMapping.IsAxis,
|
|
|
- EdbInfoType: baseEdbInfoMapping.EdbInfoType,
|
|
|
- EdbInfoCategoryType: baseEdbInfoMapping.EdbInfoCategoryType,
|
|
|
- LeadValue: baseEdbInfoMapping.LeadValue,
|
|
|
- LeadUnit: baseEdbInfoMapping.LeadUnit,
|
|
|
- LeadUnitEn: baseEdbInfoMapping.LeadUnitEn,
|
|
|
- ChartStyle: baseEdbInfoMapping.ChartStyle,
|
|
|
- ChartColor: baseEdbInfoMapping.ChartColor,
|
|
|
- PredictChartColor: baseEdbInfoMapping.PredictChartColor,
|
|
|
- ChartWidth: baseEdbInfoMapping.ChartWidth,
|
|
|
- ChartType: baseEdbInfoMapping.ChartType,
|
|
|
+ IsOrder: edbInfoMapping.IsOrder,
|
|
|
+ IsAxis: edbInfoMapping.IsAxis,
|
|
|
+ EdbInfoType: edbInfoMapping.EdbInfoType,
|
|
|
+ EdbInfoCategoryType: edbInfoMapping.EdbInfoCategoryType,
|
|
|
+ LeadValue: edbInfoMapping.LeadValue,
|
|
|
+ LeadUnit: edbInfoMapping.LeadUnit,
|
|
|
+ LeadUnitEn: edbInfoMapping.LeadUnitEn,
|
|
|
+ ChartStyle: edbInfoMapping.ChartStyle,
|
|
|
+ ChartColor: edbInfoMapping.ChartColor,
|
|
|
+ PredictChartColor: edbInfoMapping.PredictChartColor,
|
|
|
+ ChartWidth: edbInfoMapping.ChartWidth,
|
|
|
+ ChartType: edbInfoMapping.ChartType,
|
|
|
LatestDate: zlFutureGoodEdbInfo.LatestDate.Format(utils.FormatDateTime),
|
|
|
LatestValue: zlFutureGoodEdbInfo.LatestValue,
|
|
|
UniqueCode: futureGoodEdbInfoMapping.UniqueCode + strconv.Itoa(0),
|
|
@@ -263,42 +228,22 @@ func GetChartEdbData(chartInfoId int, startDate, endDate string, baseEdbInfoMapp
|
|
|
// 获取数据
|
|
|
|
|
|
// 现货数据
|
|
|
- for _, edbInfoMapping := range edbInfoMappingList {
|
|
|
+ {
|
|
|
dataList := make([]*data_manage.EdbDataList, 0)
|
|
|
dataList, err = data_manage.GetEdbDataList(edbInfoMapping.Source, edbInfoMapping.SubSource, edbInfoMapping.EdbInfoId, startDate, endDate)
|
|
|
if err != nil {
|
|
|
return
|
|
|
}
|
|
|
edbDataListMap[edbInfoMapping.EdbInfoId] = dataList
|
|
|
- // 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)
|
|
|
- }
|
|
|
+ item.DataList = dataList
|
|
|
}
|
|
|
|
|
|
+ // 期货数据
|
|
|
for _, v := range futureGoodMappingList {
|
|
|
dataList := make([]*data_manage.EdbDataList, 0)
|
|
|
- tmpDataList, ok := tmpDataListMap[v.EdbInfoId]
|
|
|
- if !ok {
|
|
|
- err = fmt.Errorf("期货数据不存在 FutureGoodEdbInfoId: %d", v.EdbInfoId)
|
|
|
+
|
|
|
+ tmpDataList, tmpErr := future_good2.GetFutureGoodEdbDataListByDate(v.EdbInfoId, startDate, endDate)
|
|
|
+ if tmpErr != nil {
|
|
|
return
|
|
|
}
|
|
|
for _, tmpData := range tmpDataList {
|
|
@@ -314,20 +259,14 @@ func GetChartEdbData(chartInfoId int, startDate, endDate string, baseEdbInfoMapp
|
|
|
v.DataList = dataList
|
|
|
}
|
|
|
|
|
|
- xEdbIdValue, yDataList, err = BarChartData(baseEdbInfoMapping, edbInfoMappingList, futureGoodEdbInfoList, edbDataListMap, barChartInfoDateList, regionType, baseEdbInfoMapping.EndDate)
|
|
|
+ xEdbIdValue, yDataList, err = BarChartData(edbList[0], futureGoodEdbInfoList, edbDataListMap, barChartInfoDateList, regionType, edbInfoMapping.EndDate)
|
|
|
|
|
|
- if len(barChartInfoConf.XDataList) > 0 {
|
|
|
- xDataList = barChartInfoConf.XDataList
|
|
|
- } else {
|
|
|
- for _, v := range edbInfoMappingList {
|
|
|
- xDataList = append(xDataList, data_manage.XData{
|
|
|
- Name: v.EdbName,
|
|
|
- NameEn: v.EdbNameEn,
|
|
|
- IsHide: 0,
|
|
|
- })
|
|
|
- }
|
|
|
+ xDataList = []data_manage.XData{
|
|
|
+ {
|
|
|
+ Name: "现货价",
|
|
|
+ NameEn: "Spot Price",
|
|
|
+ },
|
|
|
}
|
|
|
-
|
|
|
//yDataList =make([]data_manage.YData,0)
|
|
|
//data_manage.YData{
|
|
|
// Date: "",
|
|
@@ -357,15 +296,14 @@ func GetChartEdbData(chartInfoId int, startDate, endDate string, baseEdbInfoMapp
|
|
|
}
|
|
|
|
|
|
// 基础指标
|
|
|
- baseEdbIds := make([]int, 0)
|
|
|
- for _, tmp := range edbInfoMappingList {
|
|
|
- edbInfoIdList = append(edbInfoIdList, tmp.EdbInfoId)
|
|
|
- baseEdbIds = append(baseEdbIds, tmp.EdbInfoId)
|
|
|
- tmpVal, ok := yDataMap[tmp.EdbInfoId]
|
|
|
+ {
|
|
|
+ baseEdbInfId := edbList[0].EdbInfoId
|
|
|
+ edbInfoIdList = append(edbInfoIdList, baseEdbInfId)
|
|
|
+ tmpVal, ok := yDataMap[baseEdbInfId]
|
|
|
valueList = append(valueList, tmpVal)
|
|
|
if !ok || tmpVal == 0 {
|
|
|
- noDataEdbInfoIdList = append(noDataEdbInfoIdList, tmp.EdbInfoId)
|
|
|
- noDataEdbIdMap[tmp.EdbInfoId] = tmp.EdbInfoId
|
|
|
+ noDataEdbInfoIdList = append(noDataEdbInfoIdList, baseEdbInfId)
|
|
|
+ noDataEdbIdMap[baseEdbInfId] = baseEdbInfId
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -388,7 +326,7 @@ 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]) {
|
|
|
+ if _, ok := noDataEdbIdMap[edbInfoIdList[i]]; !ok {
|
|
|
// 如果最大x轴的下标 小于 当前下标,那么就重新赋值
|
|
|
if maxIndex < i-1 {
|
|
|
maxIndex = i - 1
|
|
@@ -424,43 +362,34 @@ func GetChartEdbData(chartInfoId int, startDate, endDate string, baseEdbInfoMapp
|
|
|
yDataList[k].Value = v.Value[0 : maxIndex+1]
|
|
|
}
|
|
|
}
|
|
|
- baseEdbLen := len(edbInfoMappingList)
|
|
|
- tmpXDataList, newYDataList, err := handleResultData(regionType, futureGoodEdbType, baseEdbLen, yDataList, futureGoodEdbInfoList, maxIndex)
|
|
|
+
|
|
|
+ tmpXDataList, newYDataList, err := handleResultData(regionType, futureGoodEdbType, yDataList, futureGoodEdbInfoList, maxIndex)
|
|
|
if err != nil {
|
|
|
return
|
|
|
}
|
|
|
- if len(barChartInfoConf.XDataList) == 0 {
|
|
|
- xDataList = append(xDataList, tmpXDataList...)
|
|
|
- }
|
|
|
-
|
|
|
+ xDataList = append(xDataList, tmpXDataList...)
|
|
|
yDataList = newYDataList
|
|
|
|
|
|
return
|
|
|
}
|
|
|
|
|
|
// BarChartData 获取数据
|
|
|
-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) {
|
|
|
+func BarChartData(edbInfoMapping *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)
|
|
|
- edbInfoMappingMap := make(map[int]struct{})
|
|
|
- for _, v := range edbInfoMappingList {
|
|
|
- edbInfoMappingMap[v.EdbInfoId] = struct{}{}
|
|
|
- }
|
|
|
+ baseEdbDataMap := make(map[string]float64)
|
|
|
for edbInfoId, edbDataList := range edbDataListMap {
|
|
|
- if _, ok1 := edbInfoMappingMap[edbInfoId]; ok1 {
|
|
|
- edbDateData := make(map[string]float64)
|
|
|
+ if edbInfoId == edbInfoMapping.EdbInfoId {
|
|
|
for _, edbData := range edbDataList {
|
|
|
- edbDateData[edbData.DataTime] = edbData.Value
|
|
|
+ baseEdbDataMap[edbData.DataTime] = edbData.Value
|
|
|
}
|
|
|
- baseEdbDataMap[edbInfoId] = edbDateData
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 期货指标数据map
|
|
|
futureGoodEdbDataMap := make(map[int]map[string]float64)
|
|
|
for edbInfoId, edbDataList := range edbDataListMap {
|
|
|
- if _, ok := edbInfoMappingMap[edbInfoId]; ok {
|
|
|
+ if edbInfoId == edbInfoMapping.EdbInfoId {
|
|
|
continue
|
|
|
}
|
|
|
edbDateData := make(map[string]float64)
|
|
@@ -472,10 +401,7 @@ func BarChartData(baseEdbInfoMapping *data_manage.ChartEdbInfoMapping, edbInfoMa
|
|
|
|
|
|
// edbIdList 指标展示顺序;x轴的指标顺序
|
|
|
edbIdList = make([]int, 0)
|
|
|
- for _, v := range edbInfoMappingList {
|
|
|
- edbIdList = append(edbIdList, v.EdbInfoId)
|
|
|
- }
|
|
|
-
|
|
|
+ edbIdList = append(edbIdList, edbInfoMapping.EdbInfoId)
|
|
|
for _, v := range futureGoodMappingList {
|
|
|
edbIdList = append(edbIdList, v.FutureGoodEdbInfoId)
|
|
|
}
|
|
@@ -516,35 +442,19 @@ 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)
|
|
|
+ // 现货指标
|
|
|
+ realDateTime, findDataValue, isFind, tmpErr := GetNeedDateData(findDateTime, edbDataListMap[edbInfoMapping.EdbInfoId], baseEdbDataMap, futureGoodEdbDataMap)
|
|
|
if tmpErr != nil {
|
|
|
err = tmpErr
|
|
|
return
|
|
|
}
|
|
|
- // 处理其余现货指标
|
|
|
- for _, v := range edbInfoMappingList {
|
|
|
- if v.EdbInfoId == baseEdbInfoMapping.EdbInfoId {
|
|
|
- findDataList = append(findDataList, findDataValue)
|
|
|
- yDataMap[baseEdbInfoMapping.EdbInfoId] = findDataValue
|
|
|
- if isFind {
|
|
|
- maxDate = realDateTime
|
|
|
- } else {
|
|
|
- noDataIdList = append(noDataIdList, baseEdbInfoMapping.EdbInfoId)
|
|
|
- noDataIdMap[baseEdbInfoMapping.EdbInfoId] = baseEdbInfoMapping.EdbInfoId
|
|
|
- }
|
|
|
- xEdbInfoIdList = append(xEdbInfoIdList, v.EdbInfoId)
|
|
|
- continue
|
|
|
- }
|
|
|
- findDataValueTmp, isFindTmp := baseEdbDataMap[v.EdbInfoId][realDateTime.Format(utils.FormatDate)]
|
|
|
- findDataList = append(findDataList, findDataValueTmp)
|
|
|
- yDataMap[v.EdbInfoId] = findDataValueTmp
|
|
|
- if !isFindTmp {
|
|
|
- noDataIdList = append(noDataIdList, v.EdbInfoId)
|
|
|
- noDataIdMap[v.EdbInfoId] = v.EdbInfoId
|
|
|
- }
|
|
|
- xEdbInfoIdList = append(xEdbInfoIdList, v.EdbInfoId)
|
|
|
+ findDataList = append(findDataList, findDataValue)
|
|
|
+ yDataMap[edbInfoMapping.EdbInfoId] = findDataValue
|
|
|
+ if isFind {
|
|
|
+ maxDate = realDateTime
|
|
|
+ } else {
|
|
|
+ noDataIdList = append(noDataIdList, edbInfoMapping.EdbInfoId)
|
|
|
+ noDataIdMap[edbInfoMapping.EdbInfoId] = edbInfoMapping.EdbInfoId
|
|
|
}
|
|
|
//currMonth := findDateTime.Month() // 当前月份
|
|
|
//currYear := findDateTime.Year() // 当前年份
|
|
@@ -553,6 +463,7 @@ func BarChartData(baseEdbInfoMapping *data_manage.ChartEdbInfoMapping, edbInfoMa
|
|
|
currMonth := realDateTime.Month() // 当前月份
|
|
|
currYear := realDateTime.Year() // 当前年份
|
|
|
|
|
|
+ xEdbInfoIdList = append(xEdbInfoIdList, edbInfoMapping.EdbInfoId)
|
|
|
mList := make([]int, 0) // 间隔月份
|
|
|
indexList := make([]int, 0)
|
|
|
if regionType == `国内` {
|
|
@@ -672,15 +583,15 @@ func BarChartData(baseEdbInfoMapping *data_manage.ChartEdbInfoMapping, edbInfoMa
|
|
|
}
|
|
|
|
|
|
// handleResultData 处理成最终的结果数据
|
|
|
-func handleResultData(regionType string, futureGoodEdbType, baseEdbLen int, yDataList []data_manage.YData, futureGoodEdbInfoList []*future_good2.FutureGoodEdbInfo, maxIndex int) (xDataList []data_manage.XData, newYDataList []data_manage.YData, err error) {
|
|
|
+func handleResultData(regionType string, futureGoodEdbType int, yDataList []data_manage.YData, futureGoodEdbInfoList []*future_good2.FutureGoodEdbInfo, maxIndex int) (xDataList []data_manage.XData, newYDataList []data_manage.YData, err error) {
|
|
|
xDataList = make([]data_manage.XData, 0)
|
|
|
newYDataList = yDataList
|
|
|
+
|
|
|
if regionType == `国内` {
|
|
|
for i := 1; i < 12; i++ {
|
|
|
if i > maxIndex {
|
|
|
break
|
|
|
}
|
|
|
- // todo x轴 内容调整
|
|
|
xDataList = append(xDataList, data_manage.XData{
|
|
|
Name: fmt.Sprint("M+", i),
|
|
|
NameEn: fmt.Sprint("M+", i),
|
|
@@ -709,11 +620,11 @@ func handleResultData(regionType string, futureGoodEdbType, baseEdbLen int, yDat
|
|
|
tmpNList := nList
|
|
|
|
|
|
//当前的主力合约
|
|
|
- newYDataList[yIndex].XEdbInfoIdList = append(newYDataList[yIndex].XEdbInfoIdList, yData.XEdbInfoIdList[0:baseEdbLen]...)
|
|
|
- newYDataList[yIndex].Value = append(newYDataList[yIndex].Value, yData.Value[0:baseEdbLen]...)
|
|
|
+ newYDataList[yIndex].XEdbInfoIdList = append(newYDataList[yIndex].XEdbInfoIdList, yData.XEdbInfoIdList[0])
|
|
|
+ newYDataList[yIndex].Value = append(newYDataList[yIndex].Value, yData.Value[0])
|
|
|
|
|
|
- xEdbInfoIdList := yData.XEdbInfoIdList[baseEdbLen:]
|
|
|
- valIndex := baseEdbLen
|
|
|
+ xEdbInfoIdList := yData.XEdbInfoIdList[1:]
|
|
|
+ valIndex := 1
|
|
|
needNum := 0
|
|
|
for _, n := range tmpNList {
|
|
|
if len(xEdbInfoIdList) > 0 {
|
|
@@ -785,8 +696,8 @@ func handleResultData(regionType string, futureGoodEdbType, baseEdbLen int, yDat
|
|
|
currYear := findDateTime.Year() // 当前年份
|
|
|
//v.XEdbInfoIdList
|
|
|
for edbInfoIndex, edbInfoId := range v.XEdbInfoIdList {
|
|
|
- // 现货指标不处理
|
|
|
- if edbInfoIndex <= baseEdbLen-1 {
|
|
|
+ // 第一个不处理
|
|
|
+ if edbInfoIndex == 0 {
|
|
|
continue
|
|
|
}
|
|
|
|
|
@@ -825,12 +736,12 @@ func handleResultData(regionType string, futureGoodEdbType, baseEdbLen int, yDat
|
|
|
tmpNList := nList
|
|
|
|
|
|
//当前的主力合约
|
|
|
- newYDataList[yIndex].XEdbInfoIdList = append(newYDataList[yIndex].XEdbInfoIdList, yData.XEdbInfoIdList[0:baseEdbLen]...)
|
|
|
- newYDataList[yIndex].Value = append(newYDataList[yIndex].Value, yData.Value[0:baseEdbLen]...)
|
|
|
+ newYDataList[yIndex].XEdbInfoIdList = append(newYDataList[yIndex].XEdbInfoIdList, yData.XEdbInfoIdList[0])
|
|
|
+ newYDataList[yIndex].Value = append(newYDataList[yIndex].Value, yData.Value[0])
|
|
|
|
|
|
- xEdbInfoIdList := yData.XEdbInfoIdList[baseEdbLen:]
|
|
|
+ xEdbInfoIdList := yData.XEdbInfoIdList[1:]
|
|
|
currDataTime := yData.ConfigDate
|
|
|
- valIndex := baseEdbLen
|
|
|
+ valIndex := 1
|
|
|
needNum := 0
|
|
|
for _, n := range tmpNList {
|
|
|
if len(xEdbInfoIdList) > 0 {
|
|
@@ -1036,15 +947,11 @@ func FutureGoodChartInfoRefresh(chartInfoId int) (err error) {
|
|
|
}
|
|
|
}()
|
|
|
|
|
|
- edbInfoMappingList, err := data_manage.GetEtaEdbChartEdbMappingList(chartInfoId)
|
|
|
+ edbInfoMapping, err := data_manage.GetEtaEdbChartEdbMapping(chartInfoId)
|
|
|
if err != nil {
|
|
|
errMsg = "获取需要刷新的ETA指标失败:Err:" + err.Error()
|
|
|
return
|
|
|
}
|
|
|
- edbInfoIds := make([]int, 0)
|
|
|
- for _, edbInfoMapping := range edbInfoMappingList {
|
|
|
- edbInfoIds = append(edbInfoIds, edbInfoMapping.EdbInfoId)
|
|
|
- }
|
|
|
// 获取期货指标
|
|
|
futureGoodEdbInfoMapping, err := data_manage.GetFutureGoodEdbChartEdbMapping(chartInfoId)
|
|
|
if err != nil {
|
|
@@ -1059,7 +966,7 @@ func FutureGoodChartInfoRefresh(chartInfoId int) (err error) {
|
|
|
}
|
|
|
|
|
|
// 批量刷新ETA指标
|
|
|
- err, _ = data.EdbInfoRefreshAllFromBaseV3(edbInfoIds, false, true, false)
|
|
|
+ err, _ = data.EdbInfoRefreshAllFromBaseV3([]int{edbInfoMapping.EdbInfoId}, false, true, false)
|
|
|
if err != nil {
|
|
|
return
|
|
|
}
|