Преглед на файлове

指标运算,扩充占位符

xyxie преди 1 година
родител
ревизия
4388bd2d80
променени са 3 файла, в които са добавени 12 реда и са изтрити 2 реда
  1. 1 0
      controllers/base_from_calculate.go
  2. 3 1
      models/base_from_calculate.go
  3. 8 1
      utils/base_from_calculate.go

+ 1 - 0
controllers/base_from_calculate.go

@@ -315,6 +315,7 @@ func (this *CalculateController) Edit() {
 	}
 
 	//todo 校验空值类型,max、min空值类型
+	//todo req.EdbInfoIdArr根据tag排序,排成A,B,AB,这种格式
 
 	calculateFormula := req.CalculateFormula
 	calculateFormula = strings.Replace(calculateFormula, "(", "(", -1)

+ 3 - 1
models/base_from_calculate.go

@@ -553,7 +553,9 @@ func ReplaceFormula(edbInfoIdArr []*EdbInfo, valArr, valArrMax map[int]float64,
 		formulaStr = GetMaxMinEdbInfo(formulaStr)
 	}
 	replaceCount := 0
-	for dk, dv := range edbInfoIdArr {
+	for dk := len(edbInfoIdArr) - 1; dk >= 0; dk-- {
+		dv := edbInfoIdArr[dk]
+		//for dk, dv := range edbInfoIdArr {
 		var isReplace bool
 		formulaStr, isReplace = GetFormulaReplace(dk, dv.EdbInfoId, formulaStr, edbInfoIdBytes, formulaMap, valArr, valArrMax, maxDealFlag)
 		if isReplace {

+ 8 - 1
utils/base_from_calculate.go

@@ -23,7 +23,14 @@ func CheckFormula(formula string) map[string]string {
 	for i := 0; i < len(str); i++ {
 		byteInt := str[i]
 		if byteInt >= 65 && byteInt <= 90 {
-			byteStr := string(byteInt)
+			byteStr := string(byteInt) //获取计算公式中的占位符A,B, AA,AB
+			if i+1 < len(str) {
+				next := str[i+1]
+				if next >= 65 && next <= 90 {
+					byteStr += string(next)
+					i++
+				}
+			}
 			if _, ok := byteMap[byteStr]; !ok {
 				byteMap[byteStr] = byteStr
 			}