From e821619a961f31f93a62ceb6556f975bbe590b8f Mon Sep 17 00:00:00 2001 From: rcx <3084692334@qq.com> Date: Wed, 2 Sep 2026 15:05:29 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E5=BA=93=E5=AD=98):=20=E4=BF=AE=E5=A4=8DOM?= =?UTF-8?q?S/WMS=E5=BA=93=E5=AD=98=E6=9F=A5=E8=AF=A2=E8=BF=87=E6=9C=9F?= =?UTF-8?q?=E6=97=A5=E6=9C=9F=E4=B8=8D=E5=9B=9E=E6=98=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根因:业务只在OMS填写饮用日期,且下发DTO无过期日期字段,饮用日期→过期日期的转换仅存在于收货单生成瞬间,后续环节全部丢失。 - InMaterialDetail(DTO) 补充 expiryDate 字段,打通OMS→WMS传递 - 预约单/执行单下发前:过期日期为空时用饮用日期补齐(治本) - WMS收货批次属性回写:恢复饮用日期回写并兜底转换为过期日期(加固) - WMS上架确认:过期日期为空时从收货明细兜底补齐(加固) --- .../system/api/domain/InMaterialDetail.java | 5 +++++ .../ExecutionStockInOrderDomainService.java | 5 +++++ .../ReservationStockInOrderDomainService.java | 5 +++++ .../ReceiptMaterialDetailImpl.java | 21 ++++++++++++------- .../service/StockShelfOrderDomainService.java | 19 +++++++++++++++++ 5 files changed, 47 insertions(+), 8 deletions(-) diff --git a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/InMaterialDetail.java b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/InMaterialDetail.java index ff112e22d..927a883aa 100644 --- a/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/InMaterialDetail.java +++ b/mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/domain/InMaterialDetail.java @@ -375,6 +375,11 @@ public class InMaterialDetail extends BaseVOEntity { @DateTimeFormat(pattern="yyyy-MM-dd") private Date drinkDate; + @ApiModelProperty("过期日期") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date expiryDate; + @ApiModelProperty("来货验收是否合格;1 合格,0 不合格") @Excel(name = "来货验收是否合格;1 合格,0 不合格") private String arrivalAcceptQualified; diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockInOrder/service/ExecutionStockInOrderDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockInOrder/service/ExecutionStockInOrderDomainService.java index 22d304bfe..0a18e0d0f 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockInOrder/service/ExecutionStockInOrderDomainService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/executionStockInOrder/service/ExecutionStockInOrderDomainService.java @@ -626,6 +626,11 @@ public class ExecutionStockInOrderDomainService { inMaterialDetail.setOrganizationId(orgId); inMaterialDetail.setOrganizationName(orgName); inMaterialDetail.setTopOrganizationId(topOrgId); + // 过期日期为空且饮用日期有值时,用饮用日期补齐过期日期(食品业务饮用日期即效期), + // 确保下发WMS后入库/收货/库存链路的过期日期能正常回显 + if (inMaterialDetail.getExpiryDate() == null && inMaterialDetail.getDrinkDate() != null) { + inMaterialDetail.setExpiryDate(inMaterialDetail.getDrinkDate()); + } inMaterialDetailList.add(inMaterialDetail); } wmsServiceFeign.omsInOrderAddDetail(inMaterialDetailList); diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java index 591c799b1..bd8852799 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reservationStockInOrder/service/ReservationStockInOrderDomainService.java @@ -580,6 +580,11 @@ public class ReservationStockInOrderDomainService { InMaterialDetail inMaterialDetail = new InMaterialDetail(); BeanUtils.copyProperties(reservationInMaterialDetail, inMaterialDetail, "materialDetailId"); inMaterialDetail.setOmsInMaterialDetail(String.valueOf(reservationInMaterialDetail.getMaterialDetailId())); + // 过期日期为空且饮用日期有值时,用饮用日期补齐过期日期(食品业务饮用日期即效期), + // 确保下发WMS后入库/收货/库存链路的过期日期能正常回显 + if (inMaterialDetail.getExpiryDate() == null && inMaterialDetail.getDrinkDate() != null) { + inMaterialDetail.setExpiryDate(inMaterialDetail.getDrinkDate()); + } inMaterialDetailList.add(inMaterialDetail); } wmsServiceFeign.omsInOrderAddDetail(inMaterialDetailList); // 推明细(会触发WMS自动审核) diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/persistence/ReceiptMaterialDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/persistence/ReceiptMaterialDetailImpl.java index ba78bc34f..c4a2dee8d 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/persistence/ReceiptMaterialDetailImpl.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/receiptMaterialDetail/repository/persistence/ReceiptMaterialDetailImpl.java @@ -743,14 +743,19 @@ public class ReceiptMaterialDetailImpl extends ServiceImpl() + .eq(ReceiptMaterialDetail::getUniqueId, shelfMaterialDetail.getReceiptUniqueId()) + .last("LIMIT 1")); + if (receiptDetail != null) { + if (receiptDetail.getExpiryDate() != null) { + shelfMaterialDetail.setExpiryDate(receiptDetail.getExpiryDate()); + } else if (receiptDetail.getDrinkDate() != null) { + shelfMaterialDetail.setExpiryDate(receiptDetail.getDrinkDate()); + } + } + } Long shipperId = stockReceiptOrderDO.getShipperId(); MaterialInventory param = getParam(shelfMaterialDetail, fieldNames, shipperId,stockReceiptOrderDO.getInOrderNumber()); List materialInventoryPOS = materialInventoryMapper.selectListByWhere(param);