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