From c5958b0cb75d75840754fff091b67a3d6a1bca97 Mon Sep 17 00:00:00 2001 From: chenlin Date: Tue, 24 Dec 2024 16:39:57 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BC=98=E5=8C=96=E9=87=87=E8=B4=AD=E5=85=A5?= =?UTF-8?q?=E5=BA=93=EF=BC=8C=E5=88=A4=E6=96=AD=E5=90=8C=E4=B8=80=E6=89=B9?= =?UTF-8?q?=E6=AC=A1=E5=85=A5=E5=BA=93=E7=9A=84=E4=B8=B2=E7=A0=81=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E6=9C=89=E9=87=8D=E5=A4=8D=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/models/purchase.go | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/app/admin/models/purchase.go b/app/admin/models/purchase.go index 89487f6..66cc307 100644 --- a/app/admin/models/purchase.go +++ b/app/admin/models/purchase.go @@ -1568,9 +1568,28 @@ func InventoryErpPurchaseUpdateRejectStock(gdb *gorm.DB, list []ErpPurchaseInven return nil } +// CheckDuplicateIMEI 判断入参的串码是否有重复的情况 +func CheckDuplicateIMEI(req *ErpPurchaseInventoryReq) (bool, string) { + // 使用 map 存储已经遍历的 IMEI + imeiMap := make(map[string]bool) + + for _, inventory := range req.Inventories { + if inventory.IMEI != "" { // 确保 IMEI 有值 + if imeiMap[inventory.IMEI] { + // 如果已经存在相同的 IMEI,返回 true 和重复的 IMEI + return true, inventory.IMEI + } + // 将当前 IMEI 添加到 map 中 + imeiMap[inventory.IMEI] = true + } + } + // 如果没有找到重复的 IMEI,返回 false + return false, "" +} + // 校验入参数据,执行数量是否超过总数;串码商品的串码是否重复 func checkPurchaseInventory(req *ErpPurchaseInventoryReq, imeiCheckFlag bool) error { - // 查询现有的零售订单信息 + // 查询现有的采购订单信息 var commodities []ErpPurchaseCommodity err := orm.Eloquent.Table("erp_purchase_commodity").Where("erp_purchase_order_id = ?", req.ErpPurchaseOrderId).Find(&commodities).Error if err != nil { @@ -1578,6 +1597,12 @@ func checkPurchaseInventory(req *ErpPurchaseInventoryReq, imeiCheckFlag bool) er return err } + // 判断串码是否重复 + flag, duplicateImei := CheckDuplicateIMEI(req) + if flag { + return fmt.Errorf("[%s]串码重复", duplicateImei) + } + countMap := make(map[uint32]uint32) for i, inventory := range req.Inventories { if inventory.ErpCommodityId == 0 {