package service import ( "apsClient/model" "errors" "gorm.io/gorm" ) type ProgressService struct { } func NewProgressService() *ProgressService { 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") } if err != nil { return err } if progressCache.FinishedQuantity < progressCache.TotalQuantity { ProgressCacheSet(progressCache) } } if progressCache == nil { return errors.New("progress cache not found") } if finishedQuantity > progressCache.FinishedQuantity { //当有变化时才更新 progressCache.FinishedQuantity = finishedQuantity ProgressCacheSet(progressCache) return model.NewProductionProgressSearch(nil).SetId(progressCache.ID).Save(progressCache) } return nil }