From 4e5b6ce8f38ca891b924cd96992bff77ef3d584b Mon Sep 17 00:00:00 2001 From: "weicw1996@qq.com" Date: Tue, 6 Oct 2026 12:36:07 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20=E5=85=A8=E5=B1=80=E5=85=A5?= =?UTF-8?q?=E5=8F=A3=E4=B8=8A=E6=8A=A5=E5=BC=82=E5=B8=B8=E4=B8=8D=E5=86=8D?= =?UTF-8?q?=E8=A6=81=E6=B1=82=E6=8C=87=E5=AE=9A=E8=8A=82=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 从小程序首页快捷格、打卡页底部按钮进入上报时不再要求选择节点,node_code / node_name 落空; 要指定环节只能从节点卡片进入(入口即已确定环节,节点名仍从过程配置回填、不信任请求体)。 未指明节点的异常无从定位阻断区间,按「阻断该运单全部未打卡节点」处理,含在途。 此前「异常必须归属节点」的校验与相应术语表述一并作废。 --- .../impl/ExceptionDisposalServiceImpl.java | 20 +++++++++---------- .../support/WaybillProcessSupport.java | 5 ++--- .../support/WaybillProcessSupportTest.java | 2 +- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/ExceptionDisposalServiceImpl.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/ExceptionDisposalServiceImpl.java index 57c96783..65249bc3 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/ExceptionDisposalServiceImpl.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/ExceptionDisposalServiceImpl.java @@ -138,18 +138,18 @@ public class ExceptionDisposalServiceImpl throw new ServiceException("请关联运单后再上报"); } - // 异常必须归属到某个过程节点:没有节点的异常无从定位阻断区间,只能整单停摆。 - // 节点名取自过程配置而非请求体:上报页传什么不影响入库,避免落进一个该节点并不叫的名字。 + // 节点可以为空:全局入口(首页快捷格、打卡页底部按钮)上报的异常不指定环节, + // 它无从定位阻断区间,由门禁按「阻断该运单全部未打卡节点」处理。 + // 节点非空时才要求它确属该运单;节点名取自过程配置而非请求体,避免落进一个该节点并不叫的名字。 String nodeCode = Func.toStr(request.getNodeCode(), "").trim(); - if (Func.isBlank(nodeCode)) { - throw new ServiceException("请选择异常节点"); + if (Func.isNotEmpty(nodeCode)) { + Map nodeCfg = driverWaybillService.findPunchNode(disposal.getWaybillId(), nodeCode); + if (nodeCfg == null) { + throw new ServiceException("异常节点不存在"); + } + disposal.setNodeCode(WaybillProcessSupport.nodeKey(nodeCfg)); + disposal.setNodeName(WaybillProcessSupport.nodeName(nodeCfg)); } - Map nodeCfg = driverWaybillService.findPunchNode(disposal.getWaybillId(), nodeCode); - if (nodeCfg == null) { - throw new ServiceException("异常节点不存在"); - } - disposal.setNodeCode(WaybillProcessSupport.nodeKey(nodeCfg)); - disposal.setNodeName(WaybillProcessSupport.nodeName(nodeCfg)); if (!save(disposal)) { throw new ServiceException("异常上报失败"); diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/support/WaybillProcessSupport.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/support/WaybillProcessSupport.java index 8e0291e8..2d685d0c 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/support/WaybillProcessSupport.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/support/WaybillProcessSupport.java @@ -469,9 +469,8 @@ public final class WaybillProcessSupport { if (punchNodes.isEmpty() || fromNodeCode == null) { return blocked; } - // 空串代表「未指明节点」,阻断全部可打卡节点。 - // 新上报已强制要求节点,此分支只为**存量数据**保留——去掉它,那些没有节点的 - // 未了结异常会突然不再阻断任何节点,等于悄悄放开了打卡。 + // 空串代表「未指明节点」——全局入口(首页快捷格、打卡页底部按钮)不指定环节, + // 这类异常无从定位区间,只能阻断全部可打卡节点。 if (Func.isEmpty(fromNodeCode)) { for (Map node : punchNodes) { blocked.add(nodeKey(node)); diff --git a/blade-service/blade-transport/src/test/java/org/springblade/transport/support/WaybillProcessSupportTest.java b/blade-service/blade-transport/src/test/java/org/springblade/transport/support/WaybillProcessSupportTest.java index 2aa846c2..223a17ec 100644 --- a/blade-service/blade-transport/src/test/java/org/springblade/transport/support/WaybillProcessSupportTest.java +++ b/blade-service/blade-transport/src/test/java/org/springblade/transport/support/WaybillProcessSupportTest.java @@ -82,7 +82,7 @@ class WaybillProcessSupportTest { } @Test - @DisplayName("未指明节点的异常(存量数据)阻断全部打卡节点,含在途") + @DisplayName("未指明节点的异常(全局入口上报)阻断全部打卡节点,含在途") void exceptionWithoutNodeBlocksEverything() { Set blocked = WaybillProcessSupport.blockedNodeKeys(TRANSPORT_JSON, Arrays.asList(""));