Quellcode durchsuchen

Merge branch 'feature/eta1.9.6_chart_series' into debug

# Conflicts:
#	models/data_manage/chart_info.go
xyxie vor 7 Monaten
Ursprung
Commit
f9e2622f00

+ 170 - 2
controllers/data_manage/chart_info_section.go

@@ -2,10 +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"
 )
 
@@ -107,7 +110,11 @@ func (this *ChartInfoController) PreviewSectionCombineChartInfo() {
 	}
 	chartInfo.ChartType = chartType
 	mappingList, err := data_manage.GetChartEdbMappingListByEdbInfoIdList(edbInfoIdArr)
-
+	if err != nil {
+		br.Msg = "获取图表,指标信息失败"
+		br.ErrMsg = "获取图表,指标信息失败,Err:" + err.Error()
+		return
+	}
 	// 获取图表中的指标数据
 	edbList, xEdbIdValue, yDataList, dataResp, err, errMsg := data.GetChartEdbData(0, chartType, "", "", "", mappingList, req.ExtraConfig, "")
 	if err != nil {
@@ -118,11 +125,48 @@ func (this *ChartInfoController) PreviewSectionCombineChartInfo() {
 		br.ErrMsg = "获取图表,指标信息失败,Err:" + err.Error()
 		return
 	}
+	// 指标权限
+	{
+
+		classifyMap := make(map[int]*data_manage.EdbClassify)
+
+		// 分类
+		{
+			classifyIdList := make([]int, 0)
+			for _, v := range edbList {
+				classifyIdList = append(classifyIdList, v.ClassifyId)
+			}
+			classifyList, tmpErr := data_manage.GetEdbClassifyByIdList(classifyIdList)
+			if tmpErr != nil {
+				br.Msg = "获取失败"
+				br.ErrMsg = "获取分类列表失败,Err:" + tmpErr.Error()
+				return
+			}
+			for _, v := range classifyList {
+				classifyMap[v.ClassifyId] = v
+			}
+		}
+		// 获取所有有权限的指标和分类
+		permissionEdbIdList, permissionClassifyIdList, err := data_manage_permission.GetUserEdbAndClassifyPermissionList(sysUser.AdminId, 0, 0)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取所有有权限的指标和分类失败,Err:" + err.Error()
+			return
+		}
+
+		for _, item := range edbList {
+			// 数据权限
+			if currClassify, ok := classifyMap[item.ClassifyId]; ok {
+				item.HaveOperaAuth = data_manage_permission.CheckEdbPermissionByPermissionIdList(item.IsJoinPermission, currClassify.IsJoinPermission, item.EdbInfoId, item.ClassifyId, permissionEdbIdList, permissionClassifyIdList)
+			}
+		}
+	}
 	warnEdbList := make([]string, 0)
 	for _, v := range edbList {
 		if v.IsNullData {
 			warnEdbList = append(warnEdbList, v.EdbName+"("+v.EdbCode+")")
 		}
+		v.HaveOperaAuth = true
 	}
 	if len(warnEdbList) > 0 {
 		chartInfo.WarnMsg = `图表引用指标异常,异常指标:` + strings.Join(warnEdbList, ",")
@@ -140,7 +184,7 @@ func (this *ChartInfoController) PreviewSectionCombineChartInfo() {
 	chartInfo.Button = data_manage.ChartViewButton{
 		IsEdit:    chartInfo.IsEdit,
 		IsEnChart: chartInfo.IsEnChart,
-		IsAdd:     chartInfo.IsAdd,
+		IsAdd:     chartInfo.IsEdit,
 		IsCopy:    true,
 		IsSetName: chartInfo.IsSetName,
 	}
@@ -156,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

@@ -2881,3 +2881,17 @@ func getThsHfEdbDataListMinAndMaxByMongo(source, subSource, edbInfoId int, start
 	maxData = result.MaxValue
 	return
 }
+
+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

@@ -3085,6 +3085,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",