| | |
| | | |
| | | import ( |
| | | "apsClient/conf" |
| | | "apsClient/constvar" |
| | | "apsClient/model" |
| | | "apsClient/model/request" |
| | | "apsClient/pkg/snowflake" |
| | | "errors" |
| | | "time" |
| | | ) |
| | |
| | | if err != nil { |
| | | return err |
| | | } |
| | | |
| | | if procedure.Status != model.ProcedureStatusProcessing { |
| | | return errors.New("当前工序未开始或已结束,不允许报工") |
| | | } |
| | | |
| | | nowTs := time.Now().Unix() |
| | | var startTs int64 |
| | | var workerName string |
| | |
| | | if startTs == 0 { |
| | | return errors.New("没有找到当前值班人员开始时间") |
| | | } |
| | | finishAmount := params.ReportAmount |
| | | lastReportWork, err := GetLastReportWork(params.ProcedureId) |
| | | if err == nil { |
| | | finishAmount = params.ReportAmount - lastReportWork.ReportAmount |
| | | startTs = lastReportWork.EndTime |
| | | } |
| | | |
| | | record := &model.ReportWork{ |
| | | ProceduresID: params.ProcedureId, |
| | | WorkOrderID: procedure.WorkOrderID, |
| | | DeviceID: procedure.DeviceID, |
| | | DeviceName: procedure.ProceduresInfo.DeviceName, |
| | | ProcedureID: procedure.ProcedureID, |
| | | Channel: procedure.Channel, |
| | | StartTime: startTs, |
| | | EndTime: nowTs, |
| | | WorkerID: params.WorkerID, |
| | | WorkerName: workerName, |
| | | ProceduresID: params.ProcedureId, |
| | | ProductProcedureID: procedure.ProductProcedureID, |
| | | WorkOrderID: procedure.WorkOrderID, |
| | | DeviceID: procedure.DeviceID, |
| | | DeviceName: procedure.ProceduresInfo.DeviceName, |
| | | ProcedureID: procedure.ProcedureID, |
| | | Channel: procedure.Channel, |
| | | StartTime: startTs, |
| | | EndTime: nowTs, |
| | | ReportAmount: params.ReportAmount, |
| | | FinishAmount: finishAmount, |
| | | WorkerID: params.WorkerID, |
| | | WorkerName: workerName, |
| | | WorkerTime: nowTs - startTs, |
| | | BarCode: snowflake.GenerateIdStr(), |
| | | } |
| | | return model.NewReportWorkSearch(nil).Create(record) |
| | | |
| | | err = model.NewReportWorkSearch(nil).Create(record) |
| | | if err != nil { |
| | | return err |
| | | } |
| | | PlcCacheSet(conf.Conf.CurrentDeviceID, procedure.Channel, constvar.PlcCacheKeyFinishNumber, params.ReportAmount) |
| | | return nil |
| | | } |
| | | |
| | | // GetLastReportWork 获取最后一个报工 |
| | | func GetLastReportWork(procedureId uint) (reportWork *model.ReportWork, err error) { |
| | | return model.NewReportWorkSearch(nil).SetProceduresId(procedureId).SetDeviceId(conf.Conf.CurrentDeviceID).SetOrder("id desc").First() |
| | | } |