Merge remote-tracking branch 'origin/test' into dev
This commit is contained in:
-1
@@ -38,7 +38,6 @@ public class ContainerWorkbenchService {
|
||||
|
||||
public WorkbenchItem domesticDetail(long id, Set<String> permissions) {
|
||||
ContainerBookingEntity value = required(id);
|
||||
if (repository.departed(id)) throw new BizException(ResultCode.NOT_FOUND, "国内工作台货柜不存在");
|
||||
ContainerActualFacts facts = actualFacts(List.of(id)).get(id);
|
||||
return item("DOMESTIC", value, facts, null, permissions);
|
||||
}
|
||||
|
||||
@@ -445,7 +445,7 @@ paths:
|
||||
/api/platform/v1/containers/domestic/{id}:
|
||||
get:
|
||||
summary: 查询国内货柜工作台详情
|
||||
description: 需要 platform:firstleg:container:list;装柜清单只返回唯一loadingPlanId/planNo/planStatus关联
|
||||
description: 需要 platform:firstleg:container:list;国内ACTIVE与HISTORY共用该只读详情,已真实离仓柜仍可打开;装柜清单只返回唯一loadingPlanId/planNo/planStatus关联
|
||||
parameters: [{$ref: '#/components/parameters/ContainerBookingId'}]
|
||||
responses: {'200': {description: 成功, content: {application/json: {schema: {$ref: '#/components/schemas/ContainerWorkbenchEnvelope'}}}}}
|
||||
/api/platform/v1/containers/overseas/{id}:
|
||||
|
||||
+1
@@ -66,6 +66,7 @@ class ContainerControllerContractTest {
|
||||
.contains("/api/platform/v1/containers/{id}/ocean-booking-link:")
|
||||
.contains("/api/platform/v1/containers/domestic:")
|
||||
.contains("/api/platform/v1/containers/overseas:")
|
||||
.contains("国内ACTIVE与HISTORY共用该只读详情,已真实离仓柜仍可打开")
|
||||
.contains("scope, in: query, required: true")
|
||||
.contains("首次关联允许 WAIT_LOADING 或已有预排货的 EDITING 模拟柜")
|
||||
.contains("RELEASED oceanBookingId")
|
||||
|
||||
+30
@@ -19,6 +19,7 @@ import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
@@ -83,6 +84,35 @@ class ContainerWorkbenchServiceTest {
|
||||
verifyNoInteractions(carrierSchedules);
|
||||
}
|
||||
|
||||
@Test
|
||||
void domesticHistoryDetailKeepsTheDepartedContainerAndItsUniqueLoadingPlan() {
|
||||
ContainerBookingEntity container = container();
|
||||
container.setOutboundConfirmedAt(LocalDateTime.of(2026, 9, 8, 10, 0));
|
||||
when(repository.find(11L)).thenReturn(container);
|
||||
when(repository.departed(11L)).thenReturn(true);
|
||||
when(carrierSchedules.containerActualFacts(List.of(11L))).thenReturn(List.of(facts("DEPARTED_WAREHOUSE")));
|
||||
|
||||
var result = service.domesticDetail(11L, Set.of("platform:firstleg:container:list"));
|
||||
|
||||
assertThat(result.workbenchStage()).isEqualTo("DEPARTED_WAREHOUSE");
|
||||
assertThat(result.container().getPlanId()).isEqualTo(31L);
|
||||
assertThat(result.container().getPlanNo()).isEqualTo("LP-260908-0001");
|
||||
assertThat(result.allowedActions()).isEmpty();
|
||||
verify(repository, never()).departed(11L);
|
||||
verifyNoInteractions(terminalDrayages);
|
||||
}
|
||||
|
||||
@Test
|
||||
void domesticDetailStillRejectsContainersOutsideTheActiveMasterSet() {
|
||||
when(repository.find(404L)).thenReturn(null);
|
||||
|
||||
assertThatThrownBy(() -> service.domesticDetail(404L, Set.of("platform:firstleg:container:list")))
|
||||
.isInstanceOf(com.baiyue.common.core.exception.BizException.class)
|
||||
.hasMessage("货柜不存在");
|
||||
|
||||
verifyNoInteractions(carrierSchedules, terminalDrayages);
|
||||
}
|
||||
|
||||
private static Query query(WorkbenchScope scope) {
|
||||
return new Query(null, null, null, null, null, null, null, null, null, null, null,
|
||||
null, null, null, scope, 1, 20);
|
||||
|
||||
Reference in New Issue
Block a user