zhangqian
2024-05-06 3abb522a610fa41a8d5570b643d88a23030e56db
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
}