From 30f35de47284269b475c3aa307d06c033b67aa27 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期六, 21 十月 2023 16:46:10 +0800
Subject: [PATCH] 精简topic
---
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