package cn.iocoder.yudao.module.contract.controller.admin.customercontract.vo;

import cn.iocoder.yudao.module.infra.api.file.dto.FileDTO;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

@Schema(description = "管理后台 - 销售合同信息 Response VO")
@Data
@ExcelIgnoreUnannotated
public class CustomerContractRespVO {

    @Schema(description = "主键id")
    @ExcelProperty("主键id")
    private Long id;

    @Schema(description = "合同uuid")
    @ExcelProperty("合同uuid")
    private String customerContractUuid;

    @Schema(description = "合同编号，年月日+uuid")
    @ExcelProperty("合同编号，年月日+uuid")
    private String customerContractCode;

    @Schema(description = "合同名称")
    @ExcelProperty("合同名称")
    private String customerContractName;

    @Schema(description = "是否为框架合同 0否 1是")
    @ExcelProperty("是否为框架合同 0否 1是")
    private Integer isFrameContract;

    @Schema(description = "是否为框架合同描述 0否 1是")
    @ExcelProperty("是否为框架合同描述 0否 1是")
    private String isFrameContractDesc;

    @Schema(description = "客户id", example = "4213")
    @ExcelProperty("客户id")
    private Long customerId;

    @Schema(description = "客户名称", example = "王五")
    @ExcelProperty("客户名称")
    private String customerName;

    @Schema(description = "合同开始日期")
    @ExcelProperty("合同开始日期")
    private String startDate;

    @Schema(description = "合同结束日期")
    @ExcelProperty("合同结束日期")
    private String endDate;

    @Schema(description = "合同金额", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("合同金额")
    private BigDecimal money;

    @Schema(description = "合同负责人")
    @ExcelProperty("合同负责人")
    private Long ownerEmployeeId;

    @Schema(description = "合同负责人")
    @ExcelProperty("合同负责人")
    private String ownerEmployeeName;

    @Schema(description = "负责人部门")
    @ExcelProperty("负责人部门")
    private Long deptId;

    @Schema(description = "负责人部门名称")
    @ExcelProperty("负责人部门名称")
    private String deptName;

    @Schema(description = "合同状态：0、未归档；1、已归档；2、已完结")
    @ExcelProperty("合同状态：0、未归档；1、已归档；2、已完结")
    private String contractStatus;

    @Schema(description = "合同状态描述：0、未归档；1、已归档；2、已完结")
    @ExcelProperty("合同状态描述：0、未归档；1、已归档；2、已完结")
    private String contractStatusDesc;

    @Schema(description = "是否关闭 0开启 1关闭")
    @ExcelProperty("是否关闭 0开启 1关闭")
    private Integer closed;

    @Schema(description = "是否关闭 0开启 1关闭")
    @ExcelProperty("是否关闭 0开启 1关闭")
    private String closedDesc;

    @Schema(description = "关闭原因")
    @ExcelProperty("关闭原因")
    private String closeReason;

    @Schema(description = "是否终止 0否 1是")
    @ExcelProperty("是否终止 0否 1是")
    private Integer terminate;

    @Schema(description = "是否终止 0否 1是")
    @ExcelProperty("是否终止 0否 1是")
    private String terminateDesc;

    @Schema(description = "终止日期")
    @ExcelProperty("终止日期")
    private String terminateDate;

    @Schema(description = "终止原因")
    @ExcelProperty("终止原因")
    private String terminateReason;

    @Schema(description = "是否变更 0否 1是")
    @ExcelProperty("是否变更 0否 1是")
    private Integer isChange;

    @Schema(description = "备注")
    @ExcelProperty("备注")
    private String remarks;

    @Schema(description = "创建者id")
    @ExcelProperty("创建者id")
    private String creator;

    @Schema(description = "创建者名称")
    @ExcelProperty("创建者名称")
    private String creatorName;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;

    @Schema(description = "附件列表")
    private List<FileDTO> fileList;

    @Schema(description = "附件id列表")
    private List<Long> fileIdList;
}