Browse Source

基础预测指标数据改成从数据库里查询

xyxie 7 months ago
parent
commit
bdc94a29f3

+ 18 - 106
controllers/data_manage/predict_edb_info.go

@@ -285,119 +285,31 @@ func (this *PredictEdbInfoController) List() {
 		br.ErrMsg = "查找预测指标关联信息失败"
 		return
 	}
-	if edbInfoItem.EdbType == 1 { //普通的预测指标
-		// 查找该预测指标配置
-		predictEdbConfList, err := data_manage.GetPredictEdbConfListById(edbInfoId)
+
+	//获取指标数据(实际已生成)
+	{
+		dataCount, dataList, err := data.GetPageData(edbInfoItem.EdbInfoId, edbInfoItem.Source, edbInfoItem.SubSource, edbInfoItem.LatestDate, startSize, pageSize)
 		if err != nil && err.Error() != utils.ErrNoRow() {
-			br.Msg = "获取失败"
-			br.ErrMsg = "获取预测指标配置信息失败,Err:" + err.Error()
-			return
-		}
-		if len(predictEdbConfList) == 0 {
-			br.Msg = "找不到该预测指标配置"
-			br.ErrMsg = "找不到该预测指标配置"
+			br.Msg = "获取指标信息失败"
+			br.ErrMsg = "获取指标数据总数失败,Err:" + err.Error()
 			return
 		}
-		predictEdbConf := predictEdbConfList[0]
-
-		//预测数据的配置
-		edbInfoItem.RuleType = predictEdbConf.RuleType
-		edbInfoItem.FixedValue = predictEdbConf.FixedValue
+		page = paging.GetPaging(currentIndex, pageSize, dataCount)
+		edbInfoItem.DataList = dataList
+	}
 
-		// 来源指标
-		//sourceEdbInfoId := sourceEdbInfoCalculateMappingList[0].FromEdbInfoId
-		sourceEdbInfoId := predictEdbConf.SourceEdbInfoId
-		sourceEdbInfoItem, err := data_manage.GetEdbInfoById(sourceEdbInfoId)
+	// 第一页才需要 获取预测指标未来的数据
+	if currentIndex == 1 {
+		predictDataList, err = data_manage.GetAllEdbDataListData(edbInfoItem.EdbInfoId, edbInfoItem.Source, edbInfoItem.SubSource, edbInfoItem.LatestDate)
 		if err != nil {
-			br.Msg = "获取来源指标信息失败"
-			br.ErrMsg = "获取来源指标信息失败"
-			if err.Error() != utils.ErrNoRow() {
-				br.ErrMsg = "获取来源指标信息失败,Err:" + err.Error()
-			}
-			br.Success = true
+			br.Msg = "获取指标信息失败"
+			br.ErrMsg = "获取指标数据失败,Err:" + err.Error()
 			return
 		}
-
-		//获取指标数据(实际已生成)
-		{
-			dataCount, dataList, err := data.GetPageData(sourceEdbInfoItem.EdbInfoId, sourceEdbInfoItem.Source, sourceEdbInfoItem.SubSource, "", startSize, pageSize)
-			if err != nil && err.Error() != utils.ErrNoRow() {
-				br.Msg = "获取指标信息失败"
-				br.ErrMsg = "获取指标数据总数失败,Err:" + err.Error()
-				return
-			}
-			page = paging.GetPaging(currentIndex, pageSize, dataCount)
-			edbInfoItem.DataList = dataList
-		}
-
-		// 第一页才需要 获取预测指标未来的数据
-		if currentIndex == 1 {
-			allDataList, err := data_manage.GetEdbDataList(sourceEdbInfoItem.Source, sourceEdbInfoItem.SubSource, sourceEdbInfoItem.EdbInfoId, "", "")
-			if err != nil {
-				br.Msg = "获取失败"
-				br.Msg = "获取失败,Err:" + err.Error()
-				return
-			}
-			predictEdbConfDataList := make([]data_manage.PredictEdbConfAndData, 0)
-			for _, v := range predictEdbConfList {
-				predictEdbConfDataList = append(predictEdbConfDataList, data_manage.PredictEdbConfAndData{
-					ConfigId:         v.ConfigId,
-					PredictEdbInfoId: v.PredictEdbInfoId,
-					SourceEdbInfoId:  v.SourceEdbInfoId,
-					RuleType:         v.RuleType,
-					FixedValue:       v.FixedValue,
-					Value:            v.Value,
-					EndDate:          v.EndDate,
-					ModifyTime:       v.ModifyTime,
-					CreateTime:       v.CreateTime,
-					DataList:         make([]*data_manage.EdbDataList, 0),
-				})
-			}
-			tmpPredictDataList, _, _, err, _ := data.GetChartPredictEdbInfoDataListByConfList(predictEdbConfDataList, sourceEdbInfoItem.LatestDate, sourceEdbInfoItem.LatestDate, edbInfoItem.EndDate, sourceEdbInfoItem.Frequency, edbInfoItem.DataDateType, allDataList)
-			if err != nil {
-				br.Msg = "获取预测指标数据失败"
-				br.ErrMsg = "获取预测指标数据失败" + err.Error()
-				return
-			}
-			lenTmpPredictDataList := len(tmpPredictDataList)
-			if lenTmpPredictDataList > 0 {
-				for i := lenTmpPredictDataList - 1; i >= 0; i-- {
-					v := tmpPredictDataList[i]
-					predictDataList = append(predictDataList, &data_manage.EdbData{
-						EdbDataId: v.EdbDataId,
-						EdbInfoId: v.EdbInfoId,
-						DataTime:  v.DataTime,
-						Value:     v.Value,
-					})
-				}
-			}
-		}
-	} else {
-		//获取指标数据(实际已生成)
-		{
-			dataCount, dataList, err := data.GetPageData(edbInfoItem.EdbInfoId, edbInfoItem.Source, edbInfoItem.SubSource, edbInfoItem.LatestDate, startSize, pageSize)
-			if err != nil && err.Error() != utils.ErrNoRow() {
-				br.Msg = "获取指标信息失败"
-				br.ErrMsg = "获取指标数据总数失败,Err:" + err.Error()
-				return
-			}
-			page = paging.GetPaging(currentIndex, pageSize, dataCount)
-			edbInfoItem.DataList = dataList
-		}
-
-		// 第一页才需要 获取预测指标未来的数据
-		if currentIndex == 1 {
-			predictDataList, err = data_manage.GetAllEdbDataListData(edbInfoItem.EdbInfoId, edbInfoItem.Source, edbInfoItem.SubSource, edbInfoItem.LatestDate)
-			if err != nil {
-				br.Msg = "获取指标信息失败"
-				br.ErrMsg = "获取指标数据失败,Err:" + err.Error()
-				return
-			}
-			if err != nil {
-				br.Msg = "获取预测指标数据失败"
-				br.ErrMsg = "获取预测指标数据失败" + err.Error()
-				return
-			}
+		if err != nil {
+			br.Msg = "获取预测指标数据失败"
+			br.ErrMsg = "获取预测指标数据失败" + err.Error()
+			return
 		}
 	}
 

+ 2 - 0
models/data_manage/edb_data_base.go

@@ -179,6 +179,8 @@ func GetEdbDataTableName(source, subSource int) (tableName string) {
 		tableName = "edb_data_sci99"
 	case utils.DATA_SOURCE_SCI_HQ:
 		tableName = "edb_data_sci_hq"
+	case utils.DATA_SOURCE_PREDICT: // 基础预测指标->30
+		tableName = "edb_data_predict_base"
 	default:
 		edbSource := EdbSourceIdMap[source]
 		if edbSource != nil {

+ 3 - 91
services/data/predict_edb_info.go

@@ -912,98 +912,10 @@ func GetPredictDataListByPredictEdbInfoId(edbInfoId int, startDate, endDate stri
 
 // GetPredictDataListByPredictEdbInfo 根据预测指标信息获取预测指标的数据
 func GetPredictDataListByPredictEdbInfo(edbInfo *data_manage.EdbInfo, startDate, endDate string, isTimeBetween bool) (dataList []*data_manage.EdbDataList, sourceEdbInfoItem *data_manage.EdbInfo, predictEdbConf *data_manage.PredictEdbConf, err error, errMsg string) {
-	// 非计算指标,直接从表里获取数据
-	if edbInfo.EdbType != 1 {
-		if !isTimeBetween { //如果不是区间数据,那么就结束日期为空
-			endDate = ``
-		}
-		return GetPredictCalculateDataListByPredictEdbInfo(edbInfo, startDate, endDate)
-	}
-	// 查找该预测指标配置
-	predictEdbConfList, err := data_manage.GetPredictEdbConfListById(edbInfo.EdbInfoId)
-	if err != nil && err.Error() != utils.ErrNoRow() {
-		errMsg = "获取预测指标配置信息失败"
-		return
-	}
-	if len(predictEdbConfList) == 0 {
-		errMsg = "获取预测指标配置信息失败"
-		err = errors.New(errMsg)
-		return
+	if !isTimeBetween { //如果不是区间数据,那么就结束日期为空
+		endDate = ``
 	}
-	predictEdbConf = predictEdbConfList[0]
-
-	// 来源指标
-	sourceEdbInfoItem, err = data_manage.GetEdbInfoById(predictEdbConf.SourceEdbInfoId)
-	if err != nil {
-		if err.Error() == utils.ErrNoRow() {
-			errMsg = "找不到来源指标信息"
-			err = errors.New(errMsg)
-		}
-		return
-	}
-
-	allDataList := make([]*data_manage.EdbDataList, 0)
-	//获取指标数据(实际已生成)
-	dataList, err = data_manage.GetEdbDataList(sourceEdbInfoItem.Source, sourceEdbInfoItem.SubSource, sourceEdbInfoItem.EdbInfoId, startDate, endDate)
-	if err != nil {
-		return
-	}
-	// 如果选择了日期,那么需要筛选所有的数据,用于未来指标的生成
-	if startDate != `` {
-		allDataList, err = data_manage.GetEdbDataList(sourceEdbInfoItem.Source, sourceEdbInfoItem.SubSource, sourceEdbInfoItem.EdbInfoId, "", "")
-		if err != nil {
-			return
-		}
-	} else {
-		allDataList = dataList
-	}
-	// 获取预测指标未来的数据
-	predictDataList := make([]*data_manage.EdbDataList, 0)
-
-	endDateStr := edbInfo.EndDate //预测指标的结束日期
-
-	if isTimeBetween && endDate != `` { //如果是时间区间,同时截止日期不为空的情况,那么
-		reqEndDateTime, _ := time.ParseInLocation(utils.FormatDate, endDate, time.Local)
-		endDateTime, _ := time.ParseInLocation(utils.FormatDate, edbInfo.EndDate, time.Local)
-		// 如果选择的时间区间结束日期 晚于 当天,那么预测数据截止到当天
-		if reqEndDateTime.Before(endDateTime) {
-			endDateStr = endDate
-		}
-	}
-	//predictDataList, err = GetChartPredictEdbInfoDataList(*predictEdbConf, startDate, sourceEdbInfoItem.LatestDate, sourceEdbInfoItem.LatestValue, endDateStr, edbInfo.Frequency)
-	predictEdbConfDataList := make([]data_manage.PredictEdbConfAndData, 0)
-	for _, v := range predictEdbConfList {
-		predictEdbConfDataList = append(predictEdbConfDataList, data_manage.PredictEdbConfAndData{
-			ConfigId:         v.ConfigId,
-			PredictEdbInfoId: v.PredictEdbInfoId,
-			SourceEdbInfoId:  v.SourceEdbInfoId,
-			RuleType:         v.RuleType,
-			FixedValue:       v.FixedValue,
-			Value:            v.Value,
-			EndDate:          v.EndDate,
-			ModifyTime:       v.ModifyTime,
-			CreateTime:       v.CreateTime,
-			DataList:         make([]*data_manage.EdbDataList, 0),
-		})
-	}
-	//var predictMinValue, predictMaxValue float64
-	predictDataList, _, _, err, _ = GetChartPredictEdbInfoDataListByConfList(predictEdbConfDataList, startDate, sourceEdbInfoItem.LatestDate, endDateStr, edbInfo.Frequency, edbInfo.DataDateType, allDataList)
-	if err != nil {
-		return
-	}
-	dataList = append(dataList, predictDataList...)
-	//if len(predictDataList) > 0 {
-	//	// 如果最小值 大于 预测值,那么将预测值作为最小值数据返回
-	//	if edbInfo.MinValue > predictMinValue {
-	//		edbInfo.MinValue = predictMinValue
-	//	}
-	//
-	//	// 如果最大值 小于 预测值,那么将预测值作为最大值数据返回
-	//	if edbInfo.MaxValue < predictMaxValue {
-	//		edbInfo.MaxValue = predictMaxValue
-	//	}
-	//}
-	return
+	return GetPredictCalculateDataListByPredictEdbInfo(edbInfo, startDate, endDate)
 }
 
 // GetChartDataList 通过完整的预测数据 进行 季节性图、公历、农历处理