1.优化采购入库,判断同一批次入库的串码是否有重复;

This commit is contained in:
chenlin 2024-12-24 16:39:57 +08:00
parent 7e1dc4646b
commit c5958b0cb7

View File

@ -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 {