Browse Source

fix:刷新预测计算指标(N数值移动平均计算)时,需要移除不存在日期的数据

Roc 1 year ago
parent
commit
14ea674070
1 changed files with 24 additions and 0 deletions
  1. 24 0
      models/predict_edb_data_calculate_nszydbpjjs.go

+ 24 - 0
models/predict_edb_data_calculate_nszydbpjjs.go

@@ -230,8 +230,10 @@ func refreshAllPredictCalculateNszydpjjs(to orm.TxOrmer, edbInfoId, source, form
 	_, err = to.Raw(sql, edbInfoId).QueryRows(&existDataList)
 
 	existDataMap := make(map[string]*EdbData)
+	removeDataTimeMap := make(map[string]int) //需要移除的日期数据
 	for _, v := range existDataList {
 		existDataMap[v.DataTime] = v
+		removeDataTimeMap[v.DataTime] = 1
 	}
 
 	//计算来源数据
@@ -316,6 +318,9 @@ func refreshAllPredictCalculateNszydpjjs(to orm.TxOrmer, edbInfoId, source, form
 			}
 			existAddDataMap[av] = av
 		} else {
+			//校验待删除日期数据里面是否存在该元素,如果存在的话,那么移除该日期
+			delete(removeDataTimeMap, av)
+
 			existValDecimal, _ := decimal.NewFromString(existVal.Value)
 			existStr := existValDecimal.String()
 			fmt.Println(existStr, valStr, av)
@@ -329,6 +334,25 @@ func refreshAllPredictCalculateNszydpjjs(to orm.TxOrmer, edbInfoId, source, form
 			}
 		}
 	}
+
+	//删除已经不存在的指标数据(由于该指标当日的数据删除了)
+	{
+		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 {
+				fmt.Println("refreshAllPredictCalculateNszydpjjs add data ;delete Err", err.Error())
+				err = fmt.Errorf("删除不存在的指标数据失败,Err:" + err.Error())
+				return
+			}
+		}
+	}
+
 	if isAdd {
 		addSql = strings.TrimRight(addSql, ",")
 		//utils.FileLog.Info("addSql:" + addSql)