Appearance
POST dm-store/stock/detail/import
Content-Type: application/json
触发按钮:无
入参
传递对象:Long
| 字段 | 类型 | 必填 | 多选 | 校验规则 | 说明 |
|---|---|---|---|---|---|
| id | Long | 否 | 否 | - | 路径中的业务 id |
出参
传递对象:ResultData<PartMainVo><单个 PartMainVo 对象>
json
{
"id": "",
"partNo": "",
"partCode": "",
"partName": "",
"spec": "",
"...": "..."
}前端校验规则
提交拦截校验
└── file(导入文件)
└── 未选择文件时直接拦截提交
文件上传校验
└── file(导入文件)
├── 文件格式限制:.xlsx、.xls
├── accept: .xlsx,.xls
├── 文件大小限制:小于 5MB
├── 非 .xlsx/.xls 时清空已选文件并拦截
├── 文件大小超限时清空已选文件并拦截
└── 最大上传数量:1(仅保留最后一次选择的文件)后端逻辑
业务流程:确认盘点单有效 -> 核对导入明细与盘点任务一致 -> 按物料管控方式定位盘点记录 -> 计算盘盈盘亏并批量更新结果
├── 接收导入并进入盘点明细处理:StockCheckDetailServiceImpl.importExcel :129-132
├── 校验盘点单:StockCheckOrdersMapper.selectOne :136-138
├── 校验导入明细与盘点任务一致
│ ├── 限制最大导入量 :157-160
│ ├── 查询盘点明细数量:count :161-162
│ ├── 比对导入行数与盘点明细数量 :164-166
│ └── 查询盘点明细:StockCheckDetailMapper.queryByOrderNo :172
├── 按物料管控方式匹配盘点记录
│ ├── 普通件匹配:StockCheckDetailServiceImpl.checkData1 :196
│ ├── 序列件匹配:StockCheckDetailServiceImpl.checkData2 :211
│ ├── 批次件匹配:StockCheckDetailServiceImpl.checkData3 :226
│ └── 返回导入失败明细 :258-264
└── 计算盘盈盘亏并回写盘点结果
├── 计算盘点结果:StockCheckDetailServiceImpl.getStockCheckResult :273
└── 批量更新盘点结果:updateBatchById :278后端校验规则
数据存在性校验
├── 校验盘点单号是否存在:handleImportData :136-142
│ └── ExceptionCode.EX100006
├── 普通件必须命中现有盘点明细:checkData1 :308-325
│ └── ExceptionCode.EX100007
├── 序列件必须命中现有盘点明细:checkData2 :333-350
│ └── ExceptionCode.EX100007
└── 批次件必须命中现有盘点明细:checkData3 :359-376
└── ExceptionCode.EX100007
业务约束校验
├── 校验导入总行数不得超过10000:handleImportData :157-160
│ └── ExceptionCode.Ex600148
├── 校验导入总行数必须与盘点单现存明细数一致:handleImportData :161-166
│ └── ExceptionCode.EX90157
├── 校验 partCode 不能为空:handleImportData :175-177
│ └── ExceptionCode.EX90101
├── 校验 controlType 不能为空:handleImportData :178-180
│ └── ExceptionCode.EX90104
├── 普通件校验 partCode 不能为空:handleImportData :183-186
│ └── ExceptionCode.EX90102
├── 普通件校验 storeBinName 不能为空:handleImportData :187-189
│ └── ExceptionCode.EX90103
├── 序列件校验 seriesNumber 不能为空:handleImportData :202-205
│ └── ExceptionCode.EX90105
└── 批次件校验 caseNumber 不能为空:handleImportData :217-220
└── ExceptionCode.EX90106涉及数据库表
| 库名.表名 | mapper.statement | 描述 |
|---|---|---|
| check | CheckMapper.selectById | 按 id 查询check详情 |