refactor: 优化WebSocket通信和任务处理逻辑 fix: 修复客户和供应商路径选择功能 docs: 更新任务通信规则文档 build: 更新项目版本至0.0.86-SNAPSHOT style: 清理无用导入和日志输出 test: 添加CustomerFileMoveTasker测试类 chore: 更新tasker_mapper.json注册信息
373 lines
9.0 KiB
Java
373 lines
9.0 KiB
Java
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;
|
||
}
|
||
|
||
}
|