const express = require('express'); const router = express.Router(); const multer = require('multer'); const path = require('path'); const fs = require('fs'); const { parseICDFile } = require('../utils/icd-parser'); // 确保uploads目录存在 const uploadsDir = path.join(__dirname, '..', 'uploads'); if (!fs.existsSync(uploadsDir)) { fs.mkdirSync(uploadsDir, { recursive: true }); } // 配置文件上传 const storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, uploadsDir); }, filename: function (req, file, cb) { cb(null, Date.now() + path.extname(file.originalname)); } }); const upload = multer({ storage: storage, fileFilter: function (req, file, cb) { // 检查文件扩展名 const ext = path.extname(file.originalname).toLowerCase(); if (ext !== '.xlsx') { return cb(new Error('只允许上传.xlsx文件')); } cb(null, true); } }); // 导入ICD文件 router.post('/import', upload.single('file'), async (req, res) => { try { if (!req.file) { return res.status(400).json({ success: false, error: '未找到上传的文件' }); } const result = await parseICDFile(req.file.path); // 删除临时文件 fs.unlinkSync(req.file.path); res.json({ success: true, data: result }); } catch (error) { // 如果文件存在,删除它 if (req.file && fs.existsSync(req.file.path)) { fs.unlinkSync(req.file.path); } console.error('导入ICD文件时出错:', error); res.status(500).json({ success: false, error: error.message }); } }); module.exports = router;