@@ -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)
@@ -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 {
@@ -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