|
@@ -5,6 +5,7 @@ import (
|
|
|
"eta/eta_api/controllers"
|
|
|
"eta/eta_api/models"
|
|
|
"eta/eta_api/models/data_manage"
|
|
|
+ "eta/eta_api/models/data_manage/request"
|
|
|
"eta/eta_api/models/system"
|
|
|
"eta/eta_api/services/data"
|
|
|
"eta/eta_api/services/data/data_manage_permission"
|
|
@@ -1275,3 +1276,230 @@ func (this *RangeChartChartInfoController) Refresh() {
|
|
|
br.Success = true
|
|
|
br.Msg = "刷新成功"
|
|
|
}
|
|
|
+
|
|
|
+// MultipleGraphConfigSaveEdb
|
|
|
+// @Title 保存指标接口
|
|
|
+// @Description 保存指标接口
|
|
|
+// @Param request body request.SaveMultipleGraphEdbReq true "type json string"
|
|
|
+// @Success Ret=200 返回指标id
|
|
|
+// @router /edb/save [post]
|
|
|
+func (this *RangeChartChartInfoController) MultipleGraphConfigSaveEdb() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ this.Data["json"] = br
|
|
|
+ this.ServeJSON()
|
|
|
+ }()
|
|
|
+
|
|
|
+ sysUser := this.SysUser
|
|
|
+ if sysUser == nil {
|
|
|
+ br.Msg = "请登录"
|
|
|
+ br.ErrMsg = "请登录,SysUser Is Empty"
|
|
|
+ br.Ret = 408
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ var req data_manage.SaveChartRangeAnalysisEdbReq
|
|
|
+ err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "参数解析异常!"
|
|
|
+ br.ErrMsg = "参数解析失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ cacheKey := "CACHE_CHART_EDB_INFO_ADD_" + strconv.Itoa(sysUser.AdminId)
|
|
|
+ if !utils.Rc.SetNX(cacheKey, 1, 30*time.Second) {
|
|
|
+ br.Msg = "系统处理中,请稍后重试!"
|
|
|
+ br.ErrMsg = "系统处理中,请稍后重试!" + sysUser.RealName + ";data:" + string(this.Ctx.Input.RequestBody)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ defer func() {
|
|
|
+ _ = utils.Rc.Delete(cacheKey)
|
|
|
+ }()
|
|
|
+ edbInfoIds := make([]int, 0)
|
|
|
+ for _, v := range req.EdbInfoList {
|
|
|
+ edbInfoIds = append(edbInfoIds, v.EdbInfoId)
|
|
|
+ }
|
|
|
+ mappingList, err := data_manage.GetChartEdbMappingListByEdbInfoIdList(edbInfoIds)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "获取失败"
|
|
|
+ br.ErrMsg = "获取图表,指标信息失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ edbInfoMap := make(map[int]*data_manage.ChartEdbInfoMapping, 0)
|
|
|
+ for _, v := range mappingList {
|
|
|
+ edbInfoMap[v.EdbInfoId] = v
|
|
|
+ }
|
|
|
+
|
|
|
+ for _, v := range req.EdbInfoList {
|
|
|
+ if _, ok := edbInfoMap[v.EdbInfoId]; !ok {
|
|
|
+ br.Msg = "指标信息不存在"
|
|
|
+ br.ErrMsg = "指标信息不存在,EdbInfoId:" + strconv.Itoa(v.EdbInfoId)
|
|
|
+ br.IsSendEmail = false
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // todo 校验配置合法性
|
|
|
+
|
|
|
+ multipleGraphConfigEdbMapping, err := data_manage.GetMultipleGraphConfigEdbMappingByIdAndSource(req.MultipleGraphConfigId, 10)
|
|
|
+ if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
+ br.Msg = `保存失败`
|
|
|
+ br.ErrMsg = "获取配置与图表的关联关系失败,ERR:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ err = nil
|
|
|
+ var isAdd bool
|
|
|
+ var edbInfoId int
|
|
|
+ if multipleGraphConfigEdbMapping == nil {
|
|
|
+ isAdd = true
|
|
|
+ } else {
|
|
|
+ edbInfo, err := data_manage.GetEdbInfoById(multipleGraphConfigEdbMapping.EdbInfoId)
|
|
|
+ if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
+ br.Msg = `保存失败`
|
|
|
+ br.ErrMsg = "获取图表信息失败,ERR:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 说明指标还在,没有被删除
|
|
|
+ if edbInfo != nil && !req.IsSaveAs {
|
|
|
+ edbInfoId = multipleGraphConfigEdbMapping.EdbInfoId
|
|
|
+ req.EdbName = edbInfo.EdbName
|
|
|
+ req.ClassifyId = edbInfo.ClassifyId
|
|
|
+ req.Frequency = edbInfo.Frequency
|
|
|
+ req.Unit = edbInfo.Unit
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 关联指标
|
|
|
+ edbInfoIdArr := []data_manage.EdbInfoFromTag{
|
|
|
+ {
|
|
|
+ EdbInfoId: edbInfoMappingA.EdbInfoId,
|
|
|
+ FromTag: "A",
|
|
|
+ MoveValue: 0,
|
|
|
+ }, {
|
|
|
+ EdbInfoId: edbInfoMappingB.EdbInfoId,
|
|
|
+ FromTag: "B",
|
|
|
+ MoveValue: 0,
|
|
|
+ },
|
|
|
+ }
|
|
|
+
|
|
|
+ calculateFormula := request.EdbCalculateFormula{
|
|
|
+ BaseCalculateValue: correlationConf.CalculateValue,
|
|
|
+ BaseCalculateUnit: correlationConf.CalculateUnit,
|
|
|
+ LeadValue: rollingCorrelation.LeadValue,
|
|
|
+ LeadUnit: rollingCorrelation.LeadUnit,
|
|
|
+ CalculateValue: rollingCorrelation.CalculateValue,
|
|
|
+ CalculateUnit: rollingCorrelation.CalculateUnit,
|
|
|
+ }
|
|
|
+ calculateFormulaByte, err := json.Marshal(calculateFormula)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "参数解析异常!"
|
|
|
+ br.ErrMsg = "参数解析失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ var respItem *data.AddPredictEdbDataResponse
|
|
|
+ if edbInfoId <= 0 || req.IsSaveAs {
|
|
|
+ req2 := &data_manage.EdbInfoCalculateBatchSaveReqByEdbLib{
|
|
|
+ AdminId: sysUser.AdminId,
|
|
|
+ AdminName: sysUser.RealName,
|
|
|
+ EdbName: req.EdbName,
|
|
|
+ Frequency: req.Frequency,
|
|
|
+ Unit: req.Unit,
|
|
|
+ ClassifyId: req.ClassifyId,
|
|
|
+ Formula: string(calculateFormulaByte),
|
|
|
+ Source: utils.DATA_SOURCE_CALCULATE_CORRELATION,
|
|
|
+ EdbInfoIdArr: edbInfoIdArr,
|
|
|
+ Calendar: `公历`,
|
|
|
+ }
|
|
|
+
|
|
|
+ // 调用指标库去添加
|
|
|
+ reqJson, err := json.Marshal(req2)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "参数解析异常!"
|
|
|
+ br.ErrMsg = "参数解析失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ respItem, err = data.BatchSaveEdbCalculateData(string(reqJson), this.Lang)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "新增失败"
|
|
|
+ br.ErrMsg = "新增失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ req2 := &data_manage.EdbInfoCalculateBatchEditReqByEdbLib{
|
|
|
+ EdbInfoId: edbInfoId,
|
|
|
+ EdbName: req.EdbName,
|
|
|
+ Frequency: req.Frequency,
|
|
|
+ Unit: req.Unit,
|
|
|
+ ClassifyId: req.ClassifyId,
|
|
|
+ Formula: string(calculateFormulaByte),
|
|
|
+ Source: utils.DATA_SOURCE_CALCULATE_CORRELATION,
|
|
|
+ EdbInfoIdArr: edbInfoIdArr,
|
|
|
+ Calendar: `公历`,
|
|
|
+ }
|
|
|
+
|
|
|
+ // 调用指标库去更新
|
|
|
+ reqJson, err := json.Marshal(req2)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "参数解析异常!"
|
|
|
+ br.ErrMsg = "参数解析失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ respItem, err = data.BatchEditEdbCalculateData(string(reqJson), this.Lang)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "编辑失败"
|
|
|
+ br.ErrMsg = "编辑失败,Err:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if respItem == nil {
|
|
|
+ br.Msg = "保存失败"
|
|
|
+ br.ErrMsg = "保存失败"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if respItem.Ret != 200 {
|
|
|
+ br.Msg = respItem.Msg
|
|
|
+ br.ErrMsg = respItem.ErrMsg
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ resp := respItem.Data
|
|
|
+
|
|
|
+ //添加es
|
|
|
+ data.AddOrEditEdbInfoToEs(resp.EdbInfoId)
|
|
|
+
|
|
|
+ // 如果不是另存为的话,那么需要建立配置与指标的关系
|
|
|
+ if !req.IsSaveAs {
|
|
|
+ // 如果指标没有建立关联关系,那么就需要添加关系
|
|
|
+ if isAdd {
|
|
|
+ multipleGraphConfigEdbMapping = &data_manage.MultipleGraphConfigEdbMapping{
|
|
|
+ //Id: 0,
|
|
|
+ MultipleGraphConfigId: req.MultipleGraphConfigId,
|
|
|
+ EdbInfoId: resp.EdbInfoId,
|
|
|
+ Source: req.Source,
|
|
|
+ ModifyTime: time.Now(),
|
|
|
+ CreateTime: time.Now(),
|
|
|
+ }
|
|
|
+ err = data_manage.AddMultipleGraphConfigEdbMapping(multipleGraphConfigEdbMapping)
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "保存失败"
|
|
|
+ br.ErrMsg = "保存配置与指标的关联关系失败,ERR:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ } else if multipleGraphConfigEdbMapping != nil {
|
|
|
+ multipleGraphConfigEdbMapping.EdbInfoId = resp.EdbInfoId
|
|
|
+ multipleGraphConfigEdbMapping.ModifyTime = time.Now()
|
|
|
+ err = multipleGraphConfigEdbMapping.Update([]string{"EdbInfoId", "ModifyTime"})
|
|
|
+ if err != nil {
|
|
|
+ br.Msg = "保存失败"
|
|
|
+ br.ErrMsg = "保存配置与指标的关联关系失败,ERR:" + err.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "保存成功"
|
|
|
+ br.Data = resp
|
|
|
+ br.IsAddLog = true
|
|
|
+}
|