From efec800478214f3a412f879d2b51c2968515995d Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期六, 25 十一月 2023 17:04:25 +0800 Subject: [PATCH] plc断开连接时获取工序最后一次报工数量作为加工数 --- service/progress.go | 52 +++++++++++++++++++++++++++++++--------------------- 1 files changed, 31 insertions(+), 21 deletions(-) diff --git a/service/progress.go b/service/progress.go index 972a248..0f18fb9 100644 --- a/service/progress.go +++ b/service/progress.go @@ -3,7 +3,7 @@ import ( "apsClient/model" "errors" - "gorm.io/gorm" + "github.com/jinzhu/gorm" ) type ProgressService struct { @@ -13,25 +13,29 @@ 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(), - Position: procedure.Position, +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 + } + ProgressCacheSet(procedure.DeviceID, procedure.Channel, progress) } - err := model.NewProductionProgressSearch(db).Create(progress) - if err != nil { - return err - } - ProgressCacheSet(procedure.Position, progress) + return nil } -func (slf ProgressService) UpdateProgress(position int, finishedQuantity int64) (err error) { - progressCache, err := slf.GetCurrentProgress(position) +func (slf ProgressService) UpdateProgress(deviceID string, channel int32, finishedQuantity int64) (err error) { + progressCache, err := slf.GetCurrentProgress(deviceID, channel) if err != nil { return err } @@ -40,17 +44,17 @@ } if finishedQuantity > progressCache.FinishedQuantity { //褰撴湁鍙樺寲鏃舵墠鏇存柊 progressCache.FinishedQuantity = finishedQuantity - ProgressCacheSet(position, progressCache) + ProgressCacheSet(deviceID, channel, progressCache) return model.NewProductionProgressSearch(nil).SetId(progressCache.ID).Save(progressCache) } return nil } -func (slf ProgressService) GetCurrentProgress(position int) (progressCache *model.ProductionProgress, err error) { +func (slf ProgressService) GetCurrentProgress(deviceID string, channel int32) (progressCache *model.ProductionProgress, err error) { var ok bool - progressCache, ok = ProgressCacheGet(position) + progressCache, ok = ProgressCacheGet(deviceID, channel) if !ok { - progressCache, err = model.NewProductionProgressSearch(nil).SetPosition(position).SetOrder("id desc").First() + progressCache, err = model.NewProductionProgressSearch(nil).SetDeviceId(deviceID).SetChannel(channel).SetOrder("id asc").First() if err == gorm.ErrRecordNotFound { return nil, errors.New("progress not found") } @@ -62,8 +66,14 @@ progressCache = nil } if progressCache != nil { - ProgressCacheSet(position, progressCache) + ProgressCacheSet(deviceID, 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