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