From e0193267cbff7fcacb0242b182172cabef4610b5 Mon Sep 17 00:00:00 2001 From: "hongxi.lian" Date: Thu, 30 Nov 2023 17:13:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=BF=E8=BF=90=E5=95=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wms/controller/owner/OwnerController.java | 22 ++--- .../owner/vo/OwnerImportErrorVO.java | 82 +++++++++++++++++++ .../wms/convert/owner/OwnerConvert.java | 4 + .../wms/service/bom/BomServiceImpl.java | 2 + .../wms/service/owner/OwnerService.java | 2 +- .../wms/service/owner/OwnerServiceImpl.java | 78 +++++++++--------- 6 files changed, 142 insertions(+), 48 deletions(-) create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/owner/vo/OwnerImportErrorVO.java diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/owner/OwnerController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/owner/OwnerController.java index b0420c5c..537074a5 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/owner/OwnerController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/owner/OwnerController.java @@ -8,13 +8,8 @@ import com.win.framework.excel.core.util.ExcelUtils; import com.win.framework.operatelog.core.annotations.OperateLog; import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.dto.AdminUserRespDTO; -import com.win.module.wms.controller.itembasic.vo.ItembasicExcelVO; import com.win.module.wms.controller.owner.vo.*; -import com.win.module.wms.controller.recordsetting.vo.RecordsettingRespVO; -import com.win.module.wms.convert.itembasic.ItembasicConvert; import com.win.module.wms.convert.owner.OwnerConvert; -import com.win.module.wms.convert.recordsetting.RecordsettingConvert; -import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; import com.win.module.wms.dal.dataobject.owner.OwnerDO; import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.service.owner.OwnerService; @@ -111,6 +106,8 @@ public class OwnerController { } return success(result); } + + @GetMapping("/export-excel") @Operation(summary = "导出货主 Excel") @PreAuthorize("@ss.hasPermission('wms:owner:export')") @@ -122,6 +119,7 @@ public class OwnerController { List resultList = this.getExcelVo(list, mapDropDown); ExcelUtils.write(response, "货主.xlsx", "数据", OwnerExcelVO.class, resultList, mapDropDown); } + @PostMapping("/export-excel-senior") @Operation(summary = "导出货主 Excel") @PreAuthorize("@ss.hasPermission('wms:owner:export')") @@ -149,6 +147,7 @@ public class OwnerController { return resultList; } + @GetMapping("/get-import-template") @Operation(summary = "获得导入货主模板") public void importTemplate(HttpServletResponse response) throws IOException { @@ -165,6 +164,7 @@ public class OwnerController { ExcelUtils.write(response, "货主导入模板.xls", "货主列表", OwnerImportExcelVO.class, list,mapDropDown); } + @PostMapping("/import") @Operation(summary = "导入货主") @Parameters({ @@ -173,17 +173,19 @@ public class OwnerController { @Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true") }) @PreAuthorize("@ss.hasPermission('wms:owner:import')") - 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 { + public CommonResult> 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, OwnerImportExcelVO.class); - List errorList = ownerService.importOwnerList(list, mode, updatePart); + List errorList = ownerService.importOwnerList(list, mode, updatePart); Map returnMap = new HashMap<>(); returnMap.put("errorCount", errorList.size()); if(!errorList.isEmpty()) { String url = ExcelUtils.writeLocalFile("库位导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xls", "错误列表", errorList); returnMap.put("errorFile", url); } + return success(returnMap); } + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/owner/vo/OwnerImportErrorVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/owner/vo/OwnerImportErrorVO.java new file mode 100644 index 00000000..a9744949 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/owner/vo/OwnerImportErrorVO.java @@ -0,0 +1,82 @@ +package com.win.module.wms.controller.owner.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; +import lombok.Builder; +import lombok.Data; +import lombok.ToString; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +@Builder +@ToString(callSuper = true) +public class OwnerImportErrorVO { + @ExcelProperty("代码") + private String code; + + @ExcelProperty("名称") + private String name; + + @ExcelProperty("简称") + private String shortName; + + @ExcelProperty("地址") + private String address; + + @ExcelProperty("国家") + private String country; + + @ExcelProperty("城市") + private String city; + + @ExcelProperty("电话") + private String phone; + + @ExcelProperty("传真") + private String fax; + + @ExcelProperty("邮编") + private String postId; + + @ExcelProperty("联系人") + private String contacts; + + @ExcelProperty("银行") + private String bank; + + @ExcelProperty(value = "币种", converter = DictConvert.class) + @DictFormat(DictTypeConstants.CURRENCY) + private String currency; + + @ExcelProperty("税率") + private BigDecimal taxRate; + + @ExcelProperty(value = "类型", converter = DictConvert.class) + @DictFormat(DictTypeConstants.OWNER_TYPE) + private String type; + + @ExcelProperty(value = "是否可用", converter = DictConvert.class) + @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; + + @ExcelProperty(value = "导入状态", index = 0) + private String importStatus; + + @ExcelProperty(value = "导入说明", index = 1) + private String importRemark; +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/owner/OwnerConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/owner/OwnerConvert.java index 214ed27d..e4885335 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/owner/OwnerConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/owner/OwnerConvert.java @@ -1,6 +1,8 @@ package com.win.module.wms.convert.owner; import com.win.framework.common.pojo.PageResult; +import com.win.module.wms.controller.bom.vo.BomImportErrorVO; +import com.win.module.wms.controller.bom.vo.BomImportExcelVo; import com.win.module.wms.controller.owner.vo.*; import com.win.module.wms.dal.dataobject.owner.OwnerDO; import org.mapstruct.Mapper; @@ -31,4 +33,6 @@ public interface OwnerConvert { List convertList02(List list); OwnerDO convert(OwnerImportExcelVO owner); + + OwnerImportErrorVO convert2(OwnerDO bean); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/bom/BomServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/bom/BomServiceImpl.java index 6e79ad60..b027bcec 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/bom/BomServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/bom/BomServiceImpl.java @@ -266,4 +266,6 @@ public class BomServiceImpl implements BomService { } + + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/owner/OwnerService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/owner/OwnerService.java index 30a4820d..e68ec09b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/owner/OwnerService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/owner/OwnerService.java @@ -78,5 +78,5 @@ public interface OwnerService { */ List getOwnerList(OwnerExportReqVO exportReqVO); - List importOwnerList(List owners, Integer mode, Boolean updatePart); + List importOwnerList(List owners, Integer mode, Boolean updatePart); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/owner/OwnerServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/owner/OwnerServiceImpl.java index 2a1ae549..11a63c29 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/owner/OwnerServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/owner/OwnerServiceImpl.java @@ -7,10 +7,13 @@ import com.win.framework.common.exception.ServiceException; import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; import com.win.framework.datapermission.core.util.DataPermissionUtils; +import com.win.module.wms.controller.bom.vo.BomImportErrorVO; import com.win.module.wms.controller.owner.vo.*; import com.win.module.wms.convert.accountcalendar.AccountcalendarConvert; +import com.win.module.wms.convert.bom.BomConvert; import com.win.module.wms.convert.owner.OwnerConvert; import com.win.module.wms.dal.dataobject.accountcalendar.AccountcalendarDO; +import com.win.module.wms.dal.dataobject.bom.BomDO; import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; import com.win.module.wms.dal.dataobject.owner.OwnerDO; import com.win.module.wms.dal.mysql.owner.OwnerMapper; @@ -88,60 +91,61 @@ public class OwnerServiceImpl implements OwnerService { public PageResult getOwnerSenior(CustomConditions conditions) { return ownerMapper.selectSenior(conditions); } + public String validateOwnerImport(OwnerDO owner){ + StringBuilder message = new StringBuilder(); + try { + validateOwnerExists(null); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + try { + validateCodeExists(null,owner.getCode()); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + try { + validateShortNameExists(owner.getShortName()); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + try { + validateAvailableExists(owner.getAvailable()); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + return message.toString(); + } @Override - public List importOwnerList(List owners, Integer mode, Boolean updatePart) { + public List importOwnerList(List owners, Integer mode, Boolean updatePart) { if (CollUtil.isEmpty(owners)) { throw exception(OWNER_IMPORT_LIST_IS_EMPTY); } - List errorList = new ArrayList<>(); + List errorList = new ArrayList<>(); owners.forEach(owner -> { - String massage = ""; - // 校验,判断是否有不符合的原因 - if(mode != null){ - try { - validateOwnerExists(null); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - try { - validateCodeExists(null,owner.getCode()); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - try { - validateShortNameExists(owner.getShortName()); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - try { - validateAvailableExists(owner.getAvailable()); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } + OwnerDO ownerDO = OwnerConvert.INSTANCE.convert(owner); + String massage =this.validateOwnerImport(ownerDO); + boolean flag = true; + if(!massage.isEmpty()){ + OwnerImportErrorVO importErrorVO = OwnerConvert.INSTANCE.convert2(ownerDO); + importErrorVO.setImportStatus("失败"); + importErrorVO.setImportRemark(massage.substring(0, massage.length() - 1)); + errorList.add(importErrorVO); + flag = false; } - if(StrUtil.isNotEmpty(massage)){ - massage.substring(0,massage.length()-1); - errorList.add(owner); - } - if(errorList == null){ - // 判断如果不存在,在进行插入 - OwnerDO existOwner = new OwnerDO(); + if(flag){ + OwnerDO existOwner = ownerMapper.selectByCode(ownerDO.getCode()); if (existOwner == null&& mode != 3) { ownerMapper.insert(OwnerConvert.INSTANCE.convert(owner)); } else if (existOwner != null && mode != 2) {// 如果存在,判断是否允许更新 - OwnerDO ownerDO = OwnerConvert.INSTANCE.convert(owner); ownerDO.setId(existOwner.getId()); ownerMapper.updateById(ownerDO); } } }); - //错误不为空并非部分更新,手工回滚 - if(!errorList.isEmpty() && !updatePart) { - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - } return errorList; } + private void validateLocationForCreateOrUpdate(Long id, String code,String shortName,String available) { // 关闭数据权限,避免因为没有数据权限,查询不到数据,进而导致唯一校验不正确 DataPermissionUtils.executeIgnore(() -> {