导入物料

This commit is contained in:
张江玮
2023-02-14 14:16:23 +08:00
parent 6131d1fa12
commit 8a75334053
6 changed files with 213 additions and 7 deletions

View File

@@ -16,6 +16,7 @@ import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.Map;
@@ -101,4 +102,12 @@ public class MaterialbaseController {
public ResponseEntity<Object> getProductSeries() {
return new ResponseEntity<>(materialBaseService.getProductSeries("1527572574832300032"), HttpStatus.OK);
}
@Log("导入物料信息")
@ApiOperation("导入物料信息")
@PostMapping("/excelImport")
public ResponseEntity<Object> excelImport(@RequestBody MultipartFile file) {
materialBaseService.excelImport(file);
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.nl.wms.basedata.service.dto.MaterialbaseDto;
import org.springframework.data.domain.Pageable;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
import java.util.Map;
@@ -94,4 +95,5 @@ public interface MaterialbaseService {
JSONArray getProductSeries(String parent_class_id);
void excelImport(MultipartFile file);
}

View File

@@ -7,12 +7,17 @@ import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelReader;
import com.alibaba.excel.read.metadata.ReadSheet;
import com.alibaba.excel.support.ExcelTypeEnum;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.common.utils.FileUtil;
import org.nl.modules.common.utils.SecurityUtils;
import org.nl.modules.wql.WQL;
import org.nl.modules.wql.core.bean.WQLObject;
@@ -21,10 +26,15 @@ import org.nl.wms.basedata.eum.MaterOptTypeEnum;
import org.nl.wms.basedata.service.ClassstandardService;
import org.nl.wms.basedata.service.MaterialbaseService;
import org.nl.wms.basedata.service.dto.MaterialbaseDto;
import org.nl.wms.util.CommonUtils;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -240,4 +250,49 @@ public class MaterialbaseServiceImpl implements MaterialbaseService {
return newParentArray;
}
@Override
public void excelImport(MultipartFile multipartFile) {
File file = FileUtil.toFile(multipartFile);
String type = FileUtil.getType(file);
if (!"xlsx".equals(type) && !"xls".equals(type)) {
throw new BadRequestException("只能上传 xls 或 xlsx 文件");
}
ExcelReader excelReader = EasyExcel.read(file).build();
List<ReadSheet> sheets = excelReader.excelExecutor().sheetList();
WQLObject materialTable = WQLObject.getWQLObject("md_me_materialbase");
JSONObject material = new JSONObject();
Long userId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName();
String now = DateUtil.now();
for (ReadSheet sheet : sheets) {
List<Map<Integer, String>> materials = EasyExcel.read(file).sheet(sheet.getSheetNo()).doReadSync();
for (Map<Integer, String> materialMap : materials) {
material.put("material_id", IdUtil.getSnowflake(1L, 1L).nextId());
String material_code = materialMap.get(1);
material.put("material_code", material_code);
material.put("material_name", materialMap.get(2));
material.put("base_unit", materialMap.get(3));
material.put("pack_qty", materialMap.get(4) == null ? 0 : Double.parseDouble(materialMap.get(4)));
material.put("is_used", '1');
material.put("is_delete", '0');
if (ObjectUtil.isNotEmpty(materialTable.query("material_code = '" + material_code + "'").uniqueResult(0))) {
material.put("update_optid", userId);
material.put("update_optname", nickName);
material.put("update_time", now);
materialTable.update(material);
} else {
material.put("create_id", userId);
material.put("create_name", nickName);
material.put("create_time", now);
material.put("update_optid", userId);
material.put("update_optname", nickName);
material.put("update_time", now);
materialTable.insert(material);
}
}
}
}
}