Files
contract-manager/common/src/main/java/com/ecep/contract/model/Contract.java
songqq 45f7b611c5 feat: 实现VoableService接口并重构相关服务
refactor: 优化WebSocket通信和任务处理逻辑

fix: 修复客户和供应商路径选择功能

docs: 更新任务通信规则文档

build: 更新项目版本至0.0.86-SNAPSHOT

style: 清理无用导入和日志输出

test: 添加CustomerFileMoveTasker测试类

chore: 更新tasker_mapper.json注册信息
2025-09-25 18:57:17 +08:00

373 lines
9.0 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.ecep.contract.model;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Objects;
import org.hibernate.annotations.ColumnDefault;
import com.ecep.contract.ContractPayWay;
import com.ecep.contract.util.HibernateProxyUtils;
import com.ecep.contract.vo.ContractVo;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.Lob;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import jakarta.persistence.Version;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
/**
* 合同类
*/
@Getter
@Setter
@Entity
@Table(name = "CONTRACT", schema = "supplier_ms")
@ToString
public class Contract
implements IdentityEntity, NamedEntity, BasedEntity, CompanyBasedEntity, Serializable, Voable<ContractVo> {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", nullable = false)
private Integer id;
/**
* GUID合同在U8系统中的唯一标识
*/
@Column(name = "GUID")
private String guid;
@Column(name = "PAY_WAY")
@Enumerated(EnumType.ORDINAL)
private ContractPayWay payWay;
/**
* 合同编号合同编号由录入员在U8系统中录入同步导入合同编号规则参考制度文件
*/
@Column(name = "CODE")
private String code;
/**
* 合同名称合同名称由录入员在U8系统中录入同步导入
*/
@Column(name = "NAME")
private String name;
/**
* 合同状态U8 系统中的合同状态,目前含义未知
* <table>
* <caption>各个状态值的统计情况如下数据样本日期2025-02-08</caption>
* <tr>
* <th>State</th>
* <th>Count</th>
* </tr>
* <tr>
* <td>null</td>
* <td>3891</td>
* </tr>
* <tr>
* <td>A</td>
* <td>9</td>
* </tr>
* <tr>
* <td>B</td>
* <td>6499</td>
* </tr>
* <tr>
* <td>C</td>
* <td>79</td>
* </tr>
* </table>
*/
@Column(name = "STATE")
private String state;
/**
* 合同分组
*/
// @ManyToOne(fetch = FetchType.EAGER)
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "GROUP_ID")
private ContractGroup group;
/**
* 分类
*/
// @ManyToOne(fetch = FetchType.EAGER)
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "TYPE_ID")
private ContractType type;
/**
* 性质
*/
// @ManyToOne(fetch = FetchType.EAGER)
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "KIND_ID")
private ContractKind kind;
/**
* 主合同编号,一般未销售合同,子合同未采购合同(服务合同、分包合同)
*/
@Column(name = "PARENT_CODE")
private String parentCode;
/**
* 签订日期
*/
@Column(name = "ORDER_DATE")
private LocalDate orderDate;
/**
* 合同起始日期
*/
@Column(name = "START_DATE")
private LocalDate startDate;
/**
* 合同截止日期
*/
@Column(name = "END_DATE")
private LocalDate endDate;
/**
* 创建人
*/
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "SETUP_PERSON_ID")
@ToString.Exclude
private Employee setupPerson;
/**
* 提交日期
*/
@Column(name = "SETUP_DATE")
private LocalDate setupDate;
/**
* 生效人
*/
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "INURE_PERSON_ID")
@ToString.Exclude
private Employee inurePerson;
/**
* 生效日期
*/
@Column(name = "INURE_DATE")
private LocalDate inureDate;
/**
* 修改人
*/
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "VARY_PERSON_ID")
@ToString.Exclude
private Employee varyPerson;
@Column(name = "VARY_DATE")
private LocalDate varyDate;
/**
* 文件夹路径
*/
@Column(name = "PATH")
private String path;
@Lob
@Column(name = "DESCRIPTION", columnDefinition = "TEXT")
private String description;
/**
* 创建时间
*/
@Column(name = "CREATED")
private LocalDateTime created;
/**
* 所属公司
*/
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "COMPANY_ID")
@ToString.Exclude
private Company company;
/**
* 业务员
*/
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "BM_EMPLOYEE_ID")
@ToString.Exclude
private Employee employee;
/**
* 经办人
*/
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "BM_HANDLER_ID")
@ToString.Exclude
private Employee handler;
/**
* 关联项目
*/
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "PROJECT_ID")
@ToString.Exclude
private Project project;
/**
* 合同金额
*/
@Column(name = "AMOUNT")
private Double amount;
/**
* 是否标准付款方式
*/
@ColumnDefault("0")
@Column(name = "STANDARD_PAY_WAY", nullable = false)
private boolean standardPayWay;
/**
* 是否标准合同文本
*/
@ColumnDefault("0")
@Column(name = "STANDARD_CONTRACT_TEXT", nullable = false)
private boolean standardPContractText;
@Version
@ColumnDefault("0")
@Column(name = "VERSION", nullable = false)
private int version;
/**
* 总数量
*/
@Column(name = "TOTAL_QUANTITY")
private double totalQuantity;
/**
* 总金额
*/
@Column(name = "TOTAL_AMOUNT")
private double totalAmount;
/**
* 总不含税金额
*/
@Column(name = "TOTAL_UNTAX_AMOUNT")
private double totalUnTaxAmount;
/**
* 已经执行数量
*/
@Column(name = "EXEC_QUANTITY")
private double execQuantity;
/**
* 已经执行金额
*/
@Column(name = "EXEC_AMOUNT")
private double execAmount;
/**
* 已经执行不含税金额
*/
@Column(name = "EXEC_UNTAX_AMOUNT")
private double execUnTaxAmount;
@Override
public String toPrettyString() {
return getCode() + " " + getName();
}
@Override
public final boolean equals(Object object) {
if (this == object)
return true;
if (object == null)
return false;
if (HibernateProxyUtils.isNotEffectiveClassEquals(object, this)) {
return false;
}
Contract contract = (Contract) object;
return getId() != null && Objects.equals(getId(), contract.getId());
}
@Override
public final int hashCode() {
return HibernateProxyUtils.hashCode(this);
}
@Override
public ContractVo toVo() {
ContractVo vo = new ContractVo();
vo.setId(id);
vo.setGuid(getGuid());
vo.setCode(getCode());
vo.setName(name);
if (getCompany() != null) {
vo.setCompanyId(getCompany().getId());
}
if (group != null) {
vo.setGroupId(group.getId());
}
if (type != null) {
vo.setTypeId(type.getId());
}
if (kind != null) {
vo.setKindId(kind.getId());
}
if (project != null) {
vo.setProject(project.getId());
}
vo.setParentCode(getParentCode());
vo.setOrderDate(getOrderDate());
vo.setStartDate(getStartDate());
vo.setEndDate(getEndDate());
if (setupPerson != null) {
vo.setSetupPersonId(setupPerson.getId());
}
vo.setSetupDate(getSetupDate());
if (inurePerson != null) {
vo.setInurePersonId(inurePerson.getId());
}
vo.setInureDate(getInureDate());
if (varyPerson != null) {
vo.setVaryPersonId(varyPerson.getId());
}
vo.setVaryDate(getVaryDate());
if (employee != null) {
vo.setEmployeeId(employee.getId());
}
if (handler != null) {
vo.setHandlerId(handler.getId());
}
vo.setState(getState());
vo.setPath(getPath());
vo.setDescription(getDescription());
vo.setCreated(getCreated());
vo.setAmount(getAmount());
vo.setStandardPayWay(isStandardPayWay());
vo.setStandardPContractText(isStandardPContractText());
vo.setTotalQuantity(getTotalQuantity());
vo.setTotalAmount(getTotalAmount());
vo.setTotalUnTaxAmount(getTotalUnTaxAmount());
vo.setExecQuantity(getExecQuantity());
vo.setExecAmount(getExecAmount());
vo.setExecUnTaxAmount(getExecUnTaxAmount());
vo.setPayWay(getPayWay());
vo.setVersion(getVersion());
return vo;
}
}