From a43d8b0c8197d7793e45166b69e366678e27b0ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E5=BB=BA=E7=82=8A?= <924182103@qq.com> Date: Fri, 30 Aug 2024 17:06:24 +0800 Subject: [PATCH] =?UTF-8?q?=E9=B2=9C=E8=8A=B12.0-=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=8F=98=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Supplier/PurchaseRecordController.php | 68 +++++++++++++++---- app/Http/Enum/Purchase/PurchaseConfigEnum.php | 11 +++ app/Http/Enum/Purchase/PurchaseStatusEnum.php | 11 +++ app/Imports/PurchaseImport.php | 15 ++-- app/Services/Statistic/SaleDataService.php | 3 +- routes/api.php | 2 + 6 files changed, 91 insertions(+), 19 deletions(-) create mode 100644 app/Http/Enum/Purchase/PurchaseConfigEnum.php create mode 100644 app/Http/Enum/Purchase/PurchaseStatusEnum.php diff --git a/app/Http/Controllers/Supplier/PurchaseRecordController.php b/app/Http/Controllers/Supplier/PurchaseRecordController.php index d794789..c3a93f0 100644 --- a/app/Http/Controllers/Supplier/PurchaseRecordController.php +++ b/app/Http/Controllers/Supplier/PurchaseRecordController.php @@ -5,6 +5,8 @@ namespace App\Http\Controllers\Supplier; use App\Events\BatchStockUpdateEvent; use App\Http\Controllers\Controller; use App\Http\Enum\ExcelKeyEnum; +use App\Http\Enum\Purchase\PurchaseConfigEnum; +use App\Http\Enum\Purchase\PurchaseStatusEnum; use App\Http\Enum\TargetTypeEnum; use App\Http\Resources\GoodsSkuResource; use App\Http\Resources\RolesResource; @@ -29,6 +31,8 @@ use Maatwebsite\Excel\Facades\Excel; class PurchaseRecordController extends Controller { + public $isAutoCheck = 0; + public function __construct(Request $request) { $this->log = new LogModel([ @@ -95,12 +99,13 @@ class PurchaseRecordController extends Controller $purchaseRecords->expire_time = Carbon::parse($allParams['expire_time'])->toDateTimeString(); } else { $purchaseRecords->expire_time = Carbon::now()->addDays($expireDay)->toDateTimeString(); - } $purchaseRecords->save(); - $allParams['user_id'] = $request->user()->id; - $updateIds = GoodSkuService::computeSkuStock($goodsSku->toArray(), $allParams, TargetTypeEnum::PURCHASE); - event(new BatchStockUpdateEvent($updateIds)); + if (PurchaseConfigEnum::IS_AUTO_CHECK) { + $allParams['user_id'] = $request->user()->id; + $updateIds = GoodSkuService::computeSkuStock($goodsSku->toArray(), $allParams, TargetTypeEnum::PURCHASE); + event(new BatchStockUpdateEvent($updateIds)); + } } else { $this->res = [ 'httpCode' => 400, @@ -140,6 +145,9 @@ class PurchaseRecordController extends Controller if (!empty($allParams['expire_time'])) { $purchaseRecords->expire_time = Carbon::parse($allParams['expire_time'])->toDateTimeString(); } + if (!empty($allParams['arrived_time'])) { + $purchaseRecords->arrived_time = Carbon::parse($allParams['arrived_time'])->toDateTimeString(); + } $purchaseRecords->save(); @@ -175,10 +183,10 @@ class PurchaseRecordController extends Controller $purchaseOrders = $request->input('purchaseOrders') ?? []; $externalSkuIds = collect($purchaseOrders)->pluck("external_sku_id")->toArray(); $goodsSku = GoodsSku::query()->whereIn('external_sku_id', $externalSkuIds)->get(); - if ($goodsSku->pluck("external_sku_id")->diff($externalSkuIds)->isNotEmpty()) { - $content = implode(',', $goodsSku->pluck("external_sku_id")->diff($externalSkuIds)->toArray()); + if (collect($externalSkuIds)->diff($goodsSku->pluck("external_sku_id"))->isNotEmpty()) { + $content = implode(',', collect($externalSkuIds)->diff($goodsSku->pluck("external_sku_id"))->toArray()); $content .= "以上sku编码数据库中不存在"; - return response($content, $this->res['httpCode']); + return response($content, 400); } $goodsSkuMap = $goodsSku->pluck(null, 'external_sku_id')->toArray(); $allUpdateIds = []; @@ -199,15 +207,21 @@ class PurchaseRecordController extends Controller $purchaseRecords->buyer_name = $v['buyer_name'] ?? ''; $purchaseRecords->supplier_name = $v['supplier_name'] ?? ''; $purchaseRecords->supplier_id = $v['supplier_id'] ?? 0; + $purchaseRecords->arrived_time = $v['arrived_time'] ?? Carbon::now()->toDateTimeString(); $purchaseRecords->expire_time = Carbon::now()->addDays($expireDay)->toDateTimeString(); $purchaseRecords->save(); - $v['user_id'] = $request->user()->id; - $updateIds = GoodSkuService::computeSkuStock($goodsSkuItem, $v, TargetTypeEnum::PURCHASE); - $allUpdateIds = array_merge($allUpdateIds, $updateIds); + if (PurchaseConfigEnum::IS_AUTO_CHECK) { + $v['user_id'] = $request->user()->id; + $updateIds = GoodSkuService::computeSkuStock($goodsSkuItem, $v, TargetTypeEnum::PURCHASE); + $allUpdateIds = array_merge($allUpdateIds, $updateIds); + } + + } + if (PurchaseConfigEnum::IS_AUTO_CHECK) { + //如果是組合商品会触发重算逻辑 + event(new BatchStockUpdateEvent(collect($allUpdateIds)->unique()->toArray())); } - //如果是組合商品会触发重算逻辑 - event(new BatchStockUpdateEvent(collect($allUpdateIds)->unique()->toArray())); return response($this->res, $this->res['httpCode']); } @@ -237,5 +251,35 @@ class PurchaseRecordController extends Controller return response($this->res, $this->res['httpCode']); } + /** + * 报损单后台批量存储 + * @param Request $request + * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response|void + */ + public function purchaseBatchCheck(Request $request) + { + $params = $request->validate([ + 'purchaseOrders' => 'required|array', + 'purchaseOrders.*.id' => 'required|integer', + 'purchaseOrders.*.status' => 'required|in:1,2']); + $allUpdateIds = []; + foreach ($params['purchaseOrders'] as $v) { + $purchaseRecords = PurchaseRecords::query()->with("goodsSku")->where("id", $v['id'])->first(); + if (empty($purchaseRecords)) { + continue; + } + $purchaseRecords->status = $v['status']; + $purchaseRecords->save(); + if (PurchaseStatusEnum::CHECK_SUCCESS == $v['status']) { + $updateIds = GoodSkuService::computeSkuStock($v['goodsSku'], $v, TargetTypeEnum::PURCHASE); + $allUpdateIds = array_merge($allUpdateIds, $updateIds); + } + } + if(!empty($allUpdateIds)){ + event(new BatchStockUpdateEvent(collect($allUpdateIds)->unique()->toArray())); + } + return response($this->res, $this->res['httpCode']); + } + } diff --git a/app/Http/Enum/Purchase/PurchaseConfigEnum.php b/app/Http/Enum/Purchase/PurchaseConfigEnum.php new file mode 100644 index 0000000..43174cb --- /dev/null +++ b/app/Http/Enum/Purchase/PurchaseConfigEnum.php @@ -0,0 +1,11 @@ +supplier_id = $supplierIdKeyByNameMap[$row[5]] ?? 0; $purchaseRecords->expire_time = Carbon::now()->addDays($expireDay)->toDateTimeString(); $purchaseRecords->save(); - - $updateIds = GoodSkuService::computeSkuStock($goodsSkuItem, ["num" => $row[2], 'cost' => $row[3]], TargetTypeEnum::PURCHASE); - $allUpdateIds = array_merge($allUpdateIds, $updateIds); + if (PurchaseConfigEnum::IS_AUTO_CHECK) { + $updateIds = GoodSkuService::computeSkuStock($goodsSkuItem, ["num" => $row[2], 'cost' => $row[3]], TargetTypeEnum::PURCHASE); + $allUpdateIds = array_merge($allUpdateIds, $updateIds); + } } Log::info("采购导入内容:", $collection); - Log::info("allUpdateIds:", $allUpdateIds); - // 批量更新 - event(new BatchStockUpdateEvent(collect($allUpdateIds)->unique()->toArray())); + if (PurchaseConfigEnum::IS_AUTO_CHECK) { + // 批量更新 + event(new BatchStockUpdateEvent(collect($allUpdateIds)->unique()->toArray())); + } } } } diff --git a/app/Services/Statistic/SaleDataService.php b/app/Services/Statistic/SaleDataService.php index 6ce6ab3..6a6e64c 100644 --- a/app/Services/Statistic/SaleDataService.php +++ b/app/Services/Statistic/SaleDataService.php @@ -33,6 +33,7 @@ class SaleDataService return static::skuSaleStatisticsByHistory($request); } } + /** * sku维度 今日实时统计 */ @@ -130,7 +131,7 @@ class SaleDataService return $v; })->pluck(null, "external_sku_id")->toArray(); Log::info("combineGoodsSkus", $combineGoodsSkus); - $orderItems->getCollection()· use ($combineGoodsSkus) { + $orderItems->getCollection()->map(function ($v) use ($combineGoodsSkus) { if (!empty($combineGoodsSkus[$v['external_sku_id']])) { foreach ($combineGoodsSkus[$v['external_sku_id']] as $key => $val) { $v->$key = $val; diff --git a/routes/api.php b/routes/api.php index 8bf1da4..3173f5a 100644 --- a/routes/api.php +++ b/routes/api.php @@ -102,6 +102,8 @@ Route::middleware(['auth:api', 'check.permissions'])->group(function () { Route::post('purchase_record/purchase_batch_store', [PurchaseRecordController::class, 'purchaseBatchStore'])->name('purchase_record.purchase_batch_store'); Route::post('daily_stock_record/inventory_batch_store', [DailyStockRecordController::class, 'inventoryBatchStore'])->name('daily_stock_record.inventory_batch_store'); + Route::post('purchase_record/purchase_batch_check', [PurchaseRecordController::class, 'purchaseBatchCheck'])->name('purchase_record.purchase_batch_check'); + Route::get('user/user_roles', [UsersController::class, 'userRoles'])->name('users.user_roles'); });