package com.algo.model;
|
|
import java.time.LocalDateTime;
|
import java.time.format.DateTimeFormatter;
|
import java.util.Objects;
|
|
/**
|
* 任务数据模型
|
* 包含任务的完整信息
|
*/
|
public class TaskData {
|
|
/**
|
* 任务ID
|
*/
|
private String taskId;
|
|
/**
|
* AGV编号(仅充电任务和去待机位任务使用)
|
*/
|
private String agvId;
|
|
/**
|
* 任务起点
|
*/
|
private String start;
|
|
/**
|
* 任务终点
|
*/
|
private String end;
|
|
/**
|
* 任务类型:1入库 2出库 3移库 4去待机位 5充电
|
*/
|
private String type;
|
|
/**
|
* 任务优先级,越大优先级越高
|
*/
|
private int priority;
|
|
/**
|
* 任务创建时间
|
*/
|
private String taskTime;
|
|
// 任务类型常量
|
public static final String TYPE_INBOUND = "15"; // 入库
|
public static final String TYPE_OUTBOUND = "16"; // 出库
|
public static final String TYPE_MOVE = "18"; // 移库
|
public static final String TYPE_STANDBY = "20"; // 去待机位
|
public static final String TYPE_CHARGE = "19"; // 充电
|
|
// 构造函数
|
public TaskData() {
|
}
|
|
public TaskData(String taskId, String agvId, String start, String end,
|
String type, int priority, String taskTime) {
|
this.taskId = taskId;
|
this.agvId = agvId;
|
this.start = start;
|
this.end = end;
|
this.type = type;
|
this.priority = priority;
|
this.taskTime = taskTime;
|
}
|
|
// Getter和Setter方法
|
public String getTaskId() {
|
return taskId;
|
}
|
|
public void setTaskId(String taskId) {
|
this.taskId = taskId;
|
}
|
|
public String getAgvId() {
|
return agvId;
|
}
|
|
public void setAgvId(String agvId) {
|
this.agvId = agvId;
|
}
|
|
public String getStart() {
|
return start;
|
}
|
|
public void setStart(String start) {
|
this.start = start;
|
}
|
|
public String getEnd() {
|
return end;
|
}
|
|
public void setEnd(String end) {
|
this.end = end;
|
}
|
|
public String getType() {
|
return type;
|
}
|
|
public void setType(String type) {
|
this.type = type;
|
}
|
|
public int getPriority() {
|
return priority;
|
}
|
|
public void setPriority(int priority) {
|
this.priority = priority;
|
}
|
|
public String getTaskTime() {
|
return taskTime;
|
}
|
|
public void setTaskTime(String taskTime) {
|
this.taskTime = taskTime;
|
}
|
|
/**
|
* 检查是否为运输任务(需要取货和送货)
|
*
|
* @return true如果是运输任务
|
*/
|
public boolean isTransportTask() {
|
return TYPE_INBOUND.equals(type) || TYPE_OUTBOUND.equals(type) || TYPE_MOVE.equals(type);
|
}
|
|
/**
|
* 检查是否为充电任务
|
*
|
* @return true如果是充电任务
|
*/
|
public boolean isChargeTask() {
|
return TYPE_CHARGE.equals(type);
|
}
|
|
/**
|
* 检查是否为去待机位任务
|
*
|
* @return true如果是去待机位任务
|
*/
|
public boolean isStandbyTask() {
|
return TYPE_STANDBY.equals(type);
|
}
|
|
/**
|
* 检查是否为指定AGV的任务
|
*
|
* @return true如果是指定AGV的任务
|
*/
|
public boolean isAssignedToAgv() {
|
return agvId != null && !agvId.trim().isEmpty();
|
}
|
|
/**
|
* 解析任务创建时间
|
*
|
* @return LocalDateTime对象
|
*/
|
public LocalDateTime parseTaskTime() {
|
if (taskTime == null || taskTime.trim().isEmpty()) {
|
return null;
|
}
|
|
try {
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
return LocalDateTime.parse(taskTime, formatter);
|
} catch (Exception e) {
|
return null;
|
}
|
}
|
|
/**
|
* 获取任务类型描述
|
*
|
* @return 任务类型描述
|
*/
|
public String getTypeDescription() {
|
switch (type) {
|
case TYPE_INBOUND:
|
return "入库";
|
case TYPE_OUTBOUND:
|
return "出库";
|
case TYPE_MOVE:
|
return "移库";
|
case TYPE_STANDBY:
|
return "去待机位";
|
case TYPE_CHARGE:
|
return "充电";
|
default:
|
return "未知任务类型";
|
}
|
}
|
|
@Override
|
public boolean equals(Object o) {
|
if (this == o) return true;
|
if (o == null || getClass() != o.getClass()) return false;
|
TaskData taskData = (TaskData) o;
|
return Objects.equals(taskId, taskData.taskId);
|
}
|
|
@Override
|
public int hashCode() {
|
return Objects.hash(taskId);
|
}
|
|
@Override
|
public String toString() {
|
return "TaskData{" +
|
"taskId='" + taskId + '\'' +
|
", agvId='" + agvId + '\'' +
|
", start='" + start + '\'' +
|
", end='" + end + '\'' +
|
", type='" + type + '\'' +
|
", priority=" + priority +
|
", taskTime='" + taskTime + '\'' +
|
'}';
|
}
|
}
|