Skip to content

POST dm-store/stock/detail/import

Content-Type: application/json

触发按钮:无

入参

传递对象:Long

字段类型必填多选校验规则说明
idLong-路径中的业务 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描述
checkCheckMapper.selectById按 id 查询check详情