From e5d23c7fa2707bc6a33126c6b3e91378e48db92e Mon Sep 17 00:00:00 2001 From: "hongxi.lian" Date: Wed, 29 Nov 2023 08:54:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=93=E5=BA=93=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../warehouse/WarehouseController.java | 4 +- .../warehouse/vo/WarehouseImportErrorVO.java | 52 +++++++++++ .../convert/warehouse/WarehouseConvert.java | 4 + .../service/warehouse/WarehouseService.java | 2 +- .../warehouse/WarehouseServiceImpl.java | 89 ++++++++++--------- 5 files changed, 107 insertions(+), 44 deletions(-) create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/warehouse/vo/WarehouseImportErrorVO.java diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/warehouse/WarehouseController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/warehouse/WarehouseController.java index a90cb9ab..03400bdc 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/warehouse/WarehouseController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/warehouse/WarehouseController.java @@ -9,6 +9,7 @@ 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.bom.vo.BomImportErrorVO; import com.win.module.wms.controller.customer.vo.CustomerRespVO; import com.win.module.wms.controller.itembasic.vo.ItembasicExcelVO; import com.win.module.wms.controller.warehouse.vo.WarehouseImportExcelVo; @@ -179,7 +180,7 @@ public class WarehouseController { @RequestParam(value = "mode") Integer mode, @RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception { List list = ExcelUtils.read(file, WarehouseImportExcelVo.class); - List errorList = warehouseService.importWarehouseList(list, mode, updatePart); + List errorList = warehouseService.importWarehouseList(list, mode, updatePart); Map returnMap = new HashMap<>(); returnMap.put("errorCount", errorList.size()); if(!errorList.isEmpty()) { @@ -188,6 +189,7 @@ public class WarehouseController { } return success(returnMap); } + @PostMapping("/senior") @Operation(summary = "高级搜索获得物品基本信息分页") @PreAuthorize("@ss.hasPermission('wms:warehouse:query')") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/warehouse/vo/WarehouseImportErrorVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/warehouse/vo/WarehouseImportErrorVO.java new file mode 100644 index 00000000..33e599e8 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/warehouse/vo/WarehouseImportErrorVO.java @@ -0,0 +1,52 @@ +package com.win.module.wms.controller.warehouse.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 WarehouseImportErrorVO { + @ExcelProperty("代码") + private String code; + + @ExcelProperty("名称") + private String name; + + @ExcelProperty("描述") + private String description; + + @ExcelProperty(value = "类型", converter = DictConvert.class) + @DictFormat(DictTypeConstants.WAREHOUSE_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("备注") + 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/warehouse/WarehouseConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/warehouse/WarehouseConvert.java index e9f5db22..b0319411 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/warehouse/WarehouseConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/warehouse/WarehouseConvert.java @@ -5,6 +5,8 @@ import java.util.*; import com.win.framework.common.pojo.PageResult; import com.win.module.wms.controller.areabasic.vo.AreabasicImportExcelVo; +import com.win.module.wms.controller.bom.vo.BomImportErrorVO; +import com.win.module.wms.controller.bom.vo.BomImportExcelVo; import com.win.module.wms.controller.warehouse.vo.*; import com.win.module.wms.controller.workshop.vo.WorkshopImportExcelVo; import com.win.module.wms.dal.dataobject.areabasic.AreabasicDO; @@ -37,4 +39,6 @@ public interface WarehouseConvert { WarehouseDO convert(WarehouseImportExcelVo bean); + WarehouseImportErrorVO convert2(WarehouseDO bean); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/warehouse/WarehouseService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/warehouse/WarehouseService.java index 11075e20..bf82d22c 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/warehouse/WarehouseService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/warehouse/WarehouseService.java @@ -79,7 +79,7 @@ public interface WarehouseService { List getWarehouseList(WarehouseExportReqVO exportReqVO); - List importWarehouseList(List warehouses, Integer mode, boolean updatePart); + List importWarehouseList(List warehouses, Integer mode, boolean updatePart); /** diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/warehouse/WarehouseServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/warehouse/WarehouseServiceImpl.java index 0a82c6ab..c9237c01 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/warehouse/WarehouseServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/warehouse/WarehouseServiceImpl.java @@ -8,12 +8,11 @@ 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.warehouse.vo.WarehouseCreateReqVO; -import com.win.module.wms.controller.warehouse.vo.WarehouseExportReqVO; -import com.win.module.wms.controller.warehouse.vo.WarehousePageReqVO; -import com.win.module.wms.controller.warehouse.vo.WarehouseUpdateReqVO; -import com.win.module.wms.controller.warehouse.vo.WarehouseImportExcelVo; +import com.win.module.wms.controller.bom.vo.BomImportErrorVO; +import com.win.module.wms.controller.warehouse.vo.*; +import com.win.module.wms.convert.bom.BomConvert; import com.win.module.wms.convert.warehouse.WarehouseConvert; +import com.win.module.wms.dal.dataobject.bom.BomDO; import com.win.module.wms.dal.dataobject.warehouse.WarehouseDO; import com.win.module.wms.dal.dataobject.packageMassage.PackageDO; import com.win.module.wms.dal.dataobject.warehouse.WarehouseDO; @@ -95,51 +94,57 @@ public class WarehouseServiceImpl implements WarehouseService { return warehouseMapper.selectSenior(conditions); } - public List importWarehouseList(List warehouses, Integer mode, boolean updatePart) { + private String validateWarehouseImport( WarehouseDO warehouse ){ + StringBuilder message = new StringBuilder(); + try { + validateWarehouseExists(null); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + try { + validateCodeExists(null,warehouse.getCode()); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + try { + validateAvailableExists(warehouse.getAvailable()); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + return message.toString(); + } + + public List importWarehouseList(List warehouses, Integer mode, boolean updatePart) { if (CollUtil.isEmpty(warehouses)) { throw exception(WAREHOUSE_IMPORT_LIST_IS_EMPTY); } - List errorList = new ArrayList<>(); + List errorList = new ArrayList<>(); warehouses.forEach(warehouse -> { + WarehouseDO WarehouseDO = WarehouseConvert.INSTANCE.convert(warehouse); // 校验,判断是否有不符合的原因 - String massage = ""; - - if(mode != null){ - try { - validateWarehouseExists(null); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - try { - validateCodeExists(null,warehouse.getCode()); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - try { - validateAvailableExists(warehouse.getAvailable()); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - } - if(StrUtil.isNotEmpty(massage)){ - massage.substring(0,massage.length()-1); - errorList.add(warehouse); + String massage =this.validateWarehouseImport(WarehouseDO); + boolean flag = true; + if(!massage.isEmpty()){ + WarehouseImportErrorVO importErrorVO = WarehouseConvert.INSTANCE.convert2(WarehouseDO); + importErrorVO.setImportStatus("失败"); + importErrorVO.setImportRemark(massage.substring(0, massage.length() - 1)); + errorList.add(importErrorVO); + flag = false; } + // 判断如果不存在,在进行插入 - if(errorList == null){ WarehouseDO existWarehouse = warehouseMapper.selectByCode(warehouse.getCode()); - if (existWarehouse == null&& mode != 3) { - warehouseMapper.insert(WarehouseConvert.INSTANCE.convert(warehouse)); - } - else if (existWarehouse != null && mode != 2) {// 如果存在,判断是否允许更新 - WarehouseDO warehouseDO = WarehouseConvert.INSTANCE.convert(warehouse); - warehouseDO.setId(existWarehouse.getId()); - warehouseMapper.updateById(warehouseDO);} + if(flag) { + WarehouseDO existWarehouse = warehouseMapper.selectByCode(warehouse.getCode()); + if (existWarehouse == null && mode != 3) { + warehouseMapper.insert(WarehouseConvert.INSTANCE.convert(warehouse)); + } else if (existWarehouse != null && mode != 2) { + // 如果存在,判断是否允许更新 + WarehouseDO warehouseDO = WarehouseConvert.INSTANCE.convert(warehouse); + warehouseDO.setId(existWarehouse.getId()); + warehouseMapper.updateById(warehouseDO); + } } }); - //错误不为空并非部分更新,手工回滚 - if(!errorList.isEmpty() && !updatePart) { - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - } return errorList; } @@ -190,7 +195,7 @@ public class WarehouseServiceImpl implements WarehouseService { } @Override public WarehouseDO WarehouseExist(String code) { - QueryWrapper queryWrapper = new QueryWrapper(); + QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.eq("code",code); WarehouseDO warehouseDO = warehouseMapper.selectOne(queryWrapper); if(warehouseDO != null&& warehouseDO.getAvailable().equals("TRUE")){