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
package com.mes.interaction.vehicle.model;
 
import lombok.Data;
import java.time.LocalDateTime;
 
/**
 * 车辆任务信息
 * 
 * @author mes
 * @since 2025-01-XX
 */
@Data
public class VehicleTask {
    /**
     * 任务ID
     */
    private String taskId;
    
    /**
     * 任务名称
     */
    private String taskName;
    
    /**
     * 操作类型(如:feedGlass, triggerRequest等)
     */
    private String operation;
    
    /**
     * 计划路径
     */
    private VehiclePath plannedPath;
    
    /**
     * 任务开始时间
     */
    private LocalDateTime startTime;
    
    /**
     * 预计结束时间
     */
    private LocalDateTime estimatedEndTime;
    
    /**
     * 车辆速度(用于计算预计结束时间)
     */
    private Double speed;
    
    /**
     * 任务参数
     */
    private java.util.Map<String, Object> parameters;
    
    public VehicleTask() {
        this.parameters = new java.util.HashMap<>();
    }
    
    /**
     * 计算预计结束时间
     */
    public void calculateEstimatedEndTime() {
        if (plannedPath == null || speed == null || speed <= 0) {
            return;
        }
        
        VehiclePosition start = plannedPath.getStartPosition();
        VehiclePosition end = plannedPath.getEndPosition();
        
        if (start != null && end != null) {
            double distance = start.distanceTo(end);
            if (distance > 0) {
                // 时间 = 距离 / 速度(秒)
                long seconds = (long) (distance / speed);
                estimatedEndTime = startTime != null ? 
                    startTime.plusSeconds(seconds) : 
                    LocalDateTime.now().plusSeconds(seconds);
            }
        }
    }
}