From 9e3412941ea49942f651506657d90ab174a4329f Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期二, 17 十月 2023 17:10:36 +0800 Subject: [PATCH] 工单开始或结束时保存待同步任务 --- api/v1/task.go | 76 +++++++++++++++++++++++-------------- 1 files changed, 47 insertions(+), 29 deletions(-) diff --git a/api/v1/task.go b/api/v1/task.go index 96a0b1a..c2b864c 100644 --- a/api/v1/task.go +++ b/api/v1/task.go @@ -213,9 +213,24 @@ ctx.Fail(ecode.ParamsErr) return } - err := service.NewTaskService().UpdateProcedureStatus(nil, id, model.ProcedureStatusFinished, procedure.Channel) + + err := model.WithTransaction(func(db *gorm.DB) error { + err := service.NewTaskService().UpdateProcedureStatus(db, id, model.ProcedureStatusFinished, procedure.Channel) + if err != nil { + return err + } + record := model.TaskStatusSync{ + WorkOrderId: procedure.WorkOrderID, + ProcedureID: procedure.ProcedureID, + DeviceId: procedure.DeviceID, + IsProcessing: false, + IsFinish: true, + } + return service.NewTaskService().SaveTaskStatusSync(db, &record) + }) + if err != nil { - logx.Errorf("UpdateProcedureStatus err: %v", err.Error()) + logx.Errorf("TaskFinish UpdateProcedureStatus err: %v", err.Error()) ctx.Fail(ecode.UnknownErr) return } @@ -263,7 +278,23 @@ ctx.FailWithMsg(ecode.ParamsErr, "鏈幏鍙栧埌宸ヨ壓鍙傛暟锛岃鍦ㄥ伐鑹烘ā鍨嬪簱涓笂浼狅紒") return } - + plcConfig, code := service.NewDevicePlcService().GetDevicePlc() + if code != ecode.OK || plcConfig.ID == 0 { + ctx.FailWithMsg(ecode.NeedConfirmedErr, "璇峰厛閰嶇疆PLC") + return + } + plcConfig.MaxTryTimes = 2 + err = SendParams(processModel.ParamsMap, plcConfig) + if err != nil { + ctx.FailWithMsg(ecode.NeedConfirmedErr, "PLC璇锋眰澶辫触锛岃妫�鏌LC閰嶇疆锛�") + return + } + plcConfig.CurrentTryTimes = 0 + err = service.PlcWrite(plcConfig, constvar.PlcStartAddressTypeTotalNumber, procedure.Channel, order.Amount.IntPart()) + if err != nil { + ctx.FailWithMsg(ecode.NeedConfirmedErr, "PLC璇锋眰澶辫触锛岃妫�鏌LC閰嶇疆锛�") + return + } err = model.WithTransaction(func(db *gorm.DB) error { err = taskService.UpdateProcedureStatusAndChannel(db, params.ProcedureId, model.ProcedureStatusProcessing, procedure.Channel, processModel.Number) if err != nil { @@ -273,38 +304,25 @@ if err != nil { return err } - return service.NewProgressService().Add(db, procedure, order) + err = service.NewProgressService().Add(db, procedure, order) + if err != nil { + return err + } + record := model.TaskStatusSync{ + WorkOrderId: procedure.WorkOrderID, + ProcedureID: procedure.ProcedureID, + DeviceId: procedure.DeviceID, + IsProcessing: true, + IsFinish: false, + } + return service.NewTaskService().SaveTaskStatusSync(db, &record) }) if err != nil { logx.Errorf("SendProcessParams update order and procedure status error:%v", err.Error()) ctx.FailWithMsg(ecode.DBErr, "鏇存敼宸ュ崟鐘舵�佸け璐�") return } - plcConfig, code := service.NewDevicePlcService().GetDevicePlc() - if code != ecode.OK || plcConfig.ID == 0 { - ctx.FailWithMsg(ecode.NeedConfirmedErr, "璇峰厛閰嶇疆PLC") - return - } - plcConfig.MaxTryTimes = 2 - err = SendParams(processModel.ParamsMap, plcConfig) - if err != nil { - logx.Errorf("SendProcessParams: %v", err.Error()) - err = model.WithTransaction(func(db *gorm.DB) error { - err = taskService.UpdateProcedureStatusAndChannel(db, params.ProcedureId, model.ProcedureStatusWaitProcess, procedure.Channel, "") - if err != nil { - return err - } - return nil - }) - ctx.FailWithMsg(ecode.NeedConfirmedErr, "PLC璇锋眰澶辫触锛岃妫�鏌LC閰嶇疆锛�") - return - } - plcConfig.CurrentTryTimes = 0 - err = service.PlcWrite(plcConfig, constvar.PlcStartAddressTypeTotalNumber, procedure.Channel, order.Amount.IntPart()) - if err != nil { - ctx.FailWithMsg(ecode.NeedConfirmedErr, "PLC璇锋眰澶辫触锛岃妫�鏌LC閰嶇疆") - return - } + service.TaskFlagSet(procedure.Channel) ctx.Ok() } -- Gitblit v1.8.0