consumer.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package asynq
  2. import (
  3. "context"
  4. "encoding/json"
  5. "errors"
  6. "kpt-pasture/model"
  7. "kpt-pasture/util"
  8. pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow"
  9. "gorm.io/gorm"
  10. "gitee.com/xuyiping_admin/pkg/logger/zaplog"
  11. "gitee.com/xuyiping_admin/pkg/xerr"
  12. "go.uber.org/zap"
  13. "github.com/hibiken/asynq"
  14. )
  15. // DayWorkOrder 每天工单
  16. func (entry *Entry) DayWorkOrder(ctx context.Context, t *asynq.Task) error {
  17. var req model.TaskWorkOrderPayload
  18. if err := json.Unmarshal(t.Payload(), &req); err != nil {
  19. zaplog.Error("consumer", zap.Any("mark", "DayWorkOrder"), zap.Any("unmarshal", err))
  20. return xerr.WithStack(err)
  21. }
  22. workOrder := &model.WorkOrderMaster{}
  23. if err := entry.DB.Where("id = ?", req.WorkOrderId).First(workOrder).Error; err != nil {
  24. zaplog.Error("consumer", zap.Any("mark", "DayWorkOrder"), zap.Any("WorkOrderMaster", err))
  25. return xerr.WithStack(err)
  26. }
  27. localExecTime, _ := util.ConvertParseLocalUnix(workOrder.ExecTime)
  28. workOrderSubList := make([]*model.WorkOrderSub, 0)
  29. if err := entry.DB.Where("is_show = ?", pasturePb.IsShow_Ok).
  30. Where("work_order_master_id = ?", req.WorkOrderId).
  31. Where("exec_time = ?", localExecTime).
  32. Find(&workOrderSubList).Error; err != nil {
  33. if !errors.Is(err, gorm.ErrRecordNotFound) {
  34. zaplog.Error("consumer", zap.Any("mark", "DayWorkOrder"), zap.Any("WorkOrderSub", err))
  35. return xerr.WithStack(err)
  36. }
  37. }
  38. if len(workOrderSubList) > 0 {
  39. return nil
  40. }
  41. workOrderSubList = model.NewWorkOrderSub(workOrder)
  42. if err := entry.DB.Create(workOrderSubList).Error; err != nil {
  43. zaplog.Error("consumer", zap.Any("mark", "DayWorkOrder"), zap.Any("NewWorkOrderSub", err))
  44. }
  45. zaplog.Info("consumer", zap.Any("DayWorkOrder", "success"))
  46. return nil
  47. }