Browse Source

残差分析-预览

gmy 4 months ago
parent
commit
2a69c0418f

+ 2 - 1
controllers/residual_analysis/residual_analysis.go

@@ -175,7 +175,7 @@ func (this *ResidualAnalysisController) SaveResidualAnalysisConfig() {
 		return
 	}
 
-	err = residual_analysis_service.SaveResidualAnalysisConfig(req, sysUser)
+	configId, err := residual_analysis_service.SaveResidualAnalysisConfig(req, sysUser)
 	if err != nil {
 		br.Ret = 408
 		br.Msg = "保存失败"
@@ -186,6 +186,7 @@ func (this *ResidualAnalysisController) SaveResidualAnalysisConfig() {
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "添加成功"
+	br.Data = configId
 }
 
 // ResidualAnalysisDetail

+ 2 - 0
models/residual_analysis_model/calculate_residual_analysis_config.go

@@ -115,6 +115,8 @@ type ResidualAnalysisChartEdbInfoMapping struct {
 }
 
 type ResidualAnalysisIndexSaveReq struct {
+	EdbInfoIdA   int                       `description:"指标A"`
+	EdbInfoIdB   int                       `description:"指标B"`
 	Source       int                       `description:"99-映射残差 100-拟合残差"`
 	EdbCode      string                    `description:"指标编码"`
 	EdbName      string                    `description:"指标名称"`

+ 71 - 25
services/residual_analysis_service/residual_analysis_service.go

@@ -397,6 +397,18 @@ func SaveResidualAnalysis(req residual_analysis_model.ResidualAnalysisIndexSaveR
 		return fmt.Errorf("分类不存在", nil)
 	}
 
+	// 校验名称是否重复
+	var condition string
+	var pars []interface{}
+
+	condition += " and source = ? AND edb_name=?"
+	pars = append(pars, req.Source, req.EdbName)
+
+	edbInfoByCondition, err := data_manage.GetEdbInfoByCondition(condition, pars)
+	if err != nil {
+		return err
+	}
+
 	// 获取指标数据最大值 最小值 最后更新时间 最后更新时间对应的值
 	var indexMax, indexMin, indexLatestValue float64
 	var indexLatestDate string
@@ -442,6 +454,10 @@ func SaveResidualAnalysis(req residual_analysis_model.ResidualAnalysisIndexSaveR
 		edbInfoId = int64(edbInfo.EdbInfoId)
 		edbCode = edbInfo.EdbCode
 
+		if edbInfoByCondition.EdbInfoId != edbInfo.EdbInfoId {
+			return fmt.Errorf("指标名称重复", nil)
+		}
+
 		// 须补充更新指标最大值,最小值,数据最新时间,数据最新值
 		edbInfo.MaxValue = indexMax
 		edbInfo.MinValue = indexMin
@@ -458,6 +474,10 @@ func SaveResidualAnalysis(req residual_analysis_model.ResidualAnalysisIndexSaveR
 			return fmt.Errorf("删除指标数据失败", nil)
 		}
 	} else {
+		if edbInfoByCondition != nil {
+			return fmt.Errorf("指标名称重复", nil)
+		}
+
 		// 新增指标
 		edbCode, err = utils.GenerateEdbCode(1, "")
 		if err != nil {
@@ -467,17 +487,21 @@ func SaveResidualAnalysis(req residual_analysis_model.ResidualAnalysisIndexSaveR
 		timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
 
 		edbInfoId, err = data_manage.AddEdbInfo(&data_manage.EdbInfo{
-			EdbCode:    edbCode,
-			UniqueCode: utils.MD5(utils.CHART_PREFIX + "_" + timestamp),
-			EdbName:    req.EdbName,
-			EdbNameEn:  req.EdbNameEn,
-			ClassifyId: req.ClassifyId,
-			EdbType:    req.EdbType,
-			Unit:       req.Unit,
-			UnitEn:     req.UnitEn,
-			Frequency:  req.Frequency,
-			Source:     req.Source,
-			SourceName: "残差分析",
+			EdbCode:         edbCode,
+			UniqueCode:      utils.MD5(utils.CHART_PREFIX + "_" + timestamp),
+			EdbName:         req.EdbName,
+			EdbNameEn:       req.EdbNameEn,
+			ClassifyId:      req.ClassifyId,
+			EdbType:         req.EdbType,
+			Unit:            req.Unit,
+			UnitEn:          req.UnitEn,
+			Frequency:       req.Frequency,
+			Source:          req.Source,
+			SourceName:      "残差分析",
+			SysUserRealName: sysUser.RealName,
+			SysUserId:       sysUser.AdminId,
+			CreateTime:      time.Now(),
+			ModifyTime:      time.Now(),
 		})
 		if err != nil {
 			return err
@@ -500,15 +524,13 @@ func SaveResidualAnalysis(req residual_analysis_model.ResidualAnalysisIndexSaveR
 	if err != nil {
 		return err
 	}
-	flag := true
+
+	var indexMap map[int64]residual_analysis_model.CalculateResidualAnalysisConfigMapping
 	for _, mapping := range mappingList {
-		if mapping.EdbInfoId == edbInfoId {
-			flag = false
-			break
-		}
+		indexMap[mapping.EdbInfoId] = mapping
 	}
 
-	if flag {
+	if _, ok := indexMap[edbInfoId]; !ok {
 		_, err = residual_analysis_model.SaveConfigMapping(residual_analysis_model.CalculateResidualAnalysisConfigMapping{
 			CalculateResidualAnalysisConfigId: req.ConfigId,
 			EdbInfoId:                         edbInfoId,
@@ -520,6 +542,30 @@ func SaveResidualAnalysis(req residual_analysis_model.ResidualAnalysisIndexSaveR
 			return err
 		}
 	}
+	if _, ok := indexMap[int64(req.EdbInfoIdA)]; !ok {
+		_, err = residual_analysis_model.SaveConfigMapping(residual_analysis_model.CalculateResidualAnalysisConfigMapping{
+			CalculateResidualAnalysisConfigId: req.ConfigId,
+			EdbInfoId:                         int64(req.EdbInfoIdA),
+			ResidualType:                      req.ResidualType,
+			CreateTime:                        time.Now(),
+			ModifyTime:                        time.Now(),
+		})
+		if err != nil {
+			return err
+		}
+	}
+	if _, ok := indexMap[int64(req.EdbInfoIdB)]; !ok {
+		_, err = residual_analysis_model.SaveConfigMapping(residual_analysis_model.CalculateResidualAnalysisConfigMapping{
+			CalculateResidualAnalysisConfigId: req.ConfigId,
+			EdbInfoId:                         int64(req.EdbInfoIdA),
+			ResidualType:                      req.ResidualType,
+			CreateTime:                        time.Now(),
+			ModifyTime:                        time.Now(),
+		})
+		if err != nil {
+			return err
+		}
+	}
 
 	return nil
 }
@@ -580,7 +626,7 @@ func ResidualAnalysisDetail(edbInfoId int) (residual_analysis_model.ResidualAnal
 	return resp, nil
 }
 
-func SaveResidualAnalysisConfig(req residual_analysis_model.ResidualAnalysisReq, sysUser *system.Admin) error {
+func SaveResidualAnalysisConfig(req residual_analysis_model.ResidualAnalysisReq, sysUser *system.Admin) (int64, error) {
 
 	config := residual_analysis_model.ResidualAnalysisConfigVo{
 		DateType:         req.DateType,
@@ -603,7 +649,7 @@ func SaveResidualAnalysisConfig(req residual_analysis_model.ResidualAnalysisReq,
 	// 转换为json格式
 	configJson, err := json.Marshal(config)
 	if err != nil {
-		return err
+		return 0, err
 	}
 
 	var condition string
@@ -614,18 +660,18 @@ func SaveResidualAnalysisConfig(req residual_analysis_model.ResidualAnalysisReq,
 		pars = append(pars, req.EdbInfoId)
 		configMappings, err := residual_analysis_model.GetConfigMappingListByCondition(condition, pars)
 		if err != nil {
-			return err
+			return 0, err
 		}
 		if len(configMappings) > 0 {
 			mapping := configMappings[0]
 			configInfo, err := residual_analysis_model.GetResidualAnalysisConfigById(mapping.CalculateResidualAnalysisConfigId)
 			if err != nil {
-				return err
+				return 0, err
 			}
 			configInfo.Config = string(configJson)
 			err = residual_analysis_model.UpdateResidualAnalysisConfig(configInfo)
 			if err != nil {
-				return err
+				return 0, err
 			}
 		}
 	}
@@ -637,10 +683,10 @@ func SaveResidualAnalysisConfig(req residual_analysis_model.ResidualAnalysisReq,
 		ModifyTime: time.Now(),
 	}
 
-	_, err = residual_analysis_model.SaveResidualAnalysisConfig(analysisConfig)
+	configId, err := residual_analysis_model.SaveResidualAnalysisConfig(analysisConfig)
 	if err != nil {
-		return err
+		return 0, err
 	}
 
-	return nil
+	return configId, nil
 }