zhangqian
2023-08-18 e5ee9138c720e48f7447be486f247e765b3f1e46
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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
}