package com.ruoyi.worktecket.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 作业票基础信息对象 work_ticket_basic_data
 *
 * @author ruoyi
 * @date 2023-08-04
 */
@ApiModel("作业票基础信息")
@Data
public class WorkTicketBasicDataDTO implements Serializable
{
    private static final long serialVersionUID = 1L;

    /** $column.columnComment */
    @ApiModelProperty("主键")
    private String id;

    @ApiModelProperty("申请部门Id")
    @Excel(name = "申请部门Id")
    private Long applicantDeptId;


    @ApiModelProperty("申请部门名称")
    private String applicantDeptName;

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

    /** 申请人 */
    @ApiModelProperty("申请人")
    @Excel(name = "申请人")
    private Long applicantUserId;

    /** 申请人姓名 */
    @ApiModelProperty("申请人姓名")
    private String applicantUserName;

    /** 作业区域 */
    @ApiModelProperty("作业区域ID")
    @Excel(name = "作业区域ID")
    private Long workTicketAreaId;

    /** 作业地点 */
    @ApiModelProperty("作业地点")
    @Excel(name = "作业地点")
    private String workTicketPlace;

    /** 作业内容 */
    @ApiModelProperty("作业内容")
    @Excel(name = "作业内容")
    private String workTicketContent;

    @ApiModelProperty("作业票编号")
    @Excel(name = "作业票编号")
    private String workTicketNo;

    @ApiModelProperty("作业票编号模糊查询条件")
    private String workTicketNoLike;

    @ApiModelProperty("作业开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "作业开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date workPlanStartTime;
/*
    废弃 PC列表传 workPlanStartTime 和 workPlanEndTime
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "作业开始时间-搜索起始", width = 30, dateFormat = "yyyy-MM-dd")
    private Date workPlanStartTimeSearchS;

    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "作业开始时间-搜索结束", width = 30, dateFormat = "yyyy-MM-dd")
    private Date workPlanStartTimeSearchE;
*/

    /** 作业实施时间 */
    @ApiModelProperty("作业结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "作业结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date workPlanEndTime;
/*
    废弃 PC列表传 workPlanStartTime 和 workPlanEndTime
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "作业结束时间-搜索起始", width = 30, dateFormat = "yyyy-MM-dd")
    private Date workPlanEndTimeSearchS;

    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "作业结束时间-搜索结束", width = 30, dateFormat = "yyyy-MM-dd")
    private Date workPlanEndTimeSearchE;
*/

    /** 关联作业票编号 */
    @ApiModelProperty("关联作业票编号")
    @Excel(name = "关联作业票编号")
    private String linkWorkTicketNo;

    /** 作业前置文件 */
    @ApiModelProperty("作业前置文件")
    @Excel(name = "作业前置文件")
    private String workTicketProfiler;

    /** 作业状态0 待审核，90已驳回，10 申请中、20已交底、30会签中、40作业中、50已验收 */
    @ApiModelProperty("作业状态 0 待审核，90已驳回，10 申请中、20已交底、30会签中、40作业中、50已验收")
    @Excel(name = "作业状态 0 待审核，90已驳回，10 申请中、20已交底、30会签中、40作业中、50已验收")
    private String workTicketStatus;

    @ApiModelProperty("驳回原因")
    @Excel(name = "驳回原因")
    private String rejectReason;

    /** 作业单位类型 10承包商、20内部 */
    @ApiModelProperty("作业单位类型 10承包商、20内部")
    @Excel(name = "作业单位类型 10承包商、20内部")
    private String workTicketCompanyType;

    /** 作业单位 */
    @ApiModelProperty("作业单位,作业单位类型内部时是部门，承包商时是三方单位")
    @Excel(name = "作业单位")
    private Long workTicketCompany;

    /** 作业单位模糊查询条件 */
    @ApiModelProperty("作业单位,作业单位类型内部时是部门，承包商时是三方单位")
    @Excel(name = "作业单位")
    private String workTicketCompanyName;

    /** 作业负责人 */
    @ApiModelProperty("作业负责人")
    @Excel(name = "作业负责人")
    private Long workTicketDirectorId;

    /** 作业票类型 10动火、20受限、30盲板抽堵、40高处、50吊装、60临时、70动土、80断路 */
    @ApiModelProperty("作业票类型 10动火、20受限、30盲板抽堵、40高处、50吊装、60临时、70动土、80断路")
    @Excel(name = "作业票类型 10动火、20受限、30盲板抽堵、40高处、50吊装、60临时、70动土、80断路")
    private String workTicketType;

    /** 作业监护人(承包商、内部都时必选字段) */
    @ApiModelProperty("作业监护人(承包商、内部都时必选字段)")
    @Excel(name = "作业监护人")
    private String workTicketGuardianUser;

    /** 作业监护人(承包商、内部都时必选字段) */
    @ApiModelProperty("作业监护人姓名(承包商、内部都时必选字段)")
    @Excel(name = "作业监护人姓名")
    private String workTicketGuardianUserName;
    /** 作业交底人 */
    @ApiModelProperty("作业交底人")
    @Excel(name = "作业交底人")
    private Long workTicketDiscloseUser;

    /** 作业接受人 */
    @ApiModelProperty("作业接受人")
    @Excel(name = "作业接受人")
    private Long workTicketAcceptUser;

    /** 安全措施确认人 */
    @ApiModelProperty("安全措施确认人")
    @Excel(name = "安全措施确认人")
    private Long workTicketMeasuresUser;

    @ApiModelProperty("作业票扩展信息")
    @Excel(name = "作业票扩展信息")
    private WorkTicketExtendDTO workTicketExtendDTO;

    @ApiModelProperty("内部作业人ID列表")
    List<Long> executeUserIdList;

    @ApiModelProperty("内部作业人姓名列表")
    List<String> executeUserNameList;

    @ApiModelProperty("承包商作业人ID列表")
    List<String> contractorUserIdList;


    @ApiModelProperty("承包商作业人姓名列表")
    List<String> contractorUserNameList;

    @ApiModelProperty("签字模板审核人员用户ID列表")
    List<Long> signOptionUserIdList;

    @ApiModelProperty("签字模板审核人员岗位ID列表")
    List<Long> signOptionPostIdList;

    /**
     * 作业交底签字图片
     */
    @ApiModelProperty(name = "作业交底签字图片")
    private String workTicketDiscloseUserSignImg;

    /**
     * 作业接受人签字图片
     */
    @ApiModelProperty(name = "作业接受人签字图片")
    private String workTicketAcceptUserSignImg;

    /**
     * 验收人签字图片
     */
    @ApiModelProperty(name = "验收人签字图片")
    private String workTicketCheckUserSignImg;


}
