From d91f181819984ed68d928bec6e926da6566e7a3f Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期五, 05 七月 2024 14:53:02 +0800 Subject: [PATCH] 当操作为出库或调拨时,操作详情明细返回产品相应位置的实时库存 --- service/operation.go | 33 +++++++++++++++++++++------------ 1 files changed, 21 insertions(+), 12 deletions(-) diff --git a/service/operation.go b/service/operation.go index 8b5bd2e..733d84f 100644 --- a/service/operation.go +++ b/service/operation.go @@ -4,6 +4,7 @@ "errors" "fmt" "github.com/gin-gonic/gin" + "github.com/mitchellh/mapstructure" "github.com/shopspring/decimal" "gorm.io/gorm" "strconv" @@ -138,16 +139,17 @@ if locAmount, aok := mapLocAmount[strconv.Itoa(roleProduct.LocationId)+v.ProductId]; aok { locAmount.Amount = locAmount.Amount.Add(v.Amount) - if res := models.NewLocationProductAmountSearch().Orm.Where("id=?", locAmount.ID).Save(locAmount); res.Error != nil { - return res.Error + if err := models.NewLocationProductAmountSearch().SetOrm(tx).SetID(int(locAmount.ID)).Save(locAmount); err != nil { + return err } } else { - if err := models.NewLocationProductAmountSearch().Create(&models.LocationProductAmount{ + if err := models.NewLocationProductAmountSearch().SetOrm(tx).Create(&models.LocationProductAmount{ LocationId: roleProduct.LocationId, ProductCategoryID: v.Product.CategoryId, ProductId: v.ProductId, Amount: v.Amount, CreateDate: time.Now().Format("2006-01-02 15:04:05"), + WarehouseId: operation.WarehouseId, }); err != nil { return err } @@ -164,16 +166,17 @@ if locAmount, aok := mapLocAmount[strconv.Itoa(roleCategory.LocationId)+v.ProductId]; aok { locAmount.Amount = locAmount.Amount.Add(v.Amount) - if res := models.NewLocationProductAmountSearch().Orm.Where("id=?", locAmount.ID).Save(locAmount); res.Error != nil { - return res.Error + if err := models.NewLocationProductAmountSearch().SetOrm(tx).SetID(int(locAmount.ID)).Save(locAmount); err != nil { + return err } } else { - if err := models.NewLocationProductAmountSearch().Create(&models.LocationProductAmount{ + if err := models.NewLocationProductAmountSearch().SetOrm(tx).Create(&models.LocationProductAmount{ LocationId: roleCategory.LocationId, ProductCategoryID: v.Product.CategoryId, ProductId: v.ProductId, Amount: v.Amount, CreateDate: time.Now().Format("2006-01-02 15:04:05"), + WarehouseId: operation.WarehouseId, }); err != nil { return err } @@ -181,16 +184,18 @@ } else { if locAmount, aok := mapLocAmount[strconv.Itoa(operation.LocationID)+v.ProductId]; aok { locAmount.Amount = locAmount.Amount.Add(v.Amount) - if res := models.NewLocationProductAmountSearch().Orm.Where("id=?", locAmount.ID).Save(locAmount); res.Error != nil { - return res.Error + locAmount.ID = uint(locAmount.Id) + if err := models.NewLocationProductAmountSearch().SetOrm(tx).SetID(int(locAmount.ID)).Save(locAmount); err != nil { + return err } } else { - if err := models.NewLocationProductAmountSearch().Create(&models.LocationProductAmount{ + if err := models.NewLocationProductAmountSearch().SetOrm(tx).Create(&models.LocationProductAmount{ LocationId: operation.LocationID, ProductCategoryID: v.Product.CategoryId, ProductId: v.ProductId, Amount: v.Amount, CreateDate: time.Now().Format("2006-01-02 15:04:05"), + WarehouseId: operation.WarehouseId, }); err != nil { return err } @@ -239,14 +244,18 @@ return errors.New(fmt.Sprintf("浜у搧锛�%v,搴撳瓨锛�%v,鍑哄簱锛�%v,鏁伴噺涓嶅锛屾棤娉曞畬鎴愬嚭搴撴搷浣�", v.Product.Name, locAmount.Amount.String(), v.Amount.String())) } locAmount.Amount = locAmount.Amount.Sub(v.Amount) - if err := models.NewLocationProductAmountSearch().SetID(locAmount.Id).Update(locAmount); err != nil { + if err := models.NewLocationProductAmountSearch().SetOrm(tx).SetID(locAmount.Id).Save(locAmount); err != nil { return err } } else { return errors.New("褰撳墠浠撳簱娌℃湁璇ヤ骇鍝�,璇峰厛鍏ュ簱") } if v.IsInternalOutput { - internalInputDetails = append(internalInputDetails, v) + var inputDetail models.OperationDetails + mapstructure.Decode(v, &inputDetail) + inputDetail.Id = 0 + inputDetail.OperationID = 0 + internalInputDetails = append(internalInputDetails, &inputDetail) } } if len(internalInputDetails) > 0 { @@ -327,7 +336,7 @@ if locAmount.Amount.Equal(v.Amount) { continue } - if v.Amount.GreaterThan(locAmount.Amount) { + if v.Amount.GreaterThan(locAmount.Amount) { //todo 鏀规垚stockAmount inputDetails = append(inputDetails, &models.OperationDetails{ ProductId: v.ProductId, Amount: v.Amount.Sub(locAmount.Amount), -- Gitblit v1.8.0