| | |
| | | package service |
| | | |
| | | import ( |
| | | "apsClient/conf" |
| | | "apsClient/constvar" |
| | | "apsClient/model" |
| | | "apsClient/model/common" |
| | | "apsClient/model/response" |
| | | "apsClient/nsq" |
| | | "apsClient/pkg/ecode" |
| | | "apsClient/pkg/logx" |
| | | "apsClient/pkg/structx" |
| | | "encoding/json" |
| | | "fmt" |
| | | "gorm.io/gorm" |
| | | "time" |
| | | ) |
| | |
| | | procedure, err := model.NewProceduresSearch(nil).SetOrder("start_time asc"). |
| | | SetWorkOrderId(order.WorkOrderID). |
| | | SetStartTimeMax(nowTs). |
| | | SetDeviceId(conf.Conf.System.DeviceId). |
| | | SetStatusNot(model.ProcedureStatusFinished). |
| | | First() |
| | | if err == gorm.ErrRecordNotFound { //该订单本设备全部工序完成,把订单置为完成状态(只是对本设备完成) |
| | |
| | | return model.NewOrderSearch(nil).SetWorkOrderId(workOrderId).First() |
| | | } |
| | | |
| | | func (slf TaskService) GetProcessParams(procedure *model.Procedures, order *model.Order) (processModel *model.ProcessModel, err error) { |
| | | data, err := model.NewProcessModelSearch(). |
| | | SetWorkOrder(procedure.WorkOrderID). |
| | | SetDevice(procedure.ProceduresInfo.DeviceName). |
| | | SetOrderId(procedure.OrderID). |
| | | SetProcedure(procedure.ProceduresInfo.ProcedureName). |
| | | SetProduct(order.ProductName). |
| | | SetOrder("id desc").First() |
| | | if err != nil && err != gorm.ErrRecordNotFound { |
| | | logx.Errorf("TaskStart GetProcessModel err:%v", err) |
| | | return nil, err |
| | | } |
| | | if err == nil { |
| | | err = json.Unmarshal([]byte(data.Params), &data.ParamsMap) |
| | | if err != nil { |
| | | logx.Errorf("process model json.Unmarshal:%v", err) |
| | | return |
| | | } |
| | | return data, nil |
| | | } |
| | | |
| | | if err == gorm.ErrRecordNotFound { //如果数据库没有从云端获取 |
| | | caller := nsq.NewCaller(fmt.Sprintf(constvar.NsqTopicProcessParamsRequest, conf.Conf.NsqConf.NodeId), fmt.Sprintf(constvar.NsqTopicProcessParamsResponse, conf.Conf.NsqConf.NodeId)) |
| | | var result common.ResponseProcessParams |
| | | err = caller.Call(common.RequestProcessParams{ |
| | | WorkOrder: procedure.WorkOrderID, |
| | | OrderId: procedure.OrderID, |
| | | Product: order.ProductName, |
| | | Procedure: procedure.ProceduresInfo.ProcedureName, |
| | | Device: procedure.ProceduresInfo.DeviceName}, &result, time.Second*3) |
| | | if err != nil { |
| | | logx.Errorf("TaskStart GetProcessModel error:%v", err.Error()) |
| | | return |
| | | } |
| | | if result.ParamsMap == nil { |
| | | logx.Errorf("TaskStart GetProcessModel response miss process params:%v", result) |
| | | return |
| | | } |
| | | processModel = new(model.ProcessModel) |
| | | err = structx.AssignTo(result, &processModel) |
| | | return processModel, err |
| | | } |
| | | return |
| | | } |
| | | |
| | | // GetCurrentTask 获取待完成或进行中的任务, 每个工单只有一个工序 |
| | | func (slf TaskService) GetCurrentTask() (workOrder *model.Order, err error) { |
| | | nowTs := time.Now().Unix() |