| | |
| | | "wms/service" |
| | | ) |
| | | |
| | | func MonthStats() { |
| | | func MonthStats() (err error) { |
| | | //加锁,只需要一个进程运行此任务 |
| | | var ( |
| | | lockName = "monthStats" |
| | | serviceID = "wms" |
| | | ) |
| | | err := models.NewLockSearch().AcquireLock(lockName, serviceID) |
| | | err = models.NewLockSearch().AcquireLock(lockName, serviceID) |
| | | if err != nil { |
| | | logx.Errorf("MonthStats AcquireLock err:%v", err) |
| | | return |
| | | } |
| | | defer func() { |
| | | err := models.NewLockSearch().ReleaseLock(lockName, serviceID) |
| | | if err != nil { |
| | | service.SendAlarm("月度统计执行失败", "报错: "+err.Error()) |
| | | } |
| | | err = models.NewLockSearch().ReleaseLock(lockName, serviceID) |
| | | if err != nil { |
| | | logx.Errorf("MonthStats ReleaseLock err:%v", err) |
| | | service.SendAlarm("月度统计执行成功解锁失败", err.Error()) |
| | | } |
| | | }() |
| | | |
| | |
| | | return |
| | | } |
| | | var record models.MonthStats |
| | | |
| | | err = models.NewMonthStatsSearch().SetDate(date).Delete() |
| | | if err != nil { |
| | | return |
| | | } |
| | | |
| | | for _, groupSum := range groupSumList { |
| | | productId := groupSum.Class |
| | | if productMap[productId] == nil { |
| | |
| | | } |
| | | } |
| | | |
| | | err = models.NewMonthStatsSearch().SetDate(date).Delete() |
| | | if err != nil { |
| | | return |
| | | } |
| | | |
| | | record.BeginMoreUnits = moreUnits |
| | | err = models.WithTransaction(func(db *gorm.DB) error { |
| | | err = models.NewMonthStatsSearch().SetOrm(db).Create(&record) |
| | |
| | | return nil |
| | | }) |
| | | } |
| | | if err == nil { |
| | | service.SendAlarm("月度统计执行成功", "") |
| | | } |
| | | return |
| | | } |
| | | |