From 84fb8e390b83dc9482524c12d7af6c93405c3fc1 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期五, 08 十二月 2023 16:36:32 +0800 Subject: [PATCH] debug --- service/report_work.go | 85 ++++++++++++++++++++++++++++++++++-------- 1 files changed, 69 insertions(+), 16 deletions(-) diff --git a/service/report_work.go b/service/report_work.go index 38693d8..4d7a0cb 100644 --- a/service/report_work.go +++ b/service/report_work.go @@ -2,9 +2,15 @@ import ( "apsClient/conf" + "apsClient/constvar" "apsClient/model" "apsClient/model/request" + "apsClient/pkg/logx" + "apsClient/pkg/snowflake" + "encoding/json" "errors" + "github.com/jinzhu/gorm" + "github.com/spf13/cast" "time" ) @@ -17,35 +23,82 @@ if err != nil { return err } + + if procedure.Status != model.ProcedureStatusProcessing { + return errors.New("褰撳墠宸ュ簭鏈紑濮嬫垨宸茬粨鏉燂紝涓嶅厑璁告姤宸�") + } + nowTs := time.Now().Unix() var startTs int64 var workerName string for _, worker := range procedure.ProceduresInfo.Workers { if params.WorkerID == worker.WorkerID { workerName = worker.WorkerName - if worker.StartTime < nowTs { - startTs = worker.StartTime - } } } if workerName == "" { return errors.New("娌℃湁鎵惧埌褰撳墠鍊肩彮浜哄憳") } - if startTs == 0 { - return errors.New("娌℃湁鎵惧埌褰撳墠鍊肩彮浜哄憳寮�濮嬫椂闂�") + + finishAmount := params.ReportAmount + lastReportWork, err := GetLastReportWork(params.ProcedureId) + if err == nil { + if params.ReportAmount < lastReportWork.ReportAmount { + return errors.New("鎶ュ伐鏁伴噺涓嶈兘灏戜簬涓婃鎶ュ伐鏁�") + } + finishAmount = params.ReportAmount - lastReportWork.ReportAmount + startTs = lastReportWork.EndTime + } else { + startTs = procedure.RealStartTime } 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, + StartTime: startTs, + EndTime: nowTs, + ReportAmount: params.ReportAmount, + FinishAmount: finishAmount, + WorkerID: params.WorkerID, + WorkerName: workerName, + WorkerTime: nowTs - startTs, + BarCode: cast.ToString(snowflake.GenerateID()), } - return model.NewReportWorkSearch(nil).Create(record) + err = model.WithTransaction(func(db *gorm.DB) error { + err = model.NewReportWorkSearch(db).Create(record) + if err != nil { + return err + } + + content, err := json.Marshal(record) + if err != nil { + return err + } + err = model.NewReportsToCloudSearch(db).Create(&model.ReportsToCloud{ + ReportType: constvar.ReportTypeReportWork, + Content: string(content), + }) + if err != nil { + return err + } + + return nil + }) + if err != nil { + logx.Errorf("save report work transaction error: %v", err) + return err + } + + err = NewProgressService().UpdateProgressByProceduresId(procedure.ID, 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