package com.by4cloud.platformx.business.entity;
|
|
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.by4cloud.platformx.common.data.mybatis.BaseModel;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
import jakarta.persistence.Column;
|
import jakarta.persistence.Entity;
|
import lombok.Data;
|
import org.hibernate.annotations.Table;
|
|
import javax.persistence.Transient;
|
import java.math.BigDecimal;
|
|
import org.springframework.format.annotation.DateTimeFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
/**
|
* @author cd
|
* @description
|
* @date 2026/4/29 10:51
|
**/
|
@Data
|
@Entity
|
@Table(appliesTo = "contract", comment = "合同管理")
|
public class Contract extends BaseModel<Contract> {
|
|
|
@Schema(description = "合同编号")
|
@Column(columnDefinition = "VARCHAR(64) comment '合同编号'")
|
private String contractNo;
|
|
@Schema(description = "合同名称")
|
@Column(columnDefinition = "VARCHAR(200) comment '合同名称'")
|
private String contractName;
|
|
@Schema(description = "甲方id")
|
@Column(columnDefinition = "bigint comment '甲方id'")
|
private Long partyAId;
|
|
@Schema(description = "甲方名称")
|
@Column(columnDefinition = "VARCHAR(100) comment '甲方名称'")
|
private String partyA;
|
|
@Schema(description = "乙方id")
|
@Column(columnDefinition = "VARCHAR(100) comment '乙方id'")
|
private String partyBId;
|
|
@Schema(description = "乙方名称")
|
@Column(columnDefinition = "VARCHAR(100) comment '乙方名称'")
|
private String partyB;
|
|
@Schema(description = "合同金额")
|
@Column(columnDefinition = "double comment '合同金额'")
|
private Double amount;
|
|
@Schema(description = "币种(CNY/USD等)")
|
@Column(columnDefinition = "VARCHAR(10) default 'CNY' comment '币种'")
|
private String currency;
|
|
@Schema(description = "合同类型(0-生成式 1-备案式)")
|
@Column(columnDefinition = "tinyint(2) default 0 comment '合同类型'")
|
private Integer contractType;
|
|
@Schema(description = "合同状态(0-草稿 1-已生效 2-已终止 3-已过期)")
|
@Column(columnDefinition = "tinyint(2) default 0 comment '合同状态'")
|
private Integer contractStatus;
|
|
@Schema(description = "合同服务属性(0-产品销售 1-无形服务)")
|
@Column(columnDefinition = "tinyint(2) default 0 comment '合同服务属性'")
|
private Integer contractAttribute;
|
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
|
@Schema(description = "签署日期")
|
@Column(columnDefinition = "VARCHAR(64) comment '签署日期'")
|
private String signDate;
|
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
|
@Schema(description = "生效日期")
|
@Column(columnDefinition = "VARCHAR(64) comment '生效日期'")
|
private String effectiveDate;
|
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
|
@Schema(description = "到期日期")
|
@Column(columnDefinition = "VARCHAR(64) comment '到期日期'")
|
private String expirationDate;
|
|
@Schema(description = "合同附件URL")
|
@Column(columnDefinition = "VARCHAR(500) comment '合同附件URL'")
|
private String attachmentUrl;
|
|
@Schema(description = "备注")
|
@Column(columnDefinition = "TEXT comment '备注'")
|
private String remark;
|
|
@Schema(description = "关联父合同id(用于合同变更时指向原合同)")
|
@Column(columnDefinition = "bigint comment '关联父合同id'")
|
private Long parentId;
|
|
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
|
@Schema(description = "审批时间")
|
@Column(columnDefinition = "datetime comment '审批时间'")
|
private String approveTime;
|
|
/**
|
* 临时字段 - 用于接收审批人名称等关联查询结果
|
*/
|
@Transient
|
@TableField(exist = false)
|
@Schema(description = "审批人姓名(临时字段)")
|
private String approverName;
|
|
/**
|
* 临时字段 - 合同剩余天数
|
*/
|
@Transient
|
@TableField(exist = false)
|
@Schema(description = "合同剩余天数(临时字段)")
|
private Long remainingDays;
|
}
|