package com.sundot.airport.system.domain.approval.dto;

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

import com.fasterxml.jackson.annotation.JsonFormat;

/**
 * 审批抄送详情DTO
 *
 * @author simon lin
 * @date 2025-09-11
 */
public class ApprovalCcDetailDTO {
    /**
     * 抄送ID
     */
    private Long ccId;

    /**
     * 实例ID
     */
    private Long instanceId;

    /**
     * 抄送时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date ccTime;

    /**
     * 是否已读
     */
    private String isRead;

    /**
     * 阅读时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date readTime;

    /**
     * 审批实例标题
     */
    private String title;

    /**
     * 完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date completionTime;

    /**
     * 业务ID
     */
    private Long businessId;

    /**
     * 业务类型
     */
    private String businessType;

    /**
     * 历史记录列表
     */
    private List<ApprovalHistoryDetailDTO> historyList;

    /**
     * 表单数据
     */
    private String formData;

    /**
     * 历史记录详情内部类
     */
    public static class ApprovalHistoryDetailDTO {
        /**
         * 节点名称
         */
        private String nodeName;

        /**
         * 操作人姓名
         */
        private String operatorName;

        /**
         * 操作时间
         */
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        private Date operationTime;

        /**
         * 操作意见
         */
        private String comment;

        public String getNodeName() {
            return nodeName;
        }

        public void setNodeName(String nodeName) {
            this.nodeName = nodeName;
        }

        public String getOperatorName() {
            return operatorName;
        }

        public void setOperatorName(String operatorName) {
            this.operatorName = operatorName;
        }

        public Date getOperationTime() {
            return operationTime;
        }

        public void setOperationTime(Date operationTime) {
            this.operationTime = operationTime;
        }

        public String getComment() {
            return comment;
        }

        public void setComment(String comment) {
            this.comment = comment;
        }
    }

    public Long getCcId() {
        return ccId;
    }

    public void setCcId(Long ccId) {
        this.ccId = ccId;
    }

    public Long getInstanceId() {
        return instanceId;
    }

    public void setInstanceId(Long instanceId) {
        this.instanceId = instanceId;
    }

    public Date getCcTime() {
        return ccTime;
    }

    public void setCcTime(Date ccTime) {
        this.ccTime = ccTime;
    }

    public String getIsRead() {
        return isRead;
    }

    public void setIsRead(String isRead) {
        this.isRead = isRead;
    }

    public Date getReadTime() {
        return readTime;
    }

    public void setReadTime(Date readTime) {
        this.readTime = readTime;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public Date getCompletionTime() {
        return completionTime;
    }

    public void setCompletionTime(Date completionTime) {
        this.completionTime = completionTime;
    }

    public Long getBusinessId() {
        return businessId;
    }

    public void setBusinessId(Long businessId) {
        this.businessId = businessId;
    }

    public String getBusinessType() {
        return businessType;
    }

    public void setBusinessType(String businessType) {
        this.businessType = businessType;
    }

    public List<ApprovalHistoryDetailDTO> getHistoryList() {
        return historyList;
    }

    public void setHistoryList(List<ApprovalHistoryDetailDTO> historyList) {
        this.historyList = historyList;
    }

    public String getFormData() {
        return formData;
    }

    public void setFormData(String formData) {
        this.formData = formData;
    }
}