Browse Source

新增日期计算接口

xyxie 8 months ago
parent
commit
527c13fd18

+ 126 - 0
controllers/data_manage/chart_info_section.go

@@ -2,11 +2,13 @@ package data_manage
 
 import (
 	"encoding/json"
+	"errors"
 	"eta/eta_api/models"
 	"eta/eta_api/models/data_manage"
 	"eta/eta_api/services/data"
 	"eta/eta_api/services/data/data_manage_permission"
 	"eta/eta_api/utils"
+	"fmt"
 	"strings"
 )
 
@@ -198,3 +200,127 @@ func (this *ChartInfoController) PreviewSectionCombineChartInfo() {
 	br.Msg = "获取成功"
 	br.Data = resp
 }
+
+// PreviewSectionCombineChartInfo
+// @Title 图表-获取预览的截面组合图数据
+// @Description 图表-获取预览的截面组合图数据
+// @Param	request	body data_manage.ChartSectionDateConfItem true "type json string"
+// @Success 200 {object} data_manage.PreviewSectionCombineDateCalculateResp
+// @router /chart_info/section_combine/date_calculate [post]
+func (this *ChartInfoController) PreviewSectionCombineDateCalculate() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+	var req data_manage.PreviewSectionCombineDateCalculateReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+	//查询指标细信息
+	dataList := make([]*data_manage.EdbDataList, 0)
+	if req.EdbInfoId > 0 {
+		edbInfo, e := data_manage.GetEdbInfoById(req.EdbInfoId)
+		if e != nil {
+			br.Msg = "指标查询失败!"
+			br.ErrMsg = "指标查询失败,Err:" + e.Error()
+			return
+		}
+		startDateReal := ""
+		endDate := ""
+
+		switch edbInfo.EdbInfoType {
+		case 0:
+			dataList, err = data_manage.GetEdbDataList(edbInfo.Source, edbInfo.SubSource, edbInfo.EdbInfoId, startDateReal, endDate)
+		case 1:
+			_, dataList, _, _, err, _ = data.GetPredictDataListByPredictEdbInfoId(edbInfo.EdbInfoId, startDateReal, endDate, true)
+		default:
+			err = errors.New(fmt.Sprint("获取失败,指标类型异常", edbInfo.EdbInfoType))
+		}
+		if err != nil {
+			br.Msg = "指标数据查询失败!"
+			br.ErrMsg = "指标数据查询失败,Err:" + err.Error()
+			return
+		}
+	}
+	var findDate string
+	if req.DateConfType == 0 {
+		findDate, err = data.GetChartSectionSeriesDateByDateChange(req.EdbInfoId, dataList, req.DateChange, req.MoveForward)
+		if err != nil {
+			br.Msg = "指标数据查询失败!"
+			br.ErrMsg = "指标数据查询失败,Err:" + err.Error()
+			return
+		}
+	} else {
+		// 获取日期配置
+		dateConfListMap := make(map[string]*data_manage.ChartSectionDateConfItem)
+		dateConfEdbIds := make([]int, 0)
+		for _, v := range req.DateConfList {
+			if v.EdbInfoId > 0 {
+				dateConfEdbIds = append(dateConfEdbIds, v.EdbInfoId)
+			}
+			dateConfListMap[v.DateConfName] = v
+		}
+		dateConfItem, ok1 := dateConfListMap[req.DateConfName]
+		if !ok1 {
+			br.Msg = "引用日期配置不存在"
+			return
+		}
+		// todo 根据日期变换得到最终日期
+		edbDataListTmp := make([]*data_manage.EdbDataList, 0)
+		if dateConfItem.EdbInfoId > 0 {
+			dateConfItemeEdbInfo, e := data_manage.GetEdbInfoById(dateConfItem.EdbInfoId)
+			if e != nil {
+				br.Msg = "指标查询失败!"
+				br.ErrMsg = "指标查询失败,Err:" + e.Error()
+				return
+			}
+			startDateReal := ""
+			endDate := ""
+			switch dateConfItemeEdbInfo.EdbInfoType {
+			case 0:
+				edbDataListTmp, err = data_manage.GetEdbDataList(dateConfItemeEdbInfo.Source, dateConfItemeEdbInfo.SubSource, dateConfItemeEdbInfo.EdbInfoId, startDateReal, endDate)
+			case 1:
+				_, edbDataListTmp, _, _, err, _ = data.GetPredictDataListByPredictEdbInfoId(dateConfItemeEdbInfo.EdbInfoId, startDateReal, endDate, true)
+			default:
+				err = errors.New(fmt.Sprint("获取失败,指标类型异常", dateConfItemeEdbInfo.EdbInfoType))
+			}
+			if err != nil {
+				br.Msg = "指标数据查询失败!"
+				br.ErrMsg = "指标数据查询失败,Err:" + err.Error()
+				return
+			}
+			findDate, err = data.GetChartSectionSeriesDateByDateChange(dateConfItem.EdbInfoId, edbDataListTmp, dateConfItem.DateChange, dateConfItem.MoveForward)
+			if err != nil {
+				br.Msg = "指标数据查询失败!"
+				br.ErrMsg = fmt.Sprintf("指标%d的日期变换处理失败", dateConfItem.EdbInfoId)
+				return
+			}
+		}
+
+	}
+
+	if findDate == "" {
+		br.Msg = "日期为空!"
+		return
+	}
+	resp := &data_manage.PreviewSectionCombineDateCalculateResp{
+		Date: findDate,
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}

+ 14 - 0
models/data_manage/chart_info.go

@@ -2473,3 +2473,17 @@ type ChartTimeCombineExtraConf struct {
 type ChartTimeCombineDataResp struct {
 	IsHeap int `description:"是否堆积(1.堆积,0不堆积)"`
 }
+
+type PreviewSectionCombineDateCalculateResp struct {
+	Date string
+}
+
+type PreviewSectionCombineDateCalculateReq struct {
+	MoveForward  int    `description:"前移的期数"`
+	EdbInfoId    int    `description:"指标ID"`
+	Frequency    string `description:"频度"`
+	DateConfName string `description:"引用日期名称"` // 引用日期名称不能重复
+	DateChange   []*ChartSectionDateChange
+	DateConfList []*ChartSectionDateConfItem
+	DateType     int `description:"日期类型,0指标最新日期, 1引用日期"`
+}

+ 9 - 0
routers/commentsRouter.go

@@ -2500,6 +2500,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ChartInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ChartInfoController"],
+        beego.ControllerComments{
+            Method: "PreviewSectionCombineDateCalculate",
+            Router: `/chart_info/section_combine/date_calculate`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ChartInfoController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:ChartInfoController"],
         beego.ControllerComments{
             Method: "GetChartTypeList",