package cn.iocoder.yudao.module.asset.dal.dataobject.contract;

import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 车辆租赁合同 DO
 *
 * @author 芋道源码
 */
@TableName("asset_contract")
@KeySequence("asset_contract_seq")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ContractDO extends BaseDO {

    /**
     * 主键ID
     */
    @TableId
    private Long id;

    /**
     * 合同编码
     */
    private String contractCode;

    /**
     * 合同类型（1=试用 2=正式）
     */
    private Integer contractType;

    /**
     * 项目名称
     */
    private String projectName;

    /**
     * 生效日期
     */
    private LocalDate startDate;

    /**
     * 结束日期
     */
    private LocalDate endDate;

    /**
     * 付款方式
     */
    private String paymentMethod;

    /**
     * 付款周期
     */
    private String paymentCycle;

    /**
     * 签约公司（乙方）
     */
    private String signingCompany;

    /**
     * 交车省份
     */
    private String deliveryProvince;

    /**
     * 交车城市
     */
    private String deliveryCity;

    /**
     * 交车地点
     */
    private String deliveryLocation;

    /**
     * 备注
     */
    private String remark;

    /**
     * 客户ID
     */
    private Long customerId;

    /**
     * 客户名称（冗余）
     */
    private String customerName;

    /**
     * 是否三方合同
     */
    private Boolean thirdPartyEnabled;

    /**
     * 丙方客户ID
     */
    private Long thirdPartyCustomerId;

    /**
     * 丙方名称
     */
    private String thirdPartyName;

    /**
     * 业务部门ID
     */
    private Long businessDeptId;

    /**
     * 业务负责人ID
     */
    private Long businessManagerId;

    /**
     * 审批状态（0=草稿 1=审批中 2=审批通过 3=审批拒绝 4=已撤回）
     */
    private Integer approvalStatus;

    /**
     * BPM流程实例ID
     */
    private String bpmInstanceId;

    /**
     * 合同状态（0=草稿 1=待生效 2=进行中 3=已到期 4=已终止 5=已续签）
     */
    private Integer contractStatus;

    /**
     * 实际生效时间
     */
    private LocalDateTime effectiveTime;

    /**
     * 终止时间
     */
    private LocalDateTime terminateTime;

    /**
     * 终止原因
     */
    private String terminateReason;

    /**
     * 续签后的新合同ID
     */
    private Long renewedContractId;

    /**
     * 原合同ID（如果是续签合同）
     */
    private Long originalContractId;

    /**
     * 氢费承担方
     */
    private String hydrogenBearer;

    /**
     * 氢气付款方式
     */
    private String hydrogenPaymentMethod;

    /**
     * 氢气预付款
     */
    private BigDecimal hydrogenPrepay;

    /**
     * 退还车氢气单价
     */
    private BigDecimal hydrogenReturnPrice;

    /**
     * 账单计算方式
     */
    private String billingMethod;

    /**
     * 主车型
     */
    private String mainVehicleType;

}
