zhangqian
2024-05-06 3abb522a610fa41a8d5570b643d88a23030e56db
执行月度统计前先删除本月记录,防止重复数据
1个文件已修改
51 ■■■■■ 已修改文件
task/month_stats.go 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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
}