注意:文件导入用到Post请求方式
例:
@PostMapping("/admin/csv/export")
@ApiOperation("后台批量导入商品分仓库存数据")
public Result adminExport(@RequestParam MultipartFile file,
@RequestParam String organizationId,
@ApiIgnore Operator operator) {
String userId = operator != null ? operator.getUserId() : null;
logger.debug("开始批量导入分仓库存数据userId:{}", userId);
String exceptionMessage = handleFile(file);
if (!Objects.isNull(exceptionMessage)) {
return Result.errorOf(exceptionMessage);
}
try {
//创建csv对象
CsvReader csvReader = new CsvReader(file.getInputStream(), Charset.forName("GBK"));
//读取表头
csvReader.readHeaders();
if (!"产品编码".equals(csvReader.getHeader(0)) || !"分仓".equals(csvReader.getHeader(1))
|| !"库存".equals(csvReader.getHeader(2))) {
return Result.errorOf("导入模板有误");
}
while (csvReader.readRecord()) {
//产品编码
String goodsId = csvReader.get(0);
//分仓
String compartment = csvReader.get(1);
//库存
Long stock = Long.parseLong(csvReader.get(2));
GoodsCompartmentStockAddParam param = new GoodsCompartmentStockAddParam();
param.setGoodsId(goodsId);
param.setCompartment("0" + compartment);
param.setStock(stock);
param.setOrganizationId(organizationId);
GoodsCompartmentStockData compartmentStockData = goodsCompartmentStockManager.get(goodsId, organizationId, param.getCompartment());
//分仓库存数据更新
if (compartmentStockData != null) {
goodsCompartmentStockManager.update(compartmentStockData.getId(), param.getGoodsId(),
param.getOrganizationId(), param.getStock(), param.getCompartment(), userId);
} else {
//添加
goodsCompartmentStockManager.add(param, userId);
}
}
csvReader.close();
return Result.ok();
} catch (Exception e) {
logger.error("导入分仓数据失败userId:{}", userId);
return Result.errorOf("读取csv文件异常");
}
}
private String handleFile(MultipartFile file) {
final long limitFileSize = 1024 * 1024;
if (file != null) {
if (file.getSize() > limitFileSize) {
return "导入的文件大小不能超过1M";
} else if (!Objects.requireNonNull(file.getOriginalFilename()).contains(".csv")) {
return "导入的文件仅支持csv格式";
} else {
return null;
}
} else {
return "未上传文件";
}
}