package com.aucma.dms.domain;

import com.aucma.common.annotation.Excel;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.Date;
import java.util.List;

/**
 * 派工计划对象 dms_dispatch_plan
 *
 * @author Cascade AI
 * @date 2025-01-10
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class DmsDispatchPlan extends DmsBaseEntity {
    
    private static final long serialVersionUID = 1L;

    /** 派工计划ID */
    private Long planId;

    /** 派工单号 */
    @Excel(name = "派工单号")
    private String planCode;

    /** 关联维修工单ID */
    @Excel(name = "关联维修工单ID")
    private Long workOrderId;

    /** 工单编号 */
    @Excel(name = "工单编号")
    private String workOrderCode;

    /** 设备ID */
    @Excel(name = "设备ID")
    private Long deviceId;

    /** 设备编码 */
    @Excel(name = "设备编码")
    private String deviceCode;

    /** 设备名称 */
    @Excel(name = "设备名称")
    private String deviceName;

    /** 派工类型：1-单人派工 2-团队派工 */
    @Excel(name = "派工类型", dictType = "dms_dispatch_type")
    private String dispatchType;

    /** 执行人ID（单人派工） */
    @Excel(name = "执行人ID")
    private Long executorId;

    /** 执行人姓名 */
    @Excel(name = "执行人")
    private String executorName;

    /** 执行团队ID（团队派工） */
    @Excel(name = "执行团队ID")
    private Long teamId;

    /** 执行团队名称 */
    @Excel(name = "执行团队")
    private String teamName;

    /** 派工时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "派工时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date dispatchTime;

    /** 要求开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "要求开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date requireStartTime;

    /** 要求完成时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "要求完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date requireEndTime;

    /** 接收状态：0-待接收 1-已接收 2-已拒绝 */
    @Excel(name = "接收状态", dictType = "dms_receive_status")
    private String receiveStatus;

    /** 接收时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "接收时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date receiveTime;

    /** 拒绝原因 */
    @Excel(name = "拒绝原因")
    private String rejectReason;

    /** 执行状态：0-待执行 1-执行中 2-已完成 3-已取消 */
    @Excel(name = "执行状态", dictType = "dms_execution_status")
    private String executionStatus;

    /** 优先级：1-紧急 2-高 3-中 4-低 */
    @Excel(name = "优先级", dictType = "dms_priority")
    private String priority;

    /** 派工人ID */
    @Excel(name = "派工人ID")
    private Long dispatcherId;

    /** 派工人姓名 */
    @Excel(name = "派工人")
    private String dispatcherName;

    /** 派工说明 */
    @Excel(name = "派工说明")
    private String dispatchNotes;

    /** 是否标识：1-是 0-否 */
    @Excel(name = "是否标识", readConverterExp = "1=是,0=否")
    private String isFlag;

    // ========== 关联子表数据 ==========

    /** 派工成员列表（团队派工） */
    private List<DmsDispatchMember> dispatchMembers;
}
