|
@@ -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
|
|
|
}
|