From d5f4e618c422751fcb5cbb03d8c98244c0a6e2f1 Mon Sep 17 00:00:00 2001 From: chenlin Date: Tue, 9 Jul 2024 19:05:18 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BC=98=E5=8C=96=E9=9B=B6=E5=94=AE=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E5=AE=A1=E6=A0=B8=E6=9B=B4=E6=96=B0=E9=9D=9E=E4=B8=B2?= =?UTF-8?q?=E7=A0=81=E5=95=86=E5=93=81=E5=BA=93=E5=AD=98=E9=80=BB=E8=BE=91?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=8A=A0=E6=97=A5=E5=BF=97=E6=8E=92=E6=9F=A5?= =?UTF-8?q?=E5=BA=93=E5=AD=98=E4=B8=8D=E7=AC=A6=E9=97=AE=E9=A2=98=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/models/erp_order.go | 15 +++++++++++---- app/admin/models/inventory_change.go | 4 ++-- test/stock_test.go | 18 ++++++++++++++++++ 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/app/admin/models/erp_order.go b/app/admin/models/erp_order.go index bf9f3fb..f255bed 100644 --- a/app/admin/models/erp_order.go +++ b/app/admin/models/erp_order.go @@ -803,6 +803,7 @@ func stringToIntArray(str string) ([]uint32, error) { // 更新零售订单商品表的库存商品表主键id字段 func updateErpStockCommodityID(gdb *gorm.DB, id uint32, nIdList []uint32) error { + fmt.Println("nIdList is:", nIdList) strId := intArrayToString(nIdList) // 查找在库的非串码商品 @@ -829,8 +830,8 @@ func updateErpStockCommodityID(gdb *gorm.DB, id uint32, nIdList []uint32) error return nil } -// 找一个可用的库存商品表主键ID -func findRightErpStockCommodityId(idList map[uint32][]uint32, commodityId uint32, stockCommodity []ErpStockCommodity) (uint32, error) { +// FindRightErpStockCommodityId 找一个可用的库存商品表主键ID +func FindRightErpStockCommodityId(idList map[uint32][]uint32, commodityId uint32, stockCommodity []ErpStockCommodity) (uint32, error) { // 获取给定商品ID对应的ID列表 existingIds, ok := idList[commodityId] if !ok || len(existingIds) == 0 { @@ -967,12 +968,18 @@ func UpdateStock(gdb *gorm.DB, erpOrder ErpOrder, state, auditState int) error { } // 找一个可用的库存商品表主键ID,使用零售商品表的主键ID作为key - rightId, err := findRightErpStockCommodityId(usedStockCommodityIdList, + rightId, err := FindRightErpStockCommodityId(usedStockCommodityIdList, commodities[i].ErpCommodityId, stockCommodity) if err != nil { return err } + logger.Info("rightId is:", logger.Field("rightId", rightId)) + if rightId == 0 { + logger.Error("rightId is 0") + return errors.New("查询商品库存出错") + } + // 优先出库库存时间最长的数据 err = gdb.Table("erp_stock_commodity").Where("id = ?", rightId). Updates(map[string]interface{}{"state": state}).Error // 状态更新为销售锁定中;反审核则更新为在库 @@ -1057,7 +1064,7 @@ func UpdateStock(gdb *gorm.DB, erpOrder ErpOrder, state, auditState int) error { } // 找一个可用的库存商品表主键ID - rightId, err := findRightErpStockCommodityId(usedStockCommodityIdList, + rightId, err := FindRightErpStockCommodityId(usedStockCommodityIdList, commodities[i].ErpCommodityId, stockCommodity) if err != nil { return err diff --git a/app/admin/models/inventory_change.go b/app/admin/models/inventory_change.go index 81b91c1..5d4a77b 100644 --- a/app/admin/models/inventory_change.go +++ b/app/admin/models/inventory_change.go @@ -818,7 +818,7 @@ func handleInventoryReduce(gdb *gorm.DB, changeOrder ErpInventoryChangeOrder) er } // 找一个可用的库存商品表主键ID - rightId, err := findRightErpStockCommodityId(usedStockCommodityIdList, + rightId, err := FindRightErpStockCommodityId(usedStockCommodityIdList, trimCommodities[i].CommodityId, stockCommodity) if err != nil { return err @@ -1008,7 +1008,7 @@ func handleCancelInventoryReduce(gdb *gorm.DB, changeOrder ErpInventoryChangeOrd } // 找一个可用的库存商品表主键ID - rightId, err := findRightErpStockCommodityId(usedStockCommodityIdList, + rightId, err := FindRightErpStockCommodityId(usedStockCommodityIdList, trimCommodities[i].CommodityId, stockCommodity) if err != nil { return err diff --git a/test/stock_test.go b/test/stock_test.go index 1a502f5..68015ef 100644 --- a/test/stock_test.go +++ b/test/stock_test.go @@ -52,6 +52,24 @@ func TestStock(t *testing.T) { } +func TestFindRightErpStockCommodityId(t *testing.T) { + + usedStockCommodityIdList := make(map[uint32][]uint32) + commodityId := 23 + var stockCommodity []models.ErpStockCommodity + //stockCommodity1 := models.ErpStockCommodity{} + //stockCommodity1.ID = 4350 + // + //stockCommodity2 := models.ErpStockCommodity{} + //stockCommodity2.ID = 4351 + // + //stockCommodity = append(stockCommodity, stockCommodity1) + //stockCommodity = append(stockCommodity, stockCommodity2) + + rightId, _ := models.FindRightErpStockCommodityId(usedStockCommodityIdList, uint32(commodityId), stockCommodity) + fmt.Println("rightId is:", rightId) +} + func TestSetGameCardStock(t *testing.T) { SetGameCardStock() }