✅ 子运单状态写用例补齐写侧准入前提
逐张准入已要求公路 + 待执行 + 未配载 + 未拒单,夹具运单补运输方式; 同一配载单的子单必须同项目,跨项目推导改为直接测推导函数。
This commit is contained in:
+21
-9
@@ -24,6 +24,7 @@ import org.springblade.transport.service.IProcessConfigService;
|
|||||||
import org.springblade.transport.service.IReceivablePayableDetailService;
|
import org.springblade.transport.service.IReceivablePayableDetailService;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
|
import java.lang.reflect.Method;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -163,8 +164,8 @@ class LoadingManageChildStatusWriteTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@DisplayName("跨项目运次:两张子单各自按自己项目推导,互不牵连,配置只查一次")
|
@DisplayName("跨项目的子单逐张按各自项目推导,互不牵连,配置只查一次")
|
||||||
void submitDerivesEachWaybillFromItsOwnProject() {
|
void deriveEachWaybillStatusFromItsOwnProject() throws Exception {
|
||||||
stubWaybills(
|
stubWaybills(
|
||||||
waybill(NEED_ACCEPT_WAYBILL_ID, NEED_ACCEPT_PROJECT_ID),
|
waybill(NEED_ACCEPT_WAYBILL_ID, NEED_ACCEPT_PROJECT_ID),
|
||||||
waybill(NO_ACCEPT_WAYBILL_ID, NO_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(NEED_ACCEPT_PROJECT_ID, NEED_ACCEPT_JSON),
|
||||||
config(NO_ACCEPT_PROJECT_ID, NO_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(
|
assertEquals(Map.of(
|
||||||
NEED_ACCEPT_WAYBILL_ID, "pending",
|
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.<Wrapper<ProcessConfig>>any());
|
verify(processConfigService, times(1)).list(ArgumentMatchers.<Wrapper<ProcessConfig>>any());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -216,12 +217,11 @@ class LoadingManageChildStatusWriteTest {
|
|||||||
@Test
|
@Test
|
||||||
@DisplayName("提交清除本次合进来子单的接单事实:置为待接单,接单/拒单痕迹一并清空")
|
@DisplayName("提交清除本次合进来子单的接单事实:置为待接单,接单/拒单痕迹一并清空")
|
||||||
void submitClearsAcceptRecordOfWaybillsTakenIn() {
|
void submitClearsAcceptRecordOfWaybillsTakenIn() {
|
||||||
|
// 同一配载单的子单必须同项目,故两张票同项目,接单事实按整批清
|
||||||
stubWaybills(
|
stubWaybills(
|
||||||
waybill(NEED_ACCEPT_WAYBILL_ID, NEED_ACCEPT_PROJECT_ID),
|
waybill(NEED_ACCEPT_WAYBILL_ID, NEED_ACCEPT_PROJECT_ID),
|
||||||
waybill(NO_ACCEPT_WAYBILL_ID, NO_ACCEPT_PROJECT_ID));
|
waybill(NO_ACCEPT_WAYBILL_ID, NEED_ACCEPT_PROJECT_ID));
|
||||||
stubConfigs(
|
stubConfigs(config(NEED_ACCEPT_PROJECT_ID, NEED_ACCEPT_JSON));
|
||||||
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)));
|
assertTrue(service.submit(loadingForm(NEED_ACCEPT_WAYBILL_ID, NO_ACCEPT_WAYBILL_ID)));
|
||||||
|
|
||||||
@@ -368,6 +368,8 @@ class LoadingManageChildStatusWriteTest {
|
|||||||
waybill.setProjectId(projectId);
|
waybill.setProjectId(projectId);
|
||||||
waybill.setProcessJson(processJson);
|
waybill.setProcessJson(processJson);
|
||||||
waybill.setDeptId(DEPT_ID_LONG);
|
waybill.setDeptId(DEPT_ID_LONG);
|
||||||
|
// 可配载只放行公路 + 待执行 + 未配载 + 未拒单,夹具的票都是这种票
|
||||||
|
waybill.setTransportType("公路运输");
|
||||||
waybill.setBusinessStatus("pending");
|
waybill.setBusinessStatus("pending");
|
||||||
return waybill;
|
return waybill;
|
||||||
}
|
}
|
||||||
@@ -406,6 +408,16 @@ class LoadingManageChildStatusWriteTest {
|
|||||||
return statusByWaybillId;
|
return statusByWaybillId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 逐张推导的结果:提交/重新派单在准入阶段就拦下跨项目子单,跨项目推导只能直接测这个函数 */
|
||||||
|
private Map<Long, String> deriveBusinessStatuses(Long... waybillIds) throws Exception {
|
||||||
|
Method method = LoadingManageServiceImpl.class
|
||||||
|
.getDeclaredMethod("deriveWaybillBusinessStatuses", List.class);
|
||||||
|
method.setAccessible(true);
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
Map<Long, String> statusByWaybillId = (Map<Long, String>) method.invoke(service, List.of(waybillIds));
|
||||||
|
return statusByWaybillId;
|
||||||
|
}
|
||||||
|
|
||||||
private List<CapturedUpdate> acceptClearUpdates() {
|
private List<CapturedUpdate> acceptClearUpdates() {
|
||||||
return waybillUpdates().stream()
|
return waybillUpdates().stream()
|
||||||
.filter(update -> update.columns().contains("driver_accept_status"))
|
.filter(update -> update.columns().contains("driver_accept_status"))
|
||||||
|
|||||||
Reference in New Issue
Block a user