Browse Source

物品基本信息 导入代码

master
chenfang 2 years ago
parent
commit
b0664b1df5
  1. 20
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itembasic/ItembasicController.java
  2. 49
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itembasic/vo/ItembasicImportExcelVo.java
  3. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itembasic/vo/ItembasicImportRespVO.java
  4. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicService.java
  5. 32
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicServiceImpl.java

20
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itembasic/ItembasicController.java

@ -25,6 +25,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
@ -137,10 +138,11 @@ public class ItembasicController {
public void importTemplate(HttpServletResponse response) throws IOException {
// 手动创建导出 demo
List<ItembasicImportExcelVo> list = Arrays.asList(
ItembasicImportExcelVo.builder().code("aaaa").status("ENABLE").uom("EA").isStdPack("TURE").enableBuy("TURE").enableMake("TURE").enableOutsourcing("TURE")
.isRecycled("TURE").isPhantom("TURE").abcClass("A").type("RAW").validityDays(1).available("TRUE").build(),
ItembasicImportExcelVo.builder().code("bbbb").status("DISABLE").uom("EA").isStdPack("FASLE").enableBuy("FASLE").enableMake("FASLE").enableOutsourcing("FASLE")
.isRecycled("FASLE").isPhantom("FASLE").abcClass("Z").type("RAW").validityDays(1).available("FASLE").build()
ItembasicImportExcelVo.builder().code("code").name("name").desc1("描述1").desc2("描述2").status("ENABLE").uom("EA").altUom("EA")
.isStdPack("TRUE'").enableBuy("TRUE").enableMake("TRUE").enableOutsourcing("TRUE")
.isRecycled("TRUE").isPhantom("TRUE").abcClass("A").type("OTS").category("DEFAULT").itemGroup("DEFAULT")
.color("DEFAULT").configuration("DEFAULT").project("项目").eqLevel("DEFAULT").validityDays(1).available("TRUE")
.activeTime(LocalDateTime.now()).expireTime(LocalDateTime.now()).remark("备注").build()
);
// 输出
ExcelUtils.write(response, "用户导入模板.xls", "用户列表", ItembasicImportExcelVo.class, list);
@ -155,11 +157,13 @@ public class ItembasicController {
@Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true")
})
@PreAuthorize("@ss.hasPermission('wms:itembasic:import')")
public CommonResult<ItembasicImportRespVO> importExcel(@RequestParam("file") MultipartFile file,
@RequestParam(value = "mode") Integer mode,
@RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception {
public void importExcel(HttpServletResponse response,
@RequestParam("file") MultipartFile file,
@RequestParam(value = "mode") Integer mode,
@RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception {
List<ItembasicImportExcelVo> list = ExcelUtils.read(file, ItembasicImportExcelVo.class);
return success(itembasicService.importUserList(list, mode,updatePart));
List<ItembasicImportExcelVo> errorList = itembasicService.importUserList(list, mode, updatePart);
ExcelUtils.write(response, "用户导入错误数据.xls", "错误列表", ItembasicImportExcelVo.class, errorList);
}
}

49
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itembasic/vo/ItembasicImportExcelVo.java

@ -1,6 +1,7 @@
package com.win.module.wms.controller.itembasic.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.win.framework.excel.core.annotations.DictFormat;
import com.win.framework.excel.core.convert.DictConvert;
import com.win.module.wms.enums.DictTypeConstants;
@ -10,6 +11,8 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
@Data
@Builder
@AllArgsConstructor
@ -20,6 +23,15 @@ public class ItembasicImportExcelVo {
@ExcelProperty("代码")
private String code;
@ExcelProperty("名称")
private String name;
@ExcelProperty("描述1")
private String desc1;
@ExcelProperty("描述2")
private String desc2;
@ExcelProperty(value = "状态", converter = DictConvert.class)
@DictFormat(DictTypeConstants.ITEM_STATUS)
private String status;
@ -28,6 +40,10 @@ public class ItembasicImportExcelVo {
@DictFormat(DictTypeConstants.UOM)
private String uom;
@ExcelProperty(value = "替代计量单位", converter = DictConvert.class)
@DictFormat(DictTypeConstants.UOM)
private String altUom;
@ExcelProperty(value = "是否标包", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String isStdPack;
@ -59,6 +75,30 @@ public class ItembasicImportExcelVo {
@ExcelProperty(value = "类型", converter = DictConvert.class)
@DictFormat(DictTypeConstants.ITEM_TYPE)
private String type;
@ExcelProperty(value = "种类", converter = DictConvert.class)
@DictFormat(DictTypeConstants.ITEM_CATEGORY)
private String category;
@ExcelProperty(value = "分组", converter = DictConvert.class)
@DictFormat(DictTypeConstants.ITEM_GROUP)
private String itemGroup;
@ExcelProperty(value = "颜色", converter = DictConvert.class)
@DictFormat(DictTypeConstants.ITEM_COLOR)
private String color;
@ExcelProperty(value = "配置", converter = DictConvert.class)
@DictFormat(DictTypeConstants.ITEM_CONFIGURATION)
private String configuration;
@ExcelProperty(value = "项目")
private String project;
@ExcelProperty(value = "质量等级", converter = DictConvert.class)
@DictFormat(DictTypeConstants.EQ_LEVEL)
private String eqLevel;
@ExcelProperty(value = "有效天数")
private Integer validityDays;
@ -66,5 +106,14 @@ public class ItembasicImportExcelVo {
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String available;
@ExcelProperty(value = "生效时间")
@ColumnWidth(value = 16)
private LocalDateTime activeTime;
@ExcelProperty(value = "失效时间")
@ColumnWidth(value = 16)
private LocalDateTime expireTime;
@ExcelProperty(value = "备注")
private String remark;
}

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itembasic/vo/ItembasicImportRespVO.java

@ -20,8 +20,4 @@ public class ItembasicImportRespVO {
@Schema(description = "导入失败的用户集合,key 为用户名,value 为失败原因", requiredMode = Schema.RequiredMode.REQUIRED)
private Map<String, String> failureItembasics;
//这个map改成实体类
private List<String> importResult;
}

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicService.java

@ -76,6 +76,6 @@ public interface ItembasicService {
* @param isUpdateSupport 是否支持更新
* @return 导入结果
*/
ItembasicImportRespVO importUserList(List<ItembasicImportExcelVo> importItembasics, Integer mode,boolean updatePart);
List<ItembasicImportExcelVo> importUserList(List<ItembasicImportExcelVo> importItembasics, Integer mode,boolean updatePart);
}

32
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicServiceImpl.java

@ -47,7 +47,7 @@ public class ItembasicServiceImpl implements ItembasicService {
public void updateItembasic(ItembasicUpdateReqVO updateReqVO) {
// 校验存在
validateItembasicExists(updateReqVO.getId());
// codeExists(updateReqVO.getCode());
codeExists(null,updateReqVO.getCode());
statusExists(updateReqVO.getStatus());
uomExists(updateReqVO.getUom());
isStdPackExists(updateReqVO.getIsStdPack());
@ -191,47 +191,37 @@ public class ItembasicServiceImpl implements ItembasicService {
return itembasicMapper.selectList(exportReqVO);
}
public ItembasicImportRespVO importUserList(List<ItembasicImportExcelVo> importItembasics, Integer mode, boolean updatePart) {
public List<ItembasicImportExcelVo> importUserList(List<ItembasicImportExcelVo> importItembasics, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(importItembasics)) {
throw exception(USER_IMPORT_LIST_IS_EMPTY);
}
ItembasicImportRespVO respVO = ItembasicImportRespVO.builder().createItembasics(new ArrayList<>())
.updateItembasics(new ArrayList<>()).failureItembasics(new LinkedHashMap<>()).build();
importItembasics.forEach(itembasic -> {
List<ItembasicImportExcelVo> errorList = new ArrayList<>();
importItembasics.forEach(importItembasic -> {
// 校验,判断是否有不符合的原因
try {
if(mode == 2){
validateUserForCreateOrUpdate(null,itembasic.getCode());
validateUserForCreateOrUpdate(null,importItembasic.getCode());
}
} catch (ServiceException ex) {
respVO.getFailureItembasics().put(itembasic.getCode(), ex.getMessage());
errorList.add(importItembasic);
return;
}
// 判断如果不存在,在进行插入
ItembasicDO existItembasic = itembasicMapper.selectByCode(itembasic.getCode());
ItembasicDO existItembasic = itembasicMapper.selectByCode(importItembasic.getCode());
if (existItembasic == null&& mode != 3) {
itembasicMapper.insert(ItembasicConvert.INSTANCE.convert(itembasic));
respVO.getCreateItembasics().add(itembasic.getCode());
itembasicMapper.insert(ItembasicConvert.INSTANCE.convert(importItembasic));
}
else if (existItembasic != null && mode != 2) {// 如果存在,判断是否允许更新
ItembasicDO itembasicDO = ItembasicConvert.INSTANCE.convert(itembasic);
ItembasicDO itembasicDO = ItembasicConvert.INSTANCE.convert(importItembasic);
itembasicDO.setId(existItembasic.getId());
itembasicMapper.updateById(itembasicDO);
respVO.getUpdateItembasics().add(itembasic.getCode());
}
});
//错误不为空并非部分更新,手工回滚
if(respVO.getUpdateItembasics().isEmpty() && !updatePart) {
respVO.setUpdateItembasics(new ArrayList<>());
respVO.setCreateItembasics(new ArrayList<>());
if(!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
List<String> importResult = new ArrayList<>();
importResult.add("createItembasics");
importResult.add("updateItembasics");
importResult.add("failureItembasics");
respVO.setImportResult(importResult);
return respVO;
return errorList;
}
private void validateUserForCreateOrUpdate(Long id,String code) {

Loading…
Cancel
Save