package com.kaidi.oa.domain; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.Table; import java.time.Instant; /** * 知识产权部·科研信誉加分文件专项归档。 * * 需求功能13「资料归档中心」专属 IP 分层目录: * 归档类型覆盖「知识产权证书/授权文件、科技项目验收报告、奖励荣誉、科研人员证明、 * 高企/专精特新申报资料、标准/工法、软著/商标、论文成果」等; * 支持申报类型标签(declType)、文件等级(creditLevel)、来源关联(patentId/projectId), * 提供按申报要求快速筛选与打包(pack)端点。 * * 列名均规避 SQLite 保留字(如用 ip_type 而非 type)。 */ @Entity @Table(name = "ip_sci_cred_archive") public class IpSciCredArchive { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; /** 文件编号(归档时自动生成,如 IP-2026-0001)。 */ @Column(name = "archive_no", unique = true) private String archiveNo; /** 文件名称。 */ private String title; /** * IP 专属归档类型(分层目录): * 知识产权证书 / 科技项目验收报告 / 奖励荣誉 / 科研人员证明 / * 高企申报材料 / 专精特新申报材料 / 技术标准/工法 / 软著/商标 / * 论文成果 / 代理委托文件 / 其他. */ @Column(name = "ip_type") private String ipType; /** * 科研信誉加分等级(用于高企/专精特新申报): * A类 / B类 / C类 / 普通。 */ private String creditLevel; /** * 适用申报类型(可多选,逗号分隔): * 高新技术企业 / 专精特新 / 科技型中小企业 / 省重点研发计划 / 首台套 / 工程技术中心。 */ @Column(name = "decl_type") private String declType; /** 关联专利/知识产权 id(Patent 实体)。 */ private Long patentId; /** 关联研发项目 id(RdProject 实体)。 */ private Long projectId; /** 文件路径/URL。 */ private String fileUrl; /** 上传人。 */ private String uploader; /** 归档日期(YYYY-MM-DD)。 */ private String archiveDate; /** 有效期截止日(YYYY-MM-DD),为空表示长期有效。 */ private String validUntil; /** 文件备注/摘要。 */ @Column(columnDefinition = "TEXT") private String remark; /** 状态:待审核 / 已归档 / 已失效。 */ @Column(name = "arch_status") private String archStatus; /** 是否已打包进某次申报包(标志位)。 */ private Boolean packed = Boolean.FALSE; private Instant createdAt; private Instant updatedAt; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getArchiveNo() { return archiveNo; } public void setArchiveNo(String archiveNo) { this.archiveNo = archiveNo; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getIpType() { return ipType; } public void setIpType(String ipType) { this.ipType = ipType; } public String getCreditLevel() { return creditLevel; } public void setCreditLevel(String creditLevel) { this.creditLevel = creditLevel; } public String getDeclType() { return declType; } public void setDeclType(String declType) { this.declType = declType; } public Long getPatentId() { return patentId; } public void setPatentId(Long patentId) { this.patentId = patentId; } public Long getProjectId() { return projectId; } public void setProjectId(Long projectId) { this.projectId = projectId; } public String getFileUrl() { return fileUrl; } public void setFileUrl(String fileUrl) { this.fileUrl = fileUrl; } public String getUploader() { return uploader; } public void setUploader(String uploader) { this.uploader = uploader; } public String getArchiveDate() { return archiveDate; } public void setArchiveDate(String archiveDate) { this.archiveDate = archiveDate; } public String getValidUntil() { return validUntil; } public void setValidUntil(String validUntil) { this.validUntil = validUntil; } public String getRemark() { return remark; } public void setRemark(String remark) { this.remark = remark; } public String getArchStatus() { return archStatus; } public void setArchStatus(String archStatus) { this.archStatus = archStatus; } public Boolean getPacked() { return packed; } public void setPacked(Boolean packed) { this.packed = packed; } 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; } }