diff --git a/firstleg/src/main/java/com/baiyue/firstleg/repository/FbaPricingRepository.java b/firstleg/src/main/java/com/baiyue/firstleg/repository/FbaPricingRepository.java index 64afbbf5c..60356812d 100644 --- a/firstleg/src/main/java/com/baiyue/firstleg/repository/FbaPricingRepository.java +++ b/firstleg/src/main/java/com/baiyue/firstleg/repository/FbaPricingRepository.java @@ -308,7 +308,7 @@ public class FbaPricingRepository { .eq(InboundPricingEntity::getProcessStatus, processStatus) .in(InboundPricingEntity::getFeeStatus, List.of("UNPRICED", "CALCULATED", "SENT")) .set(InboundPricingEntity::getFeeStatus, "CALCULATED"); - if (!List.of("WAIT_PALLET", "WAIT_SPLIT", "LOADING").contains(processStatus)) { + if (!List.of("WAIT_PALLET", "WAIT_PALLETIZE", "WAIT_SPLIT", "LOADING").contains(processStatus)) { update.set(InboundPricingEntity::getProcessStatus, "FEE_CONFIRMING"); } if ("KG".equals(chargeMode)) update.set(InboundPricingEntity::getChargeableWeightKg, chargeable); diff --git a/firstleg/src/test/java/com/baiyue/firstleg/repository/FbaPricingRepositoryRuleListTest.java b/firstleg/src/test/java/com/baiyue/firstleg/repository/FbaPricingRepositoryRuleListTest.java index b90f80014..2d64c5bd1 100644 --- a/firstleg/src/test/java/com/baiyue/firstleg/repository/FbaPricingRepositoryRuleListTest.java +++ b/firstleg/src/test/java/com/baiyue/firstleg/repository/FbaPricingRepositoryRuleListTest.java @@ -203,6 +203,26 @@ class FbaPricingRepositoryRuleListTest { .contains("List.of(\"FEE_CONFIRMING\", \"WAIT_PALLET\", \"WAIT_SPLIT\", \"LOADING\", \"LOADED\", \"DELIVERED\")"); } + @Test + void dropshipInitialPricingPreservesWaitingForPalletization() { + when(pricing.update(org.mockito.ArgumentMatchers.isNull(), org.mockito.ArgumentMatchers.any())) + .thenReturn(1); + + assertThat(repository.markInboundCalculated( + 10001L, 88L, "WAIT_PALLETIZE", "CBM", new java.math.BigDecimal("1.0000"))) + .isEqualTo(1); + + @SuppressWarnings("unchecked") + ArgumentCaptor> wrapper = + ArgumentCaptor.forClass(LambdaUpdateWrapper.class); + verify(pricing).update(org.mockito.ArgumentMatchers.isNull(), wrapper.capture()); + assertThat(wrapper.getValue().getSqlSet()).contains("feeStatus", "chargeableVolumeCbm") + .doesNotContain("processStatus"); + assertThat(wrapper.getValue().getCustomSqlSegment()) + .contains("tenantId", "id", "processStatus", "feeStatus"); + assertThat(params(wrapper.getValue()).values()).contains(10001L, 88L, "WAIT_PALLETIZE"); + } + private Collection queryValues(Long tenantId, String ruleCode) { when(rules.selectList(org.mockito.ArgumentMatchers.any())).thenReturn(List.of());