diff --git a/firstleg/src/main/java/com/baiyue/firstleg/service/LoadingListService.java b/firstleg/src/main/java/com/baiyue/firstleg/service/LoadingListService.java index 769a69693..d1f32c420 100644 --- a/firstleg/src/main/java/com/baiyue/firstleg/service/LoadingListService.java +++ b/firstleg/src/main/java/com/baiyue/firstleg/service/LoadingListService.java @@ -577,7 +577,7 @@ public class LoadingListService { } /** 完成 worker 在远程结算前验证最终跨区快照能够完整生成。 */ - @Transactional(readOnly = true) + @Transactional public void requireCompletedEventReady(long planId) { loadingCompletedOutboxService.requirePublishable(planId); } diff --git a/firstleg/src/test/java/com/baiyue/firstleg/service/LoadingListServiceTest.java b/firstleg/src/test/java/com/baiyue/firstleg/service/LoadingListServiceTest.java index 748dd8fc8..fe004951c 100644 --- a/firstleg/src/test/java/com/baiyue/firstleg/service/LoadingListServiceTest.java +++ b/firstleg/src/test/java/com/baiyue/firstleg/service/LoadingListServiceTest.java @@ -30,6 +30,7 @@ import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.context.annotation.Bean; import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; import org.springframework.mock.web.MockMultipartFile; +import org.springframework.transaction.annotation.Transactional; import java.util.List; @@ -315,6 +316,16 @@ class LoadingListServiceTest { verify(loadingCompletedOutboxService).publish(10L); } + @Test + void completedEventReadinessMustAllowPalletLabelFreeze() throws Exception { + Transactional transaction = LoadingListService.class + .getDeclaredMethod("requireCompletedEventReady", long.class) + .getAnnotation(Transactional.class); + + assertThat(transaction).isNotNull(); + assertThat(transaction.readOnly()).isFalse(); + } + @Test void shouldRejectAutomaticCompletionWhenPdaItemsRemain() { when(pickRepository.allPlanItemsPicked(10L)).thenReturn(false);