|
@@ -214,9 +214,9 @@ func GetChartEdbInfoFormat(chartInfoId int, edbInfoMappingList []*data_manage.Ch
|
|
|
}
|
|
|
|
|
|
// GetChartDataByEdbInfoList 区间计算图表-根据指标信息获取x轴和y轴
|
|
|
-func GetChartDataByEdbInfoList(chartInfoId int, startDate, endDate string, edbInfoMappingList []*data_manage.ChartEdbInfoMapping, req *data_manage.ChartRangeAnalysisExtraConf) (edbList []*data_manage.ChartEdbInfoMapping, xEdbIdValue []int, dataResp data_manage.ChartRangeAnalysisDataResp, err error) {
|
|
|
+func GetChartDataByEdbInfoList(chartInfoId int, dateType, startYear int, startDate, endDate string, edbInfoMappingList []*data_manage.ChartEdbInfoMapping, req *data_manage.ChartRangeAnalysisExtraConf) (edbList []*data_manage.ChartEdbInfoMapping, xEdbIdValue []int, dataResp data_manage.ChartRangeAnalysisDataResp, err error) {
|
|
|
if chartInfoId > 0 && req.EdbInfoMode == 1 {
|
|
|
- edbList, xEdbIdValue, dataResp, err = GetChartDataByEdbInfoListBySeries(chartInfoId, startDate, endDate, edbInfoMappingList, req)
|
|
|
+ edbList, xEdbIdValue, dataResp, err = GetChartDataByEdbInfoListBySeries(chartInfoId, dateType, startYear, startDate, endDate, edbInfoMappingList, req)
|
|
|
return
|
|
|
}
|
|
|
for _, edbInfoMapping := range edbInfoMappingList {
|
|
@@ -226,7 +226,46 @@ func GetChartDataByEdbInfoList(chartInfoId int, startDate, endDate string, edbIn
|
|
|
}
|
|
|
xEdbIdValue = append(xEdbIdValue, edbInfoMapping.EdbInfoId)
|
|
|
}
|
|
|
+ //根据时间类型来筛选最终的数据
|
|
|
+ yearMax := 0
|
|
|
+ if dateType == utils.DateTypeNYears {
|
|
|
+ for _, v := range edbInfoMappingList {
|
|
|
+ dataList := v.DataList.([]*data_manage.EdbDataList)
|
|
|
+ latestDate := dataList[0].DataTime
|
|
|
+ if latestDate != "" {
|
|
|
+ lastDateT, tErr := time.Parse(utils.FormatDate, latestDate)
|
|
|
+ if tErr != nil {
|
|
|
+ err = fmt.Errorf("获取图表日期信息失败,Err:" + tErr.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if lastDateT.Year() > yearMax {
|
|
|
+ yearMax = lastDateT.Year()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ startDate, endDate = utils.GetDateByDateTypeV2(dateType, startDate, endDate, startYear, yearMax)
|
|
|
|
|
|
+ if startDate != "" {
|
|
|
+ for k, v := range edbInfoMappingList {
|
|
|
+ dataList := v.DataList.([]*data_manage.EdbDataList)
|
|
|
+ newDataList := make([]*data_manage.EdbDataList, 0)
|
|
|
+ if len(dataList) == 0 {
|
|
|
+ newDataList = dataList
|
|
|
+ } else {
|
|
|
+ for _, d := range dataList {
|
|
|
+ if endDate != "" && d.DataTime > endDate {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ if d.DataTime < startDate {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ newDataList = append(newDataList, d)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ edbInfoMappingList[k].DataList = newDataList
|
|
|
+ }
|
|
|
+ }
|
|
|
dataResp = data_manage.ChartRangeAnalysisDataResp{ChartRangeAnalysisExtraConf: req}
|
|
|
edbList, err = GetChartEdbInfoFormat(chartInfoId, edbInfoMappingList)
|
|
|
if err != nil {
|
|
@@ -236,7 +275,7 @@ func GetChartDataByEdbInfoList(chartInfoId int, startDate, endDate string, edbIn
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-func GetChartDataByEdbInfoListBySeries(chartInfoId int, startDate, endDate string, edbInfoMappingList []*data_manage.ChartEdbInfoMapping, req *data_manage.ChartRangeAnalysisExtraConf) (edbList []*data_manage.ChartEdbInfoMapping, xEdbIdValue []int, dataResp data_manage.ChartRangeAnalysisDataResp, err error) {
|
|
|
+func GetChartDataByEdbInfoListBySeries(chartInfoId int, dateType, startYear int, startDate, endDate string, edbInfoMappingList []*data_manage.ChartEdbInfoMapping, req *data_manage.ChartRangeAnalysisExtraConf) (edbList []*data_manage.ChartEdbInfoMapping, xEdbIdValue []int, dataResp data_manage.ChartRangeAnalysisDataResp, err error) {
|
|
|
//查询seriesId
|
|
|
chartSeriesOb := new(data_manage.FactorEdbSeriesChartMapping)
|
|
|
seriesMappingItem, err := chartSeriesOb.GetItemByChartInfoId(chartInfoId)
|
|
@@ -261,8 +300,46 @@ func GetChartDataByEdbInfoListBySeries(chartInfoId int, startDate, endDate strin
|
|
|
edbInfoMapping.DataList = dataList
|
|
|
xEdbIdValue = append(xEdbIdValue, edbInfoMapping.EdbInfoId)
|
|
|
}
|
|
|
+ yearMax := 0
|
|
|
+ if dateType == utils.DateTypeNYears {
|
|
|
+ for _, v := range edbInfoMappingList {
|
|
|
+ dataList := v.DataList.([]*data_manage.EdbDataList)
|
|
|
+ latestDate := dataList[0].DataTime
|
|
|
+ if latestDate != "" {
|
|
|
+ lastDateT, tErr := time.Parse(utils.FormatDate, latestDate)
|
|
|
+ if tErr != nil {
|
|
|
+ err = fmt.Errorf("获取图表日期信息失败,Err:" + tErr.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if lastDateT.Year() > yearMax {
|
|
|
+ yearMax = lastDateT.Year()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ startDate, endDate = utils.GetDateByDateTypeV2(dateType, startDate, endDate, startYear, yearMax)
|
|
|
|
|
|
- dataResp = data_manage.ChartRangeAnalysisDataResp{ChartRangeAnalysisExtraConf: req}
|
|
|
+ if startDate != "" {
|
|
|
+ for k, v := range edbInfoMappingList {
|
|
|
+ dataList := v.DataList.([]*data_manage.EdbDataList)
|
|
|
+ newDataList := make([]*data_manage.EdbDataList, 0)
|
|
|
+ if len(dataList) == 0 {
|
|
|
+ newDataList = dataList
|
|
|
+ } else {
|
|
|
+ for _, d := range dataList {
|
|
|
+ if endDate != "" && d.DataTime > endDate {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ if d.DataTime < startDate {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ newDataList = append(newDataList, d)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ edbInfoMappingList[k].DataList = newDataList
|
|
|
+ }
|
|
|
+ }
|
|
|
+ dataResp = data_manage.ChartRangeAnalysisDataResp{ChartRangeAnalysisExtraConf: req, SeriesId: seriesMappingItem.FactorEdbSeriesId}
|
|
|
edbList, err = GetChartEdbInfoFormat(chartInfoId, edbInfoMappingList)
|
|
|
if err != nil {
|
|
|
err = fmt.Errorf("获取区间计算图表, 完善指标信息失败, Err:" + err.Error())
|
|
@@ -401,9 +478,35 @@ func getChartDataByEdbInfo(edbInfoMapping *data_manage.ChartEdbInfoMapping, req
|
|
|
}
|
|
|
|
|
|
if req.DataConvertType > 0 {
|
|
|
- // todo 数据转换
|
|
|
+ // 数据转换类型 0不转, 1乘 2除 3对数
|
|
|
+ switch req.DataConvertType {
|
|
|
+ case 1:
|
|
|
+ for i, v := range newDataList {
|
|
|
+ newDataList[i].Value = v.Value * req.DataConvertConf.Value
|
|
|
+ }
|
|
|
+ //item.MaxData = item.MaxData * v.ConvertValue
|
|
|
+ //item.MinData = item.MinData * v.ConvertValue
|
|
|
+ case 2:
|
|
|
+ for i, v := range newDataList {
|
|
|
+ newDataList[i].Value = v.Value / req.DataConvertConf.Value
|
|
|
+ }
|
|
|
+ //item.MaxData = item.MaxData / v.ConvertValue
|
|
|
+ //item.MinData = item.MinData / v.ConvertValue
|
|
|
+ case 3:
|
|
|
+ for i, v := range newDataList {
|
|
|
+ if v.Value <= 0 {
|
|
|
+ err = errors.New("数据中含有负数或0,无法对数运算")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ newDataList[i].Value = math.Log(v.Value) / math.Log(req.DataConvertConf.Value)
|
|
|
+ }
|
|
|
+ //item.MaxData = math.Log(item.MaxData) / math.Log(v.ConvertValue)
|
|
|
+ //item.MinData = math.Log(item.MinData) / math.Log(v.ConvertValue)
|
|
|
+ }
|
|
|
}
|
|
|
newEdbInfoMapping.DataList = newDataList
|
|
|
+ //时间处理
|
|
|
+
|
|
|
return
|
|
|
}
|
|
|
|
|
@@ -703,12 +806,13 @@ func AddChartInfo(req data_manage.AddChartInfoReq, source int, sysUser *system.A
|
|
|
// todo 指标名称修改
|
|
|
mapItem := new(data_manage.ChartEdbMapping)
|
|
|
mapItem.EdbInfoId = v.EdbInfoId
|
|
|
+ mapItem.EdbAliasName = v.EdbAliasName
|
|
|
+ mapItem.IsAxis = v.IsAxis
|
|
|
mapItem.CreateTime = time.Now()
|
|
|
mapItem.ModifyTime = time.Now()
|
|
|
edbTimestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
|
|
|
mapItem.UniqueCode = utils.MD5(utils.CHART_PREFIX + "_" + edbTimestamp + "_" + strconv.Itoa(v.EdbInfoId))
|
|
|
mapItem.IsOrder = true
|
|
|
- mapItem.IsAxis = 1
|
|
|
mapItem.EdbInfoType = 1
|
|
|
mapItem.Source = utils.CHART_SOURCE_RANGE_ANALYSIS
|
|
|
mapList = append(mapList, mapItem)
|
|
@@ -1604,7 +1708,7 @@ func FactorEdbStepCalculateRange(seriesId int, edbArr []int, extraConf data_mana
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- _, _, _, err = GetChartDataByEdbInfoList(0, "", "", edbInfoMappingList, &extraConf)
|
|
|
+ _, _, _, err = GetChartDataByEdbInfoList(0, 0, 0, "", "", edbInfoMappingList, &extraConf)
|
|
|
if err != nil {
|
|
|
err = fmt.Errorf("获取图表数据失败, ErrMsg: %v", err)
|
|
|
return
|