瀏覽代碼

专利多数据源导入功能开发

沈永艺 3 年之前
父節點
當前提交
3094951991

+ 3 - 1
PAS/src/main/java/cn/cslg/pas/common/model/params/PatentInventorAddressParams.java

@@ -2,9 +2,11 @@ package cn.cslg.pas.common.model.params;
 
 import lombok.Data;
 
+import java.util.List;
+
 @Data
 public class PatentInventorAddressParams {
-    private String address;
+    private List<String> address;
     private String firstAddress;
     private Integer patentId;
 }

+ 6 - 1
PAS/src/main/java/cn/cslg/pas/domain/PatentInventor.java

@@ -30,12 +30,17 @@ public class PatentInventor extends BaseEntity<PatentInventor> {
     private String address;
 
     /**
+     * 国家
+     */
+    private String country;
+
+    /**
      * 备注
      */
     private String remark;
 
     /**
-     * 类型【个人、企业、研究机构、院校】 
+     * 类型【个人、企业、研究机构、院校】
      */
     private Integer type;
 

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

@@ -207,16 +207,27 @@ public class PatentInventorService extends ServiceImpl<PatentInventorMapper, Pat
 
     public void updatePatentInventorAddress(PatentInventorAddressParams params) {
         List<PatentInventor> patentInventorList = this.getPatentInventorByPatentId(params.getPatentId());
-        if (StringUtils.isNotEmpty(params.getAddress())) {
-            patentInventorList.forEach(item -> item.setAddress(params.getAddress()));
-            this.saveOrUpdateBatch(patentInventorList);
+
+        for (int i = 0; i < params.getAddress().size(); i++) {
+            if (StringUtils.isNotEmpty(params.getAddress().get(i))) {
+                patentInventorList.get(i).setAddress(params.getAddress().get(i));
+                if (params.getAddress().get(i).substring(params.getAddress().get(i).lastIndexOf(",") + 1).length() == 2) {
+                    patentInventorList.get(i).setCountry(params.getAddress().get(i).substring(params.getAddress().get(i).lastIndexOf(",") + 1).replaceAll(" ", ""));
+                } else {
+                    patentInventorList.get(i).setCountry("");
+                }
+
+            }
         }
+        this.saveOrUpdateBatch(patentInventorList);
         if (StringUtils.isNotEmpty(params.getFirstAddress())) {
             PatentInventor patentInventor = patentInventorList.stream().filter(PatentInventor::getFirst).findFirst().orElse(null);
             if (patentInventor != null) {
-                patentInventor.setAddress(params.getFirstAddress());
+                patentInventor.setAddress(params.getFirstAddress().replaceAll(" ", ""));
+                patentInventor.setCountry(params.getFirstAddress().substring(params.getFirstAddress().lastIndexOf(",") + 1).replaceAll(" ", ""));
                 patentInventor.updateById();
             }
         }
     }
+
 }

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

@@ -641,7 +641,7 @@ public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
                                         patentApplicantAddressParams.setFirstCurrentAddress(value.toString());
                                         break;
                                     case "发明人地址":
-                                        patentInventorAddressParams.setAddress(value.toString());
+                                        patentInventorAddressParams.setAddress(PatentUtils.formatValue(value.toString()));
                                         break;
                                     case "第一发明人地址":
                                         patentInventorAddressParams.setFirstAddress(value.toString());

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

@@ -1,17 +1,19 @@
 package cn.cslg.pas.service;
 
+import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.model.dto.TaskWebSocketDTO;
 import cn.cslg.pas.common.model.params.*;
 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.common.utils.*;
 import cn.cslg.pas.domain.*;
+import cn.hutool.extra.spring.SpringUtil;
 import lombok.RequiredArgsConstructor;
 import org.apache.poi.ss.usermodel.PictureData;
 import org.springframework.context.annotation.Lazy;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -21,7 +23,7 @@ import java.util.stream.Collectors;
 @Service
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class UploadPatentBatchService {
-    private final FileUtils fileUtils = new FileUtils();
+    private final FileUtils fileUtils;
     private final PatentImageService patentImageService;
     private final PatentService patentService;
     private final PatentAgencyService patentAgencyService;
@@ -39,7 +41,9 @@ public class UploadPatentBatchService {
     private final PatentLabelService patentLabelService;
     private final PatentClassNumberLinkService patentClassNumberLinkService;
 
+    @Async("singleThreadAsyncTaskExecutor")
     public void uploadPatentBatch(TaskParams params, ProjectImportPatentVO projectImportPatentVO) {
+        Integer total = params.getRowList().size();
         try {
             //先解析Json文件 获得配置文件的Json串
             String getSettingJson = fileUtils.analysisJsonFile();
@@ -63,11 +67,37 @@ public class UploadPatentBatchService {
                 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()));
+                if (uploadParamsVO.getPatent().getAgencyId() != null) {
+                    uploadParamsVO.getPatent().setAgencyId(patentAgencyService.getAgencyStringIdByName(uploadParamsVO.getPatent().getAgencyId()));
+                }
+
 
                 //将装配对象中的数据保存到数据库
                 dataToDB(uploadParamsVO, projectImportPatentVO);
+                WebSocketServer.sendInfo(Response.websocket(new TaskWebSocketDTO()
+                        .setTaskId(params.getTaskId())
+                        .setProjectId(projectImportPatentVO.getProjectId())
+                        .setComplete(false)
+                        .setIndex(i)
+                        .setTaskType(Constants.TASK_IMPORT_PATENT)
+                        .setPercentage(total == 0 ? 0 : Math.round((total.equals(i) ? (i * 1D) : (i + 1D)) / total * 100D))
+                        .setFileName("")
+                        .setOldName(params.getOldName())
+                        .setUrl("")
+                        .setTotal(total), ResponseEnum.PATENT_IMPORT_TASK_SUCCESS), params.getUserId());
             }
+            SpringUtil.getBean(ProjectService.class).setImportPatentTaskStatus(2, params.getTaskId());
+            WebSocketServer.sendInfo(Response.websocket(new TaskWebSocketDTO()
+                    .setTaskId(params.getTaskId())
+                    .setProjectId(projectImportPatentVO.getProjectId())
+                    .setComplete(true)
+                    .setIndex(total)
+                    .setTaskType(Constants.TASK_IMPORT_PATENT)
+                    .setPercentage(100L)
+                    .setFileName("")
+                    .setOldName(params.getOldName())
+                    .setUrl("")
+                    .setTotal(total), ResponseEnum.PATENT_IMPORT_TASK_SUCCESS), params.getUserId());
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -105,6 +135,7 @@ public class UploadPatentBatchService {
         //发明人
         //表:OS_PATENT_INVENTOR
         patentInventorBusiness(uploadParamsVO);
+        patentInventorAddressBusiness(uploadParamsVO);
         //申请人/权利人
         //表:OS_APPLICATION_ATTR
         //权利人
@@ -122,7 +153,7 @@ public class UploadPatentBatchService {
         patentProjectFolderPatentLinkBusiness(uploadParamsVO, projectImportPatentVO);
         //标签
         //表:OS_PATENT_LABEL
-        patentLabelBusiness(uploadParamsVO, projectImportPatentVO);
+        //patentLabelBusiness(uploadParamsVO, projectImportPatentVO);
         //分类号关联
         //表:OS_PATENT_TYPENO
         patentTypeNoBusiness(uploadParamsVO);
@@ -168,9 +199,11 @@ public class UploadPatentBatchService {
     private void patentAgentBusiness(UploadParamsVO uploadParamsVO) {
         PatentAgentParams patentAgentParams = new PatentAgentParams();
         patentAgentParams.setPatentId(uploadParamsVO.getPatent().getId());
+
         List<String> agentList = uploadParamsVO.getPatentAgentList().stream().map(PatentAgent::getName).collect(Collectors.toList());
         patentAgentParams.setAgent(agentList);
 
+
         patentAgentService.updatePatentAgent(patentAgentParams);
     }
 
@@ -219,6 +252,16 @@ public class UploadPatentBatchService {
         patentInventorService.updatePatentInventor(patentInventorParams);
     }
 
+    private void patentInventorAddressBusiness(UploadParamsVO uploadParamsVO) {
+        PatentInventorAddressParams patentInventorAddressParams = new PatentInventorAddressParams();
+        List<String> addressList = uploadParamsVO.getPatentInventorList().stream().map(PatentInventor::getAddress).collect(Collectors.toList());
+        patentInventorAddressParams.setAddress(addressList);
+        patentInventorAddressParams.setFirstAddress(uploadParamsVO.getFirstAddress());
+        patentInventorAddressParams.setPatentId(uploadParamsVO.getPatent().getId());
+
+        patentInventorService.updatePatentInventorAddress(patentInventorAddressParams);
+    }
+
     private void patentCurrentApplicationBusiness(UploadParamsVO uploadParamsVO) {
         patentApplicantLinkService.updatePatentApplicantLink(uploadParamsVO.getPatentApplicantCurrentName(), uploadParamsVO.getPatentApplicantStandardCurrentName(), 1, uploadParamsVO.getPatent().getId());
     }
@@ -243,8 +286,12 @@ public class UploadPatentBatchService {
         PatentLabelParams patentLabelParams = new PatentLabelParams();
         patentLabelParams.setPatentId(uploadParamsVO.getPatent().getId());
         patentLabelParams.setProjectId(projectImportPatentVO.getProjectId());
-        List<String> labelList = uploadParamsVO.getPatentLabelList().stream().map(PatentLabel::getName).collect(Collectors.toList());
-        patentLabelParams.setLabel(labelList);
+        if (uploadParamsVO.getPatentLabelList().get(0).getName() != null) {
+            List<String> labelList = uploadParamsVO.getPatentLabelList().stream().map(PatentLabel::getName).collect(Collectors.toList());
+            patentLabelParams.setLabel(labelList);
+
+        }
+
 
         patentLabelService.updatePatentLabel(patentLabelParams);
     }

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

@@ -5,7 +5,7 @@ spring:
     database: 2
     timeout: 1000
   datasource:
-    url: jdbc:mysql://192.168.0.57:3306/pas?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
+    url: jdbc:mysql://192.168.0.57:3306/pas_test_syy?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
     username: root
     password: 123456
     driver-class-name: com.mysql.cj.jdbc.Driver