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