true, 'keyword_fields' => ['product_code', 'product_name'], ]; public function __construct(MaterialService $service, MaterialValidate $validate) { $this->service = $service; $this->validate = $validate; } #[OA\Get(path: '/produce/material', summary: '物料列表', tags: ['produce-material'])] #[Permission(code: 'produce:material:list', description: '物料列表')] #[PageResponse(schema: [], example: [])] public function index(Request $request): \support\Response { return parent::index($request); } #[OA\Post(path: '/produce/material/import', summary: '导入物料', tags: ['produce-material'])] #[Permission(code: 'produce:material:import', description: '导入物料')] #[SimpleResponse(schema: [], example: [])] public function import(Request $request): \support\Response { try { $file = $request->file('file'); if (!$file) { return Json::fail('请选择Excel文件'); } if ($file->getSize() > 5 * 1024 * 1024) { return Json::fail('Excel文件不能超过5MB'); } $extension = strtolower((string) $file->getUploadExtension()); if (!in_array($extension, ['xlsx', 'xls', 'csv'], true)) { return Json::fail('只支持xlsx、xls或csv格式文件'); } $result = $this->service->importFromExcel($file->getPathname()); return Json::success('导入成功', $result); } catch (\Throwable $e) { return Json::fail($e->getMessage()); } } #[OA\Get(path: '/produce/material/{id}', summary: '物料详情', tags: ['produce-material'], x: [SchemaConstants::X_PROPERTY_IN => 'id', SchemaConstants::X_SCHEMA_REQUEST => IdRequest::class])] #[Permission(code: 'produce:material:read', description: '物料详情')] #[SimpleResponse(schema: [], example: [])] public function show(Request $request): \support\Response { return parent::show($request); } #[OA\Post(path: '/produce/material', summary: '创建物料', tags: ['produce-material'])] #[Permission(code: 'produce:material:create', description: '创建物料')] #[SimpleResponse(schema: [], example: [])] public function store(Request $request): \support\Response { return parent::store($request); } #[OA\Put(path: '/produce/material/{id}', summary: '更新物料', tags: ['produce-material'], x: [SchemaConstants::X_PROPERTY_IN => 'id', SchemaConstants::X_SCHEMA_REQUEST => IdRequest::class])] #[Permission(code: 'produce:material:update', description: '更新物料')] #[SimpleResponse(schema: [], example: [])] public function update(Request $request): \support\Response { return parent::update($request); } #[OA\Post(path: '/produce/material/export', summary: '导出物料', tags: ['produce-material'])] #[Permission(code: 'produce:material:list', description: '导出物料')] #[SimpleResponse(schema: [], example: [])] public function export(Request $request): \support\Response { return parent::export($request); } #[OA\Delete(path: '/produce/material/{id}', summary: '删除物料', tags: ['produce-material'], x: [SchemaConstants::X_PROPERTY_IN => 'id', SchemaConstants::X_SCHEMA_REQUEST => IdRequest::class])] #[Permission(code: 'produce:material:delete', description: '删除物料')] #[SimpleResponse(schema: [], example: [])] public function destroy(Request $request): \support\Response { return parent::destroy($request); } #[OA\Delete(path: '/produce/material', summary: '批量删除物料', tags: ['produce-material'], x: [SchemaConstants::X_SCHEMA_REQUEST => BatchDeleteRequest::class])] #[Permission(code: 'produce:material:delete', description: '批量删除物料')] #[SimpleResponse(schema: [], example: [])] public function batchDelete(Request $request): \support\Response { return parent::destroy($request); } }