🐛 修复在途打卡绕过异常门禁:未了结异常落在在途之后时仍可打卡

在途的异常阻断此前按过程配置里节点的位置区间计算:异常节点及其后的节点不可打卡。
异常报在「卸货」这类排在在途之后的节点时,区间只有卸货、签收,在途被放行,
等于车越接近目的地越能报在途;而异常报在「装货」(在途之前)反而会锁住在途。

改为运单级判定:该运单只要存在未了结异常,在途就不可打卡,与异常归属哪个节点无关。
普通打卡节点仍按区间(异常所在节点及其后)阻断。判定集中在
WaybillProcessSupport.blockedNodeKeys,卡片禁用态与 /enroute/submit 的强制校验共用它。

异常落在非打卡节点上(接单/回单、或已从过程配置删掉的节点)时没有可跳转的具体异常,
故 blockedExceptionId 可能为空,卡片只显示不可打卡原因。
This commit is contained in:
2026-10-06 03:17:25 +08:00
parent ffed7d328c
commit 19ddc445da
4 changed files with 162 additions and 12 deletions
@@ -39,7 +39,7 @@ public class DriverPunchNodeVO implements Serializable {
@Schema(description = "当前是否可打卡(已打卡、被异常阻断、在途频次时段都会置否)")
private Boolean actionable;
@Schema(description = "是否被未了结的异常阻断:该节点及其后的节点不可打卡")
@Schema(description = "是否被未了结的异常阻断:异常所在节点及其后的节点不可打卡;在途只要有未了结异常即不可打卡")
private Boolean blocked;
@Schema(description = "是否因前置节点未打卡而被顺序门禁拦住(在途豁免,恒为否)")