|
@@ -302,7 +302,7 @@ func SavePredictCalculateLjztbpj(req *EdbInfoCalculateBatchSaveReq, firstEdbInfo
|
|
|
}
|
|
|
|
|
|
// 添加数据
|
|
|
- latestDateStr, latestValue, err = refreshAllPredictCalculateLjztbpj(to, edbInfo, firstEdbInfo, existItemB)
|
|
|
+ latestDateStr, latestValue, err = refreshAllPredictCalculateLjztbpj(to, edbInfo, firstEdbInfo, secondEdbInfo, existItemB)
|
|
|
|
|
|
return
|
|
|
}
|
|
@@ -355,13 +355,19 @@ func RefreshAllPredictCalculateLjztbpj(edbInfo *EdbInfo) (latestDateStr string,
|
|
|
err = fmt.Errorf("GetEdbInfoById Err:" + err.Error())
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+ secondEdbInfo, err := GetEdbInfoById(existItemB.FromEdbInfoId)
|
|
|
+ if err != nil {
|
|
|
+ err = fmt.Errorf("GetEdbInfoById Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
// 刷新数据
|
|
|
- latestDateStr, latestValue, err = refreshAllPredictCalculateLjztbpj(to, edbInfo, fromEdbInfo, existItemB)
|
|
|
+ latestDateStr, latestValue, err = refreshAllPredictCalculateLjztbpj(to, edbInfo, fromEdbInfo, secondEdbInfo, existItemB)
|
|
|
return
|
|
|
}
|
|
|
|
|
|
// refreshAllPredictCalculateLjztbpj 刷新所有 累计值同比拼接 数据
|
|
|
-func refreshAllPredictCalculateLjztbpj(to orm.TxOrmer, edbInfo, firstEdbInfo *EdbInfo, existItemB *EdbInfoCalculateMapping) (latestDateStr string, latestValue float64, err error) {
|
|
|
+func refreshAllPredictCalculateLjztbpj(to orm.TxOrmer, edbInfo, firstEdbInfo, secondEdbInfo *EdbInfo, existItemB *EdbInfoCalculateMapping) (latestDateStr string, latestValue float64, err error) {
|
|
|
//根据指标id获取全部的数据
|
|
|
var dataList []*EdbDataPredictCalculateLjztbpj
|
|
|
sql := ` SELECT * FROM edb_data_predict_calculate_ljztbpj WHERE edb_info_id=? ORDER BY data_time DESC `
|
|
@@ -370,6 +376,11 @@ func refreshAllPredictCalculateLjztbpj(to orm.TxOrmer, edbInfo, firstEdbInfo *Ed
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+ if firstEdbInfo.LatestDate <= secondEdbInfo.LatestDate {
|
|
|
+ latestDateStr = firstEdbInfo.LatestDate
|
|
|
+ } else {
|
|
|
+ latestDateStr = secondEdbInfo.LatestDate
|
|
|
+ }
|
|
|
//待拼接指标map
|
|
|
pjDataMap := make(map[string]float64) //需要入库的数据
|
|
|
nowEdbDataMap := make(map[string]float64) //当前指标的数据(已经在库里了,不需要重新)
|
|
@@ -405,7 +416,7 @@ func refreshAllPredictCalculateLjztbpj(to orm.TxOrmer, edbInfo, firstEdbInfo *Ed
|
|
|
if err != nil {
|
|
|
return
|
|
|
}
|
|
|
- latestDateStr = firstEdbInfo.LatestDate
|
|
|
+
|
|
|
for _, v := range firstDataList {
|
|
|
if v.DataTime > startCalculationDate.Format(utils.FormatDate) {
|
|
|
continue
|
|
@@ -490,7 +501,7 @@ func refreshAllPredictCalculateLjztbpj(to orm.TxOrmer, edbInfo, firstEdbInfo *Ed
|
|
|
tbzDataValue := tbzEdbDataMap[v] //同比值
|
|
|
currValue := lastYearEdbDataValue * (1 + tbzDataValue/100)
|
|
|
currValue, _ = decimal.NewFromFloat(currValue).Truncate(4).Float64() //保留4位小数
|
|
|
- if firstEdbInfo.LatestDate == pjDataTime.Format(utils.FormatDate) {
|
|
|
+ if latestDateStr == pjDataTime.Format(utils.FormatDate) {
|
|
|
latestValue = currValue
|
|
|
}
|
|
|
//如果计算出来的值与库里面的值不匹配,那么就去修改该值
|
|
@@ -540,7 +551,7 @@ func refreshAllPredictCalculateLjztbpj(to orm.TxOrmer, edbInfo, firstEdbInfo *Ed
|
|
|
DataTimestamp: timestamp,
|
|
|
}
|
|
|
addDataList = append(addDataList, edbDataLjztbpj)
|
|
|
- if firstEdbInfo.LatestDate == dataTime {
|
|
|
+ if latestDateStr == dataTime {
|
|
|
latestValue = dataValue
|
|
|
}
|
|
|
}
|
|
@@ -583,10 +594,26 @@ func refreshAllPredictCalculateLjztbpj(to orm.TxOrmer, edbInfo, firstEdbInfo *Ed
|
|
|
err = errors.New("更新现有的累计值同比拼接指标数据失败,Err:" + err.Error())
|
|
|
return
|
|
|
}
|
|
|
- if firstEdbInfo.LatestDate == edbDate {
|
|
|
+ if latestDateStr == edbDate {
|
|
|
latestValue = edbDataValue
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ //确定最终值
|
|
|
+ var finalLast EdbInfoSearchData
|
|
|
+ sql = ` SELECT max(data_time) as data_time , value FROM edb_data_predict_calculate_ljztbpj WHERE edb_info_id=? and data_time<=? ORDER BY data_time DESC `
|
|
|
+ tmpErr := to.Raw(sql, edbInfo.EdbInfoId, latestDateStr).QueryRow(&finalLast)
|
|
|
+ if tmpErr != nil {
|
|
|
+ if tmpErr.Error() != utils.ErrNoRow() {
|
|
|
+ err = tmpErr
|
|
|
+ }
|
|
|
+ return
|
|
|
+ }else{
|
|
|
+ if finalLast.DataTime != latestDateStr {
|
|
|
+ latestDateStr = finalLast.DataTime
|
|
|
+ latestValue = finalLast.Value
|
|
|
+ }
|
|
|
+ }
|
|
|
return
|
|
|
}
|