Selaa lähdekoodia

fix:降频调整为获取周五的数据,同时移除不存在的数据

Roc 11 kuukautta sitten
vanhempi
commit
fa34f8b3e5
1 muutettua tiedostoa jossa 33 lisäystä ja 4 poistoa
  1. 33 4
      models/edb_data_calculate_jp.go

+ 33 - 4
models/edb_data_calculate_jp.go

@@ -263,16 +263,20 @@ func refreshAllCalculateJp(to orm.TxOrmer, edbInfoId, source, subSource int, fro
 	}
 	fmt.Println("source:", source)
 
-	//获取降频指标所有数据
+	// 获取已经入库的降频指标所有数据
 	existDataList, err := GetAllEdbDataListByTo(to, edbInfoId, source, subSource)
 	if err != nil {
 		return
 	}
 	//计算指标的map
-	existDataMap := make(map[string]*EdbData, 0)
+	existDataMap := make(map[string]*EdbData)
+
+	// 已经入库的日期map
+	existDelDateMap := make(map[string]string)
 	//existDataMap := make(map[string]string, 0)
 	for _, v := range existDataList {
 		existDataMap[v.DataTime] = v
+		existDelDateMap[v.DataTime] = v.DataTime
 	}
 
 	tableName := GetEdbDataTableName(utils.DATA_SOURCE_CALCULATE_JP, subSource)
@@ -379,8 +383,10 @@ func refreshAllCalculateJp(to orm.TxOrmer, edbInfoId, source, subSource int, fro
 			}
 		}
 
+		tmpStartDataTimeStr := tmpStartDataTime.Format(utils.FormatDate)
+
 		// 判断降频指标是否存在数据
-		if existData, ok := existDataMap[tmpStartDataTime.Format(utils.FormatDate)]; ok {
+		if existData, ok := existDataMap[tmpStartDataTimeStr]; ok {
 			// 处理降频数据的值
 			existValStr := existData.Value
 			existValDeci, tmpErr := decimal.NewFromString(existValStr)
@@ -388,6 +394,7 @@ func refreshAllCalculateJp(to orm.TxOrmer, edbInfoId, source, subSource int, fro
 				err = tmpErr
 				return
 			}
+
 			existVal, _ := existValDeci.Round(4).Float64()
 			// 判断降频数据的值 与 当前计算出来的结果, 如果两个数据结果不相等的话,那么就修改咯
 			if existVal != currVal {
@@ -396,12 +403,18 @@ func refreshAllCalculateJp(to orm.TxOrmer, edbInfoId, source, subSource int, fro
 					return err
 				}
 			}
+
+			// 移除待删除的日期
+			delete(existDelDateMap, tmpStartDataTimeStr)
 		} else {
 			// 直接入库
 			timestamp := tmpStartDataTime.UnixNano() / 1e6
 			timestampStr := fmt.Sprintf("%d", timestamp)
-			addSql += GetAddSql(edbInfoIdStr, edbCode, tmpStartDataTime.Format(utils.FormatDate), timestampStr, fmt.Sprint(currVal))
+			addSql += GetAddSql(edbInfoIdStr, edbCode, tmpStartDataTimeStr, timestampStr, fmt.Sprint(currVal))
 			isAdd = true
+
+			// 移除待删除的日期
+			delete(existDelDateMap, tmpStartDataTimeStr)
 		}
 
 		// 一轮结束后,数据清空
@@ -462,5 +475,21 @@ func refreshAllCalculateJp(to orm.TxOrmer, edbInfoId, source, subSource int, fro
 		_, err = to.Raw(addSql).Exec()
 	}
 
+	// 移除不存在的日期数据
+	if len(existDelDateMap) > 0 {
+		removeDateList := make([]string, 0) //需要移除的日期
+		for k := range existDelDateMap {
+			removeDateList = append(removeDateList, k)
+		}
+		removeDateStr := strings.Join(removeDateList, `","`)
+		removeDateStr = `"` + removeDateStr + `"`
+		sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (%s) `, tableName, removeDateStr)
+		_, err = to.Raw(sql, edbInfoId).Exec()
+		if err != nil {
+			err = fmt.Errorf("删除年化指标数据失败,Err:" + err.Error())
+			return
+		}
+	}
+
 	return
 }