Files
ERP/oa-backend/src/main/java/com/kaidi/oa/domain/IpAsset.java
T

310 lines
7.5 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.kaidi.oa.domain;
import java.math.BigDecimal;
import java.time.Instant;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Column;
import jakarta.persistence.Table;
/**
* 知识产权资产(全生命周期管理,知识产权部)。来自需求功能1:提案管理→申请流程管控→
* 官方编号与证书管理→法律状态跟踪。
*
* 单一实体承载「申请流程节点状态机」(stage) 与「法律状态」(legalStatus) 两条状态线:
* - stage(申请流程):提案 → 内部审核 → 代理委托 → 官方提交 → 已受理 → 已授权 / 已驳回 / 已撤回
* - legalStatus(法律状态):申请中 → 公开 → 实审 → 授权维持 → 失效/终止(含驳回/复审/无效宣告等特殊态)
*
* ipType:发明专利 / 实用新型 / 外观设计 / 软件著作权 / 商标 / 集成电路布图。
* rdProjectId(可空):与研发立项关联(需求功能3,"每件知识产权必须关联至少一个内部研发项目"),
* 也是业务链 6 的中段(研发立项→知识产权→申报)。
*
* 金额一律 BigDecimal;日期一律 String(YYYY-MM-DD)。本资产含申请号/证书等敏感登记信息与累计费用,
* 写口收 ADMIN/APPROVERFINANCE_PREFIXES),读口收敏感读门槛(SENSITIVE_READ_PREFIXES)。
*/
@Entity
@Table(name = "ip_asset")
public class IpAsset {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
/** 系统自动生成的提案编号(如 IP-2026-0007)。 */
private String proposalNo;
private String name;
/** 知识产权类型:发明专利 / 实用新型 / 外观设计 / 软件著作权 / 商标 / 集成电路布图。 */
private String ipType;
/** 技术分类/产品线(如 污水处理-生物脱氮 / AI算法 / 电池结构),用于布局与侵权分析。 */
private String techField;
private String applicant;
/** 发明人/设计人,逗号分隔。 */
private String inventors;
/** 关联研发立项(业务链 6 中段,可空但需求要求至少关联一个项目)。 */
private Long rdProjectId;
private String rdProjectName;
/** 关联产品线(用于技术布局与侵权分析)。 */
private String productLine;
// ---- 申请流程状态机 ----
/** 申请流程节点:提案 / 内部审核 / 代理委托 / 官方提交 / 已受理 / 已授权 / 已驳回 / 已撤回。 */
private String stage;
// ---- 法律状态线 ----
/** 法律状态:申请中 / 公开 / 实审 / 授权维持 / 复审中 / 无效宣告 / 失效终止。 */
private String legalStatus;
// ---- 官方编号与证书 ----
private String applyNo;
private String publicNo;
private String grantNo;
private String certNo;
private String applyDate;
private String grantDate;
/** 代理机构。 */
private String agency;
private String agencyContact;
/** 累计归集费用(申请费+代理费+年费+复审费…),由费用台账回写汇总。 */
private BigDecimal totalCost = BigDecimal.ZERO;
/** 被引用次数(外部检索/竞争对手技术对比回写,供投入产出分析)。 */
private Integer citedCount = 0;
/** 责任人(IP 部门跟案人)。 */
private String owner;
@Column(columnDefinition = "TEXT")
private String remark;
private Instant createdAt;
private Instant updatedAt;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getProposalNo() {
return proposalNo;
}
public void setProposalNo(String proposalNo) {
this.proposalNo = proposalNo;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getIpType() {
return ipType;
}
public void setIpType(String ipType) {
this.ipType = ipType;
}
public String getTechField() {
return techField;
}
public void setTechField(String techField) {
this.techField = techField;
}
public String getApplicant() {
return applicant;
}
public void setApplicant(String applicant) {
this.applicant = applicant;
}
public String getInventors() {
return inventors;
}
public void setInventors(String inventors) {
this.inventors = inventors;
}
public Long getRdProjectId() {
return rdProjectId;
}
public void setRdProjectId(Long rdProjectId) {
this.rdProjectId = rdProjectId;
}
public String getRdProjectName() {
return rdProjectName;
}
public void setRdProjectName(String rdProjectName) {
this.rdProjectName = rdProjectName;
}
public String getProductLine() {
return productLine;
}
public void setProductLine(String productLine) {
this.productLine = productLine;
}
public String getStage() {
return stage;
}
public void setStage(String stage) {
this.stage = stage;
}
public String getLegalStatus() {
return legalStatus;
}
public void setLegalStatus(String legalStatus) {
this.legalStatus = legalStatus;
}
public String getApplyNo() {
return applyNo;
}
public void setApplyNo(String applyNo) {
this.applyNo = applyNo;
}
public String getPublicNo() {
return publicNo;
}
public void setPublicNo(String publicNo) {
this.publicNo = publicNo;
}
public String getGrantNo() {
return grantNo;
}
public void setGrantNo(String grantNo) {
this.grantNo = grantNo;
}
public String getCertNo() {
return certNo;
}
public void setCertNo(String certNo) {
this.certNo = certNo;
}
public String getApplyDate() {
return applyDate;
}
public void setApplyDate(String applyDate) {
this.applyDate = applyDate;
}
public String getGrantDate() {
return grantDate;
}
public void setGrantDate(String grantDate) {
this.grantDate = grantDate;
}
public String getAgency() {
return agency;
}
public void setAgency(String agency) {
this.agency = agency;
}
public String getAgencyContact() {
return agencyContact;
}
public void setAgencyContact(String agencyContact) {
this.agencyContact = agencyContact;
}
public BigDecimal getTotalCost() {
return totalCost;
}
public void setTotalCost(BigDecimal totalCost) {
this.totalCost = totalCost;
}
public Integer getCitedCount() {
return citedCount;
}
public void setCitedCount(Integer citedCount) {
this.citedCount = citedCount;
}
public String getOwner() {
return owner;
}
public void setOwner(String owner) {
this.owner = owner;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public Instant getCreatedAt() {
return createdAt;
}
public void setCreatedAt(Instant createdAt) {
this.createdAt = createdAt;
}
public Instant getUpdatedAt() {
return updatedAt;
}
public void setUpdatedAt(Instant updatedAt) {
this.updatedAt = updatedAt;
}
}