From 10c65da3d2af7056f48d9301e83f53f102f76e18 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期一, 30 十月 2023 14:52:11 +0800
Subject: [PATCH] fix

---
 service/progress.go |   80 ++++++++++++++++++++++++++--------------
 1 files changed, 52 insertions(+), 28 deletions(-)

diff --git a/service/progress.go b/service/progress.go
index bb0d859..ed904f1 100644
--- a/service/progress.go
+++ b/service/progress.go
@@ -1,9 +1,10 @@
 package service
 
 import (
+	"apsClient/conf"
 	"apsClient/model"
 	"errors"
-	"gorm.io/gorm"
+	"github.com/jinzhu/gorm"
 )
 
 type ProgressService struct {
@@ -13,44 +14,67 @@
 	return &ProgressService{}
 }
 
-func (slf ProgressService) AddProgress(db *gorm.DB, procedure *model.Procedures, order *model.Order) error {
-	progress := &model.ProductionProgress{
-		WorkOrderID:   procedure.WorkOrderID,
-		OrderID:       procedure.OrderID,
-		ProcedureID:   procedure.ProceduresInfo.ProcedureID,
-		DeviceID:      procedure.DeviceID,
-		TotalQuantity: order.Amount.IntPart(),
-	}
-	err := model.NewProductionProgressSearch(db).Create(progress)
-	if err != nil {
-		return err
-	}
-	ProgressCacheSet(progress)
-	return nil
-}
-
-func (slf ProgressService) UpdateProgress(finishedQuantity int64) (err error) {
-	var progressCache *model.ProductionProgress
-	progressCache, ok := ProgressCacheGet()
-	if !ok {
-		progressCache, err = model.NewProductionProgressSearch(nil).SetOrder("id desc").First()
-		if err == gorm.ErrRecordNotFound {
-			return errors.New("progress cache not found")
+func (slf ProgressService) Add(db *gorm.DB, procedure *model.Procedures, order *model.Order) error {
+	_, err := model.NewProductionProgressSearch(db).SetProcedureId(procedure.ProcedureID).SetWorkOrderId(procedure.WorkOrderID).First()
+	if err == gorm.ErrRecordNotFound {
+		progress := &model.ProductionProgress{
+			WorkOrderID:   procedure.WorkOrderID,
+			OrderID:       procedure.OrderID,
+			ProcedureID:   procedure.ProceduresInfo.ProcedureID,
+			DeviceID:      procedure.DeviceID,
+			TotalQuantity: order.Amount.IntPart(),
+			Channel:       procedure.Channel,
 		}
+		err := model.NewProductionProgressSearch(db).Create(progress)
 		if err != nil {
 			return err
 		}
-		if progressCache.FinishedQuantity < progressCache.TotalQuantity {
-			ProgressCacheSet(progressCache)
-		}
+		ProgressCacheSet(procedure.Channel, progress)
+	}
+
+	return nil
+}
+
+func (slf ProgressService) UpdateProgress(channel int32, finishedQuantity int64) (err error) {
+	progressCache, err := slf.GetCurrentProgress(channel)
+	if err != nil {
+		return err
 	}
 	if progressCache == nil {
 		return errors.New("progress cache not found")
 	}
 	if finishedQuantity > progressCache.FinishedQuantity { //褰撴湁鍙樺寲鏃舵墠鏇存柊
 		progressCache.FinishedQuantity = finishedQuantity
-		ProgressCacheSet(progressCache)
+		ProgressCacheSet(channel, progressCache)
 		return model.NewProductionProgressSearch(nil).SetId(progressCache.ID).Save(progressCache)
 	}
 	return nil
 }
+
+func (slf ProgressService) GetCurrentProgress(channel int32) (progressCache *model.ProductionProgress, err error) {
+	var ok bool
+	progressCache, ok = ProgressCacheGet(channel)
+	if !ok {
+		progressCache, err = model.NewProductionProgressSearch(nil).SetDeviceId(conf.Conf.System.DeviceId).SetChannel(channel).SetOrder("id desc").First()
+		if err == gorm.ErrRecordNotFound {
+			return nil, errors.New("progress not found")
+		}
+		if err != nil {
+			return nil, err
+		}
+
+		if progressCache.FinishedQuantity >= progressCache.TotalQuantity { //濡傛灉瀹屾垚閲忓ぇ浜庣瓑浜庢�婚噺灏辫鏄庢槸涓婁竴涓凡瀹屾垚鐨勪换鍔★紝涓嶆槸褰撳墠杩涜涓殑浠诲姟銆�
+			progressCache = nil
+		}
+		if progressCache != nil {
+			ProgressCacheSet(channel, progressCache)
+		}
+	}
+	return
+}
+
+// GetProgressList 鑾峰彇寰呭悓姝ヨ繘搴﹀伐搴�
+func (slf ProgressService) GetProgressList() (progressList []*model.ProductionProgress, err error) {
+	progressList, err = model.NewProductionProgressSearch(nil).SetUnFinished().SetOrder("id desc").SetPage(1, 100).FindNotTotal()
+	return
+}

--
Gitblit v1.8.0