package nsq import ( "apsClient/conf" "apsClient/model" "apsClient/model/common" "apsClient/pkg/logx" "apsClient/pkg/structx" "encoding/json" "gorm.io/gorm" ) type MsgHandler interface { HandleMessage(data []byte) (err error) } type ScheduleTask struct { } func (slf *ScheduleTask) HandleMessage(data []byte) (err error) { logx.Infof("get an message :%s", data) var tasks = make([]*common.DeliverScheduleTask, 0) err = json.Unmarshal(data, &tasks) if err != nil { logx.Errorf("ScheduleTask HandleMessage Unmarshal json err: %v", err.Error()) return err } for _, task := range tasks { for _, procedure := range task.Procedures { if procedure.DeviceID == conf.Conf.System.DeviceId { //只存储本设备的工序 err = model.WithTransaction(func(db *gorm.DB) error { _, err := model.NewOrderSearch(db).SetWorkOrderId(task.WorkOrder.WorkOrderID).First() if err == gorm.ErrRecordNotFound { var orderRecord model.Order err = structx.AssignTo(task.WorkOrder, &orderRecord) orderRecord.Status = model.OrderStatusUnFinished if err != nil { logx.Errorf(" structx.Assign task.Order to orderRecord err: %v", err.Error()) return err } if err = model.NewOrderSearch(db).Create(&orderRecord); err != nil { return err } } procedureRecord := model.Procedures{ StartTime: procedure.StartTime, EndTime: procedure.EndTime, WorkOrderID: task.WorkOrder.WorkOrderID, OrderID: task.WorkOrder.OrderID, Status: model.ProcedureStatusUnFinished, } procedureData, err := json.Marshal(procedure) procedureRecord.ProcedureData = string(procedureData) if err != nil { logx.Errorf(" json.Marshal(procedure) err: %v", err.Error()) return err } return model.NewProceduresSearch(db).Create(&procedureRecord) }) if err != nil { logx.Errorf(" save procedure err: %v", err.Error()) } } } } return nil }