middleware('auth'); $this->middleware('company.identify'); } public function template(): BinaryFileResponse { $path = $this->template->path(); abort_unless(is_file($path), 404, '对账单模板不存在。'); return response()->download($path, $this->template->filename()); } public function upload(Request $request): JsonResponse|RedirectResponse { $request->validate([ 'import' => ['required', 'file', 'mimes:xlsx,xls,csv', 'max:51200'], 'supplier' => ['required', 'string', 'max:191'], ]); $supplier = trim((string) $request->input('supplier')); if ($supplier === '') { abort(422, '请选择厂家。'); } $records = $this->template->parse($request->file('import'), $supplier); $rows = $this->statements->save( $supplier, $records, (string) $request->file('import')->getClientOriginalName(), (int) (company_id() ?: 1), user_id() ? (int) user_id() : null, ); $message = "对账单已保存:{$supplier} 共 {$rows} 行。"; return $request->expectsJson() ? response()->json(['message' => $message, 'rows' => $rows]) : back()->with('success', $message); } }