Explorar el Código

fix:计算指标,如果源指标的数据日期做过更改,那么原先生成该日期的数据需要删除

Roc hace 2 años
padre
commit
c4871f9a05
Se han modificado 1 ficheros con 12 adiciones y 5 borrados
  1. 12 5
      models/base_from_calculate.go

+ 12 - 5
models/base_from_calculate.go

@@ -429,24 +429,25 @@ func refreshAllCalculate(to orm.TxOrmer, edbInfoIdArr []*EdbInfo, edbInfoId, sou
 		return err
 	}
 	dataMap := make(map[string]string)
+
+	removeDateMap := make(map[string]string) //需要移除的日期
 	for _, v := range dataList {
 		dataMap[v.DataTime] = v.Value
+		removeDateMap[v.DataTime] = v.DataTime
 	}
 	edbInfoIdStr := strconv.Itoa(edbInfoId)
 	existDataMap := make(map[string]string)
-
-	removeDateList := make([]string, 0) //需要移除的日期
 	for sk, sv := range saveDataMap {
 		//fmt.Println(sk, sv)
 		formulaStr = strings.ToUpper(formulaStr)
 		formulaFormStr := ReplaceFormula(edbInfoIdArr, sv, formulaMap, formulaStr, edbInfoIdBytes)
 		//计算公式异常,那么就移除该指标
 		if formulaFormStr == `` {
-			removeDateList = append(removeDateList, sk)
+			//removeDateList = append(removeDateList, sk)
 			continue
 		}
 		//utils.FileLog.Info(fmt.Sprintf("formulaFormStr:%s", formulaFormStr))
-		fmt.Println(fmt.Sprintf("formulaFormStr:%s", formulaFormStr))
+		fmt.Println(fmt.Sprintf("%s:formulaFormStr:%s", sk, formulaFormStr))
 		expression := formula.NewExpression(formulaFormStr)
 		calResult, err := expression.Evaluate()
 		if err != nil {
@@ -466,6 +467,8 @@ func refreshAllCalculate(to orm.TxOrmer, edbInfoIdArr []*EdbInfo, edbInfoId, sou
 			return err
 		}
 
+		// 有计算出来值,那么就从待删除指标中移除
+		delete(removeDateMap, sk)
 		saveValue := decimal.NewFromFloat(calVal).RoundCeil(4).String() //utils.SubFloatToString(calVal, 4)
 		if existVal, ok := dataMap[sk]; !ok {
 			dataTime, _ := time.Parse(utils.FormatDate, sk)
@@ -500,7 +503,11 @@ func refreshAllCalculate(to orm.TxOrmer, edbInfoIdArr []*EdbInfo, edbInfoId, sou
 		}
 	}
 
-	if len(removeDateList) > 0 {
+	if len(removeDateMap) > 0 {
+		removeDateList := make([]string, 0) //需要移除的日期
+		for k := range removeDateMap {
+			removeDateList = append(removeDateList, k)
+		}
 		removeDateStr := strings.Join(removeDateList, `","`)
 		removeDateStr = `"` + removeDateStr + `"`
 		//如果拼接指标变更了,那么需要删除所有的指标数据