shiyunteng
7 小时以前 74fc97aaa854caf77539107cf1e5a70a9c5dee02
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
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<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(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<ContractSubjectMatter> contractSubjectMatterList;
 
 
    /**
     * 收款阶段
     */
    @Transient
    @TableField(exist = false)
    private List<ContractPaymentSchedule> contractPaymentScheduleList;
 
    /**
     * 临时字段 - 合同剩余天数
     */
    @Transient
    @TableField(exist = false)
    private Long remainingDays;
 
}