From 842e5d79e56bc17553db1d7df30caa68ad6631f7 Mon Sep 17 00:00:00 2001 From: zhou-hongcheng <1064771933@qq.com> Date: Mon, 20 Apr 2026 09:28:26 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=94=B6=E8=B4=A7=E5=8E=BB=E6=8E=89?= =?UTF-8?q?=E6=89=B9=E6=AC=A1=E5=8F=B7=E9=87=8D=E5=A4=8D=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ReceiptMaterialDetailImpl.java | 68 +++++++++---------- 1 file changed, 34 insertions(+), 34 deletions(-) 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 523faa16b..9d42fc6cf 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 @@ -1301,40 +1301,40 @@ public class ReceiptMaterialDetailImpl extends ServiceImpl wrapper = - new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper() - .eq(MaterialInventory::getShipperId, shipperId) - .eq(MaterialInventory::getMaterialBaseInfoId, materialBaseInfoId) - .eq(MaterialInventory::getBatchNumber, batchNumber) - .eq(MaterialInventory::getDelFlag, 1) - .eq(MaterialInventory::getInOrderNumber, currentInOrderNumber); - - // 如果库存属性值不为空,需要精确匹配;如果为空,查询库存属性值为空或null的记录 - if (materialStatusCode != null && !materialStatusCode.trim().isEmpty()) { - wrapper.eq(MaterialInventory::getMaterialStatusCode, materialStatusCode); - } else { - wrapper.and(w -> w.isNull(MaterialInventory::getMaterialStatusCode) - .or() - .eq(MaterialInventory::getMaterialStatusCode, "")); - } - - List existingInventoryList = materialInventoryMapper.selectList(wrapper); - - if (!CollectionUtils.isEmpty(existingInventoryList)) { - String statusCodeDesc = (materialStatusCode != null && !materialStatusCode.trim().isEmpty()) - ? ",库存属性值:" + materialStatusCode - : ",库存属性值:空"; - throw new ServiceException("批次号【" + batchNumber + "】在本入库单「" + currentInOrderNumber - + "」下已存在库存,货主ID【" + shipperId + "】+商品ID【" + materialBaseInfoId + "】" + statusCodeDesc - + ",不允许重复使用"); - } - } +// if (shipperId != null && materialBaseInfoId != null && batchNumber != null && !batchNumber.trim().isEmpty()) { +// if (StringUtils.isBlank(currentInOrderNumber)) { +// log.warn("batchReceiptUpdate:未解析到入库单号,跳过库存批次重复校验,receiptOrderNumber={}", +// receiptMaterialDetailDO != null ? receiptMaterialDetailDO.getReceiptOrderNumber() : null); +// return; +// } +// com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper wrapper = +// new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper() +// .eq(MaterialInventory::getShipperId, shipperId) +// .eq(MaterialInventory::getMaterialBaseInfoId, materialBaseInfoId) +// .eq(MaterialInventory::getBatchNumber, batchNumber) +// .eq(MaterialInventory::getDelFlag, 1) +// .eq(MaterialInventory::getInOrderNumber, currentInOrderNumber); +// +// // 如果库存属性值不为空,需要精确匹配;如果为空,查询库存属性值为空或null的记录 +// if (materialStatusCode != null && !materialStatusCode.trim().isEmpty()) { +// wrapper.eq(MaterialInventory::getMaterialStatusCode, materialStatusCode); +// } else { +// wrapper.and(w -> w.isNull(MaterialInventory::getMaterialStatusCode) +// .or() +// .eq(MaterialInventory::getMaterialStatusCode, "")); +// } +// +// List existingInventoryList = materialInventoryMapper.selectList(wrapper); +// +// if (!CollectionUtils.isEmpty(existingInventoryList)) { +// String statusCodeDesc = (materialStatusCode != null && !materialStatusCode.trim().isEmpty()) +// ? ",库存属性值:" + materialStatusCode +// : ",库存属性值:空"; +// throw new ServiceException("批次号【" + batchNumber + "】在本入库单「" + currentInOrderNumber +// + "」下已存在库存,货主ID【" + shipperId + "】+商品ID【" + materialBaseInfoId + "】" + statusCodeDesc +// + ",不允许重复使用"); +// } +// } } } \ No newline at end of file From 5bd042ea8efde31a86d40aa06d5f008432bf5043 Mon Sep 17 00:00:00 2001 From: zhou-hongcheng <1064771933@qq.com> Date: Mon, 20 Apr 2026 09:57:21 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=B8=8A=E6=9E=B6=E5=AD=98=E5=85=A5?= =?UTF-8?q?=E5=BA=93=E5=AD=98=E8=A1=A8=E6=9B=B4=E6=96=B0=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../stockShelfOrder/service/StockShelfOrderDomainService.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/service/StockShelfOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/service/StockShelfOrderDomainService.java index b15ae7a41..41436aed4 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/service/StockShelfOrderDomainService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockShelfOrder/service/StockShelfOrderDomainService.java @@ -1058,6 +1058,7 @@ public class StockShelfOrderDomainService { inventoryParamDO.setCreateBy(loginUser.getUserid()); inventoryParamDO.setCreateByName(loginUser.getUsername()); inventoryParamDO.setCreateTime(new Date()); + inventoryParamDO.setUpdateTime(new Date()); // materialInventoryMapper.insert(materialInventory); inventoryParamDO.setType("1"); @@ -1117,6 +1118,7 @@ public class StockShelfOrderDomainService { inventoryParamDO.setLotNumber(shelfMaterialDetail.getLotNumber()); inventoryParamDO.setQuantity(shelfMaterialDetail.getShelvesQuantity()); inventoryParamDO.setType("1"); + inventoryParamDO.setUpdateTime(new Date()); materialInventoryService.xgkc(inventoryParamDO); //库存调整记录 materialInventoryService.kctzjl(inventoryParamDO, "入库", loginUser); From c501c83cd5e3d99a7220b666228325e42734a4ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E9=B8=BF=E5=B1=95?= <18031053041@163.com> Date: Mon, 20 Apr 2026 11:21:05 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=8B=A3=E8=B4=A7=E6=95=B0=E9=87=8F?= =?UTF-8?q?=E4=B8=BA0=E7=9A=84=E4=B8=8D=E7=94=9F=E6=88=90=E5=A4=8D?= =?UTF-8?q?=E6=A0=B8=E6=98=8E=E7=BB=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ReviewOrderDomainService.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/pickingOrder/service/ReviewOrderDomainService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingOrder/service/ReviewOrderDomainService.java index a94523ea3..878d71705 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/pickingOrder/service/ReviewOrderDomainService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/pickingOrder/service/ReviewOrderDomainService.java @@ -147,15 +147,26 @@ public class ReviewOrderDomainService { throw new ServiceException("复核单主表保存失败"); } + int detailInserted = 0; for (PickingOrder po : pickingOrders) { List lines = pickingMaterialDetailService.list(new LambdaQueryWrapper() .eq(PickingMaterialDetail::getPickingOrderNumber, po.getPickingOrderNumber()) .eq(PickingMaterialDetail::getDelFlag, 1)); for (PickingMaterialDetail line : lines) { + BigDecimal picked = line.getPickingQuantity(); + if (picked == null || picked.compareTo(BigDecimal.ZERO) <= 0) { + continue; + } ReviewMaterialDetail row = buildDetailFromPicking(line, reviewOrderId, reviewOrderNumber, outOrderNumber, loginUser, now); reviewMaterialDetailMapper.insert(row); + detailInserted++; } } + if (detailInserted == 0) { + reviewOrderMapper.deleteById(reviewOrderId); + log.info("跳过生成复核单:拣货明细无已拣货数量>0 的行 outOrderNumber={}", outOrderNumber); + return; + } // 复核也生成作业单(同拣货作业单表结构),用于作业任务跟踪 genStockOutTaskOrderForReview(header, loginUser, now);