فهرست منبع

专利上传功能 专利信息上传 说明书上传 开发完成

沈永艺 3 سال پیش
والد
کامیت
47d8301fe6

+ 4 - 0
PAS/pom.xml

@@ -125,6 +125,10 @@
             <artifactId>lombok</artifactId>
             <optional>true</optional>
         </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+        </dependency>
     </dependencies>
 
     <build>

+ 16 - 12
PAS/src/main/java/cn/cslg/pas/common/model/vo/UploadParamsVO.java

@@ -2,6 +2,7 @@ package cn.cslg.pas.common.model.vo;
 
 import cn.cslg.pas.domain.*;
 import lombok.Data;
+import org.apache.poi.ss.usermodel.PictureData;
 
 import java.util.List;
 
@@ -13,12 +14,10 @@ import java.util.List;
  */
 @Data
 public class UploadParamsVO {
-//    private String patentNo;
-//    private Integer applicationDate;
-//    /**
-//     * 专利
-//     */
-    private List<Patent> patentList;
+    /**
+     * 专利
+     */
+    private Patent patent;
 
     /**
      * 权利要求
@@ -26,14 +25,19 @@ public class UploadParamsVO {
     private List<PatentRight> patentRightList;
 
     /**
-     * 专利说明书(文本)
+     * 说明书(文本)
      */
     private PatentInstructionText patentInstructionText;
-
-    /**
-     * 专利信息代理人
-     */
-    private List<PatentAgent> patentAgentList;
+//
+//    /**
+//     * 代理人
+//     */
+//    private List<PatentAgent> patentAgentList;
+//
+//    /**
+//     * 简单族
+//     */
+//    private List<PatentSimpleFamily> patentSimpleFamilyList;
 //
 //    /**
 //     * 专利信息质押职权人

+ 5 - 0
PAS/src/main/java/cn/cslg/pas/common/model/vo/UploadSettingVO.java

@@ -57,6 +57,11 @@ public class UploadSettingVO {
          * 处理方法
          */
         private String handler;
+
+        /**
+         * 处理方法(特殊或后期加入方法) 存放Jar包路径
+         */
+        private String jarOrClassPath;
     }
 
 }

+ 1 - 1
PAS/src/main/java/cn/cslg/pas/controller/ProjectImportController.java

@@ -52,7 +52,7 @@ public class ProjectImportController {
             return Response.error("参数错误");
         }
         TaskParams taskParams = projectService.getImportPatentTaskParams(file, params.getProjectId());
-        projectService.importPatent(taskParams, params);
+        //projectService.importPatent(taskParams, params);
 
         uploadPatentBatchService.uploadPatentBatch(taskParams, params);
 

+ 0 - 4
PAS/src/main/java/cn/cslg/pas/service/PatentImageService.java

@@ -1,7 +1,6 @@
 package cn.cslg.pas.service;
 
 import cn.cslg.pas.common.core.base.Constants;
-import cn.cslg.pas.common.model.BaseEntity;
 import cn.cslg.pas.common.utils.*;
 import cn.cslg.pas.common.model.dto.UploadFileDTO;
 import cn.cslg.pas.domain.Patent;
@@ -19,13 +18,10 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
-import java.io.File;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
-import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 /**

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

@@ -53,7 +53,7 @@ public class PatentInstructionTextService extends ServiceImpl<PatentInstructionT
         }
     }
 
-    public void updatePatentInstructionText(PatentInstructionTextParams params) {
+    public void updatePatentInstructionText(PatentInstructionText params) {
         PatentInstructionText patentInstructionText = this.getPatentInstructionTextByPatentId(params.getPatentId());
         if (patentInstructionText == null) {
             patentInstructionText = new PatentInstructionText();

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

@@ -811,7 +811,7 @@ public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
                         //专利权利要求表
                         patentRightService.updatePatentRight(patentRightParams);
                         //专利说明书(文本)
-                        patentInstructionTextService.updatePatentInstructionText(patentInstructionTextParams);
+                        //patentInstructionTextService.updatePatentInstructionText(patentInstructionTextParams);
                         //代理人 (代理人关联专利)
                         patentAgentService.updatePatentAgent(patentAgentParams);
                         //专利信息质押质权人

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

@@ -1,26 +1,129 @@
 package cn.cslg.pas.service;
 
+import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.model.params.PatentInstructionTextParams;
 import cn.cslg.pas.common.model.vo.ProjectImportPatentVO;
 import cn.cslg.pas.common.model.vo.TaskParams;
 import cn.cslg.pas.common.model.vo.UploadParamsVO;
+import cn.cslg.pas.common.model.vo.UploadSettingVO;
+import cn.cslg.pas.common.utils.ExcelUtils;
 import cn.cslg.pas.common.utils.FileUtils;
 import cn.cslg.pas.common.utils.UploadPatentBatchUtil;
+import cn.cslg.pas.domain.Patent;
+import cn.cslg.pas.domain.SystemDict;
+import org.apache.poi.ss.usermodel.PictureData;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
 
 @Service
 public class UploadPatentBatchService {
     @Resource
     private final FileUtils fileUtils = new FileUtils();
+    @Resource
+    private PatentImageService patentImageService;
+    @Resource
+    private PatentService patentService;
+    @Resource
+    private SystemDictService systemDictService;
+    @Resource
+    private PatentAgencyService patentAgencyService;
+    @Resource
+    private PatentInstructionTextService patentInstructionTextService;
+
 
     public void uploadPatentBatch(TaskParams params, ProjectImportPatentVO projectImportPatentVO) {
-        //先解析Json文件 获得配置文件的Json串
-        String getSettingJson = fileUtils.analysisJsonFile();
-        //开始处理并装配数据
-        UploadParamsVO uploadParamsVO = UploadPatentBatchUtil.parsingConfigurationFiles(params, projectImportPatentVO, getSettingJson);
-        System.out.println(uploadParamsVO);
+        try {
+            //先解析Json文件 获得配置文件的Json串
+            String getSettingJson = fileUtils.analysisJsonFile();
+            //查找需求数据源的对应配置
+            List<UploadSettingVO.Column> jsonData = UploadPatentBatchUtil.parsingConfigurationFiles(projectImportPatentVO, getSettingJson);
+
+            List<SystemDict> systemDictList = systemDictService.getSystemDictListByType(Arrays.asList(Constants.PATENT_TYPE, Constants.PATENT_SIMPLE_STATUS));
+            Map<String, PictureData> pictureDataMap = ExcelUtils.getDataFromExcel(params.getPath());
+
+
+            //将数据进行装配并进行数据库操作
+            for (int i = 0; i < params.getRowList().size(); i++) {
+                //获取每一行的数据
+                Map<Object, Object> row = params.getRowList().get(i);
+                //基础数据装配
+                UploadParamsVO uploadParamsVO = UploadPatentBatchUtil.processData(row, jsonData);
+
+                getOneOrInsertOne(uploadParamsVO);
+
+                //专利信息需要特殊处理部分
+                //专利信息(摘要附图)数据装配
+                PictureData pictureData = pictureDataMap.get(String.valueOf(i + 1));
+                uploadParamsVO.getPatent().setAbstractPath(patentImageService.updatePatentImage(uploadParamsVO.getPatent().getId(), pictureData));
+                //专利信息(代理机构)数据装配
+                uploadParamsVO.getPatent().setAgencyId(patentAgencyService.getAgencyStringIdByName(uploadParamsVO.getPatent().getAgencyId()));
+
+                //权利要求数据装配
+//                for (int j = 0; j < uploadParamsVO.getPatentRightList().size(); j++) {
+//                    uploadParamsVO.getPatentRightList().get(j).setPatentId(uploadParamsVO.getPatent().getId());
+//                }
+
+                //说明书(文本)数据装配
+                uploadParamsVO.getPatentInstructionText().setPatentId(uploadParamsVO.getPatent().getId());
+
+                //将装配对象中的数据保存到数据库
+                dataToDB(uploadParamsVO);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
     }
 
+    /**
+     * @param uploadParamsVO 全局类
+     * @date 2022-7-11
+     * @name 数据库交互
+     * @description 将装配完毕的VO类向数据库中不同的表进行添加或修改操作
+     */
+    private void dataToDB(UploadParamsVO uploadParamsVO) {
+        //专利信息的数据库业务操作
+        //表:OS_PATENT
+        uploadParamsVO.getPatent().updateById();
+
+        //权利要求的数据库业务操作
+        //表:OS_PATENT_RIGHT
+        patentRightBusiness(uploadParamsVO);
+
+        //说明书(文本)的数据库业务操作
+        //表:OS_PATENT_RIGHT
+        patentInstructionTextBusiness(uploadParamsVO);
+    }
+
+    private void patentRightBusiness(UploadParamsVO uploadParamsVO) {
+
+    }
+
+    private void patentInstructionTextBusiness(UploadParamsVO uploadParamsVO) {
+        patentInstructionTextService.updatePatentInstructionText(uploadParamsVO.getPatentInstructionText());
+    }
+
+
+    /**
+     * @param uploadParamsVO 全局类
+     * @date 2022-7-11
+     * @name 工具方法
+     * @description 查询数据是否存在 如果存在 返回该条数据 如果不存在 新增一条数据
+     */
+    private void getOneOrInsertOne(UploadParamsVO uploadParamsVO) {
+        //用专利号查询该条数据是否存在
+        Patent patent = patentService.getByPatentNo(uploadParamsVO.getPatent().getPatentNo());
+
+        //如果不存在就新增一条
+        if (patent == null) {
+            uploadParamsVO.getPatent().insert();
+        } else {
+            uploadParamsVO.getPatent().setId(patent.getId());
+        }
+
+    }
 }
 

+ 1 - 1
PAS/src/main/resources/application-dev.yml

@@ -1,6 +1,6 @@
 spring:
   redis:
-    host: 127.0.0.1
+    host: 192.168.0.57
     port: 6379
     database: 2
     timeout: 1000