Files
contract-manager/common/src/main/java/com/ecep/contract/model/ProjectQuotation.java
songqq 42a8f9ab30 refactor(service): 实现VoableService接口以统一VO与实体映射逻辑
refactor(model): 重构实体类与VO类的字段映射关系
style: 调整代码格式与注释
fix: 修复部分字段映射错误
2025-09-26 12:31:08 +08:00

164 lines
4.2 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.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;
}
}