Browse Source

fix:修复N数值移动平均计算的多余日期bug

Roc 1 year ago
parent
commit
c5aa0fd387
1 changed files with 27 additions and 4 deletions
  1. 27 4
      models/edb_data_calculate_nszydbpjjs.go

+ 27 - 4
models/edb_data_calculate_nszydbpjjs.go

@@ -213,8 +213,10 @@ func refreshAllCalculateNszydpjjs(to orm.TxOrmer, edbInfoId, source, formulaInt
 	}
 
 	existDataMap := make(map[string]*EdbInfoSearchDataV1)
+	removeDataTimeMap := make(map[string]int) //需要移除的日期数据
 	for _, v := range existDataList {
 		existDataMap[v.DataTime] = v
+		removeDataTimeMap[v.DataTime] = 1
 	}
 
 	//计算来源数据
@@ -222,10 +224,10 @@ func refreshAllCalculateNszydpjjs(to orm.TxOrmer, edbInfoId, source, formulaInt
 	var fromPars []interface{}
 	fromCondition += " AND edb_info_id=? "
 	fromPars = append(fromPars, fromEdbInfo.EdbInfoId)
-	if startDate != `` {
-		fromCondition += " AND data_time>=? "
-		fromPars = append(fromPars, startDate)
-	}
+	//if startDate != `` {
+	//	fromCondition += " AND data_time>=? "
+	//	fromPars = append(fromPars, startDate)
+	//}
 
 	//fmt.Println("fromPars:", fromPars)
 	fromDataList, err := GetEdbDataListAllV1ByTo(to, fromCondition, fromPars, fromEdbInfo.Source, 0)
@@ -294,6 +296,9 @@ func refreshAllCalculateNszydpjjs(to orm.TxOrmer, edbInfoId, source, formulaInt
 			}
 			existAddDataMap[av] = av
 		} else {
+			//校验待删除日期数据里面是否存在该元素,如果存在的话,那么移除该日期
+			delete(removeDataTimeMap, av)
+
 			existValDecimal, err := decimal.NewFromString(existVal.Value)
 			existStr := existValDecimal.String()
 			fmt.Println(existStr, valStr, av)
@@ -307,6 +312,24 @@ func refreshAllCalculateNszydpjjs(to orm.TxOrmer, edbInfoId, source, formulaInt
 			}
 		}
 	}
+
+	//删除已经不存在的指标数据(由于该指标当日的数据删除了)
+	{
+		removeDateList := make([]string, 0)
+		for dateTime := range removeDataTimeMap {
+			removeDateList = append(removeDateList, dateTime)
+		}
+		removeNum := len(removeDateList)
+		if removeNum > 0 {
+			sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (`+utils.GetOrmInReplace(removeNum)+`) `, dataTableName)
+			_, err = to.Raw(sql, edbInfoId, removeDateList).Exec()
+			if err != nil {
+				err = fmt.Errorf("删除不存在的指标数据失败,Err:" + err.Error())
+				return
+			}
+		}
+	}
+
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		utils.FileLog.Info("addSql:" + addSql)