精简运单导入车牌号校验的失败原因

一次车牌号错误原来最多会叠出「长度不能少于7位」「首位必须是省份简称、
第二位必须是英文字母」「格式不正确」三条原因,导出的失败明细里这一格很长。
现将公路运输下的必填、长度与格式统一为一条「车牌号校验不通过」。

- 校验强度不变:长度 7/8 位本就由 VEHICLE_NO_PATTERN 蕴含,省份简称白名单照旧
- 保留「车牌号」字样,失败明细仍能按列名拆词匹配并标红车牌号列;车牌为空时
  走空单元格红底纹分支,比原来只有文字更容易定位
- 未改动「同一配载标识号下,车牌号不一致」,该原因由 tests/fixtures/waybill-import
  用例 04 断言
This commit is contained in:
2026-09-21 05:45:49 +08:00
parent 4c96583701
commit 993f802111
@@ -655,21 +655,13 @@ public class WaybillImportBatchServiceImpl extends BaseServiceImpl<WaybillImport
if (!isRoadTransport(transportType)) { if (!isRoadTransport(transportType)) {
return; return;
} }
if (Func.isEmpty(vehicleNo)) { // 必填、长度与格式统一为一条简短原因,避免多条规则叠加导致失败原因过长;
errors.add("公路运输时车牌号/航班号/船号/班列号不能为空"); // 文案保留“车牌号”字样,导入失败明细仍能据此定位到车牌号列并标红。
return; // VEHICLE_NO_PATTERN 已约束总长度为 7 或 8 位,故不再单独判断长度。
} if (Func.isEmpty(vehicleNo)
if (vehicleNo.length() < 7) { || !VEHICLE_PROVINCE_PATTERN.matcher(vehicleNo).lookingAt()
errors.add("车牌号长度不能少于7位"); || !VEHICLE_NO_PATTERN.matcher(vehicleNo).matches()) {
} errors.add("车牌号校验不通过");
if (vehicleNo.length() > 8) {
errors.add("车牌号长度不能超过8位");
}
if (!VEHICLE_PROVINCE_PATTERN.matcher(vehicleNo).lookingAt()) {
errors.add("车牌号首位必须是省份简称,第二位必须是英文字母");
}
if (!VEHICLE_NO_PATTERN.matcher(vehicleNo).matches()) {
errors.add("车牌号格式不正确,应为首位省份简称、次位英文字母、总长度7或8位");
} }
} }