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.math.BigDecimal; import java.util.Date; 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 = "decimal(10,2) comment '合同金额'") private BigDecimal 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 = "varchar(16) default 0 comment '供应属性 0-成品 1-备件 2-大修 3-其他'") private String 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") @JsonFormat(pattern = "yyyy-MM-dd") @Schema(description = "签署日期") @Column(columnDefinition = "date comment '签署日期'") private Date signDate; @Schema(description = "签订地点") @Column(columnDefinition = "VARCHAR(255) comment '签订地点'") private String signPlace; @DateTimeFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd") @Schema(description = "生效日期") @Column(columnDefinition = "date comment '生效日期'") private Date effectiveDate; @Schema(description = "交付周期") @Column(columnDefinition = "int default 0 comment '交付周期 /机械厂销售合同(月)'") private Integer deliveryCycle; @DateTimeFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd") @Schema(description = "到期日期") @Column(columnDefinition = "date comment '到期日期'") private Date expirationDate; @Schema(description = "合同附件URL") @Column(columnDefinition = "VARCHAR(500) comment '合同附件URL'") private String attachmentUrl; @Schema(description = "合同附件名称") @Column(columnDefinition = "VARCHAR(100) comment '合同附件名称'") private String attachmentName; @Schema(description = "人员编号") @Column(columnDefinition = "VARCHAR(100) comment '人员编号'") private String nickName; @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 Date approveTime; @Schema(description = "到货节点ID") @Column(columnDefinition = "bigint comment '到货节点ID'") private Long arrivalScheduleId; @Schema(description = "验收节点ID") @Column(columnDefinition = "bigint comment '验收节点ID'") private Long acceptScheduleId; @Schema(description = "质保节点ID") @Column(columnDefinition = "bigint comment '质保节点ID'") private Long warrantyScheduleId; @Schema(description = "erp推送标识") @Column(columnDefinition = "char comment 'erp推送标识 0 未推 1 已推'") private String erpPushFlag; @Schema(description = "开票状态") @Column(columnDefinition = "char comment '开票状态 1 待开 2 可开 3 完成'") private String billingStatus; @Schema(description = "已开票金额") @Column(columnDefinition = "decimal(10,2) comment '已开票金额'") private BigDecimal billingAmout; @Schema(description = "下一阶段") @Column(columnDefinition = "VARCHAR(128) comment '下一阶段'") private String nextScheduleName; @Schema(description = "模版ID") @Column(columnDefinition = "bigint comment '模版ID'") private Long templateId; @Schema(description = "销售模式") @Column(columnDefinition = "VARCHAR(16) comment '销售模式 1 按单生产 2 先产后销 3 代储代销'") private String salesModel; @Schema(description = "已付款金额") @Column(columnDefinition = "decimal(10,2) comment '已付款金额'") private BigDecimal paidAmount; @Schema(description = "合同分类") @Column(columnDefinition = "VARCHAR(64) comment '合同分类 water_house 水电房屋租赁'") private String contractCategory; @Schema(description = "执行周期") @Column(columnDefinition = "char comment '执行周期 1/周 2/月 3/季度 4/半年 5/年'") private String execFrequency; @Schema(description = "执行次数") @Column(columnDefinition = "int comment '执行次数'") private Integer execTimes; @Schema(description = "执行日期后多少天生成应收") @Column(columnDefinition = "int comment '执行日期后多少天生成应收'") private Integer execDay; @Schema(description = "环境") @Column(columnDefinition = "VARCHAR(128) comment '环境 一煤机采购合同用'") private String environment; @Schema(description = "标准") @Column(columnDefinition = "VARCHAR(128) comment '标准 一煤机采购合同用/机械厂销售合同'") private String standard; @Schema(description = "质保期 使用月数") @Column(columnDefinition = "decimal(10,0) comment '质保期 使用月数 一煤机采购合同用/机械厂销售合同'") private BigDecimal useMonth; @Schema(description = "质保期 发货后月数") @Column(columnDefinition = "decimal(10,0) comment '质保期 发货后月数 一煤机采购合同用/机械厂销售合同'") private BigDecimal afterShipMonth; @Schema(description = "货运方式") @Column(columnDefinition = "VARCHAR(128) comment '货运方式 一煤机采购合同用'") private String shipMethod; @Schema(description = "货运地址") @Column(columnDefinition = "VARCHAR(128) comment '货运地址 一煤机采购合同用 /机械厂销售合同'") private String shipAddress; @Schema(description = "包装") @Column(columnDefinition = "VARCHAR(128) comment '包装 一煤机采购合同用'") private String packaging; @Schema(description = "维修或换货期限") @Column(columnDefinition = "decimal(10,0) comment '维修或换货期限 一煤机采购合同用'") private BigDecimal repairPeriod; @Schema(description = "维修或换货 违约金") @Column(columnDefinition = "decimal(10,2) comment '维修或换货 违约金 一煤机采购合同用'") private BigDecimal repairBreachAmount; @Schema(description = "货物数量不足 补货天数") @Column(columnDefinition = "decimal(10,0) comment '货物数量不足 补货天数 一煤机采购合同用'") private BigDecimal goodsShort; @Schema(description = "货物数量不足 违约金") @Column(columnDefinition = "decimal(10,2) comment '货物数量不足 补货天数 一煤机采购合同用'") private BigDecimal goodsShortBreachAmount; @Schema(description = "每逾期一日,承担本合同总额 违约金") @Column(columnDefinition = "decimal(10,2) comment '每逾期一日,承担本合同总额违约金 补货天数 一煤机采购合同用'") private BigDecimal overdueBreachAmount; @Schema(description = "逾期 日以上的,甲方有权解除合同") @Column(columnDefinition = "decimal(10,0) comment '逾期 日以上的,甲方有权解除合同 一煤机采购合同用'") private BigDecimal terminateContract; @Schema(description = "双方均可向 人民法院") @Column(columnDefinition = "VARCHAR(128) comment '双方均可向 人民法院 一煤机采购合同用'") private String court; @Schema(description = "本合同附件包括:") @Column(columnDefinition = "VARCHAR(128) comment '本合同附件包括: 一煤机采购合同用/机械厂销售合同'") private String contractAttchment; @Schema(description = "合同签订市") @Column(columnDefinition = "VARCHAR(128) comment '合同签订市 一煤机采购合同用'") private String city; @Schema(description = "合同签订区") @Column(columnDefinition = "VARCHAR(128) comment '合同签订区 一煤机采购合同用'") private String region; @Schema(description = "开票通知在 个工作日内") @Column(columnDefinition = "decimal(10,0) comment '开票通知在 个工作日内 一煤机采购合同用 /机械厂销售合同'") private BigDecimal invoiceNotice; @Schema(description = "合同总价税率") @Column(columnDefinition = "decimal(10,2) comment '开票通知在 个工作日内 一煤机采购合同用'") private BigDecimal contractTax; @Schema(description = "经济事项 bip推送应收用") @Column(columnDefinition = "VARCHAR(32) comment '经济事项 bip推送应收用'") private String economicMatters; @Schema(description = "erp合同编号") @Column(columnDefinition = "VARCHAR(64) comment 'erp合同编号'") private String erpContractNo; @Schema(description = "石工泵数据ID") @Column(columnDefinition = "VARCHAR(128) comment '石工泵数据ID'") private String dataId; @Schema(description = "行业") @Column(columnDefinition = "VARCHAR(50) comment '行业'") private String industryCode; @Schema(description = "区域") @Column(columnDefinition = "VARCHAR(50) comment '区域'") private String areaCode; @Schema(description = "需方在接到通知后 日内进行检验") @Column(columnDefinition = "decimal(10,0) comment '机械厂销售合同 需方在接到通知后 日内进行检验'") private BigDecimal inspectDay; @Schema(description = "收到供方通知后 日内派人验收") @Column(columnDefinition = "decimal(10,0) comment '机械厂销售合同 收到供方通知后 日内派人验收'") private BigDecimal acceptDay; @Schema(description = "延验收超过 日") @Column(columnDefinition = "decimal(10,0) comment '机械厂销售合同 延验收超过 日'") private BigDecimal delayAcceptDay; @Schema(description = "验收合格后 个工作日") @Column(columnDefinition = "decimal(10,0) comment '机械厂销售合同 验收合格后 个工作日'") private BigDecimal acceptPassDay; @Schema(description = "验收合格向供方足额支付合同总价的") @Column(columnDefinition = "decimal(10,2) comment '机械厂销售合同 验收合格向供方足额支付合同总价的'") private BigDecimal acceptPassAmount; @Schema(description = "日内开始发货") @Column(columnDefinition = "decimal(10,0) comment '机械厂销售合同 日内开始发货'") private BigDecimal deliverDay; @Schema(description = "日内发完") @Column(columnDefinition = "decimal(10,0) comment '机械厂销售合同 日内发完'") private BigDecimal deliverCompleteDay; @Schema(description = "供方代理") @Column(columnDefinition = "VARCHAR(50) comment '供方代理'") private String supplierAgent; @Schema(description = "供方代理身份证") @Column(name = "supplier_agent_id_card",columnDefinition = "VARCHAR(50) comment '供方代理身份证'") private String supplierAgentIdCard; @Schema(description = "需方代理") @Column(columnDefinition = "VARCHAR(50) comment '需方代理'") private String buyerAgent; @Schema(description = "需方代理身份证") @Column(name = "buyer_agent_id_card",columnDefinition = "VARCHAR(50) comment '需方代理身份证'") private String buyerAgentIdCard; @Schema(description = "代理权限") @Column(columnDefinition = "VARCHAR(250) comment '代理权限'") private String agentAuthority; @Schema(description = "需方向供方足额支付预付款") @Column(columnDefinition = "decimal(10,2) comment '机械厂销售合同 需方向供方足额支付预付款'") private BigDecimal advancePayment; @Schema(description = "延期支付预付款") @Column(columnDefinition = "decimal(10,2) comment '机械厂销售合同 延期支付预付款'") private BigDecimal delayPayAdvancePayment; @Schema(description = "延期支付进度款") @Column(columnDefinition = "decimal(10,2) comment '机械厂销售合同 延期支付进度款'") private BigDecimal delayPayProcessPayment; @Schema(description = "收到预付款之日起 个月内未生产完成") @Column(columnDefinition = "decimal(10,0) comment '机械厂销售合同 收到预付款之日起 个月内未生产完成'") private BigDecimal receiveAdvancePaymentMonth; @Schema(description = "并提前 各工作日通知需方验收") @Column(columnDefinition = "decimal(10,0) comment '机械厂销售合同 并提前 各工作日通知需方验收'") private BigDecimal noticeSupplierAcceptDay; @Schema(description = "每逾期 日") @Column(columnDefinition = "decimal(10,0) comment '机械厂销售合同 每逾期 日'") private BigDecimal overdueDay; @Schema(description = "按合同总价的 偿付需方损失") @Column(columnDefinition = "decimal(10,2) comment '机械厂销售合同 按合同总价的 偿付需方损失'") private BigDecimal lossAmount; @Schema(description = "违约金最高不超过合同总价的") @Column(columnDefinition = "decimal(10,2) comment '机械厂销售合同 违约金最高不超过合同总价的'") private BigDecimal liquidatedDamagesHighSupplier; @Schema(description = "需方如逾期付款每逾期 日") @Column(columnDefinition = "decimal(10,0) comment '机械厂销售合同 每逾期 日'") private BigDecimal overdueDayXf; @Schema(description = "需方如逾期付款按合同总价的 偿付需方损失") @Column(columnDefinition = "decimal(10,2) comment '机械厂销售合同 按合同总价的 偿付需方损失'") private BigDecimal lossAmountXf; @Schema(description = "违约金最高不超过合同总价的") @Column(columnDefinition = "decimal(10,2) comment '机械厂销售合同 违约金最高不超过合同总价的'") private BigDecimal liquidatedDamagesHighBuyer; @Schema(description = "本合同一式 份") @Column(columnDefinition = "decimal(10,0) comment '机械厂销售合同 本合同一式 份'") private BigDecimal totalParts; @Schema(description = "供方执 份") @Column(columnDefinition = "decimal(10,0) comment '机械厂销售合同 供方执 份'") private BigDecimal supplierPart; @Schema(description = "需方执 份") @Column(columnDefinition = "decimal(10,0) comment '机械厂销售合同 需方执 份'") private BigDecimal buyerPart; @Schema(description = "付款方式") @Column(columnDefinition = "VARCHAR(50) comment '付款方式'") private String paymentMethod; @Schema(description = "出库金额") @Column(columnDefinition = "decimal(10,2) comment '出库金额'") private BigDecimal outBoundAmout; }