From a1a741481cb76f380f16b598a0bb31c52a821b8b Mon Sep 17 00:00:00 2001 From: weicw1996 Date: Tue, 20 Oct 2026 16:26:10 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=20=E5=B7=B2=E7=BB=93=E6=9D=9F=E8=BF=90?= =?UTF-8?q?=E5=8D=95=E7=9A=84=E5=9C=A8=E9=80=94=E6=89=93=E5=8D=A1=E5=8D=A1?= =?UTF-8?q?=E4=B8=8D=E5=8F=AF=E5=B1=95=E5=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/DriverWaybillServiceImpl.java | 7 ++++++- .../service/impl/DriverPunchNodeCardTest.java | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/DriverWaybillServiceImpl.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/DriverWaybillServiceImpl.java index d92c3277..f064807e 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/DriverWaybillServiceImpl.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/DriverWaybillServiceImpl.java @@ -1658,9 +1658,14 @@ public class DriverWaybillServiceImpl implements IDriverWaybillService { // 是否允许展开:顺序门禁不允许展开(还没轮到,展开也没用); // 异常门禁允许展开——那里出过事,司机需要看到回填内容与「异常详情」。 + // 已结束的运单:在途卡一律不可展开(结束之后没有在途打卡可做,展开也无内容); + // 未打卡的节点展开同样一无所有;已打卡的普通节点保留展开,供司机回看时间与照片。 for (DriverPunchNodeVO vo : nodes) { boolean blockedByOrder = Boolean.TRUE.equals(vo.getBlockedByOrder()); - vo.setExpandable(!blockedByOrder); + boolean ended = Boolean.TRUE.equals(vo.getEnded()); + boolean done = Boolean.TRUE.equals(vo.getDone()); + boolean transitCard = Boolean.TRUE.equals(vo.getTransit()); + vo.setExpandable(!blockedByOrder && (!ended || (done && !transitCard))); } // 「异常」标签:只挂**存在未处理完成异常**的节点(与异常门禁同一口径,结案即消失)。 diff --git a/blade-service/blade-transport/src/test/java/org/springblade/transport/service/impl/DriverPunchNodeCardTest.java b/blade-service/blade-transport/src/test/java/org/springblade/transport/service/impl/DriverPunchNodeCardTest.java index 67c127fb..9cf28c0a 100644 --- a/blade-service/blade-transport/src/test/java/org/springblade/transport/service/impl/DriverPunchNodeCardTest.java +++ b/blade-service/blade-transport/src/test/java/org/springblade/transport/service/impl/DriverPunchNodeCardTest.java @@ -184,6 +184,25 @@ class DriverPunchNodeCardTest { assertTrue(json.contains("\"9007199254740993\""), json); } + @Test + @DisplayName("运单已完成:在途卡不可展开,已打卡的普通节点仍可展开回看") + void completedWaybillTransitNodeIsNotExpandable() { + Waybill completed = waybill(); + completed.setBusinessStatus("completed"); + when(waybillService.getById(WAYBILL_ID)).thenReturn(completed); + + Map nodes = punchNodes(); + + DriverPunchNodeVO transit = nodes.get("transit"); + assertTrue(Boolean.TRUE.equals(transit.getEnded()), "已完成运单的在途卡要进结束态"); + assertFalse(Boolean.TRUE.equals(transit.getExpandable()), "已完成运单的在途卡不允许展开"); + assertFalse(Boolean.TRUE.equals(transit.getActionable())); + assertTrue(Boolean.TRUE.equals(nodes.get("load").getExpandable()), + "已打卡的普通节点仍可展开回看时间与照片"); + assertFalse(Boolean.TRUE.equals(nodes.get("sign").getExpandable()), + "未打卡节点展开没有内容,也不可展开"); + } + // ------------------------------------------------------------ 夹具 private void stubUnresolved(ExceptionDisposal... disposals) {