From b0664b1df58b0a5121c688c18684e6e780775775 Mon Sep 17 00:00:00 2001 From: chenfang Date: Thu, 12 Oct 2023 11:23:09 +0800 Subject: [PATCH] =?UTF-8?q?=E7=89=A9=E5=93=81=E5=9F=BA=E6=9C=AC=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=20=20=20=E5=AF=BC=E5=85=A5=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../itembasic/ItembasicController.java | 20 +++++--- .../itembasic/vo/ItembasicImportExcelVo.java | 49 +++++++++++++++++++ .../itembasic/vo/ItembasicImportRespVO.java | 4 -- .../service/itembasic/ItembasicService.java | 2 +- .../itembasic/ItembasicServiceImpl.java | 32 +++++------- 5 files changed, 73 insertions(+), 34 deletions(-) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itembasic/ItembasicController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itembasic/ItembasicController.java index b023c555..be3fddec 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itembasic/ItembasicController.java +++ b/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 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 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 list = ExcelUtils.read(file, ItembasicImportExcelVo.class); - return success(itembasicService.importUserList(list, mode,updatePart)); + List errorList = itembasicService.importUserList(list, mode, updatePart); + ExcelUtils.write(response, "用户导入错误数据.xls", "错误列表", ItembasicImportExcelVo.class, errorList); } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itembasic/vo/ItembasicImportExcelVo.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itembasic/vo/ItembasicImportExcelVo.java index 536e006c..926c8816 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itembasic/vo/ItembasicImportExcelVo.java +++ b/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; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itembasic/vo/ItembasicImportRespVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itembasic/vo/ItembasicImportRespVO.java index ce69e6f5..e8c03f88 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/itembasic/vo/ItembasicImportRespVO.java +++ b/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 failureItembasics; - - //这个map改成实体类 - private List importResult; - } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicService.java index 061d2e98..df6bc571 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicService.java +++ b/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 importItembasics, Integer mode,boolean updatePart); + List importUserList(List importItembasics, Integer mode,boolean updatePart); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicServiceImpl.java index de6f8bee..14165585 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/itembasic/ItembasicServiceImpl.java +++ b/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 importItembasics, Integer mode, boolean updatePart) { + public List importUserList(List 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 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 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) {