package com.ics.admin.domain; import com.baomidou.mybatisplus.annotation.IEnum; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.ics.common.core.domain.BaseEntity; import lombok.Data; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.math.BigDecimal; import java.util.Date; import java.util.List; /** * 客户合同对象 ics_customer_contract * * @author zzm * @date 2021-03-29 */ @Data @TableName("ics_customer_contract") public class CustomerContract extends BaseEntity { private static final long serialVersionUID = 1L; /** * 客户id */ @NotNull(message = "客户id不能为空!") private Long customerId; /** * 合同名称 */ @NotBlank(message = "合同名称不能为空!") private String name; /** * 合同编号 */ @NotBlank(message = "合同编号不能为空!") private String sn; /** * 物管合同编号 */ @NotBlank(message = "物管合同编号不能为空!") private String pmSn; /** * 管理编号 */ private String manageSn; /** * 合同状态 */ private Status status; /** * 合同状态 */ public enum Status implements IEnum { /** * 草稿 */ DRAFT("草稿", 0), /** * 待审批 */ APPROVING("待审批", 1), /** * 已审批 */ APPROVED("已审批", 2), /** * 已拒绝 */ REFUSE("已拒绝", 3), /** * 执行中 */ EXECUTING("执行中", 4), /** * 已作废 */ VOIDED("已作废", 5), /** * 已到期 */ OVERDUE("已到期", 6), /** * 已结束 */ END("已结束", 7); private String name; private int value; Status(String name, int value) { this.name = name; this.value = value; } @Override public Integer getValue() { return this.value; } public String getName() { return this.name; } public static Status parse(Integer value) { for (Status status : values()) { if (status.getValue().equals(value)) { return status; } } return null; } } /** * 合同类型(0-正式合同,1-意向合同) */ private Type type; /** * 合同类型 */ public enum Type implements IEnum { /** * 正式合同 */ OFFICIAL("正式合同", 0), /** * 意向合同 */ INTENTION("意向合同", 1); private String name; private int value; Type(String name, int value) { this.name = name; this.value = value; } @Override public Integer getValue() { return this.value; } public String getName() { return this.name; } public static Type parse(Integer value) { for (Type type : values()) { if (type.getValue().equals(value)) { return type; } } return null; } } /** * 备注 */ private String remark; /** * 需求开始时间 */ @JsonFormat(pattern = "yyyy-MM-dd") private Date needStartDate; /** * 需求结束时间 */ @JsonFormat(pattern = "yyyy-MM-dd") private Date needEndDate; /** * 租赁开始期限 */ @JsonFormat(pattern = "yyyy-MM-dd") private Date startDate; /** * 租赁结束期限 */ @JsonFormat(pattern = "yyyy-MM-dd") private Date endDate; /** * 账单收款日 */ private Long receiveRentDay; /** * 租赁共几个月 */ private Long totalMonths; /** * 签订日期 */ @JsonFormat(pattern = "yyyy-MM-dd") private Date signDate; /** * 租赁方 0:公司租赁 2:个人租赁 */ private Long lessorType; /** * 客户名称(企业名称) */ private String customerName; /** * 客户类型 */ private Long customerType; /** * 所属行业 */ private String sector; /** * 公司邮箱 */ private String email; /** * 统一信用代码 */ private String creditNo; /** * 法人 */ private String operName; /** * 渠道名称 */ private String channelName; /** * 联系电话 */ private String phone; /** * 地址 */ private String address; /** * 意向金 */ private BigDecimal intentionMoney; /** * 管理费单价 */ private BigDecimal managementFee; /** * 管理费单价单位(0-日计算,月计算) */ private String managementFeeUnit; /** * 日管理费 */ private BigDecimal managementFeeIncreaseDay; /** * 月管理费 */ private BigDecimal managementFeeIncreaseMonth; /** * 租金单价 */ private BigDecimal rentPrice; /** * 租金单价单位(0-日计算,月计算) */ private String rentPriceUnit; /** * 日租金 */ private BigDecimal rentIncreaseDay; /** * 月租金 */ private BigDecimal rentIncreaseMonth; /** * 0-按固定租金,1-按实际天数 */ private Long rentIncreaseWay; /** * 付款周期 */ private Long paymentPeriod; /** * 押金 */ private BigDecimal deposit; /** * 押几月 */ private Long depositPeriod; /** * 押金滞纳金比例 */ private BigDecimal depositOverduePercent; /** * 租金滞纳金比例 */ private BigDecimal rentOverduePercent; /** * 邮编 */ private String postCode; /** * 合同关联房间 */ @TableField(exist = false) private List customerContractRooms; /** * 合同关联账单 */ @TableField(exist = false) private List customerContractBills; /** * 合同关联其他账单 */ @TableField(exist = false) private List customerContractOtherBills; @TableField(exist = false) private Integer pageNum; @TableField(exist = false) private Integer pageSize; /** * 关联其他费用 */ @TableField(exist = false) private List customerContractOthers; }