package com.inkasso.factoring.invoicemanage.model.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.inkasso.factoring.dict.entity.Dictionary;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

public class BusinessProcessingTaskDTO {

    /**
     * 主业务ID，如立项ID、尽调ID、评审会ID等
     **/
    private Long id;

    /**
     * 业务编号
     **/
    private String businessNumber;

    /**
     * 业务名称
     **/
    private String businessName;

    /**
     * 核心企业名称
     */
    private String customerName;

    /**
     * 供应商名称
     **/
    private String supplierName;

    /**
     * 对应不同模块的编号（包括采购合同编号、验收单号、结算单号、底层编号、）
     */
    private String moduleNumber;

    /**
     * 对应不同模块状态
     */
    private Dictionary status;

    /**
     * 最近更新时间
     **/
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date gmtModified;

    /**
     * 预估结算时间（验收单管理）
     */
    private Date expectedSettlementTime;

    /**
     * 结算日期（结算单管理）
     */
    private Date settlementDate;

    /**
     * 结算金额（结算单管理）
     */
    private BigDecimal settlementAmount;

    /**
     * 合同名称（采购）（底层管理）
     */
    private String contractName;

    /**
     * 合同编号（采购）（底层管理）
     */
    private String contractNumber;

    /**
     * 应收账款结束日（底层管理）
     */
    private Date accountsReceivableEndDate;

    /**
     * 金额种类（发票管理）
     **/
    private Dictionary amountKind;

    /**
     * 开票金额(发票管理)
     **/
    private BigDecimal openAmount;
    /**
     * 流程任务ID
     **/
    private String taskId;
    /**
     * 流程定义ID
     **/
    private String procDefId;
    /**
     * 流程定义任务KEY
     **/
    private String taskDefKey;
    /**
     * 节点名称，任务名称
     **/
    private String taskName;
    /**
     * 截止时间，倒计时
     **/
    private String deadline;
    /**
     * 任务办理人
     **/
//    private User assignee;
    /**
     * 任务办理人姓名
     **/
    private String assigneeName;
    /**
     * 按钮操作显示，true表示显示指定按钮
     **/
    private boolean buttonFlag;

    /** 资方名称 **/
    private String institutionName;

    /** 批次号 **/
    private Integer quotaDisburseBatch;

    /**
     * 放款金额
     **/
    private String loanAmountTotal;

    /**
     * 币种
     */
    private String currencyCode;

    /**
     * 放款日期
     **/
    private List<Date> loanDateList;

    /**
     * 到期日
     **/
    private Date expireDate;

    /**
     * 销售合同全部列表 退还保证金按钮是否展示
     */
    private Boolean returnBondButtonFlag;

    /**
     * 贸易平台明成
     */
    private String platformName;

    /**
     * 阶段
     */
    private Dictionary stage;

    /**
     * 保证方式
     */
    private String mode;

    /**
     * 执行人
     */
    private String executor;

    /**
     *是否显示删除按钮
     */
    private Boolean delete;

    /**
     * 是否展示下载文件按钮
     */
    private Boolean downloadFileFlag;

    private String userName;

    private String comeFrom;

    private String currentStage;

    public String getCurrentStage() {
        return currentStage;
    }

    public void setCurrentStage(String currentStage) {
        this.currentStage = currentStage;
    }

    public String getComeFrom() {
        return comeFrom;
    }

    public void setComeFrom(String comeFrom) {
        this.comeFrom = comeFrom;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public Boolean getDelete() {
        return delete;
    }

    public void setDelete(Boolean delete) {
        this.delete = delete;
    }

    public String getExecutor() {
        return executor;
    }

    public void setExecutor(String executor) {
        this.executor = executor;
    }

    public String getMode() {
        return mode;
    }

    public void setMode(String mode) {
        this.mode = mode;
    }

    public Dictionary getStage() {
        return stage;
    }

    public void setStage(Dictionary stage) {
        this.stage = stage;
    }

    public String getPlatformName() {
        return platformName;
    }

    public void setPlatformName(String platformName) {
        this.platformName = platformName;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getBusinessNumber() {
        return businessNumber;
    }

    public void setBusinessNumber(String businessNumber) {
        this.businessNumber = businessNumber;
    }

    public String getBusinessName() {
        return businessName;
    }

    public void setBusinessName(String businessName) {
        this.businessName = businessName;
    }

    public String getCustomerName() {
        return customerName;
    }

    public void setCustomerName(String customerName) {
        this.customerName = customerName;
    }

    public String getSupplierName() {
        return supplierName;
    }

    public void setSupplierName(String supplierName) {
        this.supplierName = supplierName;
    }

    public String getModuleNumber() {
        return moduleNumber;
    }

    public void setModuleNumber(String moduleNumber) {
        this.moduleNumber = moduleNumber;
    }

    public Dictionary getStatus() {
        return status;
    }

    public void setStatus(Dictionary status) {
        this.status = status;
    }

    public Date getGmtModified() {
        return gmtModified;
    }

    public void setGmtModified(Date gmtModified) {
        this.gmtModified = gmtModified;
    }

    public Date getExpectedSettlementTime() {
        return expectedSettlementTime;
    }

    public void setExpectedSettlementTime(Date expectedSettlementTime) {
        this.expectedSettlementTime = expectedSettlementTime;
    }

    public Date getSettlementDate() {
        return settlementDate;
    }

    public void setSettlementDate(Date settlementDate) {
        this.settlementDate = settlementDate;
    }

    public BigDecimal getSettlementAmount() {
        return settlementAmount;
    }

    public void setSettlementAmount(BigDecimal settlementAmount) {
        this.settlementAmount = settlementAmount;
    }

    public String getContractName() {
        return contractName;
    }

    public void setContractName(String contractName) {
        this.contractName = contractName;
    }

    public String getContractNumber() {
        return contractNumber;
    }

    public void setContractNumber(String contractNumber) {
        this.contractNumber = contractNumber;
    }

    public Date getAccountsReceivableEndDate() {
        return accountsReceivableEndDate;
    }

    public void setAccountsReceivableEndDate(Date accountsReceivableEndDate) {
        this.accountsReceivableEndDate = accountsReceivableEndDate;
    }

    public Dictionary getAmountKind() {
        return amountKind;
    }

    public void setAmountKind(Dictionary amountKind) {
        this.amountKind = amountKind;
    }

    public BigDecimal getOpenAmount() {
        return openAmount;
    }

    public void setOpenAmount(BigDecimal openAmount) {
        this.openAmount = openAmount;
    }

    public String getTaskId() {
        return taskId;
    }

    public void setTaskId(String taskId) {
        this.taskId = taskId;
    }

    public String getProcDefId() {
        return procDefId;
    }

    public void setProcDefId(String procDefId) {
        this.procDefId = procDefId;
    }

    public String getTaskDefKey() {
        return taskDefKey;
    }

    public void setTaskDefKey(String taskDefKey) {
        this.taskDefKey = taskDefKey;
    }

    public String getTaskName() {
        return taskName;
    }

    public void setTaskName(String taskName) {
        this.taskName = taskName;
    }

    public String getDeadline() {
        return deadline;
    }

    public void setDeadline(String deadline) {
        this.deadline = deadline;
    }

//    public User getAssignee() {
//        return assignee;
//    }
//
//    public void setAssignee(User assignee) {
//        this.assignee = assignee;
//    }

    public String getAssigneeName() {
        return assigneeName;
    }

    public void setAssigneeName(String assigneeName) {
        this.assigneeName = assigneeName;
    }

    public boolean isButtonFlag() {
        return buttonFlag;
    }

    public void setButtonFlag(boolean buttonFlag) {
        this.buttonFlag = buttonFlag;
    }

    public String getInstitutionName() {
        return institutionName;
    }

    public void setInstitutionName(String institutionName) {
        this.institutionName = institutionName;
    }

    public Integer getQuotaDisburseBatch() {
        return quotaDisburseBatch;
    }

    public void setQuotaDisburseBatch(Integer quotaDisburseBatch) {
        this.quotaDisburseBatch = quotaDisburseBatch;
    }

    public String getLoanAmountTotal() {
        return loanAmountTotal;
    }

    public void setLoanAmountTotal(String loanAmountTotal) {
        this.loanAmountTotal = loanAmountTotal;
    }

    public List<Date> getLoanDateList() {
        return loanDateList;
    }

    public void setLoanDateList(List<Date> loanDateList) {
        this.loanDateList = loanDateList;
    }

    public Date getExpireDate() {
        return expireDate;
    }

    public void setExpireDate(Date expireDate) {
        this.expireDate = expireDate;
    }

    public String getCurrencyCode() {
        return currencyCode;
    }

    public void setCurrencyCode(String currencyCode) {
        this.currencyCode = currencyCode;
    }

    public Boolean getReturnBondButtonFlag() {
        return returnBondButtonFlag;
    }

    public void setReturnBondButtonFlag(Boolean returnBondButtonFlag) {
        this.returnBondButtonFlag = returnBondButtonFlag;
    }

    public Boolean getDownloadFileFlag() {
        return downloadFileFlag;
    }

    public void setDownloadFileFlag(Boolean downloadFileFlag) {
        this.downloadFileFlag = downloadFileFlag;
    }
}
