diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/saleprice/SalepriceController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/saleprice/SalepriceController.java index 0463ef34a0..267611797f 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/saleprice/SalepriceController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/saleprice/SalepriceController.java @@ -8,6 +8,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.itembasic.vo.ItembasicExcelVO; import com.win.module.wms.controller.project.vo.ProjectRespVO; import com.win.module.wms.controller.saleprice.vo.*; @@ -179,7 +180,7 @@ public class SalepriceController { @RequestParam(value = "mode") Integer mode, @RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception { List list = ExcelUtils.read(file, SalepriceImportExcelVo.class); - List errorList = salepriceService.importSalepriceList(list, mode, updatePart); + List errorList = salepriceService.importSalepriceList(list, mode, updatePart); Map returnMap = new HashMap<>(); returnMap.put("errorCount", errorList.size()); if(!errorList.isEmpty()) { diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/saleprice/vo/SalepriceImportErrorVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/saleprice/vo/SalepriceImportErrorVO.java new file mode 100644 index 0000000000..c5e4cd5891 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/saleprice/vo/SalepriceImportErrorVO.java @@ -0,0 +1,53 @@ +package com.win.module.wms.controller.saleprice.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 SalepriceImportErrorVO { + + @ExcelProperty("客户代码") + private String customerCode; + + @ExcelProperty("物料代码") + private String itemCode; + + @ExcelProperty(value = "货币", converter = DictConvert.class) + @DictFormat(DictTypeConstants.CURRENCY) + private String currency; + + @ExcelProperty("价格") + private BigDecimal price; + + @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/saleprice/SalepriceConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/saleprice/SalepriceConvert.java index d3981eeb4f..4a4d352693 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/saleprice/SalepriceConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/saleprice/SalepriceConvert.java @@ -4,6 +4,8 @@ import java.util.*; 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.saleprice.vo.SalepriceCreateReqVO; import com.win.module.wms.controller.saleprice.vo.SalepriceExcelVO; import com.win.module.wms.controller.saleprice.vo.SalepriceRespVO; @@ -36,4 +38,6 @@ public interface SalepriceConvert { SalepriceDO convert(SalepriceImportExcelVo bean); + SalepriceImportErrorVO convert2(SalepriceDO bean); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/saleprice/SalepriceService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/saleprice/SalepriceService.java index 982c9c26c7..e1f0489a0f 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/saleprice/SalepriceService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/saleprice/SalepriceService.java @@ -79,7 +79,7 @@ public interface SalepriceService { */ List getSalepriceList(SalepriceExportReqVO exportReqVO); - List importSalepriceList(List importTeam, Integer mode, boolean updatePart); + List importSalepriceList(List importTeam, Integer mode, boolean updatePart); /** * 查询销售价格单 diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/saleprice/SalepriceServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/saleprice/SalepriceServiceImpl.java index a4a2bcb7ad..116e58cd20 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/saleprice/SalepriceServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/saleprice/SalepriceServiceImpl.java @@ -9,7 +9,9 @@ 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.saleprice.vo.*; +import com.win.module.wms.convert.bom.BomConvert; import com.win.module.wms.convert.saleprice.SalepriceConvert; +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.saleprice.SalepriceDO; import com.win.module.wms.dal.mysql.saleprice.SalepriceMapper; @@ -88,67 +90,72 @@ public class SalepriceServiceImpl implements SalepriceService { return salepriceMapper.selectList(exportReqVO); } - public List importSalepriceList(List saleprices, Integer mode, boolean updatePart) { + private String validateSalepriceImport( SalepriceDO saleprice ){ + StringBuilder message = new StringBuilder(); + try { + validateSalepriceExists(null); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + try { + validateCodeExists(null, saleprice.getItemCode()); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + try { + validateCustomerCodeExists(saleprice.getCustomerCode()); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + try { + validateCurrencyExists(saleprice.getCurrency()); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + try { + validatePriceExists(saleprice.getPrice()); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + try { + validateAvailableExists(saleprice.getAvailable()); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + return message.toString(); + } + + public List importSalepriceList(List saleprices, Integer mode, boolean updatePart) { if (CollUtil.isEmpty(saleprices)) { throw exception(SALEPRICE_IMPORT_LIST_IS_EMPTY); } - List errorList = new ArrayList<>(); + List errorList = new ArrayList<>(); saleprices.forEach(saleprice -> { + SalepriceDO salepriceDO = SalepriceConvert.INSTANCE.convert(saleprice); + // 校验,判断是否有不符合的原因 - String massage = ""; - if (mode != null) { - try { - validateSalepriceExists(null); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - try { - validateCodeExists(null, saleprice.getItemCode()); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - try { - validateCustomerCodeExists(saleprice.getCustomerCode()); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - try { - validateCurrencyExists(saleprice.getCurrency()); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - try { - validatePriceExists(saleprice.getPrice()); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - try { - validateAvailableExists(saleprice.getAvailable()); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - if (StrUtil.isNotEmpty(massage)) { - massage.substring(0, massage.length() - 1); - errorList.add(saleprice); - } - if (errorList == null) { - - // 判断如果不存在,在进行插入 - SalepriceDO existSaleprice = salepriceMapper.selectByItemCode(saleprice.getItemCode()); - if (existSaleprice == null && mode != 3) { - salepriceMapper.insert(SalepriceConvert.INSTANCE.convert(saleprice)); - } else if (existSaleprice != null && mode != 2) {// 如果存在,判断是否允许更新 - SalepriceDO salepriceDO = SalepriceConvert.INSTANCE.convert(saleprice); - salepriceDO.setId(existSaleprice.getId()); - salepriceMapper.updateById(salepriceDO); - } - } - } + String message =validateSalepriceImport(salepriceDO); + boolean flag = true; + if(!message.isEmpty()){ + // 判断如果不存在,在进行插入 + SalepriceImportErrorVO importErrorVO = SalepriceConvert.INSTANCE.convert2(salepriceDO); + importErrorVO.setImportStatus("失败"); + importErrorVO.setImportRemark(message.substring(0, message.length() - 1)); + errorList.add(importErrorVO); + flag = false; + } + if(flag) { + // 判断如果不存在,在进行插入 + SalepriceDO existSaleprice = salepriceMapper.selectByItemCode(saleprice.getItemCode()); + if (existSaleprice == null && mode != 3) { + salepriceMapper.insert(SalepriceConvert.INSTANCE.convert(saleprice)); + } else if (existSaleprice != null && mode != 2) { + // 如果存在,判断是否允许更新 + salepriceDO.setId(existSaleprice.getId()); + salepriceMapper.updateById(salepriceDO); + } + } }); - //错误不为空并非部分更新,手工回滚 - if (!errorList.isEmpty() && !updatePart) { - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - } return errorList; }