Appearance
POST /dm-store/safeStock/importExcel
Content-Type: multipart/form-data
触发按钮:无
入参
传递对象:MultipartFile
| 字段 | 类型 | 必填 | 多选 | 校验规则 | 说明 |
|---|---|---|---|---|---|
| file | MultipartFile | 否 | 否 | - | Excel 文件 |
出参
传递对象:ResultData<ImportResultInfo><导入结果对象>
无
前端校验规则
前端校验
├── 提交拦截校验
│ └── 导入提交
│ └── 未选择文件时拦截提交
└── 文件上传校验
└── 导入文件
├── 文件格式限制:仅允许 .xlsx、.xls
├── 文件大小限制:小于 5MB
└── 最大上传数量限制:1 个后端逻辑
业务流程:解析导入数据 -> 校验仓库与物料及库存阈值 -> 校验导入重复并匹配存量记录 -> 批量新增或更新安全库存 -> 返回导入结果
├── 解析导入数据
│ └── ExcelImportHandler.execute :272-273
├── 校验仓库与物料及库存阈值
│ ├── 查询仓库主数据:StoreMainService.findStoreMain :299
│ ├── 查询物料主数据:PartMainService.findPartMain :301
│ └── 校验导入数据:handleImportData :303-345
├── 校验导入重复并匹配存量记录
│ ├── 查询现有安全库存:SafeStockService.queryByParams :390
│ └── 绑定已存在记录:handleImportData :397-402
├── 批量新增或更新安全库存
│ └── SafeStockServiceImpl.saveOrUpdateBatch :418
└── 返回导入结果
└── 返回导入结果:handleImportData :382-388后端校验规则
后端校验
├── 业务约束校验
│ ├── 校验导入数据量不得超过10000条:handleImportData :287-290
│ │ └── ExceptionCode.Ex600148
│ ├── 校验最大库存、最小库存、安全库存必须同时存在:handleImportData :328-330
│ │ └── ExceptionCode.EX90034
│ ├── 校验最大库存必须大于最小库存:handleImportData :336-337
│ │ └── ExceptionCode.EX90029
│ ├── 校验最大库存必须大于安全库存:handleImportData :339-340
│ │ └── ExceptionCode.EX90030
│ └── 校验安全库存必须大于最小库存:handleImportData :342-343
│ └── ExceptionCode.EX90031
├── 数据存在性校验
│ ├── 校验导入行仓库代号必须存在:handleImportData :307-312
│ │ └── ExceptionCode.EX90005
│ └── 校验导入行物料编码必须存在:handleImportData :319-324
│ └── ExceptionCode.EX90044
├── 条件业务校验
│ ├── 校验导入行仓库代号不能为空:handleImportData :303-305
│ │ └── ExceptionCode.EX90001
│ └── 校验导入行物料编码不能为空:handleImportData :316-318
│ └── ExceptionCode.EX90025
└── 业务唯一性校验
└── 校验物料编码+仓库编码组合不得重复:handleImportData :353-363
└── StoreExceptionCode.EX201046涉及数据库表
| 库名.表名 | mapper.statement | 描述 |
|---|---|---|
| store.safe_stock | SafeStockMapper.insertOrUpdateBatch | 批量新增或更新safety数据 |