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