diff --git a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/DriverWaybillServiceImpl.java b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/DriverWaybillServiceImpl.java index 27226429..428c4398 100644 --- a/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/DriverWaybillServiceImpl.java +++ b/blade-service/blade-transport/src/main/java/org/springblade/transport/service/impl/DriverWaybillServiceImpl.java @@ -1113,6 +1113,13 @@ public class DriverWaybillServiceImpl implements IDriverWaybillService { card.setId(parseId(children.isEmpty() ? trip.getId() : children.get(0).getId())); card.setWaybillNo(children.isEmpty() ? card.getTripNo() : Func.toStr(children.get(0).getWaybillNo(), "")); card.setStatus(trip.getStatus()); + // 原始业务状态只在整趟车子单状态唯一时下发:配载车混状态时一趟车没有唯一原始状态,给 null 由前端按数字态展示 + List childBusinessStatuses = children.stream() + .map(TripVO.TripWaybillVO::getBusinessStatus) + .filter(Func::isNotBlank) + .distinct() + .collect(Collectors.toList()); + card.setBusinessStatus(childBusinessStatuses.size() == 1 ? childBusinessStatuses.get(0) : null); card.setRequireAccept(trip.getRequireAccept()); card.setAcceptStatus(trip.getAcceptStatus()); card.setTransportOrgType(trip.getTransportOrgType()); diff --git a/blade-service/blade-transport/src/test/java/org/springblade/transport/service/impl/DriverTripCardTest.java b/blade-service/blade-transport/src/test/java/org/springblade/transport/service/impl/DriverTripCardTest.java index 7bdcbba1..41189b41 100644 --- a/blade-service/blade-transport/src/test/java/org/springblade/transport/service/impl/DriverTripCardTest.java +++ b/blade-service/blade-transport/src/test/java/org/springblade/transport/service/impl/DriverTripCardTest.java @@ -30,6 +30,7 @@ import org.springblade.transport.service.ITransportVehicleService; import org.springblade.transport.service.ITripQueryService; import org.springblade.transport.service.IWaybillService; import org.springblade.transport.support.CertificationGate; +import org.springblade.transport.support.WaybillProcessSupport; import java.math.BigDecimal; import java.util.Date; @@ -147,6 +148,34 @@ class DriverTripCardTest { assertEquals("桂A32523", card.getVehicleNo()); } + @Test + @DisplayName("运次卡片带唯一原始业务状态:子单都在待回单确认时下发 pending_return_confirm,数字态仍是 1") + void tripCardCarriesUniqueChildBusinessStatus() { + TripVO trip = loadingTrip(); + trip.getWaybills().forEach(child -> child.setBusinessStatus(WaybillProcessSupport.STATUS_PENDING_RETURN_CONFIRM)); + stubTripPage(1, trip); + + IPage page = runAsDriver(() -> service.tripPage(1, 10, null, null)); + + DriverWaybillCardVO card = page.getRecords().get(0); + assertEquals(WaybillProcessSupport.STATUS_PENDING_RETURN_CONFIRM, card.getBusinessStatus()); + assertEquals(trip.getStatus(), card.getStatus(), "运次数字态口径不变,仍取运次状态"); + } + + @Test + @DisplayName("运次卡片原始业务状态:配载车混状态时给 null,由前端回退数字态") + void tripCardWithoutUniqueChildBusinessStatusGivesNull() { + TripVO trip = loadingTrip(); + trip.getWaybills().get(0).setBusinessStatus(WaybillProcessSupport.STATUS_PENDING_RETURN_CONFIRM); + stubTripPage(1, trip); + + IPage page = runAsDriver(() -> service.tripPage(1, 10, null, null)); + + DriverWaybillCardVO card = page.getRecords().get(0); + assertNull(card.getBusinessStatus(), "一趟车里两种原始状态,没有唯一值可下发"); + assertEquals(1, card.getStatus(), "混状态不影响运次数字态"); + } + @Test @DisplayName("运次列表不因配载卡去回查运单,也不写库") void tripPageDoesNotLookUpWaybillsOrWrite() {