From 3abb522a610fa41a8d5570b643d88a23030e56db Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期一, 06 五月 2024 17:24:11 +0800 Subject: [PATCH] 执行月度统计前先删除本月记录,防止重复数据 --- task/month_stats.go | 51 ++++++++++++++++++++++++++++++--------------------- 1 files changed, 30 insertions(+), 21 deletions(-) diff --git a/task/month_stats.go b/task/month_stats.go index ee539ea..b89aa88 100644 --- a/task/month_stats.go +++ b/task/month_stats.go @@ -4,6 +4,7 @@ "encoding/json" "fmt" "github.com/shopspring/decimal" + "gorm.io/gorm" "time" "wms/constvar" "wms/models" @@ -125,32 +126,40 @@ } } - record.BeginMoreUnits = moreUnits - err = models.NewMonthStatsSearch().Create(&record) + err = models.NewMonthStatsSearch().SetDate(date).Delete() if err != nil { - logx.Errorf("NewMonthStatsSearch Create err:%v, record: %+v", err, record) - service.SendAlarm("鏈堝害缁熻鍒涘缓鏈湀澶辫触", fmt.Sprintf("NewMonthStatsSearch Create err:%v, record: %+v", err, record)) + return } - if oldRecordsMap[productId] != nil && (!inputMap[productId].IsZero() || !outputMap[productId].IsZero()) { - record.InputAmount = inputMap[productId] - record.InputMoreUnits = inputMoreUnits - record.OutputAmount = outputMap[productId] - record.OutputMoreUnits = outputMoreUnits - m := map[string]interface{}{ - "input_amount": inputMap[productId], - "input_more_units": inputMoreUnits, - "output_amount": outputMap[productId], - "output_more_units": outputMoreUnits, - "end_more_units": moreUnits, - "end_amount": amount, - } - err = models.NewMonthStatsSearch().SetID(oldRecordsMap[productId].Id).UpdateByMap(m) + record.BeginMoreUnits = moreUnits + err = models.WithTransaction(func(db *gorm.DB) error { + err = models.NewMonthStatsSearch().SetOrm(db).Create(&record) if err != nil { - logx.Errorf("NewMonthStatsSearch UpdateByMap err:%v, id:%v, m:%+v", err, oldRecordsMap[productId].ID, m) - service.SendAlarm("鏈堝害缁熻鏇存敼涓婃湀澶辫触", fmt.Sprintf("NewMonthStatsSearch Create err:%v, record: %+v", err, record)) + logx.Errorf("NewMonthStatsSearch Create err:%v, record: %+v", err, record) + service.SendAlarm("鏈堝害缁熻鍒涘缓鏈湀澶辫触", fmt.Sprintf("NewMonthStatsSearch Create err:%v, record: %+v", err, record)) } - } + + if oldRecordsMap[productId] != nil && (!inputMap[productId].IsZero() || !outputMap[productId].IsZero()) { + record.InputAmount = inputMap[productId] + record.InputMoreUnits = inputMoreUnits + record.OutputAmount = outputMap[productId] + record.OutputMoreUnits = outputMoreUnits + m := map[string]interface{}{ + "input_amount": inputMap[productId], + "input_more_units": inputMoreUnits, + "output_amount": outputMap[productId], + "output_more_units": outputMoreUnits, + "end_more_units": moreUnits, + "end_amount": amount, + } + err = models.NewMonthStatsSearch().SetOrm(db).SetID(oldRecordsMap[productId].Id).UpdateByMap(m) + if err != nil { + logx.Errorf("NewMonthStatsSearch UpdateByMap err:%v, id:%v, m:%+v", err, oldRecordsMap[productId].ID, m) + service.SendAlarm("鏈堝害缁熻鏇存敼涓婃湀澶辫触", fmt.Sprintf("NewMonthStatsSearch Create err:%v, record: %+v", err, record)) + } + } + return nil + }) } return } -- Gitblit v1.8.0