소스 검색

5.30 将原保存专利入库整体进行拆分完成

chendayu 2 년 전
부모
커밋
2cd57831a0

+ 6 - 0
PAS/src/main/java/cn/cslg/pas/common/model/vo/ProjectImportPatentVO.java

@@ -23,6 +23,9 @@ public class ProjectImportPatentVO {
      */
     private List<Integer> folderIds;
 
+    /**
+     * 自定义字段信息
+     */
     @Data
     public static class Field {
         /**
@@ -40,6 +43,9 @@ public class ProjectImportPatentVO {
         private String text;
     }
 
+    /**
+     * 文件夹信息
+     */
     @Data
     public static class Folder {
         /**

+ 1 - 0
PAS/src/main/java/cn/cslg/pas/service/ProjectService.java

@@ -648,6 +648,7 @@ public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
     public TaskParams getImportPatentTaskParams(MultipartFile file, Integer projectId) {
         //将包含多件专利的Excel文件上传至本地,并返回文件对象fileDTO
         UploadFileDTO fileDTO = fileUtils.uploadFile(file);
+
         //获得文件路径
         String path = fileUtils.getPath(fileDTO.getPath());
 

+ 15 - 15
PAS/src/main/java/cn/cslg/pas/service/UploadPatentBatchService.java

@@ -372,7 +372,7 @@ public class UploadPatentBatchService {
      * @name 工具方法
      * @description 查询数据是否存在 如果存在 返回该条数据 如果不存在 新增一条数据
      */
-    private void getOneOrInsertOne(UploadParamsVO uploadParamsVO) {
+    public void getOneOrInsertOne(UploadParamsVO uploadParamsVO) {
         if (uploadParamsVO.getPatent() != null) {
             uploadParamsVO.getPatent().setPatentNo(uploadParamsVO.getPatent().getPatentNo().trim());
             //用专利号查询该条数据是否存在
@@ -387,7 +387,7 @@ public class UploadPatentBatchService {
     }
 
     //权利要求
-    private void patentRightBusiness(UploadParamsVO uploadParamsVO) {
+    public void patentRightBusiness(UploadParamsVO uploadParamsVO) {
         //创建PatentRightParams对象保存权要基本信息
         PatentRightParams patentRightParams = new PatentRightParams();
         //装载专利id
@@ -411,7 +411,7 @@ public class UploadPatentBatchService {
     }
 
     //说明书文本
-    private void patentInstructionTextBusiness(UploadParamsVO uploadParamsVO) {
+    public void patentInstructionTextBusiness(UploadParamsVO uploadParamsVO) {
         //创建PatentInstructionTextParams对象装载说明书相关数据
         PatentInstructionTextParams patentInstructionTextParams = new PatentInstructionTextParams();
         //装载专利id
@@ -426,7 +426,7 @@ public class UploadPatentBatchService {
     }
 
     //代理人
-    private void patentAgentBusiness(UploadParamsVO uploadParamsVO) {
+    public void patentAgentBusiness(UploadParamsVO uploadParamsVO) {
         //创建PatentAgentParams对象装载代理人相关数据
         PatentAgentParams patentAgentParams = new PatentAgentParams();
         //装载专利id
@@ -439,7 +439,7 @@ public class UploadPatentBatchService {
     }
 
     //质押质权人
-    private void patentPledgeBusiness(UploadParamsVO uploadParamsVO) {
+    public void patentPledgeBusiness(UploadParamsVO uploadParamsVO) {
         //创建PatentPledgeParams对象装载质押质权人相关数据
         PatentPledgeParams patentPledgeParams = new PatentPledgeParams();
         //装载专利id
@@ -456,7 +456,7 @@ public class UploadPatentBatchService {
 
 
     //许可人
-    private void patentLicensorBusiness(UploadParamsVO uploadParamsVO) {
+    public void patentLicensorBusiness(UploadParamsVO uploadParamsVO) {
         //创建PatentLicensorParams对象装载许可人相关数据
         PatentLicensorParams patentLicensorParams = new PatentLicensorParams();
         //装载专利id
@@ -476,7 +476,7 @@ public class UploadPatentBatchService {
 
 
     //简单同族
-    private void patentSimplyFamilyBusiness(UploadParamsVO uploadParamsVO) {
+    public void patentSimplyFamilyBusiness(UploadParamsVO uploadParamsVO) {
         //创建PatentSimpleFamilyParams对象装载简单同族相关数据
         PatentSimpleFamilyParams patentSimpleFamilyParams = new PatentSimpleFamilyParams();
         if (uploadParamsVO.getSimpleFamily() != null) {
@@ -500,7 +500,7 @@ public class UploadPatentBatchService {
     }
 
     //发明人
-    private void patentInventorBusiness(UploadParamsVO uploadParamsVO) {
+    public void patentInventorBusiness(UploadParamsVO uploadParamsVO) {
         //创建PatentInventorParams对象装载发明人相关数据
         PatentInventorParams patentInventorParams = new PatentInventorParams();
         if (uploadParamsVO.getPatentInventorList() != null) {
@@ -526,7 +526,7 @@ public class UploadPatentBatchService {
     }
 
     //申请人(原始)/权利人(当前)
-    private void patentApplicationBusiness(UploadParamsVO uploadParamsVO) {
+    public void patentApplicationBusiness(UploadParamsVO uploadParamsVO) {
         // 根据本条数据的名字查询所有的申请人信息
         List<String> name = new ArrayList<>();
         if (uploadParamsVO.getPatentApplicantCurrentName() != null) {
@@ -552,7 +552,7 @@ public class UploadPatentBatchService {
         }
     }
 
-    private void patentApplicationAddressBusiness(UploadParamsVO uploadParamsVO) {
+    public void patentApplicationAddressBusiness(UploadParamsVO uploadParamsVO) {
         PatentApplicantAddressParams patentApplicantAddressParams = new PatentApplicantAddressParams();
         patentApplicantAddressParams.setPatentId(uploadParamsVO.getPatent().getId());
         patentApplicantAddressParams.setCurrentAddress(uploadParamsVO.getPatentApplicantCurrentAddress());
@@ -563,15 +563,15 @@ public class UploadPatentBatchService {
         patentApplicantService.updatePatentApplicantAddress(patentApplicantAddressParams);
     }
 
-    private void patentThematicPidBusiness(UploadParamsVO uploadParamsVO, ProjectImportPatentVO projectImportPatentVO) {
+    public void patentThematicPidBusiness(UploadParamsVO uploadParamsVO, ProjectImportPatentVO projectImportPatentVO) {
         projectPatentLinkService.updateProjectPatent(projectImportPatentVO.getProjectId(), uploadParamsVO.getPatent().getId());
     }
 
-    private void patentProjectFieldPatentLinkBusiness(UploadParamsVO uploadParamsVO, ProjectImportPatentVO projectImportPatentVO) {
+    public void patentProjectFieldPatentLinkBusiness(UploadParamsVO uploadParamsVO, ProjectImportPatentVO projectImportPatentVO) {
         projectFieldPatentLinkService.updateProjectFieldPatentLink(projectImportPatentVO, uploadParamsVO.getPatent().getId());
     }
 
-    private void patentProjectFolderPatentLinkBusiness(UploadParamsVO uploadParamsVO, ProjectImportPatentVO projectImportPatentVO) {
+    public void patentProjectFolderPatentLinkBusiness(UploadParamsVO uploadParamsVO, ProjectImportPatentVO projectImportPatentVO) {
         projectFolderPatentLinkService.updateProjectFolderLink(projectImportPatentVO, uploadParamsVO.getPatent().getId());
     }
 
@@ -585,7 +585,7 @@ public class UploadPatentBatchService {
         patentLabelService.updatePatentLabel(patentLabelParams);
     }
 
-    private void patentTypeNoBusiness(UploadParamsVO uploadParamsVO) {
+    public void patentTypeNoBusiness(UploadParamsVO uploadParamsVO) {
         PatentClassNumberParams patentClassNumberParams = new PatentClassNumberParams();
         if (uploadParamsVO.getMainIpc() != null) {
             patentClassNumberParams.setMainIpc(uploadParamsVO.getMainIpc());
@@ -610,7 +610,7 @@ public class UploadPatentBatchService {
         patentClassNumberLinkService.updatePatentClassNumberLink(patentClassNumberParams);
     }
 
-    private void patentAffairBusiness(UploadParamsVO uploadParamsVO) {
+    public void patentAffairBusiness(UploadParamsVO uploadParamsVO) {
         PatentAffairParams patentAffairParams = new PatentAffairParams();
         if (uploadParamsVO.getPatentAffair() != null) {
             patentAffairParams.setContent(uploadParamsVO.getPatentAffair().getContent());

+ 16 - 3
PAS/src/main/java/cn/cslg/pas/service/upLoadPatent/ThreadSafeQueue.java

@@ -1,13 +1,25 @@
 package cn.cslg.pas.service.upLoadPatent;
 
-import org.apache.poi.ss.formula.functions.T;
+import cn.cslg.pas.common.model.dto.UploadFileDTO;
+import cn.cslg.pas.common.model.vo.TaskParams;
+import cn.cslg.pas.common.utils.FileUtils;
+import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils;
+import cn.cslg.pas.service.TaskService;
+import cn.hutool.core.collection.IterUtil;
+import cn.hutool.poi.excel.ExcelUtil;
+import org.springframework.web.multipart.MultipartFile;
 
-import java.util.LinkedList;
-import java.util.Queue;
+import java.util.*;
 import java.util.concurrent.locks.Condition;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
 
+/**
+ * 以下是一个基于Java的线程安全队列类的示例代码:
+ * <p>
+ * 这个线程安全队列类使用了ReentrantLock来控制并发访问,并使用了两个Condition对象,用于阻塞线程,直到队列不再是满的或空闲的。
+ * 在enqueue()和dequeue()方法中,使用了try-finally块来确保锁始终被释放。这样,即使发生异常,也能够保证锁被释放,从而避免死锁。
+ */
 public class ThreadSafeQueue<T> {
     private Queue<T> queue = new LinkedList<>();
     private final Lock lock = new ReentrantLock();
@@ -45,6 +57,7 @@ public class ThreadSafeQueue<T> {
             lock.unlock();
         }
     }
+
 }
 
 

+ 71 - 0
PAS/src/main/java/cn/cslg/pas/service/upLoadPatent/UploadAssoProPatService.java

@@ -0,0 +1,71 @@
+package cn.cslg.pas.service.upLoadPatent;
+
+import cn.cslg.pas.common.model.vo.ProjectImportPatentVO;
+import cn.cslg.pas.common.model.vo.UploadParamsVO;
+import cn.cslg.pas.service.UploadPatentBatchService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+/**
+ * 保存与专利关联信息(如自定义字段、文件夹、标签等关联信息)并入库
+ *
+ * @Author chenyu
+ * @Date 2023/5/30
+ */
+@Service
+@RequiredArgsConstructor
+public class UploadAssoProPatService {
+    private final UploadPatentBatchService uploadPatentBatchService;
+
+    /**
+     * 保存与专利关联信息(如自定义字段、文件夹、标签等关联信息)并入库
+     *
+     * @param uploadParamsVO        专利内容实体类对象
+     * @param projectImportPatentVO 专题库关联专利信息(专题库id、自定义字段、文件夹等数据)
+     */
+    public void uploadAssoProPat(UploadParamsVO uploadParamsVO, ProjectImportPatentVO projectImportPatentVO) {
+        //专题库与专利关联入库
+        uploadAssoThemaPat(uploadParamsVO, projectImportPatentVO);
+        //自定义字段标引与专利关联入库
+        uploadAssoFieldPat(uploadParamsVO, projectImportPatentVO);
+        //文件夹与专利关联入库
+        uploadAssoPorPat(uploadParamsVO, projectImportPatentVO);
+    }
+
+    /**
+     * 保存专题库与专利关联(表"os_thematic_pid")
+     *
+     * @param uploadParamsVO        专利内容实体类对象
+     * @param projectImportPatentVO 专题库关联专利信息(专题库id、自定义字段、文件夹等数据)
+     */
+    public void uploadAssoThemaPat(UploadParamsVO uploadParamsVO, ProjectImportPatentVO projectImportPatentVO) {
+        if (uploadParamsVO.getPatent() != null) {
+            uploadPatentBatchService.patentThematicPidBusiness(uploadParamsVO, projectImportPatentVO);
+        }
+    }
+
+    /**
+     * 保存标引内容关联专利信息(表"os_patent_field_patent_link"、"os_patent_field_text")
+     *
+     * @param uploadParamsVO        专利内容实体类对象
+     * @param projectImportPatentVO 专题库关联专利信息(专题库id、自定义字段、文件夹等数据)
+     */
+    public void uploadAssoFieldPat(UploadParamsVO uploadParamsVO, ProjectImportPatentVO projectImportPatentVO) {
+        if (uploadParamsVO.getPatent() != null) {
+            uploadPatentBatchService.patentProjectFieldPatentLinkBusiness(uploadParamsVO, projectImportPatentVO);
+        }
+    }
+
+    /**
+     * 保存文件夹关联专利信息(表"os_portfolio_link")
+     *
+     * @param uploadParamsVO        专利内容实体类对象
+     * @param projectImportPatentVO 专题库关联专利信息(专题库id、自定义字段、文件夹等数据)
+     */
+    public void uploadAssoPorPat(UploadParamsVO uploadParamsVO, ProjectImportPatentVO projectImportPatentVO) {
+        if (uploadParamsVO.getPatent() != null) {
+            uploadPatentBatchService.patentProjectFolderPatentLinkBusiness(uploadParamsVO, projectImportPatentVO);
+        }
+    }
+
+}

+ 136 - 0
PAS/src/main/java/cn/cslg/pas/service/upLoadPatent/UploadPatentService.java

@@ -0,0 +1,136 @@
+package cn.cslg.pas.service.upLoadPatent;
+
+import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.model.vo.UploadParamsVO;
+import cn.cslg.pas.domain.SystemDict;
+import cn.cslg.pas.service.PatentAgencyService;
+import cn.cslg.pas.service.SystemDictService;
+import cn.cslg.pas.service.UploadPatentBatchService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * 保存专利并入库
+ *
+ * @Author chenyu
+ * @Date 2023/5/30
+ */
+@Service
+@RequiredArgsConstructor
+public class UploadPatentService {
+    private final SystemDictService systemDictService;
+    private final PatentAgencyService patentAgencyService;
+    private final UploadPatentBatchService uploadPatentBatchService;
+
+    /**
+     * 专利入库
+     *
+     * @param uploadParamsVO 专利内容实体类对象
+     */
+    public void uploadPatent(UploadParamsVO uploadParamsVO) {
+        //基础数据入库(取专利id)
+        uploadPatentBase(uploadParamsVO);
+        //著录项目入库
+        uploadPatentZhulu(uploadParamsVO);
+        //说明书文本入库
+        uploadPatentInstructionText(uploadParamsVO);
+        //权要入库
+        uploadPatentRight(uploadParamsVO);
+
+    }
+
+    /**
+     * 基础数据入库
+     *
+     * @param uploadParamsVO 专利内容实体类对象
+     */
+    public void uploadPatentBase(UploadParamsVO uploadParamsVO) {
+        //保存专利基础数据(专利表"os_patent")
+        uploadPatentBatchService.getOneOrInsertOne(uploadParamsVO);
+    }
+
+    /**
+     * 著录项目入库
+     *
+     * @param uploadParamsVO 专利内容实体类对象
+     */
+    public void uploadPatentZhulu(UploadParamsVO uploadParamsVO) {
+        //保存法律状态(表"os_patent")
+        if (uploadParamsVO.getPatent() != null) {
+            List<SystemDict> systemDictList = systemDictService.getSystemDictListByType(Collections.singletonList(Constants.PATENT_SIMPLE_STATUS));
+            Integer simpleStatus = Integer.parseInt(systemDictList.stream()
+                    .filter(systemDict -> systemDict.getType().equals(Constants.PATENT_SIMPLE_STATUS) && systemDict.getLabel().equals(uploadParamsVO.getPatentSimpleStatus()))
+                    .findFirst()
+                    .orElse(new SystemDict()).getValue());
+            uploadParamsVO.getPatent().setSimpleStatus(simpleStatus);
+            uploadParamsVO.getPatent().updateById();
+        }
+
+        //保存代理机构(代理机构表"os_patent_agency")
+        if (uploadParamsVO.getPatent() != null) {
+            if (uploadParamsVO.getPatent().getAgencyId() != null) {
+                uploadParamsVO.getPatent().setAgencyId(patentAgencyService.getAgencyStringIdByName(uploadParamsVO.getPatent().getAgencyId()));
+            }
+        }
+
+        //保存代理人(表"os_patent_agent"、表"os_patent_agent_link")
+        if (uploadParamsVO.getPatentAgentList() != null) {
+            uploadPatentBatchService.patentAgentBusiness(uploadParamsVO);
+        }
+
+        //保存简单同族(表"")
+        uploadPatentBatchService.patentSimplyFamilyBusiness(uploadParamsVO);
+
+        //保存质押质权人(表"os_patent_pledge")
+        if (uploadParamsVO.getPatentPledgeList() != null) {
+            uploadPatentBatchService.patentPledgeBusiness(uploadParamsVO);
+        }
+
+        //保存许可人(表"os_patent_licensor")
+        if (uploadParamsVO.getPatentLicensorList() != null) {
+            uploadPatentBatchService.patentLicensorBusiness(uploadParamsVO);
+        }
+
+        //保存发明人(表"os_patent_inventor"、表"os_patent_inventor_relation")
+        uploadPatentBatchService.patentInventorBusiness(uploadParamsVO);
+
+        //保存申请人(原始)/权利人(当前)(表"os_patent_applicant"、表"os_applicant_attr")
+        uploadPatentBatchService.patentApplicationBusiness(uploadParamsVO);
+
+        //保存申请人地址(表"")
+        uploadPatentBatchService.patentApplicationAddressBusiness(uploadParamsVO);
+
+        //保存分类号关联(表"os_patent_typeno")
+        uploadPatentBatchService.patentTypeNoBusiness(uploadParamsVO);
+
+        //保存事务信息(表"os_patent_affair")
+        uploadPatentBatchService.patentAffairBusiness(uploadParamsVO);
+    }
+
+    /**
+     * 权利要求入库
+     *
+     * @param uploadParamsVO 专利内容实体类对象
+     */
+    public void uploadPatentRight(UploadParamsVO uploadParamsVO) {
+        //保存权利要求(表"os_patent_right")
+        uploadPatentBatchService.patentRightBusiness(uploadParamsVO);
+    }
+
+    /**
+     * 说明书入库
+     *
+     * @param uploadParamsVO 专利内容实体类对象
+     */
+    public void uploadPatentInstructionText(UploadParamsVO uploadParamsVO) {
+        //保存说明书(表"os_patent_instruction_text")
+        if (uploadParamsVO.getPatentInstructionText() != null) {
+            uploadPatentBatchService.patentInstructionTextBusiness(uploadParamsVO);
+        }
+    }
+
+
+}