Parcourir la source

区间计算异常值处理

xyxie il y a 8 mois
Parent
commit
d74edc04c2
2 fichiers modifiés avec 31 ajouts et 1 suppressions
  1. 15 1
      models/edb_data_calculate_qjjs.go
  2. 16 0
      utils/common.go

+ 15 - 1
models/edb_data_calculate_qjjs.go

@@ -491,7 +491,21 @@ func GetRangeAnalysisChartDataByEdbInfo(to orm.TxOrmer, fromEdbInfo *EdbInfo, ca
 		return
 	}
 	if calculateFormula.UnNormalDataDealType > 0 {
-		// todo 异常数据处理
+		switch calculateFormula.UnNormalDataDealType { //0:不处理,1:剔除,2替换
+		case 1:
+			dealDataList := make([]*EdbInfoSearchData, 0)
+			for _, v := range newDataList {
+				if !utils.CompareFloatByOpStrings(calculateFormula.UnNormalDataConf.Formula, v.Value, calculateFormula.UnNormalDataConf.Value) {
+					dealDataList = append(dealDataList, v)
+				}
+			}
+		case 2:
+			for i, v := range newDataList {
+				if utils.CompareFloatByOpStrings(calculateFormula.UnNormalDataConf.Formula, v.Value, calculateFormula.UnNormalDataConf.Value) {
+					newDataList[i].Value = calculateFormula.UnNormalDataConf.Value
+				}
+			}
+		}
 	}
 
 	if calculateFormula.DataConvertType > 0 {

+ 16 - 0
utils/common.go

@@ -1454,3 +1454,19 @@ func HandleSystemAppointDateT(currDate time.Time, appointDay, frequency string)
 
 	return
 }
+
+func CompareFloatByOpStrings(op string, a, b float64) bool {
+	switch op {
+	case "=":
+		return a == b
+	case ">":
+		return a > b
+	case ">=":
+		return a >= b
+	case "<=":
+		return a <= b
+	case "<":
+		return a < b
+	}
+	return false
+}