Appearance
POST /dm-store/supplier/importExcel
Content-Type: multipart/form-data
触发按钮:无
入参
传递对象:MultipartFile
| 字段 | 类型 | 必填 | 多选 | 校验规则 | 说明 |
|---|---|---|---|---|---|
| file | MultipartFile | 否 | 否 | - | Excel 文件 |
出参
传递对象:ResultData<ImportResultInfo><导入结果对象>
无
前端校验规则
文件上传校验
├── 文件格式仅允许 .xlsx、.xls
├── 文件大小必须小于 5MB
└── 文件列表仅保留最后一次选择的文件
提交拦截
└── 未选择文件时禁止提交后端逻辑
业务流程:导入供应商数据,校验导入记录有效性,并按供应商编码或名称识别新增或更新后批量落库
├── 解析导入文件
│ └── ExcelImportHandler.execute :348-349
├── 查询现有供应商
│ └── SupplierServiceImpl.findAllSupplier :369-374
├── 校验导入记录
│ └── handleImportData :399-473
├── 识别新增或更新供应商
│ ├── 按供应商编码或名称回填已有记录:handleImportData :476-489
│ └── 新增记录生成供应商编号:RedisService.getCommonSeqNo :493
└── 批量新增或更新供应商
└── saveOrUpdateBatch :500后端校验规则
业务校验
├── 导入数据量不得超过10000条:handleImportData :388-390
│ └── 异常码:ExceptionCode.Ex600148
├── 供应商编码不能为空:handleImportData :400-401
│ └── 异常码:ExceptionCode.EX90011
├── 供应商名称不能为空:handleImportData :403-404
│ └── 异常码:ExceptionCode.EX90012
├── 联系方式格式仅允许手机号或座机号:handleImportData :409-417
│ ├── 生效条件:系统已有供应商数据,且导入联系方式非空
│ └── 异常码:StoreExceptionCode.EX201056
├── 联系方式不得与系统现有供应商重复:handleImportData :418-422
│ ├── 生效条件:系统已有供应商数据,且导入联系方式非空
│ └── 异常码:StoreExceptionCode.EX201055
└── 导入批次内唯一性校验
├── 供应商名称重复:handleImportData :436-438
│ └── 异常码:StoreExceptionCode.EX201042
├── 供应商编码重复:handleImportData :440-442
│ └── 异常码:StoreExceptionCode.EX201043
└── 联系方式重复:handleImportData :444-447
├── 生效条件:当前行前置校验未命中,且双方联系方式均非空
└── 异常码:StoreExceptionCode.EX201057涉及数据库表
| 库名.表名 | mapper.statement | 描述 |
|---|---|---|
| store.supplier | SupplierMapper.insertOrUpdateBatch | 批量新增或更新supplier数据 |