🔀 合并待回单确认审查修整
This commit is contained in:
+15
-8
@@ -124,8 +124,8 @@ public class DriverWaybillServiceImpl implements IDriverWaybillService {
|
||||
WaybillProcessSupport.STATUS_PENDING_RETURN_CONFIRM, STATUS_COMPLETED
|
||||
);
|
||||
/**
|
||||
* 进行中口径:司机手上还没走完的单。
|
||||
* 待回单确认也算进行中——司机侧已打完末位卡,等业务员确认回单才变已完成。
|
||||
* 进行中口径:司机手上还没走完的单,含待回单确认。
|
||||
* 待回单确认指司机已打完末位卡、等业务员确认回单,此时业务状态还不是 completed。
|
||||
*/
|
||||
private static final List<String> ACTIVE_STATUSES = Arrays.asList(
|
||||
STATUS_RUNNING, STATUS_PENDING, STATUS_WAITING_DISPATCH, STATUS_DISPATCHING,
|
||||
@@ -525,9 +525,9 @@ public class DriverWaybillServiceImpl implements IDriverWaybillService {
|
||||
nodePunchMapper.insert(punch);
|
||||
|
||||
advanceCurrentProcessNode(waybill, nodeCfg);
|
||||
// 末位打卡节点是到货/卸货/签收、且运单本身允许完成时,本次打卡就是运单的去向决定点:
|
||||
// 回单无需确认 → 一并完成;回单需业务员确认 → 停在待回单确认等业务员确认。
|
||||
// isLastDriverPunchNode 与 returnNeedsNoConfirmation 传的就是上面那份 processJson,未再调 resolveProcessJson 取过程配置。
|
||||
// 末位打卡节点为到货/卸货/签收、且运单允许完成时:回单无需确认则本次打卡一并完成运单,
|
||||
// 回单需业务员确认则停在待回单确认。
|
||||
// isLastDriverPunchNode 与 returnNeedsNoConfirmation 传的是上面那份 processJson,未再调 resolveProcessJson 取过程配置。
|
||||
String nodeKey = WaybillProcessSupport.nodeKey(nodeCfg);
|
||||
String nodeName = WaybillProcessSupport.nodeName(nodeCfg);
|
||||
String waybillBusinessStatus = waybill.getBusinessStatus();
|
||||
@@ -540,9 +540,9 @@ public class DriverWaybillServiceImpl implements IDriverWaybillService {
|
||||
if (completed) {
|
||||
waybillBusinessStatus = STATUS_COMPLETED;
|
||||
}
|
||||
} else if (WaybillProcessSupport.STATUS_RUNNING.equals(waybill.getBusinessStatus())) {
|
||||
// 只有进行中能进入:canAutoCompleteWaybill 的状态口径含待执行/待调度等,不能替代这一条;
|
||||
// 待回单确认在 isPunchEnded 里算已结束,不能从结束态重进。
|
||||
} else if (WaybillProcessSupport.STATUS_RUNNING.equalsIgnoreCase(waybill.getBusinessStatus())) {
|
||||
// 当前业务状态为 running 才置为待回单确认;canAutoCompleteWaybill 的状态口径还含待执行/待调度。
|
||||
// 待回单确认在 isPunchEnded 里与已完成、已取消同属结束态。
|
||||
waybill.setBusinessStatus(WaybillProcessSupport.STATUS_PENDING_RETURN_CONFIRM);
|
||||
waybillService.updateById(waybill);
|
||||
waybillBusinessStatus = WaybillProcessSupport.STATUS_PENDING_RETURN_CONFIRM;
|
||||
@@ -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());
|
||||
|
||||
+2
-2
@@ -996,8 +996,8 @@ public class ManageWaybillServiceImpl implements IManageWaybillService {
|
||||
}
|
||||
return switch (businessStatus) {
|
||||
case STATUS_PENDING, "waiting_dispatch", "dispatching" -> 0;
|
||||
// 与司机端 toAppStatus 同一份数字枚举(0 待接单 / 1 运输中 / 2 已完成 / 3 已取消),待回单确认属进行中:
|
||||
// 两处对同一状态必须给同一个数字,给 null 前端只能落到「未知」兜底
|
||||
// 数字枚举与司机端 toAppStatus 同源:0 待接单 / 1 运输中 / 2 已完成 / 3 已取消;
|
||||
// 待回单确认属进行中,落 1。给 null 时前端显示「未知」。
|
||||
case STATUS_RUNNING, WaybillProcessSupport.STATUS_PENDING_RETURN_CONFIRM -> 1;
|
||||
case STATUS_COMPLETED -> 2;
|
||||
case STATUS_CANCELLED -> 3;
|
||||
|
||||
+29
@@ -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() {
|
||||
|
||||
+2
-2
@@ -337,8 +337,8 @@ class WaybillProcessSupportTest {
|
||||
// ------------------------------------------------------------ 待回单确认
|
||||
|
||||
@Test
|
||||
@DisplayName("待回单确认落库字面量为 pending_return_confirm,且接单归一不得改写它")
|
||||
void pendingReturnConfirmIsTerminalStatus() {
|
||||
@DisplayName("待回单确认落库字面量为 pending_return_confirm,且接单归一不改写它")
|
||||
void pendingReturnConfirmLiteralSurvivesAcceptanceNormalization() {
|
||||
assertEquals("pending_return_confirm", WaybillProcessSupport.STATUS_PENDING_RETURN_CONFIRM,
|
||||
"库里存的是这个字面量,web 与小程序也按它判断,不能改名");
|
||||
assertEquals(WaybillProcessSupport.STATUS_PENDING_RETURN_CONFIRM,
|
||||
|
||||
Reference in New Issue
Block a user