package asynq import ( "context" "encoding/json" "errors" "kpt-pasture/model" "kpt-pasture/util" pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow" "gorm.io/gorm" "gitee.com/xuyiping_admin/pkg/logger/zaplog" "gitee.com/xuyiping_admin/pkg/xerr" "go.uber.org/zap" "github.com/hibiken/asynq" ) // DayWorkOrder 每天工单 func (entry *Entry) DayWorkOrder(ctx context.Context, t *asynq.Task) error { var req model.TaskWorkOrderPayload if err := json.Unmarshal(t.Payload(), &req); err != nil { zaplog.Error("consumer", zap.Any("mark", "DayWorkOrder"), zap.Any("unmarshal", err)) return xerr.WithStack(err) } workOrder := &model.WorkOrderMaster{} if err := entry.DB.Where("id = ?", req.WorkOrderId).First(workOrder).Error; err != nil { zaplog.Error("consumer", zap.Any("mark", "DayWorkOrder"), zap.Any("WorkOrderMaster", err)) return xerr.WithStack(err) } localExecTime, _ := util.ConvertParseLocalUnix(workOrder.ExecTime) workOrderSubList := make([]*model.WorkOrderSub, 0) if err := entry.DB.Where("is_show = ?", pasturePb.IsShow_Ok). Where("work_order_master_id = ?", req.WorkOrderId). Where("exec_time = ?", localExecTime). Find(&workOrderSubList).Error; err != nil { if !errors.Is(err, gorm.ErrRecordNotFound) { zaplog.Error("consumer", zap.Any("mark", "DayWorkOrder"), zap.Any("WorkOrderSub", err)) return xerr.WithStack(err) } } if len(workOrderSubList) > 0 { return nil } workOrderSubList = model.NewWorkOrderSub(workOrder) if err := entry.DB.Create(workOrderSubList).Error; err != nil { zaplog.Error("consumer", zap.Any("mark", "DayWorkOrder"), zap.Any("NewWorkOrderSub", err)) } zaplog.Info("consumer", zap.Any("DayWorkOrder", "success")) return nil }