From 8692b38671cc6941375991622cd15f72610a4a55 Mon Sep 17 00:00:00 2001 From: rcx <3084692334@qq.com> Date: Tue, 18 Aug 2026 18:09:34 +0800 Subject: [PATCH] =?UTF-8?q?fix(oms):=E5=85=A5=E5=BA=93=E9=A2=84=E7=BA=A6Ap?= =?UTF-8?q?p=E6=8F=90=E4=BA=A4=E5=90=8E=E5=90=84=E7=AB=AF=E4=B8=8D?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=EF=BC=8C=E8=90=BD=E5=BA=93=E5=9B=9E=E5=A1=AB?= =?UTF-8?q?=E4=BB=93=E5=BA=93/=E7=BB=84=E7=BB=87/=E8=B4=A7=E4=B8=BB?= =?UTF-8?q?=E5=B9=B6=E6=94=AF=E6=8C=81=E8=B4=A7=E4=B8=BB=E7=BB=B4=E5=BA=A6?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根因:App提交的预约单organization_id/shipper_id落库为空、warehouse_code全空,列表按组织与仓码过滤必然查不到 1.ReserveStockInOrderDomainService.insert: -新增明细非空校验,App不传明细时返回'请添加货物明细'而非NPE -按warehouseId查仓库档案回填组织(仓码2841/谷丰2842按仓库归属)/一级组织(2827)/仓库编码名称,仓库缺失时兜底登录人一级组织+2841 -委托方(有货主档案)未传shipper时回填登录人userId至shipperId/customerId -订单状态默认'新增'/status默认1(配合App端订单状态改只读) 2.ReserveStockInOrderApplicationService: -detailsList增加货主直查旁路(对齐queryList既有逻辑),委托方按shipperId查询不再被组织过滤拦截 -inAndOutList原无任何数据权限,委托方登录强制注入本人shipperId,防止传错组织(如通宇2830)导致列表滤空并防越权 --- ...ReserveStockInOrderApplicationService.java | 9 ++++ .../ReserveStockInOrderDomainService.java | 46 +++++++++++++++++-- 2 files changed, 52 insertions(+), 3 deletions(-) diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reserveStockInOrder/service/ReserveStockInOrderApplicationService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reserveStockInOrder/service/ReserveStockInOrderApplicationService.java index 571dfa51c..f0a8d2302 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reserveStockInOrder/service/ReserveStockInOrderApplicationService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reserveStockInOrder/service/ReserveStockInOrderApplicationService.java @@ -153,6 +153,10 @@ public class ReserveStockInOrderApplicationService { public List detailsList(ReserveStockInOrderDO stockInOrderDO) { + // 与 queryList(:96-99) 对齐:委托方按货主直查 + if (stockInOrderDO.getShipperId() != null && stockInOrderDO.getShipperId() != 0L) { + return stockInOrderDomainService.detailsList(stockInOrderDO); + } LoginUser loginUser = SecurityUtils.getLoginUser(); if (loginUser != null && loginUser.getUserPo() != null){ Long userOrganizationId = loginUser.getUserPo().getOrganizationId(); @@ -195,6 +199,11 @@ public class ReserveStockInOrderApplicationService { public List inAndOutList(ReserveStockInOrderDO stockInOrderDO) { LoginUser loginUser = SecurityUtils.getLoginUser(); + // 委托方(货主)登录:强制只看本人货主数据;运营人员不注入(XML :667-669 支持 shipperId) + if (stockInOrderDO.getShipperId() == null + && loginUser != null && loginUser.getUserShipperPo() != null) { + stockInOrderDO.setShipperId(loginUser.getUserPo().getUserId()); + } return stockInOrderDomainService.inAndOutList(stockInOrderDO); } diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/reserveStockInOrder/service/ReserveStockInOrderDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/reserveStockInOrder/service/ReserveStockInOrderDomainService.java index 09f51e85f..8cbd6cb8e 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/reserveStockInOrder/service/ReserveStockInOrderDomainService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/reserveStockInOrder/service/ReserveStockInOrderDomainService.java @@ -142,6 +142,9 @@ public class ReserveStockInOrderDomainService { // //设置物料信息 // setMaterialDetailInfo(stockInOrderDO); // //统计总物料种数 + if (CollectionUtils.isEmpty(stockInOrderDO.getMaterialDetailList())) { + throw new ServiceException("请添加货物明细"); + } stockInOrderDO.setMaterialQuantity(stockInOrderDO.getMaterialDetailList().size()); // //统计总计划数 BigDecimal quantity = stockInOrderDO.getMaterialDetailList().stream().map(ReserveInMaterialDetailDO::getQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); @@ -155,9 +158,46 @@ public class ReserveStockInOrderDomainService { BigDecimal volumeLimit = stockInOrderDO.getMaterialDetailList().stream().map(ReserveInMaterialDetailDO::getVolumeLimit).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); stockInOrderDO.setVolumeLimit(volumeLimit); LoginUser loginUser = SecurityUtils.getLoginUser(); - stockInOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); -// stockInOrderDO.setOrganizationId(loginUser.getUserPo().getOrganizationId()); -// stockInOrderDO.setOrganizationName(loginUser.getUserPo().getOrganizationName()); + // 仓库档案回填:组织(仓码2841/谷丰2842按仓库归属)/一级组织(2827)/仓库编码名称 + if (stockInOrderDO.getWarehouseId() != null) { + AjaxResult wr = systemServiceFeign.getWarehouseInfoByWarehouseId(stockInOrderDO.getWarehouseId()); + if ("200".equals(String.valueOf(wr.get("code")))) { + WarehouseFeignPO wh = JSON.parseObject(JSONObject.toJSONString(wr.get("data")), WarehouseFeignPO.class); + if (stockInOrderDO.getOrganizationId() == null && wh.getOrganizationId() != null) { + stockInOrderDO.setOrganizationId(wh.getOrganizationId()); + stockInOrderDO.setOrganizationName(wh.getOrganizationName()); + } + if (wh.getTopOrganizationId() != null) { + stockInOrderDO.setTopOrganizationId(wh.getTopOrganizationId()); + } + if (StringUtils.isBlank(stockInOrderDO.getWarehouseCode())) { + stockInOrderDO.setWarehouseCode(wh.getWarehouseCode()); + stockInOrderDO.setWarehouseName(wh.getWarehouseName()); + } + } + } + // 兜底:仓库没带组织时用登录人一级组织 + 2841(与存量导入 :2226-2228 口径一致) + if (stockInOrderDO.getTopOrganizationId() == null) { + stockInOrderDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId()); + } + if (stockInOrderDO.getOrganizationId() == null) { + stockInOrderDO.setOrganizationId(2841L); + stockInOrderDO.setOrganizationName("仓码"); + } + // 委托方(货主)身份回填:App未传且登录人有货主档案时=登录人(模式同 importInData :1992-1997) + if (stockInOrderDO.getShipperId() == null && loginUser.getUserShipperPo() != null) { + stockInOrderDO.setShipperId(loginUser.getUserPo().getUserId()); + stockInOrderDO.setShipperName(loginUser.getUserPo().getUserName()); + stockInOrderDO.setCustomerId(loginUser.getUserPo().getUserId()); + stockInOrderDO.setCustomerName(loginUser.getUserPo().getUserName()); + } + // 状态默认值(App端订单状态不可编辑) + if (StringUtils.isBlank(stockInOrderDO.getOrderStatus())) { + stockInOrderDO.setOrderStatus("新增"); + } + if (stockInOrderDO.getStatus() == null) { + stockInOrderDO.setStatus(1); + } stockInOrderService.insert(stockInOrderDO); return materialDetailService.batchInsert(stockInOrderDO.getInOrderNumber(), stockInOrderDO.getMaterialDetailList()); }