Appearance
POST /dm-store/productLine/importExcel
Content-Type: multipart/form-data
触发按钮:无
入参
传递对象:MultipartFile
| 字段 | 类型 | 必填 | 多选 | 校验规则 | 说明 |
|---|---|---|---|---|---|
| file | MultipartFile | 否 | 否 | - | Excel 文件 |
出参
传递对象:ResultData<ImportResultInfo><导入结果对象>
无
前端校验规则
前端校验
├── 权限校验
│ └── 导入按钮权限
│ └── v-auth: 'information:productLine:import:popup'
├── 文件上传校验
│ └── file
│ ├── accept: .xlsx,.xls
│ ├── 文件格式限制:仅允许 .xlsx、.xls
│ ├── 文件大小限制:小于 5MB
│ └── 上传数量限制:仅保留最后一次选择的 1 个文件
└── 提交拦截校验
└── importFile
├── 未选择文件时拦截提交
├── 文件后缀非 .xlsx/.xls 时拦截提交
└── 文件大小≥5MB 时拦截提交后端逻辑
业务流程:校验导入数据 -> 校验产品线唯一性 -> 识别新增或更新记录 -> 生成产品线编号 -> 批量保存产品线
├── 解析Excel导入数据
│ └── ExcelImportHandler.execute :315-316
├── 校验并归集有效数据
│ ├── 查询未删除产品线
│ │ └── ProductLineServiceImpl.list :335
│ ├── 校验必填项与导入内重复:handleImportData :361-400
│ └── 存在错误数据则返回失败明细:handleImportData :403-409
├── 识别新增或更新记录
│ └── 按产品线编码/名称匹配现有记录:handleImportData :412-425
├── 生成产品线编号
│ ├── 新增记录生成编号:handleImportData :429-431
│ └── RedisService.getCommonSeqNo :430
└── 批量保存产品线
└── ProductLineServiceImpl.saveOrUpdateBatch :437后端校验规则
后端校验
├── 业务约束校验
│ └── 校验导入数据量上限不能超过10000条:handleImportData :350-352
│ └── ExceptionCode.Ex600148
└── 业务唯一性校验
├── 校验导入文件内产品线名称是否重复:handleImportData :378-380
│ └── StoreExceptionCode.EX201040
└── 校验导入文件内产品线编码是否重复:handleImportData :382-384
└── StoreExceptionCode.EX201041涉及数据库表
| 库名.表名 | mapper.statement | 描述 |
|---|---|---|
| store.product_line | ProductLineMapper.insertOrUpdateBatch | 批量新增或更新productLine数据 |