From 8d8fc30616cfa99b905db58fd5ede74fa08e07b6 Mon Sep 17 00:00:00 2001 From: weicw1996 Date: Fri, 23 Oct 2026 14:01:15 +0800 Subject: [PATCH] =?UTF-8?q?:speech=5Fballoon:=20=E5=90=8C=E6=84=8F?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E8=B7=AF=E7=BA=BF=E7=9A=84=E8=B7=9F=E8=BF=9B?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E6=94=B9=E5=86=99=E6=88=90=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=90=8E=E7=9A=84=E6=95=B4=E6=9D=A1=E8=B7=AF=E7=BA=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 原来只写变化差分(「到货地 旧 → 新」「途经站由 X 个改为 Y 个」), 中间站变化时会出现「途经站由 2 个改为 2 个」这种没有信息量的句子。 改成按站序把调整后的地址用「 → 」连起来;一个地址都没改时仍写 「同意调整路线,未修改路线」。 --- .../impl/ExceptionDisposalServiceImpl.java | 37 +++++-------------- .../ExceptionDisposalRouteAdjustTest.java | 19 ++++++---- 2 files changed, 21 insertions(+), 35 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 bf0d38b7..c5806856 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 @@ -107,6 +107,9 @@ public class ExceptionDisposalServiceImpl private static final String ROUTE_CHANGE_UNCHANGED = "同意调整路线,未修改路线"; private static final String ROUTE_CHANGE_PREFIX = "同意调整路线:"; + /** 结论里站点之间的连接符,如「A → B → C」 */ + private static final String ROUTE_STATION_SEPARATOR = " → "; + /** task_info_json 里存路线变更记录数组的键,与 PC 同一份结构 */ private static final String TASK_INFO_ROUTE_CHANGE_RECORDS = "routeChangeRecords"; @@ -719,40 +722,18 @@ public class ExceptionDisposalServiceImpl /** * 同一份结论既进跟进记录,也进 task_info_json 的变更记录: - * 首末站地址变了逐条写「出发地 / 到货地 旧 → 新」,否则说明途经站变化,完全没变给固定的一句。 + * 写调整后的站点顺序(地址 → 地址 → …),不写「哪一站从什么改成什么」; + * 一个地址都没改时给固定的一句。 */ private String routeChangeContent(List sourceAddresses, List targetAddresses) { if (sourceAddresses.equals(targetAddresses)) { return ROUTE_CHANGE_UNCHANGED; } - List parts = new ArrayList<>(2); - String sourceStart = firstOf(sourceAddresses); - String targetStart = firstOf(targetAddresses); - if (!Objects.equals(sourceStart, targetStart)) { - parts.add("出发地 " + displayAddress(sourceStart) + " → " + displayAddress(targetStart)); + List parts = new ArrayList<>(targetAddresses.size()); + for (String address : targetAddresses) { + parts.add(displayAddress(address)); } - String sourceEnd = lastOf(sourceAddresses); - String targetEnd = lastOf(targetAddresses); - if (!Objects.equals(sourceEnd, targetEnd)) { - parts.add("到货地 " + displayAddress(sourceEnd) + " → " + displayAddress(targetEnd)); - } - if (parts.isEmpty()) { - // 首末站未变时按途经站数量说明变化 - parts.add("途经站由 " + transitCount(sourceAddresses) + " 个改为 " + transitCount(targetAddresses) + " 个"); - } - return ROUTE_CHANGE_PREFIX + String.join(";", parts); - } - - private String firstOf(List addresses) { - return addresses.isEmpty() ? "" : addresses.get(0); - } - - private String lastOf(List addresses) { - return addresses.isEmpty() ? "" : addresses.get(addresses.size() - 1); - } - - private int transitCount(List addresses) { - return Math.max(addresses.size() - 2, 0); + return ROUTE_CHANGE_PREFIX + String.join(ROUTE_STATION_SEPARATOR, parts); } private String displayAddress(String address) { diff --git a/blade-service/blade-transport/src/test/java/org/springblade/transport/service/impl/ExceptionDisposalRouteAdjustTest.java b/blade-service/blade-transport/src/test/java/org/springblade/transport/service/impl/ExceptionDisposalRouteAdjustTest.java index 8118b928..04b66e6d 100644 --- a/blade-service/blade-transport/src/test/java/org/springblade/transport/service/impl/ExceptionDisposalRouteAdjustTest.java +++ b/blade-service/blade-transport/src/test/java/org/springblade/transport/service/impl/ExceptionDisposalRouteAdjustTest.java @@ -140,11 +140,11 @@ class ExceptionDisposalRouteAdjustTest { assertEquals("", latest.get("remark")); String changeTime = String.valueOf(latest.get("changeTime")); assertTrue(changeTime.matches("\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}"), changeTime); - assertEquals("同意调整路线:途经站由 1 个改为 2 个", latest.get("content")); + assertEquals(routeContent(START, TRANSIT_SECOND, TRANSIT, END), latest.get("content")); assertEquals("旧记录", ((Map) records.get(1)).get("content"), "已有记录排在新的后面"); ExceptionDisposalFollowRecord record = insertedRecord(); - assertEquals("同意调整路线:途经站由 1 个改为 2 个", record.getFollowContent()); + assertEquals(routeContent(START, TRANSIT_SECOND, TRANSIT, END), record.getFollowContent()); assertEquals(USER_ID, record.getFollowUser()); assertEquals("韦调度", record.getFollowUserName()); assertNotNull(record.getFollowTime()); @@ -314,7 +314,7 @@ class ExceptionDisposalRouteAdjustTest { assertEquals(NEW_END, updated.getArrivalAddress()); Map taskInfo = JsonUtil.toMap(updated.getTaskInfoJson()); Map latest = (Map) ((List) taskInfo.get("routeChangeRecords")).get(0); - assertEquals("同意调整路线:到货地 " + END + " → " + NEW_END, latest.get("content")); + assertEquals(routeContent(START, TRANSIT, NEW_END), latest.get("content")); assertEquals("completed", updatedDisposal().getDisposalStatus()); verify(loadingManageMapper, never()).selectOne(any()); } @@ -355,7 +355,7 @@ class ExceptionDisposalRouteAdjustTest { assertEquals(legacyRouteJson, updated.getRouteJson(), "认不出的路线形状不能瞎写"); assertEquals(START, updated.getDepartureAddress()); assertEquals(NEW_END, updated.getArrivalAddress()); - assertEquals("同意调整路线:到货地 " + END + " → " + NEW_END, insertedRecord().getFollowContent()); + assertEquals(routeContent(START, NEW_END), insertedRecord().getFollowContent()); assertEquals("completed", updatedDisposal().getDisposalStatus()); } @@ -400,8 +400,8 @@ class ExceptionDisposalRouteAdjustTest { } @Test - @DisplayName("目的地未变而只见中间站变化时,按途经站数量说明") - void adjustRouteReportsTransitCountChange() { + @DisplayName("目的地未变而只见中间站变化时,结论仍写调整后的整条路线") + void adjustRouteWritesResultingRouteWhenOnlyTransitChanges() { stubPendingDisposal(); stubLoading(loading("in_progress", stationRowsJson(List.of( @@ -416,11 +416,16 @@ class ExceptionDisposalRouteAdjustTest { node("transit", TRANSIT, List.of("装2")), node("end", END, List.of("卸2"))))); - assertEquals("同意调整路线:途经站由 1 个改为 2 个", insertedRecord().getFollowContent()); + assertEquals(routeContent(START, TRANSIT_SECOND, TRANSIT, END), insertedRecord().getFollowContent()); } // ------------------------------------------------------------ 夹具 + /** 结论写调整后的站点顺序,如「同意调整路线:A → B → C」 */ + private static String routeContent(String... addresses) { + return "同意调整路线:" + String.join(" → ", addresses); + } + private void stubPendingDisposal() { ExceptionDisposal disposal = new ExceptionDisposal(); disposal.setId(DISPOSAL_ID);