From 91588c8a58117c75ef70341e443715751ee441d9 Mon Sep 17 00:00:00 2001 From: "hongxi.lian" Date: Mon, 27 Nov 2023 11:18:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=87=E5=87=86=E6=88=90=E6=9C=AC=E4=BB=B7?= =?UTF-8?q?=E6=A0=BC=E5=8D=95=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wms/controller/bom/BomController.java | 4 +- .../stdcostprice/StdcostpriceController.java | 3 +- .../vo/StdcostpriceImportErrorVO.java | 54 +++++++++ .../stdcostprice/StdcostpriceConvert.java | 2 + .../wms/service/bom/BomServiceImpl.java | 1 - .../stdcostprice/StdcostpriceService.java | 2 +- .../stdcostprice/StdcostpriceServiceImpl.java | 105 ++++++++++-------- 7 files changed, 118 insertions(+), 53 deletions(-) create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/stdcostprice/vo/StdcostpriceImportErrorVO.java diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/bom/BomController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/bom/BomController.java index 60fed1c7..1e25060d 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/bom/BomController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/bom/BomController.java @@ -177,6 +177,6 @@ public class BomController { String url = ExcelUtils.writeLocalFile("物料清单导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xls", "错误列表", errorList); returnMap.put("errorFile", url); } - return success(returnMap); - } + return success(returnMap); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/stdcostprice/StdcostpriceController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/stdcostprice/StdcostpriceController.java index 318ccf45..8e9b7d55 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/stdcostprice/StdcostpriceController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/stdcostprice/StdcostpriceController.java @@ -10,6 +10,7 @@ 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.BomRespVO; import com.win.module.wms.controller.itembasic.vo.ItembasicExcelVO; +import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestMainImportErrorVO; import com.win.module.wms.controller.stdcostprice.vo.*; import com.win.module.wms.controller.stdcostprice.vo.StdcostpriceImportExcelVo; import com.win.module.wms.convert.bom.BomConvert; @@ -182,7 +183,7 @@ public class StdcostpriceController { @RequestParam(value = "mode") Integer mode, @RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception { List list = ExcelUtils.read(file, StdcostpriceImportExcelVo.class); - List errorList = stdcostpriceService.importStdcostpriceList(list, mode, updatePart); + List errorList = stdcostpriceService.importStdcostpriceList(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/stdcostprice/vo/StdcostpriceImportErrorVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/stdcostprice/vo/StdcostpriceImportErrorVO.java new file mode 100644 index 00000000..c61384b9 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/stdcostprice/vo/StdcostpriceImportErrorVO.java @@ -0,0 +1,54 @@ +package com.win.module.wms.controller.stdcostprice.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 StdcostpriceImportErrorVO { + + + @ExcelProperty("供应商代码") + private String supplierCode; + + @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(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/stdcostprice/StdcostpriceConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/stdcostprice/StdcostpriceConvert.java index 4cb89c5e..962765fa 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/stdcostprice/StdcostpriceConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/stdcostprice/StdcostpriceConvert.java @@ -35,4 +35,6 @@ public interface StdcostpriceConvert { StdcostpriceDO convert(StdcostpriceImportExcelVo bean); + StdcostpriceImportErrorVO convert1(StdcostpriceDO 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 d65d8f3a..4f97d5e8 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 @@ -165,7 +165,6 @@ public class BomServiceImpl implements BomService { } } }); - return errorList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/stdcostprice/StdcostpriceService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/stdcostprice/StdcostpriceService.java index f5f5d5c0..2891397b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/stdcostprice/StdcostpriceService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/stdcostprice/StdcostpriceService.java @@ -80,7 +80,7 @@ public interface StdcostpriceService { */ List getStdcostpriceList(StdcostpriceExportReqVO exportReqVO); - List importStdcostpriceList(List importTeam, Integer mode, boolean updatePart); + List importStdcostpriceList(List importTeam, Integer mode, boolean updatePart); /** * 查询标准成本价格是否存在 diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/stdcostprice/StdcostpriceServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/stdcostprice/StdcostpriceServiceImpl.java index b28a87ab..e65d9dee 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/stdcostprice/StdcostpriceServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/stdcostprice/StdcostpriceServiceImpl.java @@ -9,10 +9,13 @@ 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.stdcostprice.vo.*; +import com.win.module.wms.convert.purchasereceiptRequest.PurchasereceiptRequestMainConvert; import com.win.module.wms.convert.stdcostprice.StdcostpriceConvert; +import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestMainDO; import com.win.module.wms.dal.dataobject.stdcostprice.StdcostpriceDO; import com.win.module.wms.dal.mysql.stdcostprice.StdcostpriceMapper; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.validation.annotation.Validated; @@ -90,69 +93,75 @@ public class StdcostpriceServiceImpl implements StdcostpriceService { public List getStdcostpriceList(StdcostpriceExportReqVO exportReqVO) { return stdcostpriceMapper.selectList(exportReqVO); } - public List importStdcostpriceList(List stdcostprices, Integer mode, boolean updatePart) { + + private String validateStdcostpriceImport(StdcostpriceDO stdcostprice) { + StringBuilder message = new StringBuilder(); + try { + validateStdcostpriceExists(null); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + try { + validateCodeExists(null,stdcostprice.getSupplierCode(),stdcostprice.getItemCode()); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + try { + validateSuppercodeExists(stdcostprice.getSupplierCode()); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + try { + validateCurrencyExists(stdcostprice.getCurrency()); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + try { + validatePriceExists(stdcostprice.getPrice()); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + try { + validateAvailableExists(stdcostprice.getAvailable()); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + return message.toString(); + } + @Override + @Transactional + public List importStdcostpriceList(List stdcostprices, Integer mode, boolean updatePart) { if (CollUtil.isEmpty(stdcostprices)) { throw exception(STDCOSTPRICE_IMPORT_LIST_IS_EMPTY); } - List errorList = new ArrayList<>(); + List errorList = new ArrayList<>(); stdcostprices.forEach(stdcostprice -> { // 校验,判断是否有不符合的原因 - String massage = ""; + StdcostpriceDO stdcostpriceDO = StdcostpriceConvert.INSTANCE.convert(stdcostprice); if(mode != null){ - try { - validateStdcostpriceExists(null); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - try { - validateCodeExists(null,stdcostprice.getSupplierCode(),stdcostprice.getItemCode()); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - try { - validateSuppercodeExists(stdcostprice.getSupplierCode()); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - try { - validateCurrencyExists(stdcostprice.getCurrency()); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - try { - validatePriceExists(stdcostprice.getPrice()); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - try { - validateAvailableExists(stdcostprice.getAvailable()); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - - if(StrUtil.isNotEmpty(massage)){ - massage.substring(0,massage.length()-1); - errorList.add(stdcostprice); - } - if(errorList == null) { - + String massage = this.validateStdcostpriceImport(stdcostpriceDO); + boolean flag = true; + if(!massage.isEmpty()){ + StdcostpriceImportErrorVO importErrorVO = StdcostpriceConvert.INSTANCE.convert1(stdcostpriceDO); + importErrorVO.setImportStatus("失败"); + importErrorVO.setImportRemark(massage.substring(0, massage.length() - 1)); + errorList.add(importErrorVO); + flag = false; + } + //写入数据 + if(flag) { // 判断如果不存在,在进行插入 StdcostpriceDO existStdcostprice = stdcostpriceMapper.selectByStdcostpriceCode(stdcostprice.getSupplierCode(),stdcostprice.getItemCode()); if (existStdcostprice == null && mode != 3) { - stdcostpriceMapper.insert(StdcostpriceConvert.INSTANCE.convert(stdcostprice)); - } else if (existStdcostprice != null && mode != 2) {// 如果存在,判断是否允许更新 - StdcostpriceDO stdcostpriceDO = StdcostpriceConvert.INSTANCE.convert(stdcostprice); + stdcostpriceMapper.insert(stdcostpriceDO); + } else if (existStdcostprice != null && mode != 2) { + // 如果存在,判断是否允许更新 stdcostpriceDO.setId(existStdcostprice.getId()); stdcostpriceMapper.updateById(stdcostpriceDO); - } } } }); - //错误不为空并非部分更新,手工回滚 - if(!errorList.isEmpty() && !updatePart) { - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - } return errorList; }