Roc 1 年之前
父节点
当前提交
c22820db19

+ 3 - 3
controllers/data_manage/predict_edb_info.go

@@ -327,7 +327,7 @@ func (this *PredictEdbInfoController) List() {
 					DataList:         make([]*data_manage.EdbDataList, 0),
 				})
 			}
-			tmpPredictDataList, _, _, err, _ := data.GetChartPredictEdbInfoDataListByConfList(predictEdbConfDataList, sourceEdbInfoItem.LatestDate, sourceEdbInfoItem.LatestDate, edbInfoItem.EndDate, sourceEdbInfoItem.Frequency, allDataList)
+			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()
@@ -1544,7 +1544,7 @@ func (this *PredictEdbInfoController) ChartDataList() {
 		// 获取预测数据
 		var predictMinValue, predictMaxValue float64
 
-		predictDataList, predictMinValue, predictMaxValue, err, errMsg := data.GetChartPredictEdbInfoDataListByConfList(predictEdbConfAndDataList, startDate, sourceEdbInfoItem.LatestDate, endDateStr, sourceEdbInfoItem.Frequency, allDataList)
+		predictDataList, predictMinValue, predictMaxValue, err, errMsg := data.GetChartPredictEdbInfoDataListByConfList(predictEdbConfAndDataList, startDate, sourceEdbInfoItem.LatestDate, endDateStr, sourceEdbInfoItem.Frequency, req.DataDateType, allDataList)
 		if err != nil {
 			br.Msg = "获取预测指标数据失败"
 			if errMsg != `` {
@@ -1850,4 +1850,4 @@ func (this *PredictEdbInfoController) ClassifyEdbInfoItems() {
 	br.Success = true
 	br.Msg = "获取成功"
 	br.Data = resp
-}
+}

+ 2 - 0
models/data_manage/edb_info.go

@@ -44,6 +44,7 @@ type EdbInfo struct {
 	ServerUrl        string  `description:"服务器地址"`
 	ChartImage       string  `description:"图表图片"`
 	Calendar         string  `description:"公历/农历" orm:"default(公历);"`
+	DataDateType     string  `orm:"column(data_date_type);size(255);null;default(交易日)"`
 }
 
 func AddEdbInfo(item *EdbInfo) (lastId int64, err error) {
@@ -276,6 +277,7 @@ type EdbInfoList struct {
 	Button           EdbClassifyItemsButton  `description:"操作权限"`
 	IsEnEdb          bool                    `description:"是否展示英文标识"`
 	DataInsertConfig EdbDataInsertConfigItem `description:"指标数据插入配置"`
+	DataDateType     string                  `description:"数据日期类型,枚举值:交易日、自然日"`
 }
 
 type EdbDataInsertConfigItem struct {

+ 7 - 5
models/data_manage/request/predict_edb_info.go

@@ -16,6 +16,7 @@ type PredictEdbInfoChartDataReq struct {
 	SeasonStartDate string       `description:"季节性图开始日期"`
 	SeasonEndDate   string       `description:"季节性图结束日期"`
 	RuleList        []RuleConfig `description:"配置规则列表"`
+	DataDateType    string       `description:"数据日期类型,枚举值:交易日、自然日"`
 }
 
 // AddPredictEdbInfoReq 添加预测指标请求
@@ -28,11 +29,12 @@ type AddPredictEdbInfoReq struct {
 	FixedValue      float64      `description:"固定值"`
 	RuleList        []RuleConfig `description:"配置规则列表"`
 
-	MaxValue  float64 `description:"最大值"`
-	MinValue  float64 `description:"最小值"`
-	EdbInfoId int     `description:"指标ID"`
-	AdminId   int     `description:"添加人id"`
-	AdminName string  `description:"添加人名称"`
+	DataDateType string  `description:"日期类型,枚举值:交易日、自然日"`
+	MaxValue     float64 `description:"最大值"`
+	MinValue     float64 `description:"最小值"`
+	EdbInfoId    int     `description:"指标ID"`
+	AdminId      int     `description:"添加人id"`
+	AdminName    string  `description:"添加人名称"`
 }
 
 // RuleConfig 预测规则配置

+ 1 - 0
services/data/edb_info.go

@@ -2558,6 +2558,7 @@ func EdbInfoAdd(source, classifyId int, edbCode, edbName, frequency, unit, start
 	edbInfo.CreateTime = time.Now()
 	edbInfo.ModifyTime = time.Now()
 	edbInfo.ServerUrl = serverUrl
+	edbInfo.DataDateType = `交易日`
 	timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
 	edbInfo.UniqueCode = utils.MD5(utils.DATA_PREFIX + "_" + timestamp)
 	itemVal, err := data_manage.GetEdbInfoMaxAndMinInfo(source, edbCode)

+ 9 - 88
services/data/predict_edb_info.go

@@ -558,90 +558,8 @@ func MovePredictEdbInfo(edbInfoId, classifyId, prevEdbInfoId, nextEdbInfoId int,
 	return
 }
 
-// GetPredictEdbInfoDataList 获取预测指标的未来数据
-func GetPredictEdbInfoDataList(predictEdbConf data_manage.PredictEdbConf, latestDateStr string, lastDataValue float64, endDateStr, frequency string) (predictEdbInfoData []*data_manage.EdbData, err error) {
-	endDate, err := time.ParseInLocation(utils.FormatDate, endDateStr, time.Local)
-	if err != nil {
-		return
-	}
-
-	latestDate, err := time.ParseInLocation(utils.FormatDate, latestDateStr, time.Local)
-	if err != nil {
-		return
-	}
-
-	dataValue := lastDataValue
-	if predictEdbConf.RuleType == 2 {
-		dataValue = predictEdbConf.FixedValue
-	}
-	//获取后面的预测数据
-	dayList := getPredictEdbDayList(latestDate, endDate, frequency)
-	predictEdbInfoData = make([]*data_manage.EdbData, 0)
-	lenDayList := len(dayList)
-	if lenDayList > 0 {
-		for i := lenDayList - 1; i >= 0; i-- {
-			v := dayList[i]
-			predictEdbInfoData = append(predictEdbInfoData, &data_manage.EdbData{
-				EdbDataId: predictEdbConf.PredictEdbInfoId + 100000 + i,
-				EdbInfoId: predictEdbConf.PredictEdbInfoId,
-				DataTime:  v.Format(utils.FormatDate),
-				Value:     dataValue,
-			})
-		}
-	}
-
-	return
-}
-
-// GetChartPredictEdbInfoDataList 获取图表的预测指标的未来数据
-func GetChartPredictEdbInfoDataList(predictEdbConf data_manage.PredictEdbConf, filtrateStartDateStr, latestDateStr string, lastDataValue float64, endDateStr, frequency string) (predictEdbInfoData []*data_manage.EdbDataList, err error) {
-	endDate, err := time.ParseInLocation(utils.FormatDate, endDateStr, time.Local)
-	if err != nil {
-		return
-	}
-
-	latestDate, err := time.ParseInLocation(utils.FormatDate, latestDateStr, time.Local)
-	if err != nil {
-		return
-	}
-
-	// 开始预测数据的时间
-	startDate := latestDate
-
-	// 如果有筛选时间的话
-	if filtrateStartDateStr != `` {
-		filtrateStartDate, tmpErr := time.ParseInLocation(utils.FormatDate, filtrateStartDateStr, time.Local)
-		if tmpErr != nil {
-			err = tmpErr
-			return
-		}
-		//如果筛选时间晚于实际数据时间,那么就以筛选时间作为获取预测数据的时间
-		if filtrateStartDate.After(latestDate) {
-			startDate = filtrateStartDate.AddDate(0, 0, -1)
-		}
-	}
-
-	dataValue := lastDataValue
-	if predictEdbConf.RuleType == 2 {
-		dataValue = predictEdbConf.FixedValue
-	}
-	//获取后面的预测数据
-	dayList := getPredictEdbDayList(startDate, endDate, frequency)
-	predictEdbInfoData = make([]*data_manage.EdbDataList, 0)
-	for k, v := range dayList {
-		predictEdbInfoData = append(predictEdbInfoData, &data_manage.EdbDataList{
-			EdbDataId:     predictEdbConf.PredictEdbInfoId + 100000 + k,
-			EdbInfoId:     predictEdbConf.PredictEdbInfoId,
-			DataTime:      v.Format(utils.FormatDate),
-			Value:         dataValue,
-			DataTimestamp: v.UnixNano() / 1e6,
-		})
-	}
-	return
-}
-
 // GetChartPredictEdbInfoDataListByConfList 获取图表的预测指标的未来数据
-func GetChartPredictEdbInfoDataListByConfList(predictEdbConfList []data_manage.PredictEdbConfAndData, filtrateStartDateStr, latestDateStr, endDateStr, frequency string, realPredictEdbInfoData []*data_manage.EdbDataList) (predictEdbInfoData []*data_manage.EdbDataList, minValue, maxValue float64, err error, errMsg string) {
+func GetChartPredictEdbInfoDataListByConfList(predictEdbConfList []data_manage.PredictEdbConfAndData, filtrateStartDateStr, latestDateStr, endDateStr, frequency, dataDateType string, realPredictEdbInfoData []*data_manage.EdbDataList) (predictEdbInfoData []*data_manage.EdbDataList, minValue, maxValue float64, err error, errMsg string) {
 	endDate, err := time.ParseInLocation(utils.FormatDate, endDateStr, time.Local)
 	if err != nil {
 		return
@@ -688,7 +606,7 @@ func GetChartPredictEdbInfoDataListByConfList(predictEdbConfList []data_manage.P
 
 		var tmpMinValue, tmpMaxValue float64 // 当前预测结果中的最大/最小值
 
-		dayList := getPredictEdbDayList(startDate, dataEndTime, frequency)
+		dayList := getPredictEdbDayList(startDate, dataEndTime, frequency, dataDateType)
 		if len(dayList) <= 0 { // 如果未来没有日期的话,那么就退出当前循环,进入下一个循环
 			continue
 		}
@@ -900,13 +818,16 @@ func GetChartPredictEdbInfoDataListByConfList(predictEdbConfList []data_manage.P
 }
 
 // GetPredictEdbDayList 获取预测指标日期列表
-func getPredictEdbDayList(startDate, endDate time.Time, frequency string) (dayList []time.Time) {
+func getPredictEdbDayList(startDate, endDate time.Time, frequency, dataDateType string) (dayList []time.Time) {
 	//if !utils.InArrayByStr([]string{"日度", "周度", "月度"}, frequency)
+	if dataDateType == `` {
+		dataDateType = `交易日`
+	}
 	switch frequency {
 	case "日度":
 		for currDate := startDate.AddDate(0, 0, 1); currDate.Before(endDate) || currDate.Equal(endDate); currDate = currDate.AddDate(0, 0, 1) {
-			//周六、日排除
-			if currDate.Weekday() == time.Sunday || currDate.Weekday() == time.Saturday {
+			// 如果日期类型是交易日的时候,那么需要将周六、日排除
+			if dataDateType == `交易日` && (currDate.Weekday() == time.Sunday || currDate.Weekday() == time.Saturday) {
 				continue
 			}
 			dayList = append(dayList, currDate)
@@ -1056,7 +977,7 @@ func GetPredictDataListByPredictEdbInfo(edbInfo *data_manage.EdbInfo, startDate,
 		})
 	}
 	//var predictMinValue, predictMaxValue float64
-	predictDataList, _, _, err, _ = GetChartPredictEdbInfoDataListByConfList(predictEdbConfDataList, startDate, sourceEdbInfoItem.LatestDate, endDateStr, edbInfo.Frequency, allDataList)
+	predictDataList, _, _, err, _ = GetChartPredictEdbInfoDataListByConfList(predictEdbConfDataList, startDate, sourceEdbInfoItem.LatestDate, endDateStr, edbInfo.Frequency, edbInfo.DataDateType, allDataList)
 	if err != nil {
 		return
 	}

+ 4 - 4
services/elastic/elastic.go

@@ -574,8 +574,8 @@ func SearchEdbInfoDataBak(indexName, keywordStr string, from, size, filterSource
 				}
 				edbInfoItem := new(data_manage.EdbInfoList)
 				tmpErr = json.Unmarshal(itemJson, &edbInfoItem)
-				if err != nil {
-					fmt.Println("json.Unmarshal movieJson err:", err)
+				if tmpErr != nil {
+					fmt.Println("json.Unmarshal movieJson err:", tmpErr)
 					err = tmpErr
 					return
 				}
@@ -763,8 +763,8 @@ func searchEdbInfoData(indexName string, mustMap, mustNotMap []interface{}, shou
 				}
 				edbInfoItem := new(data_manage.EdbInfoList)
 				tmpErr = json.Unmarshal(itemJson, &edbInfoItem)
-				if err != nil {
-					fmt.Println("json.Unmarshal movieJson err:", err)
+				if tmpErr != nil {
+					fmt.Println("json.Unmarshal movieJson err:", tmpErr)
 					err = tmpErr
 					return
 				}