package cn.iocoder.yudao.module.system.dal.dataobject.robot;

import lombok.*;

import java.time.LocalDateTime;

import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;

/**
 * 机器人任务明细 DO
 *
 * @author 陈宾顺
 */
@TableName("robot_task_detail")
@KeySequence("robot_task_detail_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class RobotTaskDetailDO extends BaseDO {

    /**
     * 主键ID
     */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;
    /**
     * 机器人任务主表id
     */
    private Long robotTaskId;
    /**
     * 任务类型（1：取放货、2：停车、 3：充电、4：移动、5：仅取货、6：仅放货、7：扫描码、8：检测托盘类型）
     */
    private Integer taskType;
    /**
     * 放货类型（1：库位、2：线库、 3：区域、 4:点位）
     */
    private Integer releaseType;
    /**
     * 取货类型（1：库位、2：线库、 3：区域、 4:点位）
     */
    private Integer takeType;
    /**
     * 放货库位/线库/区域
     */
    private Long releaseId;
    /**
     * 取货库位/线库/区域
     */
    private Long takeId;
    /**
     * 计算后的来源库位编号
     */
    private String fromLocationNo;
    /**
     * 计算后的来源库位id
     */
    private Long fromLocationId;
    /**
     * 取货线库id
     */
    private Long fromLaneId;
    /**
     * 放货线库id
     */
    private Long toLaneId;
    /**
     * 取货库位的排序
     */
    private Long fromLocationNumber;
    /**
     * 放货库位的排序
     */
    private Long toLocationNumber;
    /**
     * 计算后的目标库位编号
     */
    private String toLocationNo;
    /**
     * 计算后的目标库位id
     */
    private Long toLocationId;
    /**
     * AGV编号
     */
    private String robotNo;
    /**
     * AGV动作
     */
    private String robotAction;
    /**
     * 任务状态(0:未开始、1：执行中、2：已完成、3：已取消)
     */
    private Integer taskStatus;
    /**
     * 任务阶段(0:待执行、1：前往取货、2：取货中、3：前往放货、4：放货中、5：结束、6：移动中、7:正在充电、8:取消、9:人工完成、10:异常)
     */
    private Long taskStage;
    /**
     * 开始时间
     */
    private LocalDateTime startTime;
    /**
     * 结束时间
     */
    private LocalDateTime endTime;
    /**
     * 取货层数
     */
    private Integer fromLocationStorey;
    /**
     * 放货层数
     */
    private Integer toLocationStorey;
    /**
     * 优先级
     */
    private Long priority;
    /**
     * 停车后是否锁定(0:否、1:是)
     */
    private Integer needLock;
    /**
     * 所选车辆电量(充电模式)
     */
    private Integer electricity;

    /**
     * ware_position_map_item的id的id
     */
    private Long fromMapItemId;

    /**
     * ware_position_map_item的id的id
     */
    private Long toMapItemId;
    /**
     * 是否发生异常(0:正常、1：异常)
     */
    private Integer occurError;

    /**
     * 是否人工干预(0:未干预、1：RCS关闭、2：RCS人工完成、3：远遥取货完成、4：远遥任务完成、5：远遥取货完成和远遥任务完成)
     */
    private Integer manualIntervention;

    /**
     * 人工干预时间
     */
    private LocalDateTime manualInterventionTime;
}