liujie
2026-06-09 c96fbe6b0aeb413a17c429133ee6d81d138144b9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package com.xiaopeng.operation.dto;
 
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
 
/**
 * 优先匹配结果对象,包含匹配状态、VIN 和失败原因
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PriorityMatchResult {
 
    /** 是否匹配成功 */
    private boolean matched;
 
    /** 匹配到的 VIN(成功时) */
    private String vin;
 
    /** 失败原因(日志记录用) */
    private String failReason;
 
    /**
     * 失败原因枚举
     */
    public enum FailReason {
        /** 无绑定配置 */
        NO_BINDING,
        /** 车辆不存在 */
        VEHICLE_NOT_FOUND,
        /** 车辆不可用(运营状态异常、非空闲、测试车等) */
        VEHICLE_UNAVAILABLE,
        /** 不在同一电子围栏 */
        WRONG_AREA,
        /** 车辆正在执行任务 */
        VEHICLE_BUSY
    }
 
    /**
     * 创建匹配成功结果
     *
     * @param vin 匹配到的车辆 VIN
     * @return 匹配成功的 PriorityMatchResult
     */
    public static PriorityMatchResult success(String vin) {
        return new PriorityMatchResult(true, vin, null);
    }
 
    /**
     * 创建匹配失败结果
     *
     * @param failReason 失败原因枚举
     * @return 匹配失败的 PriorityMatchResult
     */
    public static PriorityMatchResult fail(FailReason failReason) {
        return new PriorityMatchResult(false, null, failReason.name());
    }
}