✨ 待回单确认:运次卡片下发唯一原始业务状态

This commit is contained in:
2026-10-22 14:48:48 +08:00
parent 35127760df
commit e0c8c98805
2 changed files with 36 additions and 0 deletions
@@ -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<String> 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());
@@ -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<DriverWaybillCardVO> 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<DriverWaybillCardVO> 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() {