Browse Source

Merge branch 'feature_SYY_2022-7-7' of luocaiyang/Wispro-CodeWarehouse-BackEnd into develop

沈永艺 3 years ago
parent
commit
a920688eb8
22 changed files with 570 additions and 173 deletions
  1. 6 0
      PAS/pom.xml
  2. 30 0
      PAS/src/main/java/cn/cslg/pas/common/model/vo/KeyValueVO.java
  3. 1 0
      PAS/src/main/java/cn/cslg/pas/common/model/vo/UploadParamsVO.java
  4. 5 0
      PAS/src/main/java/cn/cslg/pas/common/model/vo/UploadSettingVO.java
  5. 121 2
      PAS/src/main/java/cn/cslg/pas/common/utils/DataProcessHandler.java
  6. 20 0
      PAS/src/main/java/cn/cslg/pas/common/utils/DateUtils.java
  7. 15 9
      PAS/src/main/java/cn/cslg/pas/common/utils/ExcelUtils.java
  8. 62 0
      PAS/src/main/java/cn/cslg/pas/domain/ImportErrorLog.java
  9. 4 1
      PAS/src/main/java/cn/cslg/pas/domain/PatentAffair.java
  10. 6 0
      PAS/src/main/java/cn/cslg/pas/domain/ProjectField.java
  11. 13 0
      PAS/src/main/java/cn/cslg/pas/mapper/ImportErrorLogMapper.java
  12. 22 0
      PAS/src/main/java/cn/cslg/pas/service/ImportErrorLogService.java
  13. 20 13
      PAS/src/main/java/cn/cslg/pas/service/PatentAffairService.java
  14. 7 5
      PAS/src/main/java/cn/cslg/pas/service/PatentApplicantService.java
  15. 4 4
      PAS/src/main/java/cn/cslg/pas/service/PatentFieldService.java
  16. 5 21
      PAS/src/main/java/cn/cslg/pas/service/PatentInventorService.java
  17. 54 10
      PAS/src/main/java/cn/cslg/pas/service/PatentService.java
  18. 8 2
      PAS/src/main/java/cn/cslg/pas/service/PatentSimpleFamilyService.java
  19. 17 6
      PAS/src/main/java/cn/cslg/pas/service/ProjectFieldService.java
  20. 1 1
      PAS/src/main/java/cn/cslg/pas/service/ProjectService.java
  21. 147 97
      PAS/src/main/java/cn/cslg/pas/service/UploadPatentBatchService.java
  22. 2 2
      PAS/src/main/resources/application-test.yml

+ 6 - 0
PAS/pom.xml

@@ -26,6 +26,7 @@
         <poi.version>4.1.2</poi.version>
         <poi-tl.version>1.10.3</poi-tl.version>
         <druid.version>1.1.10</druid.version>
+        <fastjson.version>2.0.0</fastjson.version>
         <sa-token.version>1.29.0</sa-token.version>
         <springdoc.version>1.6.6</springdoc.version>
     </properties>
@@ -61,6 +62,11 @@
             <version>${druid.version}</version>
         </dependency>
         <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>${fastjson.version}</version>
+        </dependency>
+        <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-compress</artifactId>
             <version>1.21</version>

+ 30 - 0
PAS/src/main/java/cn/cslg/pas/common/model/vo/KeyValueVO.java

@@ -0,0 +1,30 @@
+package cn.cslg.pas.common.model.vo;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+/**
+ * @date 2022-7-21
+ * @description 存储键值对类型数据的实体类
+ */
+@Data
+public class KeyValueVO {
+
+    private List<InpadocData> inpadocData;
+
+    @Data
+    @Accessors(chain = true)
+    public static class InpadocData{
+        /**
+         * 名称
+         */
+        private String name;
+
+        /**
+         * 值
+         */
+        private String content;
+    }
+}

+ 1 - 0
PAS/src/main/java/cn/cslg/pas/common/model/vo/UploadParamsVO.java

@@ -16,6 +16,7 @@ public class UploadParamsVO {
      * 专利
      */
     private Patent patent;
+    private String patentSimpleStatus;
 
     /**
      * 权利要求

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

@@ -25,6 +25,11 @@ public class UploadSettingVO {
     private String sourceName;
 
     /**
+     * 数据来源中文名称
+     */
+    private String name;
+
+    /**
      * 可配置属性 包含与数据来源文件(Excel文件)中的字段相对应的属性字段 是一个数组
      */
     private List<Column> column;

+ 121 - 2
PAS/src/main/java/cn/cslg/pas/common/utils/DataProcessHandler.java

@@ -1,10 +1,15 @@
 package cn.cslg.pas.common.utils;
 
+import cn.cslg.pas.common.model.vo.KeyValueVO;
+import com.alibaba.druid.support.json.JSONUtils;
+import com.alibaba.fastjson.JSONObject;
+
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLClassLoader;
-import java.util.Arrays;
-import java.util.List;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 interface IProcessData {
@@ -87,6 +92,84 @@ class SplitBySerialNumberAndRemoveLineFeedHandler implements IProcessData {
     }
 }
 
+class PatSnapPatentAffairHandler implements IProcessData {
+    @Override
+    public Object processData(Object data, Object code) {
+        List<String> splitStr = StringUtils.changeStringToString(data.toString(), "\\|");
+
+        StringBuilder all = new StringBuilder();
+        StringBuilder one = new StringBuilder();
+        for (int i = 0; i < splitStr.size(); i += 3) {
+            if (one.toString().equals("")) {
+                one = new StringBuilder("\"inpadocData\"" + ":[" + "{" + "\"name\"" + ":" + "\"发生日期\"" + "," + "\"content\"" + ":" + "\"" + splitStr.get(i).trim() + "\"" + "}");
+            } else {
+                one.append("," + "{" + "\"name\"" + ":" + "\"发生日期\"" + "," + "\"content\"" + ":" + "\"").append(splitStr.get(i).trim()).append("\"").append("}");
+            }
+            one.append(",{").append("\"name\":\"国家\"").append(",").append("\"content\":").append("\"").append(splitStr.get(i + 2).trim()).append("\"").append("}");
+            one.append("," + "{" + "\"name\"" + ":" + "\"内容\"" + "," + "\"content\"" + ":" + "\"").append(splitStr.get(i + 1).trim()).append("\"").append("}]");
+
+            if (!one.toString().equals("")) {
+                if (!all.toString().equals("")) {
+                    all.append(",{").append(one).append("}");
+                } else {
+                    all = new StringBuilder("{" + one + "}");
+                }
+            }
+            one = new StringBuilder();
+        }
+
+        all = new StringBuilder("[" + all + "]");
+        return all.toString();
+    }
+}
+
+class IncoPatPatentAffairHandler implements IProcessData {
+    @Override
+    public Object processData(Object data, Object code) {
+        String processedData = data.toString().replaceAll("\r\n", "");
+        List<String> contentList = StringUtils.changeStringToString(processedData, "([\\u4e00-\\u9fa5]+):");
+        contentList.remove(0);
+
+        List<String> tableList = new ArrayList<>();
+        Pattern p = Pattern.compile("([\\u4e00-\\u9fa5]+):");
+        Matcher m = p.matcher(data.toString());
+        while (m.find()) {
+            tableList.add(m.group(1));
+        }
+
+        StringBuilder all = new StringBuilder();
+        StringBuilder one = new StringBuilder();
+        for (int i = 0; i < tableList.size(); i++) {
+            if (tableList.get(i).contains("法律状态公告日")) {
+                if (!one.toString().equals("")) {
+                    if (!all.toString().equals("")) {
+                        all.append(",{").append(one).append("]").append("}");
+                    } else {
+                        all = new StringBuilder("{" + one + "]}");
+                    }
+                }
+                one = new StringBuilder();
+            }
+
+            if (one.toString().equals("")) {
+                one = new StringBuilder("\"inpadocData\"" + ":[" + "{" + "\"name\"" + ":" + "\"" + tableList.get(i) + "\"" + ",\"" + "content\"" + ":" + "\"" + contentList.get(i).replaceAll(";", "") + "\"" + "}");
+            } else {
+                one.append(",").append("{" + "\"name\"" + ":").append("\"").append(tableList.get(i)).append("\"" + "," + "\"" + "content\"" + ":" + "\"").append(contentList.get(i).replaceAll(";", "")).append("\"" + "}");
+            }
+
+        }
+        if (!one.toString().equals("")) {
+            if (!all.toString().equals("")) {
+                all.append(",{").append(one).append("]").append("}");
+            } else {
+                all = new StringBuilder("{" + one + "]}");
+            }
+        }
+        all = new StringBuilder("[" + all + "]");
+        return all.toString();
+    }
+}
+
 class ProcessDataFactory {
     public static IProcessData getData(String typeName, String jarOrClassPath) {
 
@@ -110,6 +193,42 @@ class ProcessDataFactory {
         }
         return null;
     }
+
+    public static void main(String[] args) {
+        IProcessData iProcessData = new TimeHandler();
+
+        Integer b = (Integer) iProcessData.processData("2022/01/01 00:00:00", null);
+        System.out.println(b);
+
+        IProcessData incoPatPatentAffairHandler = new IncoPatPatentAffairHandler();
+        String c = "法律状态公告日:20191015;\n" +
+                "法律状态:公开;\n" +
+                "描述信息:公开;\n" +
+                "法律状态公告日:20191108;\n" +
+                "法律状态:实质审查的生效;\n" +
+                "描述信息:实质审查的生效IPC(主分类):A61B   1/045;\n" +
+                "法律状态公告日:20220325;\n" +
+                "法律状态:授权;\n" +
+                "描述信息:授权;\n";
+        String d = (String) incoPatPatentAffairHandler.processData(c, null);
+
+//        List<KeyValueVO> lst = JsonUtils.jsonToList(b, KeyValueVO.class);
+//        KeyValueVO flag;
+//        for (int i = 0; i < Objects.requireNonNull(lst).size() - 1; i++) {
+//            for (int j = 0; j < lst.size() - i - 1; j++) {
+//                if (DateUtils.strToDate(lst.get(j).getInpadocData().get(0).getContent()).compareTo(DateUtils.strToDate(lst.get(j + 1).getInpadocData().get(0).getContent())) < 0) {
+//                    flag = lst.get(j);
+//                    lst.set(j, lst.get(j + 1));
+//                    lst.set(j + 1, flag);
+//                }
+//            }
+//        }
+//        System.out.println(lst);
+
+    }
+
 }
 
 
+
+

+ 20 - 0
PAS/src/main/java/cn/cslg/pas/common/utils/DateUtils.java

@@ -141,6 +141,26 @@ public class DateUtils {
         }
     }
 
+    public static Date strToDate(String dateString) {
+        try {
+            SimpleDateFormat sf1;
+            if (dateString.contains("-")) {
+                sf1 = new SimpleDateFormat("yyyy-MM-dd");
+            } else if (dateString.contains("//")) {
+                sf1 = new SimpleDateFormat("yyyy/MM/dd");
+            } else if (dateString.contains(":")) {
+                sf1 = new SimpleDateFormat("yyyy:MM:dd");
+            } else {
+                sf1 = new SimpleDateFormat("yyyyMMdd");
+            }
+
+            Date date = sf1.parse(dateString);
+            return date;
+        } catch (Exception e) {
+            throw new RuntimeException("时间转化格式错误" + "[dateString=" + dateString + "]" + "[FORMAT_STRING=" + FORMAT_STRING + "]");
+        }
+    }
+
     /**
      * 获取今天开始的时间
      *

+ 15 - 9
PAS/src/main/java/cn/cslg/pas/common/utils/ExcelUtils.java

@@ -10,6 +10,7 @@ import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.xssf.usermodel.*;
 import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTMarker;
 
+import java.awt.*;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
@@ -70,14 +71,16 @@ public class ExcelUtils {
      */
     public static Map<String, PictureData> getPictures1(HSSFSheet sheet) throws IOException {
         Map<String, PictureData> map = new HashMap<String, PictureData>();
-        List<HSSFShape> list = sheet.getDrawingPatriarch().getChildren();
-        for (HSSFShape shape : list) {
-            if (shape instanceof HSSFPicture) {
-                HSSFPicture picture = (HSSFPicture) shape;
-                HSSFClientAnchor cAnchor = (HSSFClientAnchor) picture.getAnchor();
-                PictureData pdata = picture.getPictureData();
-                String key = String.valueOf(cAnchor.getRow1());
-                map.put(key, pdata);
+        if (sheet.getDrawingPatriarch() != null) {
+            List<HSSFShape> list = sheet.getDrawingPatriarch().getChildren();
+            for (HSSFShape shape : list) {
+                if (shape instanceof HSSFPicture) {
+                    HSSFPicture picture = (HSSFPicture) shape;
+                    HSSFClientAnchor cAnchor = (HSSFClientAnchor) picture.getAnchor();
+                    PictureData pdata = picture.getPictureData();
+                    String key = String.valueOf(cAnchor.getRow1());
+                    map.put(key, pdata);
+                }
             }
         }
         return map;
@@ -99,7 +102,10 @@ public class ExcelUtils {
                 List<XSSFShape> shapes = drawing.getShapes();
                 for (XSSFShape shape : shapes) {
                     XSSFPicture picture = (XSSFPicture) shape;
-                    XSSFClientAnchor anchor = picture.getPreferredSize();
+                    Dimension d = picture.getImageDimension();
+                    //解决图片空指针报错问题 lig  2021-06-03
+                    XSSFClientAnchor anchor = (XSSFClientAnchor) shape.getAnchor();
+                    //XSSFClientAnchor anchor = picture.getPreferredSize();
                     CTMarker marker = anchor.getFrom();
                     String key = String.valueOf(marker.getRow());
                     map.put(key, picture.getPictureData());

+ 62 - 0
PAS/src/main/java/cn/cslg/pas/domain/ImportErrorLog.java

@@ -0,0 +1,62 @@
+package cn.cslg.pas.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 批量上传失败日志表
+ *
+ * @author 沈永艺
+ * @since 2022-7-23
+ */
+@Data
+@TableName("OS_IMPORT_ERROR_LOG")
+@Accessors(chain = true)
+public class ImportErrorLog implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 专利号
+     */
+    @TableField(value = "PATENT_NO")
+    private String patentNo;
+
+    /**
+     * 错误信息
+     */
+    @TableField(value = "MISTAKE_MESSAGE")
+    private String mistakeMessage;
+
+    /**
+     * 操作人ID
+     */
+    @TableField(value = "CREATE_USER_ID")
+    private Integer createUserId;
+
+    /**
+     * 记录时间
+     */
+    @TableField(value = "CREATE_TIME")
+    private String createTime;
+
+    /**
+     * 专题库ID
+     */
+    @TableField(value = "PROJECT_ID")
+    private Integer projectId;
+
+    /**
+     * 专利ID
+     */
+    @TableField(value = "PATENT_ID")
+    private Integer patentId;
+}

+ 4 - 1
PAS/src/main/java/cn/cslg/pas/domain/PatentAffair.java

@@ -1,11 +1,14 @@
 package cn.cslg.pas.domain;
 
 import cn.cslg.pas.common.model.BaseEntity;
+import cn.cslg.pas.common.model.vo.KeyValueVO;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
+import javax.swing.text.html.ObjectView;
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -62,7 +65,7 @@ public class PatentAffair extends BaseEntity<PatentAffair> {
     private String createSimpleStatus;
 
     @TableField(exist = false)
-    private List<INPADOC> inpadoc;
+    private List<KeyValueVO> inpadoc;
 
     @Data
     public static class INPADOC {

+ 6 - 0
PAS/src/main/java/cn/cslg/pas/domain/ProjectField.java

@@ -87,4 +87,10 @@ public class ProjectField extends BaseEntity<ProjectField> {
 
     @TableField(exist = false)
     private String projectName;
+
+    @Data
+    public static class dataType {
+        private String name;
+        private Object id;
+    }
 }

+ 13 - 0
PAS/src/main/java/cn/cslg/pas/mapper/ImportErrorLogMapper.java

@@ -0,0 +1,13 @@
+package cn.cslg.pas.mapper;
+
+import cn.cslg.pas.domain.ImportErrorLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 批量上传失败日志 Mapper 接口
+ *
+ * @author 沈永艺
+ * @since 2022-7-23
+ */
+public interface ImportErrorLogMapper extends BaseMapper<ImportErrorLog> {
+}

+ 22 - 0
PAS/src/main/java/cn/cslg/pas/service/ImportErrorLogService.java

@@ -0,0 +1,22 @@
+package cn.cslg.pas.service;
+
+import cn.cslg.pas.domain.Area;
+import cn.cslg.pas.domain.ImportErrorLog;
+import cn.cslg.pas.mapper.ImportErrorLogMapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+
+/**
+ * 批量上传失败日志 服务实现类
+ *
+ * @author 沈永艺
+ * @since 2022-7-23
+ */
+@Service
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class ImportErrorLogService extends ServiceImpl<ImportErrorLogMapper, ImportErrorLog> {
+
+}

+ 20 - 13
PAS/src/main/java/cn/cslg/pas/service/PatentAffairService.java

@@ -1,6 +1,8 @@
 package cn.cslg.pas.service;
 
 import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.model.vo.KeyValueVO;
+import cn.cslg.pas.common.utils.JsonUtils;
 import cn.cslg.pas.common.utils.StringUtils;
 import cn.cslg.pas.domain.Patent;
 import cn.cslg.pas.domain.PatentAffair;
@@ -9,6 +11,9 @@ import cn.cslg.pas.common.utils.DateUtils;
 import cn.cslg.pas.mapper.PatentAffairMapper;
 import cn.cslg.pas.common.model.params.PatentAffairParams;
 import cn.cslg.pas.common.utils.PatentUtils;
+import cn.hutool.json.JSONObject;
+import com.alibaba.druid.support.json.JSONUtils;
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -16,9 +21,9 @@ import lombok.RequiredArgsConstructor;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 /**
@@ -43,22 +48,23 @@ public class PatentAffairService extends ServiceImpl<PatentAffairMapper, PatentA
         List<PatentAffair> dataList = this.list(queryWrapper);
         List<SystemDict> systemDictList = systemDictService.getSystemDictListByType(Arrays.asList(Constants.PATENT_STATUS, Constants.PATENT_SIMPLE_STATUS));
         dataList.forEach(item -> {
-            List<String> splitStr = StringUtils.changeStringToString(item.getContent(), "\\|");
-            List<PatentAffair.INPADOC> lst = new ArrayList<>();
-
-            for (int i = 0; i < splitStr.size(); i += 3) {
-                PatentAffair.INPADOC inpadoc = new PatentAffair.INPADOC();
-                inpadoc.setYear(splitStr.get(i).trim());
-                inpadoc.setContent(splitStr.get(i + 1).trim());
-                inpadoc.setCountry(splitStr.get(i + 2).trim());
-
-                lst.add(inpadoc);
+            List<KeyValueVO> lst = JsonUtils.jsonToList(item.getContent(), KeyValueVO.class);
+            KeyValueVO flag;
+            for (int i = 0; i < Objects.requireNonNull(lst).size() - 1; i++) {
+                for (int j = 0; j < lst.size() - i - 1; j++) {
+                    if (DateUtils.strToDate(lst.get(j).getInpadocData().get(0).getContent()).compareTo(DateUtils.strToDate(lst.get(j + 1).getInpadocData().get(0).getContent())) < 0) {
+                        flag = lst.get(j);
+                        lst.set(j, lst.get(j + 1));
+                        lst.set(j + 1, flag);
+                    }
+                }
             }
             item.setInpadoc(lst);
             item.setCreateTime(DateUtils.formatDate(item.getDateTime(), DateUtils.YYYY_MM_DD));
             item.setCreateSimpleStatus(systemDictList.stream().filter(systemDict -> systemDict.getType().equals(Constants.PATENT_SIMPLE_STATUS) && systemDict.getValue().equals(String.valueOf(item.getSimpleStatus()))).findFirst().orElse(new SystemDict()).getLabel());
             item.setCreateStatus(systemDictList.stream().filter(systemDict -> systemDict.getType().equals(Constants.PATENT_STATUS) && systemDict.getValue().equals(String.valueOf(item.getStatus()))).findFirst().orElse(new SystemDict()).getLabel());
         });
+
         return dataList;
     }
 
@@ -98,4 +104,5 @@ public class PatentAffairService extends ServiceImpl<PatentAffairMapper, PatentA
     public void deleteByPatentId(Integer patentId) {
         this.remove(Wrappers.<PatentAffair>lambdaQuery().eq(PatentAffair::getPatentId, patentId));
     }
+
 }

+ 7 - 5
PAS/src/main/java/cn/cslg/pas/service/PatentApplicantService.java

@@ -1,15 +1,17 @@
 package cn.cslg.pas.service;
 
-import cn.cslg.pas.common.model.BaseEntity;
+import cn.cslg.pas.common.model.dto.AreaAddressDTO;
 import cn.cslg.pas.common.model.params.PatentApplicantAddressParams;
-import cn.cslg.pas.domain.*;
+import cn.cslg.pas.common.model.vo.PatentApplicantVO;
 import cn.cslg.pas.common.utils.DateUtils;
+import cn.cslg.pas.common.utils.PatentUtils;
 import cn.cslg.pas.common.utils.Response;
 import cn.cslg.pas.common.utils.StringUtils;
-import cn.cslg.pas.common.model.vo.PatentApplicantVO;
+import cn.cslg.pas.domain.PatentApplicant;
+import cn.cslg.pas.domain.PatentApplicantLink;
+import cn.cslg.pas.domain.PatentApplicantMergeLink;
+import cn.cslg.pas.domain.SystemDict;
 import cn.cslg.pas.mapper.PatentApplicantMapper;
-import cn.cslg.pas.common.model.dto.AreaAddressDTO;
-import cn.cslg.pas.common.utils.PatentUtils;
 import cn.dev33.satoken.stp.StpUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;

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

@@ -116,7 +116,7 @@ public class PatentFieldService {
             add(new PatentField("37-0", "专利类型", Constants.SYSTEM_FIELD_QUERY, 16));
             add(new PatentField("29-17", "申请人国家", Constants.SYSTEM_FIELD_QUERY, 17));
             add(new PatentField("29-18", "申请人地区", Constants.SYSTEM_FIELD_QUERY, 18));
-            add(new PatentField("36-0", "简单法律状态", Constants.SYSTEM_FIELD_QUERY, 19));
+            add(new PatentField("36-0", "专利状态", Constants.SYSTEM_FIELD_QUERY, 19));
             add(new PatentField("40-0", "法律事件", Constants.SYSTEM_FIELD_QUERY, 20));
             add(new PatentField("26-12", "公开年", Constants.SYSTEM_FIELD_QUERY, 21));
             add(new PatentField("54-0", "标签", Constants.SYSTEM_FIELD_QUERY, 22));
@@ -137,7 +137,7 @@ public class PatentFieldService {
             add(new PatentField("bureau", "受理局", Constants.SYSTEM_FIELD_EXPORT, 13));
             add(new PatentField("simplefamily", "简单同族", Constants.SYSTEM_FIELD_EXPORT, 14));
             add(new PatentField("inpadocfamily", "Inpadoc同族", Constants.SYSTEM_FIELD_EXPORT, 15));
-            add(new PatentField("patsnapfamily", "PatSnap同族", Constants.SYSTEM_FIELD_EXPORT, 15));
+            add(new PatentField("patsnapfamily", "扩展同族", Constants.SYSTEM_FIELD_EXPORT, 15));
             add(new PatentField("intclassno", "IPC主分类号", Constants.SYSTEM_FIELD_EXPORT, 16));
             add(new PatentField("ipc", "IPC分类号", Constants.SYSTEM_FIELD_EXPORT, 16));
             add(new PatentField("intclasscpcno", "CPC分类号", Constants.SYSTEM_FIELD_EXPORT, 17));
@@ -181,7 +181,7 @@ public class PatentFieldService {
             add(new PatentField("manual", "说明书", Constants.SYSTEM_FIELD_EXPORT, 49));
             add(new PatentField("simplefamilynum", "简单同族数量", Constants.SYSTEM_FIELD_EXPORT, 50));
             add(new PatentField("inpadocfamilynum", "Inpadoc同族数量", Constants.SYSTEM_FIELD_EXPORT, 51));
-            add(new PatentField("patsnapfamilynum", "PatSnap同族数量", Constants.SYSTEM_FIELD_EXPORT, 51));
+            add(new PatentField("patsnapfamilynum", "扩展同族数量", Constants.SYSTEM_FIELD_EXPORT, 51));
             add(new PatentField("quoteno", "引用专利数量", Constants.SYSTEM_FIELD_EXPORT, 52));
             add(new PatentField("quotedno", "被引用数量", Constants.SYSTEM_FIELD_EXPORT, 53));
             add(new PatentField("quotedno3", "三年内被引用数量", Constants.SYSTEM_FIELD_EXPORT, 54));
@@ -206,7 +206,7 @@ public class PatentFieldService {
             add(new PatentField("label", "标签", Constants.SYSTEM_FIELD_PATENT_LIST, 9));
             add(new PatentField("simpleFamily", "简单同族", Constants.SYSTEM_FIELD_PATENT_LIST, 10));
             add(new PatentField("inpadocFamily", "Inpadoc同族", Constants.SYSTEM_FIELD_PATENT_LIST, 11));
-            add(new PatentField("patSnapFamily", "PatSnap同族", Constants.SYSTEM_FIELD_PATENT_LIST, 11));
+            add(new PatentField("patSnapFamily", "扩展同族", Constants.SYSTEM_FIELD_PATENT_LIST, 11));
             add(new PatentField("ipcList", "IPC分类号", Constants.SYSTEM_FIELD_PATENT_LIST, 12));
             add(new PatentField("cpcList", "CPC分类号", Constants.SYSTEM_FIELD_PATENT_LIST, 13));
             add(new PatentField("upcList", "UPC分类号", Constants.SYSTEM_FIELD_PATENT_LIST, 14));

+ 5 - 21
PAS/src/main/java/cn/cslg/pas/service/PatentInventorService.java

@@ -22,6 +22,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
@@ -203,30 +204,13 @@ public class PatentInventorService extends ServiceImpl<PatentInventorMapper, Pat
                         patentInventor.setCountry(params.getAddressList().get(i).substring(params.getAddressList().get(i).lastIndexOf(",") + 1).replaceAll(" ", ""));
                     }
                 } else {
-                    patentInventor.setAddress("");
+                    if (patentInventor.getAddress() == null || patentInventor.getAddress().equals("")) {
+                        patentInventor.setAddress("");
+                        patentInventor.setCountry("");
+                    }
                 }
-
-                //patentInventor.setType(PatentUtils.getIntKeyByOrganType(name));
                 dataList.add(patentInventor);
             }
-//            if (StringUtils.isNotEmpty(params.getFirstAddress())) {
-//                PatentInventor patentInventor = patentInventorList.stream().filter(PatentInventor::getFirst).findFirst().orElse(null);
-//                if (patentInventor != null) {
-//                    patentInventor.setAddress(params.getFirstAddress().replaceAll(" ", ""));
-//                    patentInventor.setCountry(params.getFirstAddress().substring(params.getFirstAddress().lastIndexOf(",") + 1).replaceAll(" ", ""));
-//                    patentInventor.updateById();
-//                }
-//            }
-//            List<PatentInventor> dataList = params.getNameList().stream().map(name -> {
-//                PatentInventor patentInventor = this.getPatentInventorByName(name);
-//                if (patentInventor == null) {
-//                    patentInventor = new PatentInventor();
-//                }
-//                patentInventor.setName(name);
-//                patentInventor.setMerge(false);
-//                patentInventor.setType(PatentUtils.getIntKeyByOrganType(name));
-//                return patentInventor;
-//            }).collect(Collectors.toList());
             this.saveOrUpdateBatch(dataList);
             PatentInventor first = dataList.stream().filter(item -> item.getName().equals(params.getFirstName())).findFirst().orElse(null);
             patentInventorLinkService.updatePatentInventLink(dataList.stream().map(PatentInventor::getId).collect(Collectors.toList()), params.getPatentId(), first == null ? 0 : first.getId());

+ 54 - 10
PAS/src/main/java/cn/cslg/pas/service/PatentService.java

@@ -157,13 +157,27 @@ public class PatentService extends ServiceImpl<PatentMapper, Patent> {
         Integer maxv = source.getMax().getValue();
         queryWrapper.lambda().in(Patent::getId, ids);
         switch (field) {
-            case 32: column = "quoteno"; break;
-            case 33: column = "quotedno"; break;
-            case 34: column = "inpadocfamilynum"; break;
-            case 35: column = "simplefamilynum"; break;
-            case 55: column = "patsnapfamilynum"; break;
-            case 38: column = "num2"; break;
-            case 39: column = "num3"; break;
+            case 32:
+                column = "quoteno";
+                break;
+            case 33:
+                column = "quotedno";
+                break;
+            case 34:
+                column = "inpadocfamilynum";
+                break;
+            case 35:
+                column = "simplefamilynum";
+                break;
+            case 55:
+                column = "patsnapfamilynum";
+                break;
+            case 38:
+                column = "num2";
+                break;
+            case 39:
+                column = "num3";
+                break;
             default:
                 List<Integer> patentIds = baseMapper.getCustomFieldCount(ids, field, options.get(mino), options.get(maxo), minv, maxv);
                 return StringUtils.join(patentIds.stream().distinct().collect(Collectors.toList()), ",");
@@ -190,9 +204,15 @@ public class PatentService extends ServiceImpl<PatentMapper, Patent> {
         }
         queryWrapper.in(Patent::getId, ids);
         switch (field) {
-            case 25: queryWrapper.between(Patent::getApplicationDate, startDate, endDate); break;
-            case 26: queryWrapper.between(Patent::getPublicDate, startDate, endDate); break;
-            case 27: queryWrapper.between(Patent::getPublicAccreditDate, startDate, endDate); break;
+            case 25:
+                queryWrapper.between(Patent::getApplicationDate, startDate, endDate);
+                break;
+            case 26:
+                queryWrapper.between(Patent::getPublicDate, startDate, endDate);
+                break;
+            case 27:
+                queryWrapper.between(Patent::getPublicAccreditDate, startDate, endDate);
+                break;
             default:
                 List<Integer> patentIds = baseMapper.getCustomFieldTime(ids, field, startDate, endDate);
                 return StringUtils.join(patentIds.stream().distinct().collect(Collectors.toList()), ",");
@@ -448,6 +468,30 @@ public class PatentService extends ServiceImpl<PatentMapper, Patent> {
         BeanUtils.copyProperties(patent, patentDTO);
         List<SystemDict> systemDictList = systemDictService.getSystemDictListByType(Arrays.asList(Constants.PATENT_TYPE, Constants.PATENT_SIMPLE_STATUS, Constants.COUNTRIES));
         List<PatentClassNumberLink> patentClassNumberLinkList = patentClassNumberLinkService.getPatentClassNumberLinkByPatentIds(Collections.singletonList(id));
+
+
+        if (patent.getPriorityNo() != null) {
+            patentDTO.setPriorityNo(patent.getPriorityNo());
+        } else {
+            patentDTO.setPriorityNo("");
+        }
+
+        if (patent.getPriorityCountry() != null) {
+            if (patent.getPriorityCountry().contains("\\|")) {
+                List<String> countryList = StringUtils.changeStringToString(patent.getPriorityCountry().replaceAll(" ", ""), "\\|");
+                patentDTO.setPriorityCountry(countryList);
+            } else if (patent.getPriorityCountry().contains(",")) {
+                List<String> countryList = StringUtils.changeStringToString(patent.getPriorityCountry().replaceAll(" ", ""), ",");
+                patentDTO.setPriorityCountry(countryList);
+            } else if (patent.getPriorityCountry().contains(";")) {
+                List<String> countryList = StringUtils.changeStringToString(patent.getPriorityCountry().replaceAll(" ", ""), ";");
+                patentDTO.setPriorityCountry(countryList);
+            }
+        } else {
+            patentDTO.setPriorityCountry(Collections.singletonList(""));
+        }
+
+
         patentDTO.setApplicationDate(DateUtils.formatDate(patent.getApplicationDate(), DateUtils.YYYY_MM_DD));
         patentDTO.setPriorityDate(DateUtils.formatDate(patent.getPriorityDate(), DateUtils.YYYY_MM_DD));
         patentDTO.setPublicDate(DateUtils.formatDate(patent.getPublicDate(), DateUtils.YYYY_MM_DD));

+ 8 - 2
PAS/src/main/java/cn/cslg/pas/service/PatentSimpleFamilyService.java

@@ -84,14 +84,16 @@ public class PatentSimpleFamilyService extends ServiceImpl<PatentSimpleFamilyMap
     }
 
     public void updateData(List<String> familyNo, String patentNo, Integer patentId, Integer type) {
+        //两个表 1.同族表 2.同组关联专利表
         //用专利号 获取同族关联专利表的信息
         List<PatentSimpleFamilyLink> patentSimpleFamilyLinkList = patentSimpleFamilyLinkService.getPatentSimpleFamilyLinkByPatentNo(patentNo);
         PatentSimpleFamily family;
-        //没有就新建一条
+
         if (patentSimpleFamilyLinkList == null || patentSimpleFamilyLinkList.size() == 0) {
+            //如果 同组关联专利表 内没有数据 就新建一条 同族表 的数据
             family = this.add(type);
         } else {
-            //如果用PatentNo查出来数据了
+            //如果 同组关联专利表 内有数据 那么用查询出来的List中的 同族表 的ID来获取 同族表 内的其他对应信息
             PatentSimpleFamily patentSimpleFamily = this.getPatentSimpleFamilyByIdsAndType(patentSimpleFamilyLinkList.stream().map(PatentSimpleFamilyLink::getFamilyId).collect(Collectors.toList()), type);
             if (patentSimpleFamily == null) {
                 family = this.add(type);
@@ -110,6 +112,8 @@ public class PatentSimpleFamilyService extends ServiceImpl<PatentSimpleFamilyMap
                 temp.setFamilyId(family.getId());
                 temp.updateById();
             }
+
+
             Patent patent1 = patentService.getPublicDateAndPatentNoByPatentNo(patent);
             Patent patent2 = patentService.getPublicDateAndPatentNoByPatentNo(family.getPatentNo());
             if (patent1 != null) {
@@ -142,6 +146,8 @@ public class PatentSimpleFamilyService extends ServiceImpl<PatentSimpleFamilyMap
                 family.setPatentNo(patent2.getPatentNo());
                 patent2.updateById();
             }
+
+
             if (StringUtils.isEmpty(family.getPatentNo())) {
                 family.setPatentNo(patent);
             } else {

+ 17 - 6
PAS/src/main/java/cn/cslg/pas/service/ProjectFieldService.java

@@ -1,18 +1,15 @@
 package cn.cslg.pas.service;
 
-import cn.cslg.pas.common.core.base.EStatus;
-import cn.cslg.pas.common.model.BaseEntity;
 import cn.cslg.pas.common.model.dto.PatentDTO;
+import cn.cslg.pas.common.model.vo.ProjectFieldVO;
+import cn.cslg.pas.common.model.vo.UploadSettingVO;
 import cn.cslg.pas.common.utils.*;
 import cn.cslg.pas.domain.*;
 import cn.cslg.pas.mapper.ProjectFieldMapper;
-import cn.cslg.pas.common.model.vo.ProjectFieldVO;
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.lang.tree.Tree;
-import cn.hutool.core.lang.tree.TreeUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.RequiredArgsConstructor;
@@ -42,6 +39,7 @@ public class ProjectFieldService extends ServiceImpl<ProjectFieldMapper, Project
     private final ProjectFieldTextService projectFieldTextService;
     private final ProjectFieldPatentLinkService projectFieldPatentLinkService;
     private final PatentService patentService;
+    private final FileUtils fileUtils;
 
     public List<PatentDTO.Field> getPatentFieldByPatentIdAndProjectId(Integer projectId, Integer patentId) {
         List<PatentDTO.Field> dataList = new ArrayList<>();
@@ -185,6 +183,19 @@ public class ProjectFieldService extends ServiceImpl<ProjectFieldMapper, Project
         result.put("index", indexs);
         result.put("classify", classifys);
         result.put("folder", projectFolderService.getProjectFolderTreeNode(projectId, folderList));
+
+        //数据源名称
+        String getSettingJson = fileUtils.analysisJsonFile();
+        List<UploadSettingVO> settingJsonList = JsonUtils.jsonToList(getSettingJson, UploadSettingVO.class);
+        List<ProjectField.dataType> dataTypesLst = new ArrayList<>();
+        Objects.requireNonNull(settingJsonList).forEach(item -> {
+            ProjectField.dataType dataType = new ProjectField.dataType();
+            dataType.setId(item.getSourceId());
+            dataType.setName(item.getName());
+            dataTypesLst.add(dataType);
+        });
+        result.put("dataType", dataTypesLst);
+
         return result;
     }
 
@@ -478,7 +489,7 @@ public class ProjectFieldService extends ServiceImpl<ProjectFieldMapper, Project
         projectFieldList.add(this.buildProjectFieldEntity(33, "被引用专利数量", 94, 3));
         projectFieldList.add(this.buildProjectFieldEntity(34, "inpadoc同族数量", 94, 3));
         projectFieldList.add(this.buildProjectFieldEntity(35, "简单同族数量", 94, 3));
-        projectFieldList.add(this.buildProjectFieldEntity(55, "PatSnap同族数量", 94, 3));
+        projectFieldList.add(this.buildProjectFieldEntity(55, "扩展同族数量", 94, 3));
         projectFieldList.add(this.buildProjectFieldEntity(36, "法律状态", 95, 1));
         projectFieldList.add(this.buildProjectFieldEntity(37, "专利类型", 95, 1));
         projectFieldList.add(this.buildProjectFieldEntity(38, "权利要求数量", 95, 3));

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

@@ -819,7 +819,7 @@ public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
                         //专利信息许可人
                         //patentLicensorService.updatePatentLicensor(patentLicensorParams);
                         //专利信息事务信息
-                        //patentAffairService.updatePatientAffair(patentAffairParams);
+                        patentAffairService.updatePatientAffair(patentAffairParams);
                         //权利人
                         //patentApplicantLinkService.updatePatentApplicantLink(patentApplicantCurrentName, patentApplicantStandardCurrentName, 1, patent.getId());
                         //申请人

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

@@ -9,17 +9,18 @@ import cn.cslg.pas.common.model.vo.UploadParamsVO;
 import cn.cslg.pas.common.model.vo.UploadSettingVO;
 import cn.cslg.pas.common.utils.*;
 import cn.cslg.pas.domain.*;
+import cn.cslg.pas.mapper.ImportErrorLogMapper;
 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 org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.text.SimpleDateFormat;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Service
@@ -44,6 +45,8 @@ public class UploadPatentBatchService {
     private final PatentLabelService patentLabelService;
     private final PatentClassNumberLinkService patentClassNumberLinkService;
     private final PatentAffairService patentAffairService;
+    private final ImportErrorLogMapper importErrorLogMapper;
+    private static int FLAG = 0;
 
     @Async("singleThreadAsyncTaskExecutor")
     public void uploadPatentBatch(TaskParams params, ProjectImportPatentVO projectImportPatentVO) {
@@ -84,6 +87,7 @@ public class UploadPatentBatchService {
                 //将装配对象中的数据保存到数据库
                 dataToDB(params, uploadParamsVO, projectImportPatentVO);
 
+                //通过WebSocket 在每一次循环结束后 向前端发送完成进度
                 WebSocketServer.sendInfo(Response.websocket(new TaskWebSocketDTO()
                         .setTaskId(params.getTaskId())
                         .setProjectId(projectImportPatentVO.getProjectId())
@@ -96,6 +100,7 @@ public class UploadPatentBatchService {
                         .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())
@@ -110,6 +115,12 @@ public class UploadPatentBatchService {
                     .setTotal(total), ResponseEnum.PATENT_IMPORT_TASK_SUCCESS), params.getUserId());
         } catch (Exception e) {
             e.printStackTrace();
+            SpringUtil.getBean(ProjectService.class).setImportPatentTaskStatus(3, params.getTaskId());
+            if (FLAG > 0) {
+                int successCount = total - FLAG;
+                WebSocketServer.sendInfo(Response.error("部分数据上传成功" + "\n" + "成功条数:" + successCount + "失败条数:" + FLAG), params.getUserId());
+            }
+            FLAG = 0;
         }
     }
 
@@ -119,73 +130,84 @@ public class UploadPatentBatchService {
      * @name 数据库交互
      * @description 将装配完毕的VO类向数据库中不同的表进行添加或修改操作
      */
-    private void dataToDB(TaskParams params, UploadParamsVO uploadParamsVO, ProjectImportPatentVO projectImportPatentVO) {
-        //专利信息 OS_PATENT
-        if (uploadParamsVO.getPatent() != null) {
-            uploadParamsVO.getPatent().updateById();
-        }
-        //权利要求 OS_PATENT_RIGHT
-        if (uploadParamsVO.getPatentRight() != null && uploadParamsVO.getSelfContent() != null) {
+    @Transactional(rollbackFor = Exception.class)
+    public void dataToDB(TaskParams params, UploadParamsVO uploadParamsVO, ProjectImportPatentVO projectImportPatentVO) {
+        try {
+            //专利信息 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_RIGHT
             patentRightBusiness(uploadParamsVO);
-        }
-        //说明书(文本) OS_PATENT_INSTRUCTION_TEXT
-        if (uploadParamsVO.getPatentInstructionText() != null) {
-            patentInstructionTextBusiness(uploadParamsVO);
-        }
-        //代理人 OS_PATENT_AGENT
-        if (uploadParamsVO.getPatentAgentList() != null) {
-            patentAgentBusiness(uploadParamsVO);
-        }
-        //质押质权人 OS_PATENT_PLEDGE
-        if (uploadParamsVO.getPatentPledgeList() != null) {
-            patentPledgeBusiness(uploadParamsVO);
-        }
-        //许可人 OS_PATENT_LICENSOR
-        if (uploadParamsVO.getPatentLicensorList() != null) {
-            patentLicensorBusiness(uploadParamsVO);
-        }
-        //简单同族 OS_PATENT_SIMPLEFAMILY
-        if (uploadParamsVO.getSimpleFamily() != null && uploadParamsVO.getPatSnapFamily() != null && uploadParamsVO.getInpadocFamily() != null) {
+            //说明书(文本) OS_PATENT_INSTRUCTION_TEXT
+            if (uploadParamsVO.getPatentInstructionText() != null) {
+                patentInstructionTextBusiness(uploadParamsVO);
+            }
+            //代理人 OS_PATENT_AGENT
+            if (uploadParamsVO.getPatentAgentList() != null) {
+                patentAgentBusiness(uploadParamsVO);
+            }
+            //质押质权人 OS_PATENT_PLEDGE
+            if (uploadParamsVO.getPatentPledgeList() != null) {
+                patentPledgeBusiness(uploadParamsVO);
+            }
+            //许可人 OS_PATENT_LICENSOR
+            if (uploadParamsVO.getPatentLicensorList() != null) {
+                patentLicensorBusiness(uploadParamsVO);
+            }
+            //简单同族 OS_PATENT_SIMPLEFAMILY
             patentSimplyFamilyBusiness(uploadParamsVO);
-        }
-        //发明人 OS_PATENT_INVENTOR
-        if (uploadParamsVO.getPatentInventorList() != null && uploadParamsVO.getFirstName() != null && uploadParamsVO.getFirstAddress() != null) {
+            //发明人 OS_PATENT_INVENTOR
             patentInventorBusiness(uploadParamsVO);
-        }
-//        //申请人/权利人 OS_APPLICATION_ATTR
-//        //权利人
-//        patentCurrentApplicationBusiness(uploadParamsVO);
-//        //申请人
-//        patentOriginalApplicationBusiness(uploadParamsVO);
-        //专题库关联专利信息 OS_THEMATIC_PID
-        if (uploadParamsVO.getPatent() != null) {
-            patentThematicPidBusiness(uploadParamsVO, projectImportPatentVO);
-        }
-
-        //标引内容关联专利信息 OS_PATENT_FIELD_PATENT_LINK
-        if (uploadParamsVO.getPatent() != null) {
-
-            patentProjectFieldPatentLinkBusiness(uploadParamsVO, projectImportPatentVO);
-        }
-        //文件夹管理 OS_PORTFOLIO_LINK
-        if (uploadParamsVO.getPatent() != null) {
-            patentProjectFolderPatentLinkBusiness(uploadParamsVO, projectImportPatentVO);
-        }
-        //标签 OS_PATENT_LABEL
-        if (uploadParamsVO.getPatentLabelList() != null) {
-            patentLabelBusiness(uploadParamsVO, projectImportPatentVO);
-        }
-        //分类号关联 OS_PATENT_TYPENO
-        if (uploadParamsVO.getMainIpc() != null && uploadParamsVO.getMainUpc() != null && uploadParamsVO.getCpcList() != null && uploadParamsVO.getLocList() != null && uploadParamsVO.getUpcList() != null && uploadParamsVO.getIpcList() != null) {
+            //申请人/权利人 OS_APPLICATION_ATTR
+            //权利人
+            //patentCurrentApplicationBusiness(uploadParamsVO);
+            //申请人
+            //patentOriginalApplicationBusiness(uploadParamsVO);
+            //专题库关联专利信息 OS_THEMATIC_PID
+            if (uploadParamsVO.getPatent() != null) {
+                patentThematicPidBusiness(uploadParamsVO, projectImportPatentVO);
+            }
+            //标引内容关联专利信息 OS_PATENT_FIELD_PATENT_LINK
+            if (uploadParamsVO.getPatent() != null) {
+                patentProjectFieldPatentLinkBusiness(uploadParamsVO, projectImportPatentVO);
+            }
+            //文件夹管理 OS_PORTFOLIO_LINK
+            if (uploadParamsVO.getPatent() != null) {
+                patentProjectFolderPatentLinkBusiness(uploadParamsVO, projectImportPatentVO);
+            }
+            //标签 OS_PATENT_LABEL
+            if (uploadParamsVO.getPatentLabelList() != null) {
+                patentLabelBusiness(uploadParamsVO, projectImportPatentVO);
+            }
+            //分类号关联 OS_PATENT_TYPENO
             patentTypeNoBusiness(uploadParamsVO);
-        }
-        //事务信息 OS_PATENT_AFFAIR
-        if (uploadParamsVO.getPatentAffair() != null && uploadParamsVO.getSimpleStatus() != null) {
+            //事务信息 OS_PATENT_AFFAIR
             patentAffairBusiness(uploadParamsVO);
-        }
-        //自定义字段
-        if (uploadParamsVO.getKey() != null && uploadParamsVO.getFieldList() != null) {
-            patentFieldBusiness(params, uploadParamsVO, projectImportPatentVO);
+            //自定义字段
+            if (uploadParamsVO.getKey() != null && uploadParamsVO.getFieldList() != null) {
+                patentFieldBusiness(params, uploadParamsVO, projectImportPatentVO);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            if (uploadParamsVO.getPatent() != null) {
+                ImportErrorLog importErrorLog = new ImportErrorLog();
+                importErrorLog.setPatentId(uploadParamsVO.getPatent().getId())
+                        .setPatentNo(uploadParamsVO.getPatent().getPatentNo())
+                        .setCreateTime(new SimpleDateFormat("yyyy-MM-dd 24HI:mm:ss").format(new Date()))
+                        .setCreateUserId(Integer.parseInt(params.getUserId()))
+                        .setMistakeMessage(e.getMessage())
+                        .setProjectId(params.getProjectId());
+                importErrorLogMapper.insert(importErrorLog);
+                FLAG += 1;
+                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            }
         }
     }
 
@@ -212,10 +234,13 @@ public class UploadPatentBatchService {
         PatentRightParams patentRightParams = new PatentRightParams();
         patentRightParams.setPatentId(uploadParamsVO.getPatent().getId());
         patentRightParams.setPatentNo(uploadParamsVO.getPatent().getPatentNo());
-        patentRightParams.setContent(uploadParamsVO.getPatentRight().getContent());
-        patentRightParams.setContentOut(uploadParamsVO.getPatentRight().getContentOut());
-        patentRightParams.setSelfContent(uploadParamsVO.getSelfContent());
-
+        if (uploadParamsVO.getPatentRight() != null) {
+            patentRightParams.setContent(uploadParamsVO.getPatentRight().getContent());
+            patentRightParams.setContentOut(uploadParamsVO.getPatentRight().getContentOut());
+        }
+        if (uploadParamsVO.getSelfContent() != null) {
+            patentRightParams.setSelfContent(uploadParamsVO.getSelfContent());
+        }
         patentRightService.updatePatentRight(patentRightParams);
     }
 
@@ -265,28 +290,38 @@ public class UploadPatentBatchService {
 
     private void patentSimplyFamilyBusiness(UploadParamsVO uploadParamsVO) {
         PatentSimpleFamilyParams patentSimpleFamilyParams = new PatentSimpleFamilyParams();
+        if (uploadParamsVO.getSimpleFamily() != null) {
+            patentSimpleFamilyParams.setSimpleFamily(uploadParamsVO.getSimpleFamily());
+        }
+        if (uploadParamsVO.getPatSnapFamily() != null) {
+            patentSimpleFamilyParams.setPatSnapFamily(uploadParamsVO.getPatSnapFamily());
+        }
+        if (uploadParamsVO.getInpadocFamily() != null) {
+            patentSimpleFamilyParams.setInpadocFamily(uploadParamsVO.getInpadocFamily());
+        }
         patentSimpleFamilyParams.setPatentId(uploadParamsVO.getPatent().getId());
         patentSimpleFamilyParams.setPatentNo(uploadParamsVO.getPatent().getPatentNo());
-        patentSimpleFamilyParams.setSimpleFamily(uploadParamsVO.getSimpleFamily());
-        patentSimpleFamilyParams.setPatSnapFamily(uploadParamsVO.getPatSnapFamily());
-        patentSimpleFamilyParams.setInpadocFamily(uploadParamsVO.getInpadocFamily());
 
         patentSimpleFamilyService.updatePatentSimpleFamily(patentSimpleFamilyParams);
     }
 
     private void patentInventorBusiness(UploadParamsVO uploadParamsVO) {
         PatentInventorParams patentInventorParams = new PatentInventorParams();
+        if (uploadParamsVO.getPatentInventorList() != null) {
+            List<String> addressList = uploadParamsVO.getPatentInventorList().stream().map(PatentInventor::getAddress).filter(Objects::nonNull).collect(Collectors.toList());
+            patentInventorParams.setAddressList(addressList);
+            List<String> nameList = uploadParamsVO.getPatentInventorList().stream().map(PatentInventor::getName).collect(Collectors.toList());
+            patentInventorParams.setNameList(nameList);
+        }
+        if (uploadParamsVO.getFirstName() != null) {
+            patentInventorParams.setFirstName(uploadParamsVO.getFirstName());
+        }
+        if (uploadParamsVO.getFirstAddress() != null) {
+            patentInventorParams.setFirstAddress(uploadParamsVO.getFirstAddress());
+        }
         patentInventorParams.setPatentId(uploadParamsVO.getPatent().getId());
-        patentInventorParams.setFirstName(uploadParamsVO.getFirstName());
-        patentInventorParams.setFirstAddress(uploadParamsVO.getFirstAddress());
-        List<String> addressList = uploadParamsVO.getPatentInventorList().stream().map(PatentInventor::getAddress).filter(Objects::nonNull).collect(Collectors.toList());
-        patentInventorParams.setAddressList(addressList);
-        List<String> nameList = uploadParamsVO.getPatentInventorList().stream().map(PatentInventor::getName).collect(Collectors.toList());
-        patentInventorParams.setNameList(nameList);
 
         patentInventorService.updatePatentInventor(patentInventorParams);
-
-        //patentInventorService.updatePatentInventorAddress(patentInventorAddressParams);
     }
 
     private void patentCurrentApplicationBusiness(UploadParamsVO uploadParamsVO) {
@@ -321,29 +356,45 @@ public class UploadPatentBatchService {
 
     private void patentTypeNoBusiness(UploadParamsVO uploadParamsVO) {
         PatentClassNumberParams patentClassNumberParams = new PatentClassNumberParams();
+        if (uploadParamsVO.getMainIpc() != null) {
+            patentClassNumberParams.setMainIpc(uploadParamsVO.getMainIpc());
+        }
+        if (uploadParamsVO.getMainUpc() != null) {
+            patentClassNumberParams.setMainUpc(uploadParamsVO.getMainUpc());
+        }
+        if (uploadParamsVO.getCpcList() != null) {
+            patentClassNumberParams.setCpcList(uploadParamsVO.getCpcList());
+        }
+        if (uploadParamsVO.getLocList() != null) {
+            patentClassNumberParams.setLocList(uploadParamsVO.getLocList());
+        }
+        if (uploadParamsVO.getUpcList() != null) {
+            patentClassNumberParams.setUpcList(uploadParamsVO.getUpcList());
+        }
+        if (uploadParamsVO.getIpcList() != null) {
+            patentClassNumberParams.setIpcList(uploadParamsVO.getIpcList());
+        }
         patentClassNumberParams.setPatentId(uploadParamsVO.getPatent().getId());
-        patentClassNumberParams.setCpcList(uploadParamsVO.getCpcList());
-        patentClassNumberParams.setIpcList(uploadParamsVO.getIpcList());
-        patentClassNumberParams.setLocList(uploadParamsVO.getLocList());
-        patentClassNumberParams.setIpcList(uploadParamsVO.getIpcList());
-        patentClassNumberParams.setMainIpc(uploadParamsVO.getMainIpc());
-        patentClassNumberParams.setMainUpc(uploadParamsVO.getMainUpc());
 
         patentClassNumberLinkService.updatePatentClassNumberLink(patentClassNumberParams);
     }
 
     private void patentAffairBusiness(UploadParamsVO uploadParamsVO) {
         PatentAffairParams patentAffairParams = new PatentAffairParams();
+        if (uploadParamsVO.getPatentAffair() != null) {
+            patentAffairParams.setContent(uploadParamsVO.getPatentAffair().getContent());
+            patentAffairParams.setStatusList(uploadParamsVO.getPatentAffair().getStatus());
+            patentAffairParams.setDateTime(uploadParamsVO.getPatentAffair().getDateTime());
+        }
+        if (uploadParamsVO.getSimpleStatus() != 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.getSimpleStatus()))
+                    .findFirst()
+                    .orElse(new SystemDict()).getValue());
+            patentAffairParams.setSimpleStatus(simpleStatus);
+        }
         patentAffairParams.setPatentId(uploadParamsVO.getPatent().getId());
-        patentAffairParams.setContent(uploadParamsVO.getPatentAffair().getContent());
-        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.getSimpleStatus()))
-                .findFirst()
-                .orElse(new SystemDict()).getValue());
-        patentAffairParams.setSimpleStatus(simpleStatus);
-        patentAffairParams.setStatusList(uploadParamsVO.getPatentAffair().getStatus());
-        patentAffairParams.setDateTime(uploadParamsVO.getPatentAffair().getDateTime());
 
         patentAffairService.updatePatientAffair(patentAffairParams);
     }
@@ -359,4 +410,3 @@ public class UploadPatentBatchService {
     }
 
 }
-

+ 2 - 2
PAS/src/main/resources/application-test.yml

@@ -1,12 +1,12 @@
 spring:
   redis:
-    host: 47.101.137.223
+    host: 172.27.247.174
     port: 6379
     database: 4
     password: Xx0GWxdWQJxx6Swe
     timeout: 1000
   datasource:
-    url: jdbc:mysql://47.101.137.223:3306/pas?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
+    url: jdbc:mysql://172.27.247.174:3306/pas?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
     username: root
     password: TU5x6IeBi7rl
     driver-class-name: com.mysql.cj.jdbc.Driver