shiyunteng
19 小时以前 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
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;
 
/**
 * 合同标的物明细实体类
 * @author xfei
 * @date 2024-01-15
 */
@Data
@Entity
@Table(name = "contract_subject_matter")
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class ContractSubjectMatter extends BaseModel<ContractSubjectMatter> {
 
    @Schema(description = "关联合同ID")
    @Column(columnDefinition = "bigint comment '关联合同ID'")
    private Long contractId;
 
    @Schema(description = "合同名称")
    @Column(columnDefinition = "VARCHAR(200) comment '合同名称'")
    private String contractName;
 
    @Schema(description = "标的物名称")
    @Column(columnDefinition = "VARCHAR(200) comment '标的物名称'")
    private String materialName;
 
    @Schema(description = "标的物编码(内部唯一编码)")
    @Column(columnDefinition = "VARCHAR(64) comment '标的物编码'")
    private String materialCode;
 
    @Schema(description = "标的物编码(内部唯一名称)")
    @Column(columnDefinition = "VARCHAR(64) comment '标的物名称(内部)'")
    private String materialInternalName;
 
    @Schema(description = "标的物规格/型号")
    @Column(columnDefinition = "VARCHAR(200) comment '标的物规格/型号'")
    private String specification;
 
    @Schema(description = "标的物品牌")
    @Column(columnDefinition = "VARCHAR(100) comment '标的物品牌'")
    private String brand;
 
    @Schema(description = "标的物分类(0-产品 1-服务)")
    @Column(columnDefinition = "tinyint(2) default 0 comment '标的物分类'")
    private Integer category;
 
    @Schema(description = "数量")
    @Column(columnDefinition = "double comment '数量'")
    private Double quantity;
 
    @Schema(description = "计量单位(个/台/吨/项/套等)")
    @Column(columnDefinition = "VARCHAR(20) comment '计量单位'")
    private String unit;
 
    @Schema(description = "单价")
    @Column(columnDefinition = "double comment '单价'")
    private Double unitPrice;
 
    @Schema(description = "税率(百分比,如13表示13%)")
    @Column(columnDefinition = "double default 0.00 comment '税率'")
    private Double taxRate;
 
    @Schema(description = "税额")
    @Column(columnDefinition = "double default 0.00 comment '税额'")
    private Double taxAmount;
 
    @Schema(description = "含税总价")
    @Column(columnDefinition = "double comment '含税总价'")
    private Double totalAmount;
 
    @Schema(description = "不含税总价")
    @Column(columnDefinition = "double comment '不含税总价'")
    private Double totalAmountExcludingTax;
 
    @Schema(description = "交货/交付地点")
    @Column(columnDefinition = "VARCHAR(500) comment '交货/交付地点'")
    private String deliveryPlace;
 
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    @Schema(description = "计划交付日期")
    @Column(columnDefinition = "VARCHAR(64) comment '计划交付日期'")
    private String plannedDeliveryDate;
 
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    @Schema(description = "实际交付日期")
    @Column(columnDefinition = "VARCHAR(64) comment '实际交付日期'")
    private String actualDeliveryDate;
 
    @Schema(description = "交付状态(0-未交付 1-部分交付 2-已交付 3-逾期)")
    @Column(columnDefinition = "tinyint(2) default 0 comment '交付状态'")
    private Integer deliveryStatus;
 
    @Schema(description = "质保期(月)")
    @Column(columnDefinition = "int default 12 comment '质保期(月)'")
    private Integer warrantyPeriod;
 
    @Schema(description = "标的物描述/备注")
    @Column(columnDefinition = "TEXT comment '标的物描述/备注'")
    private String description;
 
    @Schema(description = "附件URL(产品说明书、技术文档等)")
    @Column(columnDefinition = "VARCHAR(500) comment '附件URL'")
    private String attachmentUrl;
 
    @Schema(description = "排序号")
    @Column(columnDefinition = "int default 0 comment '排序号'")
    private Integer sortOrder;
 
    @Schema(description = "是否验收通过(0-未验收 1-已验收)")
    @Column(columnDefinition = "tinyint(1) default 0 comment '是否验收通过'")
    private Integer isAccepted;
 
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    @Schema(description = "验收时间")
    @Column(columnDefinition = "VARCHAR(64) comment '验收时间'")
    private String acceptTime;
 
 
    /**
     * 临时字段 - 已交付数量(用于交付进度统计)
     */
    @Transient
    @TableField(exist = false)
    @Schema(description = "已交付数量(临时字段)")
    private Double deliveredQuantity;
}