whereIn('external_sku_id', $externalSkuIds) ->get(['id', 'status', 'external_sku_id', 'stock', "sale_stock", "cost"]) ->toArray(); $hasGoodsSkus = ArrayUtils::index($hasGoodsSkus, 'external_sku_id'); //获取供货商 $supplierIdKeyByNameMap = Suppliers::query()->whereIn("supplier_name", $supplierNames)->get() ->pluck("id", "supplier_name")->toArray(); $buyerUserIdKeyByNameMap = User::query()->whereIn("name", $buyerNames)->get() ->pluck("id", "name")->toArray(); $expireDay = DeveloperConfigService::getDefaultExpireDay(); $today = DateTimeUtils::getToday(); //excel字段排序 編碼 商品名稱 导购數量 成本价 采购人名称 供应商名称 保质期 foreach ($collection as $row) { if (!isset($hasGoodsSkus[$row[0]])) { continue; } //执行库存操作 $goodsSkuItem = $hasGoodsSkus[$row[0]]; //保存記錄 $purchaseRecords = new PurchaseRecords(); $purchaseRecords->external_sku_id = $row[0]; $purchaseRecords->num = $row[2]; $purchaseRecords->cost = $row[3]; $purchaseRecords->date = $today; $purchaseRecords->buyer_user_id = $buyerUserIdKeyByNameMap[$row[4]] ?? 0; $purchaseRecords->buyer_name = $row[4] ?? ''; $purchaseRecords->supplier_name = $row[5] ?? ''; $purchaseRecords->supplier_id = $supplierIdKeyByNameMap[$row[5]] ?? 0; $purchaseRecords->expire_time = !empty($row[6]) ? Carbon::parse($row[6])->toDateTimeString() : Carbon::now()->addDays($expireDay)->toDateTimeString(); $purchaseRecords->save(); $updateIds = GoodSkuService::computeSkuStock($goodsSkuItem, ["num" => $row[2], 'cost' => $row[3]]); } Log::info("采购导入内容:", $collection); // 批量更新 event(new BatchStockUpdateEvent($updateIds)); } } }