From 51898066353d89a73b50c87b3853a0dd3a964ca7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Wed, 4 Feb 2026 11:10:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=87=BA=E5=BA=93=E5=8D=95=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E8=B0=83=E6=95=B4=20=E4=B8=8A=E6=9E=B6=E6=94=B6=E8=B4=A7?= =?UTF-8?q?=E6=95=B0=E9=87=8F=E4=B8=BA0=E4=B8=8D=E7=94=9F=E6=88=90?= =?UTF-8?q?=E4=B8=8A=E6=9E=B6=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listener/ExcelParseService.java | 149 +++++++++++++++- .../StockReceiptOrderDomainService.java | 165 +++++++++++------- 2 files changed, 241 insertions(+), 73 deletions(-) diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/listener/ExcelParseService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/listener/ExcelParseService.java index 3b212d723..14d180ac2 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/listener/ExcelParseService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockOutOrder/repository/listener/ExcelParseService.java @@ -17,9 +17,12 @@ import com.mhd.common.security.utils.SecurityUtils; import com.mhd.system.api.SystemServiceFeign; import com.mhd.system.api.UserServiceFeign; import com.mhd.system.api.model.LoginUser; +import com.mhd.wms.application.service.materialBaseInfo.MaterialBaseInfoApplicationService; import com.mhd.wms.application.service.stockOutOrder.StockOutOrderApplicationService; import com.mhd.wms.domain.materialBaseInfo.entity.MaterialBaseInfo; import com.mhd.wms.domain.materialBaseInfo.repository.mapper.MaterialBaseInfoMapper; +import com.mhd.wms.domain.materialBaseInfo.repository.po.MaterialBaseInfoPO; +import com.mhd.wms.domain.materialBaseInfo.repository.todo.MaterialBaseInfoDO; import com.mhd.wms.domain.outMaterialDetail.repository.todo.OutMaterialDetailDO; import com.mhd.wms.domain.stockOutOrder.entity.StockOutOrder; import com.mhd.wms.domain.stockOutOrder.repository.facade.IStockOutOrderService; @@ -49,6 +52,8 @@ public class ExcelParseService { @Autowired private MaterialBaseInfoMapper materialBaseInfoMapper; @Autowired + private MaterialBaseInfoApplicationService materialBaseInfoService; + @Autowired private StockOutOrderDomainService stockOutOrderDomainService; @Resource private UserServiceFeign userServiceFeign; @@ -92,13 +97,18 @@ public class ExcelParseService { itemReader.finish(); List itemList = itemListener.getItemList(); StockOutOrderDO stockOutOrder = headerListener.getStockOutOrder(); - initList(itemList,warehouseId,warehouseCode,warehouseName); + // 提前获取货主ID,用于查询物料基础信息时过滤 + String customerName = stockOutOrder.getCustomerName(); + Long shipperId = getShipperIdByCustomerName(customerName); + LoginUser loginUser = SecurityUtils.getLoginUser(); + Long topOrganizationId = loginUser != null && loginUser.getUserPo() != null + ? loginUser.getUserPo().getTopOrganizationId() : null; + initList(itemList, warehouseId, warehouseCode, warehouseName, shipperId, topOrganizationId); stockOutOrder.setMaterialDetailList(itemList); stockOutOrder.setWarehouseName(warehouseName); stockOutOrder.setWarehouseCode(warehouseCode); stockOutOrder.setWarehouseId(warehouseId); initDict(stockOutOrder); - LoginUser loginUser = SecurityUtils.getLoginUser(); if (loginUser != null){ stockOutOrder.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); stockOutOrder.setOrganizationId(loginUser.getUserPo().getOrganizationId()); @@ -222,19 +232,140 @@ public class ExcelParseService { return errorMsg; } - private void initList(List outMaterialDetailDOList, Long warehouseId, String warehouseCode, String warehouseName) { + /** + * @description 根据客户名称获取货主ID(用于导入时提前获取货主ID) + * @param customerName 客户名称(在出库单中,客户名称就是货主名称) + * @return 货主ID,如果找不到则返回null + */ + private Long getShipperIdByCustomerName(String customerName) { + if (StringUtils.isEmpty(customerName)) { + return null; + } + + try { + if (!customerName.matches("\\d+")) { + // 按名称查询 + AjaxResult ajaxResult = userServiceFeign.getInfoByName(customerName); + if ("200".equals(String.valueOf(ajaxResult.get("code")))) { + UserPo userPo = JSON.parseObject(com.alibaba.fastjson2.JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class); + if (userPo != null) { + return userPo.getUserId(); + } + } + } else { + // 按ID查询 + AjaxResult ajaxResult = userServiceFeign.getInfo(Long.valueOf(customerName)); + if ("200".equals(String.valueOf(ajaxResult.get("code")))) { + UserPo userPo = JSON.parseObject(com.alibaba.fastjson2.JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class); + if (userPo != null) { + return userPo.getUserId(); + } + } + } + } catch (Exception e) { + // 如果查询失败,返回null,后续在shipperParam方法中会再次尝试 + } + + return null; + } + + /** + * @description 初始化物料明细列表,查询物料基础信息并设置物料基础信息ID(改为与入库单相同的逻辑) + * @param outMaterialDetailDOList 出库物料明细列表 + * @param warehouseId 仓库ID + * @param warehouseCode 仓库编码 + * @param warehouseName 仓库名称 + * @param shipperId 货主ID(用于过滤物料基础信息,确保查询到的是该货主绑定的物料) + * @param topOrganizationId 一级组织ID(用于过滤物料基础信息) + */ + private void initList(List outMaterialDetailDOList, Long warehouseId, String warehouseCode, String warehouseName, Long shipperId, Long topOrganizationId) { for (OutMaterialDetailDO outMaterialDetailDO : outMaterialDetailDOList) { outMaterialDetailDO.setWarehouseId(warehouseId); outMaterialDetailDO.setWarehouseCode(warehouseCode); outMaterialDetailDO.setWarehouseName(warehouseName); + + // 根据明细表中的字段查询物料基础信息(优先:料号 > 商品SKU码 > 商品名称) + // 注意:查询时必须加上货主ID条件,确保查询到的是该货主绑定的物料 + Long materialBaseInfoId = null; + + MaterialBaseInfoPO materialBaseInfoPO = null; + + // 优先使用料号查询(materialNo对应materialCode) String materialNo = outMaterialDetailDO.getMaterialNo(); - List materialBaseInfos = materialBaseInfoMapper.selectList(new LambdaQueryWrapper().eq(MaterialBaseInfo::getMaterialCode, materialNo)); - if (!materialBaseInfos.isEmpty()) { - if (materialBaseInfos.size() > 1) { - return; + if (StringUtils.isNotBlank(materialNo)) { + MaterialBaseInfoDO queryDO = new MaterialBaseInfoDO(); + queryDO.setMaterialCode(materialNo); + if (topOrganizationId != null) { + queryDO.setTopOrganizationId(topOrganizationId); + } + // 加上货主ID条件,确保查询到的是该货主绑定的物料 + if (shipperId != null) { + queryDO.setShipperId(shipperId); + } + List materialList = materialBaseInfoService.queryList(queryDO); + if (materialList != null && !materialList.isEmpty()) { + materialBaseInfoPO = materialList.get(0); + materialBaseInfoId = materialBaseInfoPO.getMaterialBaseInfoId(); + } + } + + // 如果料号查询不到,使用商品SKU码查询(skucode对应barCode) + if (materialBaseInfoId == null && StringUtils.isNotBlank(outMaterialDetailDO.getSkucode())) { + MaterialBaseInfoDO queryDO = new MaterialBaseInfoDO(); + queryDO.setBarCode(outMaterialDetailDO.getSkucode()); + if (topOrganizationId != null) { + queryDO.setTopOrganizationId(topOrganizationId); + } + // 加上货主ID条件,确保查询到的是该货主绑定的物料 + if (shipperId != null) { + queryDO.setShipperId(shipperId); + } + List materialList = materialBaseInfoService.queryList(queryDO); + if (materialList != null && !materialList.isEmpty()) { + materialBaseInfoPO = materialList.get(0); + materialBaseInfoId = materialBaseInfoPO.getMaterialBaseInfoId(); + } + } + + // 如果料号和SKU码都查询不到,使用商品名称查询(commodityName对应materialName) + if (materialBaseInfoId == null && StringUtils.isNotBlank(outMaterialDetailDO.getCommodityName())) { + MaterialBaseInfoDO queryDO = new MaterialBaseInfoDO(); + queryDO.setMaterialName(outMaterialDetailDO.getCommodityName()); + if (topOrganizationId != null) { + queryDO.setTopOrganizationId(topOrganizationId); + } + // 加上货主ID条件,确保查询到的是该货主绑定的物料 + if (shipperId != null) { + queryDO.setShipperId(shipperId); + } + List materialList = materialBaseInfoService.queryList(queryDO); + if (materialList != null && !materialList.isEmpty()) { + materialBaseInfoPO = materialList.get(0); + materialBaseInfoId = materialBaseInfoPO.getMaterialBaseInfoId(); + } + } + + // 设置物料基础信息ID,并从物料基础信息中回填料号、物料编码、物料名称等信息 + if (materialBaseInfoId != null && materialBaseInfoPO != null) { + outMaterialDetailDO.setMaterialBaseInfoId(materialBaseInfoId); + // 如果Excel中没有料号,从物料基础信息中回填 + if (StringUtils.isBlank(outMaterialDetailDO.getMaterialNo())) { + outMaterialDetailDO.setMaterialNo(materialBaseInfoPO.getMaterialCode()); + } + // 回填物料编码 + if (StringUtils.isBlank(outMaterialDetailDO.getMaterialCode())) { + outMaterialDetailDO.setMaterialCode(materialBaseInfoPO.getMaterialCode()); + } + // 回填物料名称(如果Excel中的商品名称为空,使用物料基础信息中的名称) + if (StringUtils.isBlank(outMaterialDetailDO.getCommodityName())) { + outMaterialDetailDO.setCommodityName(materialBaseInfoPO.getMaterialName()); + } + // 回填物料名称到materialName字段 + outMaterialDetailDO.setMaterialName(materialBaseInfoPO.getMaterialName()); + // 如果Excel中没有SKU码,从物料基础信息中回填 + if (StringUtils.isBlank(outMaterialDetailDO.getSkucode())) { + outMaterialDetailDO.setSkucode(materialBaseInfoPO.getBarCode()); } - MaterialBaseInfo materialBaseInfo = materialBaseInfos.get(0); - outMaterialDetailDO.setMaterialBaseInfoId(materialBaseInfo.getMaterialBaseInfoId()); } } } diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/service/StockReceiptOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/service/StockReceiptOrderDomainService.java index 8bb7d9016..2fe73a61c 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/service/StockReceiptOrderDomainService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockReceiptOrder/service/StockReceiptOrderDomainService.java @@ -668,6 +668,12 @@ public class StockReceiptOrderDomainService { stockShelfOrderDO.setStatus(1); List shelfMaterialDetailDOList = new ArrayList<>(); stockReceiptOrderDO.getMaterialDetailList().forEach(receiptMaterialDetailDO -> { + // 如果已收货数量为0,跳过该明细,不生成上架单明细任务 + if (receiptMaterialDetailDO.getReceiptQuantity() == null || + receiptMaterialDetailDO.getReceiptQuantity().compareTo(BigDecimal.ZERO) <= 0) { + return; + } + ShelfMaterialDetailDO shelfMaterialDetailDO = new ShelfMaterialDetailDO(); BeanUtils.copyProperties(receiptMaterialDetailDO, shelfMaterialDetailDO); shelfMaterialDetailDO.setQuantity(receiptMaterialDetailDO.getReceiptQuantity()); @@ -699,40 +705,50 @@ public class StockReceiptOrderDomainService { // 如果转换失败,不设置该字段 } } - receiptMaterialDetailDO.getChildren().forEach(receiptMaterialDetailDOChildren -> { - ShelfMaterialDetailDO shelfMaterialDetailDOChildren = new ShelfMaterialDetailDO(); - BeanUtils.copyProperties(receiptMaterialDetailDOChildren, shelfMaterialDetailDOChildren); - shelfMaterialDetailDOChildren.setQuantity(receiptMaterialDetailDOChildren.getReceiptQuantity()); - shelfMaterialDetailDOChildren.setInUniqueId(receiptMaterialDetailDO.getInUniqueId()); - shelfMaterialDetailDOChildren.setReceiptUniqueId(receiptMaterialDetailDO.getUniqueId()); - // 传递生产日期、过期日期、存货日期、Batch Ref NO's、Sheet Ref NO's、箱号/卡板号、扩展属性1-4 - shelfMaterialDetailDOChildren.setProductionDate(receiptMaterialDetailDOChildren.getProductionDate()); - shelfMaterialDetailDOChildren.setExpiryDate(receiptMaterialDetailDOChildren.getExpiryDate()); - shelfMaterialDetailDOChildren.setInventoryDate(receiptMaterialDetailDOChildren.getInventoryDate()); - shelfMaterialDetailDOChildren.setBatchRefNo(receiptMaterialDetailDOChildren.getBatchRefNo()); - shelfMaterialDetailDOChildren.setSheetRefNo(receiptMaterialDetailDOChildren.getSheetRefNo()); - shelfMaterialDetailDOChildren.setBoxPalletNo(receiptMaterialDetailDOChildren.getBoxPalletNo()); - shelfMaterialDetailDOChildren.setExtAttr1(receiptMaterialDetailDOChildren.getExtAttr1()); - shelfMaterialDetailDOChildren.setExtAttr2(receiptMaterialDetailDOChildren.getExtAttr2()); - // extAttr3和extAttr4在ReceiptMaterialDetailDO中是String类型,在ShelfMaterialDetailDO中是Date类型,需要转换 - if (receiptMaterialDetailDOChildren.getExtAttr3() != null && !receiptMaterialDetailDOChildren.getExtAttr3().isEmpty()) { - try { - java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - shelfMaterialDetailDOChildren.setExtAttr3(sdf.parse(receiptMaterialDetailDOChildren.getExtAttr3())); - } catch (Exception e) { - // 如果转换失败,不设置该字段 + + // 处理子项:如果子项的已收货数量为0,跳过该子项 + if (receiptMaterialDetailDO.getChildren() != null && !receiptMaterialDetailDO.getChildren().isEmpty()) { + receiptMaterialDetailDO.getChildren().forEach(receiptMaterialDetailDOChildren -> { + // 如果子项的已收货数量为0,跳过该子项,不生成上架单明细任务 + if (receiptMaterialDetailDOChildren.getReceiptQuantity() == null || + receiptMaterialDetailDOChildren.getReceiptQuantity().compareTo(BigDecimal.ZERO) <= 0) { + return; } - } - if (receiptMaterialDetailDOChildren.getExtAttr4() != null && !receiptMaterialDetailDOChildren.getExtAttr4().isEmpty()) { - try { - java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - shelfMaterialDetailDOChildren.setExtAttr4(sdf.parse(receiptMaterialDetailDOChildren.getExtAttr4())); - } catch (Exception e) { - // 如果转换失败,不设置该字段 + + ShelfMaterialDetailDO shelfMaterialDetailDOChildren = new ShelfMaterialDetailDO(); + BeanUtils.copyProperties(receiptMaterialDetailDOChildren, shelfMaterialDetailDOChildren); + shelfMaterialDetailDOChildren.setQuantity(receiptMaterialDetailDOChildren.getReceiptQuantity()); + shelfMaterialDetailDOChildren.setInUniqueId(receiptMaterialDetailDO.getInUniqueId()); + shelfMaterialDetailDOChildren.setReceiptUniqueId(receiptMaterialDetailDO.getUniqueId()); + // 传递生产日期、过期日期、存货日期、Batch Ref NO's、Sheet Ref NO's、箱号/卡板号、扩展属性1-4 + shelfMaterialDetailDOChildren.setProductionDate(receiptMaterialDetailDOChildren.getProductionDate()); + shelfMaterialDetailDOChildren.setExpiryDate(receiptMaterialDetailDOChildren.getExpiryDate()); + shelfMaterialDetailDOChildren.setInventoryDate(receiptMaterialDetailDOChildren.getInventoryDate()); + shelfMaterialDetailDOChildren.setBatchRefNo(receiptMaterialDetailDOChildren.getBatchRefNo()); + shelfMaterialDetailDOChildren.setSheetRefNo(receiptMaterialDetailDOChildren.getSheetRefNo()); + shelfMaterialDetailDOChildren.setBoxPalletNo(receiptMaterialDetailDOChildren.getBoxPalletNo()); + shelfMaterialDetailDOChildren.setExtAttr1(receiptMaterialDetailDOChildren.getExtAttr1()); + shelfMaterialDetailDOChildren.setExtAttr2(receiptMaterialDetailDOChildren.getExtAttr2()); + // extAttr3和extAttr4在ReceiptMaterialDetailDO中是String类型,在ShelfMaterialDetailDO中是Date类型,需要转换 + if (receiptMaterialDetailDOChildren.getExtAttr3() != null && !receiptMaterialDetailDOChildren.getExtAttr3().isEmpty()) { + try { + java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + shelfMaterialDetailDOChildren.setExtAttr3(sdf.parse(receiptMaterialDetailDOChildren.getExtAttr3())); + } catch (Exception e) { + // 如果转换失败,不设置该字段 + } } - } - shelfMaterialDetailDOList.add(shelfMaterialDetailDOChildren); - }); + if (receiptMaterialDetailDOChildren.getExtAttr4() != null && !receiptMaterialDetailDOChildren.getExtAttr4().isEmpty()) { + try { + java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + shelfMaterialDetailDOChildren.setExtAttr4(sdf.parse(receiptMaterialDetailDOChildren.getExtAttr4())); + } catch (Exception e) { + // 如果转换失败,不设置该字段 + } + } + shelfMaterialDetailDOList.add(shelfMaterialDetailDOChildren); + }); + } shelfMaterialDetailDOList.add(shelfMaterialDetailDO); }); stockShelfOrderDO.setMaterialDetailList(shelfMaterialDetailDOList); @@ -786,6 +802,12 @@ public class StockReceiptOrderDomainService { } for (ReceiptMaterialDetailPO receiptMaterialDetailPO : receiptMaterialDetailPOS) { if (2 == receiptMaterialDetailPO.getGenStockShelf()) { + // 如果已收货数量为0,跳过该明细,不生成上架单明细任务 + if (receiptMaterialDetailPO.getReceiptQuantity() == null || + receiptMaterialDetailPO.getReceiptQuantity().compareTo(BigDecimal.ZERO) <= 0) { + continue; + } + ShelfMaterialDetailDO shelfMaterialDetailDO = new ShelfMaterialDetailDO(); BeanUtils.copyProperties(receiptMaterialDetailPO, shelfMaterialDetailDO); shelfMaterialDetailDO.setQuantity(receiptMaterialDetailPO.getReceiptQuantity()); @@ -869,6 +891,12 @@ public class StockReceiptOrderDomainService { List receiptMaterialDetailPODbs = receiptMaterialDetailPOListMap.get(p.getReceiptOrderNumber()); List shelfMaterialDetailDOList = new ArrayList<>(); receiptMaterialDetailPODbs.forEach(receiptMaterialDetailPO -> { + // 如果已收货数量为0,跳过该明细,不生成上架单明细任务 + if (receiptMaterialDetailPO.getReceiptQuantity() == null || + receiptMaterialDetailPO.getReceiptQuantity().compareTo(BigDecimal.ZERO) <= 0) { + return; + } + ShelfMaterialDetailDO shelfMaterialDetailDO = new ShelfMaterialDetailDO(); BeanUtils.copyProperties(receiptMaterialDetailPO, shelfMaterialDetailDO); shelfMaterialDetailDO.setQuantity(receiptMaterialDetailPO.getReceiptQuantity()); @@ -900,40 +928,49 @@ public class StockReceiptOrderDomainService { // 如果转换失败,不设置该字段 } } - receiptMaterialDetailPO.getChildren().forEach(receiptMaterialDetailDOChildren -> { - ShelfMaterialDetailDO shelfMaterialDetailDOChildren = new ShelfMaterialDetailDO(); - BeanUtils.copyProperties(receiptMaterialDetailDOChildren, shelfMaterialDetailDOChildren); - shelfMaterialDetailDOChildren.setQuantity(receiptMaterialDetailDOChildren.getReceiptQuantity()); - shelfMaterialDetailDOChildren.setInUniqueId(receiptMaterialDetailPO.getInUniqueId()); - shelfMaterialDetailDOChildren.setReceiptUniqueId(receiptMaterialDetailPO.getUniqueId()); - // 传递生产日期、过期日期、存货日期、Batch Ref NO's、Sheet Ref NO's、箱号/卡板号、扩展属性1-4 - shelfMaterialDetailDOChildren.setProductionDate(receiptMaterialDetailDOChildren.getProductionDate()); - shelfMaterialDetailDOChildren.setExpiryDate(receiptMaterialDetailDOChildren.getExpiryDate()); - shelfMaterialDetailDOChildren.setInventoryDate(receiptMaterialDetailDOChildren.getInventoryDate()); - shelfMaterialDetailDOChildren.setBatchRefNo(receiptMaterialDetailDOChildren.getBatchRefNo()); - shelfMaterialDetailDOChildren.setSheetRefNo(receiptMaterialDetailDOChildren.getSheetRefNo()); - shelfMaterialDetailDOChildren.setBoxPalletNo(receiptMaterialDetailDOChildren.getBoxPalletNo()); - shelfMaterialDetailDOChildren.setExtAttr1(receiptMaterialDetailDOChildren.getExtAttr1()); - shelfMaterialDetailDOChildren.setExtAttr2(receiptMaterialDetailDOChildren.getExtAttr2()); - // extAttr3和extAttr4在ReceiptMaterialDetailPO中是String类型,在ShelfMaterialDetailDO中是Date类型,需要转换 - if (receiptMaterialDetailDOChildren.getExtAttr3() != null && !receiptMaterialDetailDOChildren.getExtAttr3().isEmpty()) { - try { - java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - shelfMaterialDetailDOChildren.setExtAttr3(sdf.parse(receiptMaterialDetailDOChildren.getExtAttr3())); - } catch (Exception e) { - // 如果转换失败,不设置该字段 + // 处理子项:如果子项的已收货数量为0,跳过该子项 + if (receiptMaterialDetailPO.getChildren() != null && !receiptMaterialDetailPO.getChildren().isEmpty()) { + receiptMaterialDetailPO.getChildren().forEach(receiptMaterialDetailDOChildren -> { + // 如果子项的已收货数量为0,跳过该子项,不生成上架单明细任务 + if (receiptMaterialDetailDOChildren.getReceiptQuantity() == null || + receiptMaterialDetailDOChildren.getReceiptQuantity().compareTo(BigDecimal.ZERO) <= 0) { + return; } - } - if (receiptMaterialDetailDOChildren.getExtAttr4() != null && !receiptMaterialDetailDOChildren.getExtAttr4().isEmpty()) { - try { - java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - shelfMaterialDetailDOChildren.setExtAttr4(sdf.parse(receiptMaterialDetailDOChildren.getExtAttr4())); - } catch (Exception e) { - // 如果转换失败,不设置该字段 + + ShelfMaterialDetailDO shelfMaterialDetailDOChildren = new ShelfMaterialDetailDO(); + BeanUtils.copyProperties(receiptMaterialDetailDOChildren, shelfMaterialDetailDOChildren); + shelfMaterialDetailDOChildren.setQuantity(receiptMaterialDetailDOChildren.getReceiptQuantity()); + shelfMaterialDetailDOChildren.setInUniqueId(receiptMaterialDetailPO.getInUniqueId()); + shelfMaterialDetailDOChildren.setReceiptUniqueId(receiptMaterialDetailPO.getUniqueId()); + // 传递生产日期、过期日期、存货日期、Batch Ref NO's、Sheet Ref NO's、箱号/卡板号、扩展属性1-4 + shelfMaterialDetailDOChildren.setProductionDate(receiptMaterialDetailDOChildren.getProductionDate()); + shelfMaterialDetailDOChildren.setExpiryDate(receiptMaterialDetailDOChildren.getExpiryDate()); + shelfMaterialDetailDOChildren.setInventoryDate(receiptMaterialDetailDOChildren.getInventoryDate()); + shelfMaterialDetailDOChildren.setBatchRefNo(receiptMaterialDetailDOChildren.getBatchRefNo()); + shelfMaterialDetailDOChildren.setSheetRefNo(receiptMaterialDetailDOChildren.getSheetRefNo()); + shelfMaterialDetailDOChildren.setBoxPalletNo(receiptMaterialDetailDOChildren.getBoxPalletNo()); + shelfMaterialDetailDOChildren.setExtAttr1(receiptMaterialDetailDOChildren.getExtAttr1()); + shelfMaterialDetailDOChildren.setExtAttr2(receiptMaterialDetailDOChildren.getExtAttr2()); + // extAttr3和extAttr4在ReceiptMaterialDetailPO中是String类型,在ShelfMaterialDetailDO中是Date类型,需要转换 + if (receiptMaterialDetailDOChildren.getExtAttr3() != null && !receiptMaterialDetailDOChildren.getExtAttr3().isEmpty()) { + try { + java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + shelfMaterialDetailDOChildren.setExtAttr3(sdf.parse(receiptMaterialDetailDOChildren.getExtAttr3())); + } catch (Exception e) { + // 如果转换失败,不设置该字段 + } } - } - shelfMaterialDetailDOList.add(shelfMaterialDetailDOChildren); - }); + if (receiptMaterialDetailDOChildren.getExtAttr4() != null && !receiptMaterialDetailDOChildren.getExtAttr4().isEmpty()) { + try { + java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + shelfMaterialDetailDOChildren.setExtAttr4(sdf.parse(receiptMaterialDetailDOChildren.getExtAttr4())); + } catch (Exception e) { + // 如果转换失败,不设置该字段 + } + } + shelfMaterialDetailDOList.add(shelfMaterialDetailDOChildren); + }); + } shelfMaterialDetailDOList.add(shelfMaterialDetailDO); }); stockShelfOrderDO.setMaterialDetailList(shelfMaterialDetailDOList);