From ca92288cf4d80c4ef6b10ab3b1afe945030a704b Mon Sep 17 00:00:00 2001 From: weicw1996 Date: Sun, 18 Oct 2026 14:40:16 +0800 Subject: [PATCH] =?UTF-8?q?:white=5Fcheck=5Fmark:=20=E5=AD=90=E8=BF=90?= =?UTF-8?q?=E5=8D=95=E7=8A=B6=E6=80=81=E5=86=99=E7=94=A8=E4=BE=8B=E8=A1=A5?= =?UTF-8?q?=E9=BD=90=E5=86=99=E4=BE=A7=E5=87=86=E5=85=A5=E5=89=8D=E6=8F=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 逐张准入已要求公路 + 待执行 + 未配载 + 未拒单,夹具运单补运输方式; 同一配载单的子单必须同项目,跨项目推导改为直接测推导函数。 --- .../LoadingManageChildStatusWriteTest.java | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/blade-service/blade-transport/src/test/java/org/springblade/transport/service/impl/LoadingManageChildStatusWriteTest.java b/blade-service/blade-transport/src/test/java/org/springblade/transport/service/impl/LoadingManageChildStatusWriteTest.java index 5b90e689..d1c6ee4e 100644 --- a/blade-service/blade-transport/src/test/java/org/springblade/transport/service/impl/LoadingManageChildStatusWriteTest.java +++ b/blade-service/blade-transport/src/test/java/org/springblade/transport/service/impl/LoadingManageChildStatusWriteTest.java @@ -24,6 +24,7 @@ import org.springblade.transport.service.IProcessConfigService; import org.springblade.transport.service.IReceivablePayableDetailService; import java.lang.reflect.Field; +import java.lang.reflect.Method; import java.util.Arrays; import java.util.LinkedHashMap; import java.util.List; @@ -163,8 +164,8 @@ class LoadingManageChildStatusWriteTest { } @Test - @DisplayName("跨项目运次:两张子单各自按自己项目推导,互不牵连,配置只查一次") - void submitDerivesEachWaybillFromItsOwnProject() { + @DisplayName("跨项目的子单逐张按各自项目推导,互不牵连,配置只查一次") + void deriveEachWaybillStatusFromItsOwnProject() throws Exception { stubWaybills( waybill(NEED_ACCEPT_WAYBILL_ID, NEED_ACCEPT_PROJECT_ID), waybill(NO_ACCEPT_WAYBILL_ID, NO_ACCEPT_PROJECT_ID)); @@ -172,11 +173,11 @@ class LoadingManageChildStatusWriteTest { config(NEED_ACCEPT_PROJECT_ID, NEED_ACCEPT_JSON), config(NO_ACCEPT_PROJECT_ID, NO_ACCEPT_JSON)); - assertTrue(service.submit(loadingForm(NEED_ACCEPT_WAYBILL_ID, NO_ACCEPT_WAYBILL_ID))); - + // 提交与重新派单在准入阶段就拦下跨项目的子单,故直接测逐张推导本身 assertEquals(Map.of( NEED_ACCEPT_WAYBILL_ID, "pending", - NO_ACCEPT_WAYBILL_ID, "running"), statusByWaybillId()); + NO_ACCEPT_WAYBILL_ID, "running"), + deriveBusinessStatuses(NEED_ACCEPT_WAYBILL_ID, NO_ACCEPT_WAYBILL_ID)); verify(processConfigService, times(1)).list(ArgumentMatchers.>any()); } @@ -216,12 +217,11 @@ class LoadingManageChildStatusWriteTest { @Test @DisplayName("提交清除本次合进来子单的接单事实:置为待接单,接单/拒单痕迹一并清空") void submitClearsAcceptRecordOfWaybillsTakenIn() { + // 同一配载单的子单必须同项目,故两张票同项目,接单事实按整批清 stubWaybills( waybill(NEED_ACCEPT_WAYBILL_ID, NEED_ACCEPT_PROJECT_ID), - waybill(NO_ACCEPT_WAYBILL_ID, NO_ACCEPT_PROJECT_ID)); - stubConfigs( - config(NEED_ACCEPT_PROJECT_ID, NEED_ACCEPT_JSON), - config(NO_ACCEPT_PROJECT_ID, NO_ACCEPT_JSON)); + waybill(NO_ACCEPT_WAYBILL_ID, NEED_ACCEPT_PROJECT_ID)); + stubConfigs(config(NEED_ACCEPT_PROJECT_ID, NEED_ACCEPT_JSON)); assertTrue(service.submit(loadingForm(NEED_ACCEPT_WAYBILL_ID, NO_ACCEPT_WAYBILL_ID))); @@ -368,6 +368,8 @@ class LoadingManageChildStatusWriteTest { waybill.setProjectId(projectId); waybill.setProcessJson(processJson); waybill.setDeptId(DEPT_ID_LONG); + // 可配载只放行公路 + 待执行 + 未配载 + 未拒单,夹具的票都是这种票 + waybill.setTransportType("公路运输"); waybill.setBusinessStatus("pending"); return waybill; } @@ -406,6 +408,16 @@ class LoadingManageChildStatusWriteTest { return statusByWaybillId; } + /** 逐张推导的结果:提交/重新派单在准入阶段就拦下跨项目子单,跨项目推导只能直接测这个函数 */ + private Map deriveBusinessStatuses(Long... waybillIds) throws Exception { + Method method = LoadingManageServiceImpl.class + .getDeclaredMethod("deriveWaybillBusinessStatuses", List.class); + method.setAccessible(true); + @SuppressWarnings("unchecked") + Map statusByWaybillId = (Map) method.invoke(service, List.of(waybillIds)); + return statusByWaybillId; + } + private List acceptClearUpdates() { return waybillUpdates().stream() .filter(update -> update.columns().contains("driver_accept_status"))