package com.by4cloud.platformx.business.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.by4cloud.platformx.common.data.mybatis.BaseModel; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.Table; import jakarta.persistence.Transient; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; import org.springframework.format.annotation.DateTimeFormat; import java.util.List; /** * @author cd * @description 合同管理 * @date 2026/4/29 10:51 **/ @Data @Entity @Table(name = "contract") @ToString(callSuper = true) @EqualsAndHashCode(callSuper = true) public class Contract extends BaseModel { @Schema(description = "合同编号") @Column(columnDefinition = "VARCHAR(64) comment '合同编号'") private String contractNo; @Schema(description = "合同名称") @Column(columnDefinition = "VARCHAR(200) comment '合同名称'") private String contractName; @Schema(description = "甲方id") @Column(name = "party_a_id",columnDefinition = "bigint comment '甲方id'") private Long partyAId; @Schema(description = "甲方名称") @Column(name = "party_a",columnDefinition = "VARCHAR(100) comment '甲方名称'") private String partyA; @Schema(description = "乙方id") @Column(name = "party_b_id",columnDefinition = "bigint comment '乙方id'") private Long partyBId; @Schema(description = "乙方名称") @Column(name = "party_b",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 '供应属性 0-成品 1-备件 2-大修 3-其他'") private Integer supplyAttribute; @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) private String approverName; /** * 标的物 */ @Transient @TableField(exist = false) private List contractSubjectMatterList; /** * 收款阶段 */ @Transient @TableField(exist = false) private List contractPaymentScheduleList; /** * 临时字段 - 合同剩余天数 */ @Transient @TableField(exist = false) private Long remainingDays; }