diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchase/vo/PurchaseMainImportVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchase/vo/PurchaseMainImportVO.java index 7c36686c..6834ffd7 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchase/vo/PurchaseMainImportVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchase/vo/PurchaseMainImportVO.java @@ -51,10 +51,8 @@ public class PurchaseMainImportVO { private LocalDateTime dueDate; //子表数据 - @ExcelProperty("单据号") - private String poNumber; @ExcelProperty("行号") - private String poLine; + private String lineNumber; @ExcelProperty("物品代码") private String itemCode; @ExcelProperty("数量") diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/purchase/PurchaseDetailDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/purchase/PurchaseDetailDO.java index 82bb3a8b..e5c36d5e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/purchase/PurchaseDetailDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/purchase/PurchaseDetailDO.java @@ -134,7 +134,7 @@ public class PurchaseDetailDO extends BaseDO { * * 枚举 {@link TODO purchase_order_detail_status 对应的类} */ - private Integer status; + private String status; /** * 是否可用 * diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchase/PurchaseMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchase/PurchaseMainMapper.java index fe98036c..4c209870 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchase/PurchaseMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchase/PurchaseMainMapper.java @@ -46,9 +46,8 @@ public interface PurchaseMainMapper extends BaseMapperX { } default PurchaseMainDO selectByNumber(String number) { - return selectOne(PurchaseMainDO::getNumber, number); + return selectOne(PurchaseMainDO::getNumber, number,PurchaseMainDO::getDeleted, false); } - default PageResult selectSenior(CustomConditions conditions) { return selectPage(conditions, QueryWrapperUtils.structure(conditions)); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainServiceImpl.java index 2149460a..aa48ee21 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchase/PurchaseMainServiceImpl.java @@ -51,6 +51,7 @@ import com.win.module.wms.service.shift.ShiftService; import com.win.module.wms.service.stdcostprice.StdcostpriceService; import com.win.module.wms.service.supplieritem.SupplieritemService; import com.win.module.wms.util.JobUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; @@ -204,15 +205,17 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { } } + @Override + @Transactional public List importPurchaseMaintList(List datas, Integer mode, boolean updatePart) { if (CollUtil.isEmpty(datas)) { throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY); } List errorList = new ArrayList<>(); - datas.forEach(createReqVO -> { - BusinesstypeDO businesstypeDO = new BusinesstypeDO(); + for (PurchaseMainCreateReqVO createReqVO : datas) { + PurchaseMainDO mainDo = PurchaseMainConvert.INSTANCE.convert(createReqVO); - String messageMain = validatorPurchaseMainImport(mainDo, businesstypeDO); + String messageMain = validatorPurchaseMainImport(mainDo); List subList = createReqVO.getSubList(); List subDOList = PurchaseDetailConvert.INSTANCE.convertList03(subList); // 是否有错误数据 @@ -230,18 +233,28 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { } //写入数据 if (flag) { - String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_ORDER.getCode()); - mainDo.setNumber(number); mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); - mainDo.setOrderDate(LocalDateTime.MAX); + mainDo.setOrderDate(LocalDateTime.now()); + mainDo.setTaxRate(BigDecimal.ZERO); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseOrder"); + mainDo.setBusinessType(businesstypeDO.getCode()); + mainDo.setAvailable("TRUE"); purchaseMainMapper.insert(mainDo); - for ( PurchaseDetailDO detailDO : subDOList) { + for (PurchaseDetailDO detailDO : subDOList) { detailDO.setMasterId(mainDo.getId()); - detailDO.setNumber(number); + detailDO.setNumber(mainDo.getNumber()); + detailDO.setPlannedQty(BigDecimal.ZERO); + detailDO.setShippedQty(BigDecimal.ZERO); + detailDO.setReceivedQty(BigDecimal.ZERO); + detailDO.setReturnedQty(BigDecimal.ZERO); + detailDO.setPutawayQty(BigDecimal.ZERO); + detailDO.setErpLocationCode(null); + detailDO.setAvailable("TRUE"); + detailDO.setStatus(OrderStatusEnum.READY.getCode()); } purchaseDetailMapper.insertBatch(subDOList); } - }); + } return errorList; } @@ -261,19 +274,19 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { } //子表校验 校验供应商物品 - private void validatorSupplierItemExist(String supplierCode,String itemCode) { - supplieritemService.selectSupplierItemExist(supplierCode,itemCode); + private void validatorSupplierItemExist(String supplierCode, String itemCode) { + supplieritemService.selectSupplierItemExist(supplierCode, itemCode); } //子表校验 校验标准成本价格 - private void validatorStdcostpriceExist(String supplierCode,String itemCode) { - StdcostpriceDO stdcostpriceDO = stdcostpriceService.selectStdcostpriceExist(supplierCode,itemCode); + private void validatorStdcostpriceExist(String supplierCode, String itemCode) { + StdcostpriceDO stdcostpriceDO = stdcostpriceService.selectStdcostpriceExist(supplierCode, itemCode); } //校验主表公共方法(适用于新增/修改) private PurchaseMainDO validatorMainMethod(PurchaseMainBaseVO baseVO) { - PurchaseMainDO mainDo =PurchaseMainConvert.INSTANCE.convert(baseVO); + PurchaseMainDO mainDo = PurchaseMainConvert.INSTANCE.convert(baseVO); this.validatorShiftExist(mainDo.getSupplierCode()); mainDo.setStatus(DictFrameworkUtils.parseDictDataValue(DictTypeConstants.REQUEST_STATUS, "新增")); BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("PurchaseOrder"); @@ -285,8 +298,8 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { private void validatorDetailMethod(PurchaseDetailDO detailDo, PurchaseMainDO mainDo) { validatorItembasic(detailDo.getItemCode()); validatorItemPackagingExist(detailDo.getItemCode()); - validatorSupplierItemExist(mainDo.getSupplierCode(),detailDo.getItemCode()); - validatorStdcostpriceExist(mainDo.getSupplierCode(),detailDo.getItemCode()); + validatorSupplierItemExist(mainDo.getSupplierCode(), detailDo.getItemCode()); + validatorStdcostpriceExist(mainDo.getSupplierCode(), detailDo.getItemCode()); } //新增校验 @@ -294,7 +307,7 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { PurchaseMainDO purchaseMainDO = validatorMainMethod(createReqVO); //子表校验 List subList = createReqVO.getSubList(); - List subDOList =PurchaseDetailConvert.INSTANCE.convertList03(subList); + List subDOList = PurchaseDetailConvert.INSTANCE.convertList03(subList); for (PurchaseDetailDO purchaseDetailDO : subDOList) { validatorDetailMethod(purchaseDetailDO, purchaseMainDO); } @@ -309,9 +322,9 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { private PurchaseMainDO validatorToUpdate(PurchaseMainUpdateReqVO updateReqVO) { PurchaseMainDO purchaseMainDO = validatorMainMethod(updateReqVO); //子表校验 - List< PurchaseDetailUpdateReqVO> subList = updateReqVO.getSubList(); - List< PurchaseDetailDO> subDOList = PurchaseDetailConvert.INSTANCE.convertList05(subList); - for ( PurchaseDetailDO purchaseDetailDO : subDOList) { + List subList = updateReqVO.getSubList(); + List subDOList = PurchaseDetailConvert.INSTANCE.convertList05(subList); + for (PurchaseDetailDO purchaseDetailDO : subDOList) { validatorDetailMethod(purchaseDetailDO, purchaseMainDO); } purchaseMainMapper.updateById(purchaseMainDO); @@ -325,12 +338,28 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { * @param mainDo * @return */ - private String validatorPurchaseMainImport(PurchaseMainDO mainDo, BusinesstypeDO businesstypeDO) { + private String validatorPurchaseMainImport(PurchaseMainDO mainDo) { String messageMain = ""; //主表的验证 //校验供应商基础信息 try { ShiftDO shiftDO = shiftService.selectShiftExist(mainDo.getSupplierCode()); + if (shiftDO == null) { + messageMain += "未查找到供应商" + mainDo.getSupplierCode() + "信息" + ","; + } + } catch (ServiceException ex) { + messageMain += ex.getMessage() + ","; + } + if (StringUtils.isEmpty(mainDo.getNumber())) { + String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_ORDER.getCode()); + mainDo.setNumber(number); + } + //校验单据号是否重复 + try { + PurchaseMainDO purchaseMainDO = purchaseMainMapper.selectByNumber(mainDo.getNumber()); + if (purchaseMainDO != null) { + messageMain += "单据号" + mainDo.getNumber() + "已存在" + ","; + } } catch (ServiceException ex) { messageMain += ex.getMessage() + ","; } @@ -343,7 +372,7 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { * @param detailDo * @return */ - private String validatorPurchaseDetailImport(PurchaseDetailDO detailDo,PurchaseMainDO mainDo) { + private String validatorPurchaseDetailImport(PurchaseDetailDO detailDo, PurchaseMainDO mainDo) { String messageDetail = ""; // 校验物品基础信息 try { @@ -367,7 +396,7 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { try { SupplieritemDO supplieritemDO = supplieritemService.selectSupplierItemExist(mainDo.getSupplierCode(), detailDo.getItemCode()); detailDo.setSupplierUom(supplieritemDO.getSupplierUom()); - detailDo.setStdPackQty(supplieritemDO.getPackQty()); + detailDo.setSupplierQty(supplieritemDO.getPackQty()); detailDo.setConvertRate(supplieritemDO.getConvertRate()); } catch (ServiceException ex) { messageDetail += ex.getMessage() + ","; @@ -389,7 +418,6 @@ public class PurchaseMainServiceImpl implements PurchaseMainService { } - @Override @Transactional public Integer closePurchaseMain(Long id) {