service->index($request->all()); }, __('message.work_order.fetched')); } /** * 통계 조회 */ public function stats() { return ApiResponse::handle(function () { return $this->service->stats(); }, __('message.work_order.fetched')); } /** * 단건 조회 */ public function show(int $id) { return ApiResponse::handle(function () use ($id) { return $this->service->show($id); }, __('message.work_order.fetched')); } /** * 생성 */ public function store(WorkOrderStoreRequest $request) { return ApiResponse::handle(function () use ($request) { return $this->service->store($request->validated()); }, __('message.work_order.created')); } /** * 수정 */ public function update(WorkOrderUpdateRequest $request, int $id) { return ApiResponse::handle(function () use ($request, $id) { return $this->service->update($id, $request->validated()); }, __('message.work_order.updated')); } /** * 삭제 */ public function destroy(int $id) { return ApiResponse::handle(function () use ($id) { $this->service->destroy($id); return 'success'; }, __('message.work_order.deleted')); } /** * 상태 변경 */ public function updateStatus(WorkOrderStatusRequest $request, int $id) { return ApiResponse::handle(function () use ($request, $id) { return $this->service->updateStatus($id, $request->validated()['status']); }, __('message.work_order.status_updated')); } /** * 담당자 배정 */ public function assign(WorkOrderAssignRequest $request, int $id) { return ApiResponse::handle(function () use ($request, $id) { return $this->service->assign($id, $request->validated()); }, __('message.work_order.assigned')); } /** * 벤딩 항목 토글 */ public function toggleBendingField(Request $request, int $id) { return ApiResponse::handle(function () use ($request, $id) { return $this->service->toggleBendingField($id, $request->input('field')); }, __('message.work_order.bending_toggled')); } /** * 이슈 추가 */ public function addIssue(WorkOrderIssueRequest $request, int $id) { return ApiResponse::handle(function () use ($request, $id) { return $this->service->addIssue($id, $request->validated()); }, __('message.work_order.issue_added')); } /** * 이슈 해결 */ public function resolveIssue(int $workOrderId, int $issueId) { return ApiResponse::handle(function () use ($workOrderId, $issueId) { return $this->service->resolveIssue($workOrderId, $issueId); }, __('message.work_order.issue_resolved')); } /** * 품목 상태 변경 */ public function updateItemStatus(Request $request, int $workOrderId, int $itemId) { return ApiResponse::handle(function () use ($request, $workOrderId, $itemId) { return $this->service->updateItemStatus($workOrderId, $itemId, $request->input('status')); }, __('message.work_order.item_status_updated')); } /** * 자재 목록 조회 */ public function materials(int $id) { return ApiResponse::handle(function () use ($id) { return $this->service->getMaterials($id); }, __('message.work_order.materials_fetched')); } /** * 자재 투입 등록 (로트별 수량 차감) */ public function registerMaterialInput(Request $request, int $id) { return ApiResponse::handle(function () use ($request, $id) { return $this->service->registerMaterialInput($id, $request->input('inputs', [])); }, __('message.work_order.material_input_registered')); } /** * 공정 단계 진행 현황 조회 */ public function stepProgress(int $id) { return ApiResponse::handle(function () use ($id) { return $this->service->getStepProgress($id); }, __('message.work_order.fetched')); } /** * 공정 단계 완료 토글 */ public function toggleStepProgress(Request $request, int $id, int $progressId) { return ApiResponse::handle(function () use ($id, $progressId) { return $this->service->toggleStepProgress($id, $progressId); }, __('message.work_order.updated')); } /** * 자재 투입 이력 조회 */ public function materialInputHistory(int $id) { return ApiResponse::handle(function () use ($id) { return $this->service->getMaterialInputHistory($id); }, __('message.work_order.fetched')); } /** * 자재 투입 LOT 번호 조회 (stock_transactions 기반) */ public function materialInputLots(int $id) { return ApiResponse::handle(function () use ($id) { return $this->service->getMaterialInputLots($id); }, __('message.work_order.fetched')); } /** * 품목별 중간검사 데이터 저장 */ public function storeItemInspection(StoreItemInspectionRequest $request, int $workOrderId, int $itemId) { return ApiResponse::handle(function () use ($request, $workOrderId, $itemId) { return $this->service->storeItemInspection($workOrderId, $itemId, $request->validated()); }, __('message.work_order.inspection_saved')); } /** * 작업지시 전체 품목 검사 데이터 조회 */ public function inspectionData(Request $request, int $id) { return ApiResponse::handle(function () use ($request, $id) { return $this->service->getInspectionData($id, $request->all()); }, __('message.work_order.fetched')); } /** * 작업지시 검사 성적서용 데이터 조회 */ public function inspectionReport(int $id) { return ApiResponse::handle(function () use ($id) { return $this->service->getInspectionReport($id); }, __('message.work_order.fetched')); } /** * 작업지시의 검사용 문서 템플릿 조회 */ public function inspectionTemplate(int $id) { return ApiResponse::handle(function () use ($id) { return $this->service->getInspectionTemplate($id); }, __('message.work_order.fetched')); } /** * 검사 문서 resolve (기존 문서 조회 또는 생성 정보 반환) */ public function resolveInspectionDocument(Request $request, int $id) { return ApiResponse::handle(function () use ($request, $id) { return $this->service->resolveInspectionDocument($id, $request->all()); }, __('message.fetched')); } /** * 검사 완료 시 검사 문서(Document) 생성/수정 */ public function createInspectionDocument(Request $request, int $id) { return ApiResponse::handle(function () use ($request, $id) { return $this->service->createInspectionDocument($id, $request->all()); }, __('message.work_order.inspection_document_created')); } }