From efec800478214f3a412f879d2b51c2968515995d Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期六, 25 十一月 2023 17:04:25 +0800 Subject: [PATCH] plc断开连接时获取工序最后一次报工数量作为加工数 --- api/v1/plc.go | 23 ++++++++++++++++++++--- model/report_work.go | 5 +++-- service/report_work.go | 20 +++++++++++++++++++- router/index.go | 2 +- model/request/task.go | 3 ++- 5 files changed, 45 insertions(+), 8 deletions(-) diff --git a/api/v1/plc.go b/api/v1/plc.go index 4de07fb..c16aba1 100644 --- a/api/v1/plc.go +++ b/api/v1/plc.go @@ -3,6 +3,7 @@ import ( "apsClient/conf" "apsClient/constvar" + "apsClient/model" "apsClient/model/request" "apsClient/model/response" _ "apsClient/model/response" @@ -28,14 +29,30 @@ if !ok { return } - finishNumber, _ := service.PlcCacheGet(conf.Conf.CurrentDeviceID, params.Channel, constvar.PlcCacheKeyFinishNumber) - totalNumber, _ := service.PlcCacheGet(conf.Conf.CurrentDeviceID, params.Channel, constvar.PlcCacheKeyTotalNumber) + isConnect := service.PlcIsConnect() + var ( + finishNumber interface{} + totalNumber interface{} + ) + if isConnect { + finishNumber, _ = service.PlcCacheGet(conf.Conf.CurrentDeviceID, params.Channel, constvar.PlcCacheKeyFinishNumber) + totalNumber, _ = service.PlcCacheGet(conf.Conf.CurrentDeviceID, params.Channel, constvar.PlcCacheKeyTotalNumber) + } else if params.ProcedureId != 0 { + reportWork, err := service.GetLastReportWork(params.ProcedureId) + if err == nil { + finishNumber = reportWork.ReportAmount + } + workOrder, err := model.NewOrderSearch(nil).SetWorkOrderId(reportWork.WorkOrderID).First() + if err == nil { + totalNumber = workOrder.Amount.IntPart() + } + } + resp := new(response.ProductProgress) resp.FinishNumber = cast.ToInt(finishNumber) resp.TotalNumber = cast.ToInt(totalNumber) plcStatus := 1 //鏂紑杩炴帴 - isConnect := service.PlcIsConnect() if isConnect { lastUpdateTime := service.FinishUpdateTimeGet(conf.Conf.CurrentDeviceID, params.Channel) if time.Now().Unix()-cast.ToInt64(lastUpdateTime) < conf.Conf.PLC.StandbyTime { //鐢熶骇 diff --git a/model/report_work.go b/model/report_work.go index 4e6a70b..7a297cc 100644 --- a/model/report_work.go +++ b/model/report_work.go @@ -17,8 +17,9 @@ Channel int32 `gorm:"index;" json:"channel"` //閫氶亾 StartTime int64 `json:"startTime"` EndTime int64 `json:"endTime"` - WorkerID string `json:"workerID"` //鎶ュ伐浜篿d - WorkerName string `json:"workerName"` //鎶ュ伐浜哄鍚� + ReportAmount int `json:"reportAmount"` //鎶ュ伐鏁伴噺 + WorkerID string `json:"workerID"` //鎶ュ伐浜篿d + WorkerName string `json:"workerName"` //鎶ュ伐浜哄鍚� } ReportWorkSearch struct { diff --git a/model/request/task.go b/model/request/task.go index ff7489b..a54428d 100644 --- a/model/request/task.go +++ b/model/request/task.go @@ -22,7 +22,8 @@ } type GetProductProgress struct { - Channel int32 `json:"channel"` + ProcedureId uint `json:"procedureId"` + Channel int32 `json:"channel"` } // ProcessModelList 宸ヨ壓鍙傛暟鍒楄〃璇锋眰鍙傛暟 diff --git a/router/index.go b/router/index.go index a04943b..8375556 100644 --- a/router/index.go +++ b/router/index.go @@ -89,7 +89,7 @@ reportWorkApi := new(v1.ReportWorkApi) reportWorkGroup := v1Group.Group("reportWork") { - reportWorkGroup.GET("report", reportWorkApi.Report) // 鎶ュ伐 + reportWorkGroup.POST("report", reportWorkApi.Report) // 鎶ュ伐 reportWorkGroup.GET("list", reportWorkApi.ReportList) // 鎶ュ伐鍒楄〃 } diff --git a/service/report_work.go b/service/report_work.go index 38693d8..cf8deb4 100644 --- a/service/report_work.go +++ b/service/report_work.go @@ -2,6 +2,7 @@ import ( "apsClient/conf" + "apsClient/constvar" "apsClient/model" "apsClient/model/request" "errors" @@ -17,6 +18,11 @@ if err != nil { return err } + + if procedure.Status != model.ProcedureStatusProcessing { + return errors.New("褰撳墠宸ュ簭鏈紑濮嬫垨宸茬粨鏉燂紝涓嶅厑璁告姤宸�") + } + nowTs := time.Now().Unix() var startTs int64 var workerName string @@ -44,8 +50,20 @@ Channel: procedure.Channel, StartTime: startTs, EndTime: nowTs, + ReportAmount: params.ReportAmount, WorkerID: params.WorkerID, WorkerName: workerName, } - 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() } -- Gitblit v1.8.0