164 lines
4.2 KiB
Java
164 lines
4.2 KiB
Java
package com.ecep.contract.model;
|
||
|
||
import java.time.LocalDateTime;
|
||
import java.util.Objects;
|
||
|
||
import org.hibernate.annotations.ColumnDefault;
|
||
|
||
import com.ecep.contract.util.HibernateProxyUtils;
|
||
import com.ecep.contract.vo.ProjectQuotationVo;
|
||
|
||
import jakarta.persistence.Column;
|
||
import jakarta.persistence.Entity;
|
||
import jakarta.persistence.FetchType;
|
||
import jakarta.persistence.GeneratedValue;
|
||
import jakarta.persistence.GenerationType;
|
||
import jakarta.persistence.Id;
|
||
import jakarta.persistence.JoinColumn;
|
||
import jakarta.persistence.ManyToOne;
|
||
import jakarta.persistence.Table;
|
||
import lombok.Getter;
|
||
import lombok.Setter;
|
||
import lombok.ToString;
|
||
|
||
/**
|
||
* 项目报价
|
||
* <p>
|
||
* Approval 审批
|
||
*/
|
||
@Getter
|
||
@Setter
|
||
@Entity
|
||
@Table(name = "PROJECT_QUOTATION")
|
||
@ToString
|
||
public class ProjectQuotation
|
||
implements IdentityEntity, ProjectBasedEntity, java.io.Serializable, Voable<ProjectQuotationVo> {
|
||
private static final long serialVersionUID = 1L;
|
||
@Id
|
||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||
@Column(name = "ID", nullable = false)
|
||
private Integer id;
|
||
|
||
/**
|
||
* 项目
|
||
*/
|
||
@ManyToOne(fetch = FetchType.LAZY)
|
||
@JoinColumn(name = "PROJECT_ID")
|
||
@ToString.Exclude
|
||
private Project project;
|
||
|
||
/**
|
||
* 客户资信等级
|
||
*/
|
||
@Column(name = "LEVEL", nullable = false)
|
||
private int level;
|
||
/**
|
||
* 是否标准付款方式
|
||
*/
|
||
@ColumnDefault("0")
|
||
@Column(name = "STANDARD_PAY_WAY", nullable = false)
|
||
private boolean standardPayWay;
|
||
/**
|
||
* 非标准付款方式文本
|
||
*/
|
||
@Column(name = "NO_STANDARD_PAY_WAY_TEXT")
|
||
private String noStandardPayWayText;
|
||
/**
|
||
* 报价金额
|
||
*/
|
||
@Column(name = "AMOUNT")
|
||
private double amount;
|
||
/**
|
||
* 申请人
|
||
*/
|
||
@ManyToOne(fetch = FetchType.LAZY)
|
||
@JoinColumn(name = "APPLICANT_ID")
|
||
@ToString.Exclude
|
||
private Employee applicant;
|
||
/**
|
||
* 申请日期
|
||
*/
|
||
@Column(name = "APPLY_DATE")
|
||
private LocalDateTime applyTime;
|
||
/**
|
||
* 审核人
|
||
*/
|
||
@ManyToOne(fetch = FetchType.LAZY)
|
||
@JoinColumn(name = "AUTHORIZER_ID")
|
||
@ToString.Exclude
|
||
private Employee authorizer;
|
||
/**
|
||
* 审核时间
|
||
*/
|
||
@Column(name = "AUTHORIZER_DATE")
|
||
private LocalDateTime authorizationTime;
|
||
|
||
/**
|
||
* 审核文件
|
||
*/
|
||
@Column(name = "AUTHORIZER_FILE")
|
||
private String authorizationFile;
|
||
|
||
/**
|
||
* 说明
|
||
*/
|
||
@Column(name = "DESCRIPTION", columnDefinition = "TEXT")
|
||
private String description;
|
||
|
||
/**
|
||
* 评价表单文件
|
||
*/
|
||
@ManyToOne(fetch = FetchType.LAZY)
|
||
@JoinColumn(name = "CUS_EVAL_FILE_ID")
|
||
@ToString.Exclude
|
||
private CompanyCustomerEvaluationFormFile evaluationFile;
|
||
|
||
@Override
|
||
public boolean equals(Object object) {
|
||
if (this == object) {
|
||
return true;
|
||
}
|
||
if (object == null) {
|
||
return false;
|
||
}
|
||
if (HibernateProxyUtils.isNotEffectiveClassEquals(object, this)) {
|
||
return false;
|
||
}
|
||
ProjectQuotation that = (ProjectQuotation) object;
|
||
return getId() != null && Objects.equals(getId(), that.getId());
|
||
}
|
||
|
||
@Override
|
||
public final int hashCode() {
|
||
return HibernateProxyUtils.hashCode(this);
|
||
}
|
||
|
||
@Override
|
||
public ProjectQuotationVo toVo() {
|
||
ProjectQuotationVo vo = new ProjectQuotationVo();
|
||
vo.setId(id);
|
||
if (project != null) {
|
||
vo.setProject(project.getId());
|
||
}
|
||
vo.setLevel(level);
|
||
vo.setStandardPayWay(standardPayWay);
|
||
vo.setNoStandardPayWayText(noStandardPayWayText);
|
||
vo.setAmount(amount);
|
||
if (applicant != null) {
|
||
vo.setApplicantId(applicant.getId());
|
||
}
|
||
vo.setApplyTime(applyTime);
|
||
if (authorizer != null) {
|
||
vo.setAuthorizerId(authorizer.getId());
|
||
}
|
||
vo.setAuthorizationTime(authorizationTime);
|
||
vo.setAuthorizationFile(authorizationFile);
|
||
if (evaluationFile != null) {
|
||
vo.setEvaluationFileId(evaluationFile.getId());
|
||
}
|
||
vo.setDescription(description);
|
||
// active字段默认为false,在ProjectQuotationVo类中已经设置
|
||
return vo;
|
||
}
|
||
}
|