package nsq
|
|
import (
|
"apsClient/conf"
|
"apsClient/model"
|
"apsClient/pkg/logx"
|
"apsClient/pkg/structx"
|
"encoding/json"
|
"fmt"
|
"gorm.io/gorm"
|
)
|
|
type MsgHandler interface {
|
HandleMessage(data []byte) (err error)
|
}
|
|
type ScheduleTask struct {
|
}
|
|
func (slf *ScheduleTask) HandleMessage(data []byte) (err error) {
|
fmt.Println(string(data))
|
|
var tasks = make([]*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).SetOrderId(task.Order.OrderID).First()
|
if err == gorm.ErrRecordNotFound {
|
var orderRecord model.Order
|
err = structx.AssignTo(task.Order, &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{
|
OrderID: task.Order.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
|
}
|