feat:FQC 제품검사 문서 일괄생성 API 추가
- POST /v1/documents/bulk-create-fqc: 수주 개소별 제품검사 문서 일괄생성 - GET /v1/documents/fqc-status: 수주별 FQC 진행현황 조회 - BulkCreateFqcRequest FormRequest 추가 - error.php에 no_order_items, already_created 메시지 추가 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
use App\Helpers\ApiResponse;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\Document\ApproveRequest;
|
||||
use App\Http\Requests\Document\BulkCreateFqcRequest;
|
||||
use App\Http\Requests\Document\IndexRequest;
|
||||
use App\Http\Requests\Document\RejectRequest;
|
||||
use App\Http\Requests\Document\ResolveRequest;
|
||||
@@ -73,6 +74,41 @@ public function destroy(int $id): JsonResponse
|
||||
}, __('message.deleted'));
|
||||
}
|
||||
|
||||
// =========================================================================
|
||||
// FQC 일괄생성 (제품검사)
|
||||
// =========================================================================
|
||||
|
||||
/**
|
||||
* 수주 개소별 제품검사 문서 일괄생성
|
||||
* POST /v1/documents/bulk-create-fqc
|
||||
*/
|
||||
public function bulkCreateFqc(BulkCreateFqcRequest $request): JsonResponse
|
||||
{
|
||||
return ApiResponse::handle(function () use ($request) {
|
||||
return $this->service->bulkCreateFqc($request->validated());
|
||||
}, __('message.created'));
|
||||
}
|
||||
|
||||
/**
|
||||
* 수주 FQC 진행현황 조회
|
||||
* GET /v1/documents/fqc-status?order_id=1&template_id=65
|
||||
*/
|
||||
public function fqcStatus(): JsonResponse
|
||||
{
|
||||
return ApiResponse::handle(function () {
|
||||
$orderId = (int) request('order_id');
|
||||
$templateId = (int) request('template_id');
|
||||
|
||||
if (! $orderId || ! $templateId) {
|
||||
throw new \Symfony\Component\HttpKernel\Exception\BadRequestHttpException(
|
||||
__('validation.required', ['attribute' => 'order_id, template_id'])
|
||||
);
|
||||
}
|
||||
|
||||
return $this->service->fqcStatus($orderId, $templateId);
|
||||
}, __('message.fetched'));
|
||||
}
|
||||
|
||||
// =========================================================================
|
||||
// Resolve/Upsert (React 연동용)
|
||||
// =========================================================================
|
||||
|
||||
31
app/Http/Requests/Document/BulkCreateFqcRequest.php
Normal file
31
app/Http/Requests/Document/BulkCreateFqcRequest.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests\Document;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class BulkCreateFqcRequest extends FormRequest
|
||||
{
|
||||
public function authorize(): bool
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'template_id' => 'required|integer|exists:document_templates,id',
|
||||
'order_id' => 'required|integer|exists:orders,id',
|
||||
];
|
||||
}
|
||||
|
||||
public function messages(): array
|
||||
{
|
||||
return [
|
||||
'template_id.required' => __('validation.required', ['attribute' => '템플릿']),
|
||||
'template_id.exists' => __('validation.exists', ['attribute' => '템플릿']),
|
||||
'order_id.required' => __('validation.required', ['attribute' => '수주']),
|
||||
'order_id.exists' => __('validation.exists', ['attribute' => '수주']),
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -214,6 +214,8 @@
|
||||
'not_your_turn' => '현재 결재 순서가 아닙니다.',
|
||||
'only_creator_can_cancel' => '작성자만 취소할 수 있습니다.',
|
||||
'approvers_required' => '결재선이 필요합니다.',
|
||||
'no_order_items' => '수주에 개소(품목)가 없습니다.',
|
||||
'already_created' => '이미 모든 개소에 대해 문서가 생성되었습니다.',
|
||||
],
|
||||
|
||||
// 전자결재 관련
|
||||
|
||||
@@ -20,6 +20,10 @@
|
||||
|
||||
// 문서 CRUD + 결재
|
||||
Route::prefix('documents')->group(function () {
|
||||
// FQC 일괄생성 (제품검사)
|
||||
Route::post('/bulk-create-fqc', [DocumentController::class, 'bulkCreateFqc'])->name('v1.documents.bulk-create-fqc');
|
||||
Route::get('/fqc-status', [DocumentController::class, 'fqcStatus'])->name('v1.documents.fqc-status');
|
||||
|
||||
// Resolve/Upsert (React 연동용)
|
||||
Route::get('/resolve', [DocumentController::class, 'resolve'])->name('v1.documents.resolve');
|
||||
Route::post('/upsert', [DocumentController::class, 'upsert'])->name('v1.documents.upsert');
|
||||
|
||||
Reference in New Issue
Block a user