♻️ 司机端可完成状态白名单收敛为单一常量并订正注释
This commit is contained in:
+9
-13
@@ -106,6 +106,10 @@ public class DriverWaybillServiceImpl implements IDriverWaybillService {
|
||||
private static final List<String> TAB_ALL_STATUSES = Arrays.asList(
|
||||
STATUS_PENDING, STATUS_WAITING_DISPATCH, STATUS_DISPATCHING, STATUS_RUNNING, STATUS_COMPLETED
|
||||
);
|
||||
/** 允许完成运单的业务状态 */
|
||||
private static final List<String> COMPLETABLE_STATUSES = Arrays.asList(
|
||||
STATUS_RUNNING, STATUS_PENDING, STATUS_WAITING_DISPATCH, STATUS_DISPATCHING
|
||||
);
|
||||
|
||||
private static final int DEFAULT_PREVIEW_SIZE = 2;
|
||||
private static final int MAX_PREVIEW_SIZE = 20;
|
||||
@@ -361,7 +365,7 @@ public class DriverWaybillServiceImpl implements IDriverWaybillService {
|
||||
|
||||
advanceCurrentProcessNode(waybill, nodeCfg);
|
||||
// 末位打卡节点是到货/卸货/签收、且回单无需确认完成时,本次打卡一并把运单置为完成;
|
||||
// 判定与找节点共用上面已解析的那份过程配置,不重新解析。
|
||||
// isLastDriverPunchNode 与 returnNeedsNoConfirmation 传的就是上面那份 processJson,未再调 resolveProcessJson 取过程配置。
|
||||
String nodeKey = WaybillProcessSupport.nodeKey(nodeCfg);
|
||||
String nodeName = WaybillProcessSupport.nodeName(nodeCfg);
|
||||
boolean completed = false;
|
||||
@@ -460,10 +464,7 @@ public class DriverWaybillServiceImpl implements IDriverWaybillService {
|
||||
Driver driver = requireCurrentDriver();
|
||||
Waybill waybill = loadDriverWaybill(id, currentBoundPlates(driver));
|
||||
waybill = normalizeAcceptStatus(waybill);
|
||||
if (!STATUS_RUNNING.equals(waybill.getBusinessStatus())
|
||||
&& !STATUS_PENDING.equals(waybill.getBusinessStatus())
|
||||
&& !STATUS_WAITING_DISPATCH.equals(waybill.getBusinessStatus())
|
||||
&& !STATUS_DISPATCHING.equals(waybill.getBusinessStatus())) {
|
||||
if (!COMPLETABLE_STATUSES.contains(waybill.getBusinessStatus())) {
|
||||
throw new ServiceException("当前运单状态不允许完成");
|
||||
}
|
||||
// 有未了结异常时不允许完成——完成接口不要求节点全部打卡,不挡住就能绕过打卡门禁
|
||||
@@ -535,8 +536,7 @@ public class DriverWaybillServiceImpl implements IDriverWaybillService {
|
||||
}
|
||||
switch (status) {
|
||||
case 0 -> wrapper.in(Waybill::getBusinessStatus, PENDING_STATUSES);
|
||||
case 1 -> wrapper.in(Waybill::getBusinessStatus, List.of(STATUS_RUNNING, STATUS_PENDING,
|
||||
STATUS_WAITING_DISPATCH, STATUS_DISPATCHING));
|
||||
case 1 -> wrapper.in(Waybill::getBusinessStatus, COMPLETABLE_STATUSES);
|
||||
case 2 -> wrapper.eq(Waybill::getBusinessStatus, STATUS_COMPLETED);
|
||||
case 3 -> wrapper.eq(Waybill::getBusinessStatus, STATUS_CANCELLED);
|
||||
default -> wrapper.in(Waybill::getBusinessStatus, TAB_ALL_STATUSES);
|
||||
@@ -1041,12 +1041,8 @@ public class DriverWaybillServiceImpl implements IDriverWaybillService {
|
||||
* 不满足返回 false,由调用方静默跳过,打卡不受影响。
|
||||
*/
|
||||
private boolean canAutoCompleteWaybill(Waybill waybill) {
|
||||
String status = waybill.getBusinessStatus();
|
||||
boolean statusAllowed = STATUS_RUNNING.equals(status)
|
||||
|| STATUS_PENDING.equals(status)
|
||||
|| STATUS_WAITING_DISPATCH.equals(status)
|
||||
|| STATUS_DISPATCHING.equals(status);
|
||||
return statusAllowed && unresolvedExceptionNodeCodeList(waybill.getId()).isEmpty();
|
||||
return COMPLETABLE_STATUSES.contains(waybill.getBusinessStatus())
|
||||
&& unresolvedExceptionNodeCodeList(waybill.getId()).isEmpty();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user