puzhibing
2026-08-21 5fa94b3718b4a78a4fcea4c97652b0ef20b7de3a
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
package com.xw.yunwei.model
 
import com.google.gson.annotations.SerializedName
 
val taskPlaceHolder = TaskModel()
 
/**
 * 车辆任务实体类
 */
data class TaskModel(
 
    /**
     * 任务处理时限/结束时间
     */
    @SerializedName("endTime")
    val endTime: String? = null,
 
    /**
     * 任务ID
     */
    @SerializedName("id")
    val id: Long? = null,
 
    /**
     * 车牌号
     */
    @SerializedName("plateNumber")
    val plateNumber: String? = null,
 
    /**
     * 任务状态
     * 0 = 待到达
     * 1 = 待处理
     * 2 = 已完成
     * 3 = 已取消
     * 4 = 改派中
     */
    @SerializedName("status")
    val status: Int? = null,
 
    /**
     * 任务类别
     * 1 = 常规任务
     * 2 = 事故任务
     */
    @SerializedName("taskCategory")
    val taskCategory: Int? = null,
 
    /**
     * 任务编号
     */
    @SerializedName("taskCode")
    val taskCode: String? = null,
 
    /**
     * 任务类型ID
     * 任务类别为2时:对应数据字典,多个逗号分割
     * 任务类别为1时:枚举值(见下方常量)
     */
    @SerializedName("taskTypeId")
    val taskTypeId: String? = null,
 
    /**
     * 任务类型名称
     * 任务类别为2时返回
     */
    @SerializedName("taskTypeName")
    val taskTypeName: String? = null,
 
    /**
     * 任务紧急程度
     * 0 = P0(最紧急)
     * 1 = P1
     * 2 = P2
     * 3 = P3(最不紧急)
     */
    @SerializedName("taskUrgencyLevel")
    val taskUrgencyLevel: Int? = null,
 
    /**
     * 车辆ID
     */
    @SerializedName("vehicleId")
    val vehicleId: Long? = null,
 
    /**
     * 车辆纬度
     */
    @SerializedName("vehicleLat")
    val vehicleLat: Double? = null,
 
    /**
     * 车辆位置描述
     */
    @SerializedName("vehicleLocation")
    val vehicleLocation: String? = null,
 
    /**
     * 车辆经度
     */
    @SerializedName("vehicleLon")
    val vehicleLon: Double? = null,
 
    /**
     * 可以操作到达的配置范围,单位米
     */
    @SerializedName("canArriveRange")
    val canArriveRange: Int? = null,
    //websocket 功能控制字段 是否震动
    val vibration: Boolean = true,
    //websocket 功能控制字段 是否语音
    val voiceBroadcast: Boolean = true,
) {
    companion object Companion {
        // 常规任务类型枚举(taskCategory=1时使用)
        /** 车辆检查 */
        const val TYPE_VEHICLE_CHECK = "1"
 
        /** 车辆充电 */
        const val TYPE_VEHICLE_CHARGING = "2"
 
        /** 车辆整备 */
        const val TYPE_VEHICLE_PREPARATION = "3"
 
        /** 整备洗车 */
        const val TYPE_PREPARATION_WASH = "4"
 
        /** 车辆维修 */
        const val TYPE_VEHICLE_REPAIR = "5"
 
        /** 车辆保养 */
        const val TYPE_VEHICLE_MAINTENANCE = "6"
 
        /** 车辆保险到期 */
        const val TYPE_INSURANCE_EXPIRE = "7"
 
        /** 车辆年检到期 */
        const val TYPE_ANNUAL_INSPECTION_EXPIRE = "8"
 
        /** 车辆运营资质到期 */
        const val TYPE_OPERATING_LICENSE_EXPIRE = "9"
    }
 
    /**
     * 判断是否为常规任务
     */
    fun isRoutineTask(): Boolean = taskCategory == 1
 
    /**
     * 判断是否为事故任务
     */
    fun isAccidentTask(): Boolean = taskCategory == 2
 
    /**
     * 根据任务类型ID获取中文名称
     * @return 对应的中文名称,未找到返回 null
     */
    fun getTaskType(): String? {
        return when (taskTypeId) {
            TYPE_VEHICLE_CHECK -> "日常检测"
            TYPE_VEHICLE_CHARGING -> "车辆充电"
            TYPE_VEHICLE_PREPARATION -> "车辆整备"
            TYPE_PREPARATION_WASH -> "洗车"
            TYPE_VEHICLE_REPAIR -> "车辆维修"
            TYPE_VEHICLE_MAINTENANCE -> "车辆保养"
            TYPE_INSURANCE_EXPIRE -> "车辆保险到期"
            TYPE_ANNUAL_INSPECTION_EXPIRE -> "车辆年检到期"
            TYPE_OPERATING_LICENSE_EXPIRE -> "车辆运营资质到期"
            else -> null
        }
    }
}