|
@@ -199,12 +199,20 @@ func AddPredictEdbInfo(sourceEdbInfoId, classifyId int, edbName, dataDateType st
|
|
|
formulaStr += tmpEdbInfoId.FromTag + ","
|
|
|
edbInfoIdBytes = append(edbInfoIdBytes, tmpEdbInfoId.FromTag)
|
|
|
}
|
|
|
- formulaMap := utils.CheckFormula(formula)
|
|
|
- for _, formula := range formulaMap {
|
|
|
- if !strings.Contains(formulaStr, formula) {
|
|
|
- errMsg = "公式错误,请重新填写"
|
|
|
- err = errors.New(errMsg)
|
|
|
- return
|
|
|
+ formulaSlice, tErr := utils.CheckFormulaJson(formula)
|
|
|
+ if tErr != nil {
|
|
|
+ errMsg = "公式格式错误,请重新填写"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, fm := range formulaSlice {
|
|
|
+ formulaMap := utils.CheckFormula(fm)
|
|
|
+ for _, f := range formulaMap {
|
|
|
+ if !strings.Contains(formulaStr, f) {
|
|
|
+ errMsg = "公式错误,请重新填写"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -269,12 +277,17 @@ func AddPredictEdbInfo(sourceEdbInfoId, classifyId int, edbName, dataDateType st
|
|
|
}
|
|
|
trendsMappingList = append(trendsMappingList, tmpPredictEdbConfCalculateMapping)
|
|
|
}
|
|
|
- ok, _ := models.CheckFormula2(edbInfoList, formulaMap, formula, edbInfoIdBytes)
|
|
|
- if !ok {
|
|
|
- errMsg = "生成计算指标失败,请使用正确的计算公式"
|
|
|
- err = errors.New(errMsg)
|
|
|
- return
|
|
|
+ for _, f := range formulaSlice {
|
|
|
+ formulaMap := utils.CheckFormula(f)
|
|
|
+ //预先计算,判断公式是否正常
|
|
|
+ ok, _ := models.CheckFormula2(edbInfoList, formulaMap, f, edbInfoIdBytes)
|
|
|
+ if !ok {
|
|
|
+ errMsg = "生成计算指标失败,请使用正确的计算公式"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
calculateRuleMap[ruleIndex] = models.CalculateRule{
|
|
|
TrendsCalculateMappingList: trendsMappingList,
|
|
|
EdbInfoList: edbInfoList,
|
|
@@ -569,12 +582,21 @@ func EditPredictEdbInfo(edbInfoId, classifyId int, edbName, dataDateType string,
|
|
|
formulaStr += tmpEdbInfoId.FromTag + ","
|
|
|
edbInfoIdBytes = append(edbInfoIdBytes, tmpEdbInfoId.FromTag)
|
|
|
}
|
|
|
- formulaMap := utils.CheckFormula(formula)
|
|
|
- for _, formula := range formulaMap {
|
|
|
- if !strings.Contains(formulaStr, formula) {
|
|
|
- errMsg = "公式错误,请重新填写"
|
|
|
- err = errors.New(errMsg)
|
|
|
- return
|
|
|
+
|
|
|
+ formulaSlice, tErr := utils.CheckFormulaJson(formula)
|
|
|
+ if tErr != nil {
|
|
|
+ errMsg = "公式格式错误,请重新填写"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, fm := range formulaSlice {
|
|
|
+ formulaMap := utils.CheckFormula(fm)
|
|
|
+ for _, f := range formulaMap {
|
|
|
+ if !strings.Contains(formulaStr, f) {
|
|
|
+ errMsg = "公式错误,请重新填写"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -639,13 +661,17 @@ func EditPredictEdbInfo(edbInfoId, classifyId int, edbName, dataDateType string,
|
|
|
}
|
|
|
trendsMappingList = append(trendsMappingList, tmpPredictEdbConfCalculateMapping)
|
|
|
}
|
|
|
- ok, _ := models.CheckFormula2(edbInfoList, formulaMap, formula, edbInfoIdBytes)
|
|
|
- if !ok {
|
|
|
- errMsg = "生成计算指标失败,请使用正确的计算公式"
|
|
|
- err = errors.New(errMsg)
|
|
|
- return
|
|
|
- }
|
|
|
|
|
|
+ for _, f := range formulaSlice {
|
|
|
+ formulaMap := utils.CheckFormula(f)
|
|
|
+ //预先计算,判断公式是否正常
|
|
|
+ ok, _ := models.CheckFormula2(edbInfoList, formulaMap, f, edbInfoIdBytes)
|
|
|
+ if !ok {
|
|
|
+ errMsg = "生成计算指标失败,请使用正确的计算公式"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
calculateRuleMap[ruleIndex] = models.CalculateRule{
|
|
|
TrendsCalculateMappingList: trendsMappingList,
|
|
|
EdbInfoList: edbInfoList,
|
|
@@ -873,19 +899,29 @@ func RefreshPredictEdbInfo(edbInfoId int) (edbInfo *models.EdbInfo, err error, e
|
|
|
formulaStr += tmpEdbInfoId.FromTag + ","
|
|
|
edbInfoIdBytes = append(edbInfoIdBytes, tmpEdbInfoId.FromTag)
|
|
|
}
|
|
|
- formulaMap := utils.CheckFormula(formula)
|
|
|
- for _, formula := range formulaMap {
|
|
|
- if !strings.Contains(formulaStr, formula) {
|
|
|
- errMsg = "公式错误,请重新填写"
|
|
|
- return
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
- ok, _ := models.CheckFormula2(edbInfoList, formulaMap, formula, edbInfoIdBytes)
|
|
|
- if !ok {
|
|
|
- errMsg = "生成计算指标失败,请使用正确的计算公式"
|
|
|
+ formulaSlice, tErr := utils.CheckFormulaJson(formula)
|
|
|
+ if tErr != nil {
|
|
|
+ errMsg = "公式格式错误,请重新填写"
|
|
|
+ err = errors.New(errMsg)
|
|
|
return
|
|
|
}
|
|
|
+ for _, fm := range formulaSlice {
|
|
|
+ formulaMap := utils.CheckFormula(fm)
|
|
|
+ for _, f := range formulaMap {
|
|
|
+ if !strings.Contains(formulaStr, f) {
|
|
|
+ errMsg = "公式错误,请重新填写"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //预先计算,判断公式是否正常
|
|
|
+ ok, _ := models.CheckFormula2(edbInfoList, formulaMap, fm, edbInfoIdBytes)
|
|
|
+ if !ok {
|
|
|
+ errMsg = "生成计算指标失败,请使用正确的计算公式"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
rule := models.CalculateRule{
|
|
|
EdbInfoId: v.PredictEdbInfoId,
|