|
@@ -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
|
|
|
}
|