浏览代码

专利上传功能 优化开发

沈永艺 3 年之前
父节点
当前提交
44f9ae464e

+ 48 - 2
PAS/src/main/java/cn/cslg/pas/common/model/vo/UploadParamsVO.java

@@ -1,9 +1,55 @@
 package cn.cslg.pas.common.model.vo;
 package cn.cslg.pas.common.model.vo;
 
 
+import cn.cslg.pas.domain.*;
 import lombok.Data;
 import lombok.Data;
 
 
+import java.util.List;
+
+/**
+ * @author 沈永艺
+ * @date 2022/7/1
+ * @description 用于批量导入数据的工具类
+ *              包含: 专利表 专利权利要求表 专利说明书(文本)表 专利信息代理人表 专利信息质押职权人表
+ */
 @Data
 @Data
 public class UploadParamsVO {
 public class UploadParamsVO {
-    private String patentNo;
-    private Integer applicationDate;
+//    private String patentNo;
+//    private Integer applicationDate;
+//    /**
+//     * 专利
+//     */
+//    private List<Patent> patentList;
+
+//    /**
+//     * 权利要求
+//     */
+//    private List<PatentRight> patentRightList;
+
+    /**
+     * 专利说明书(文本)
+     */
+    private List<PatentInstructionText> patentInstructionTextList;
+
+//    /**
+//     * 专利信息代理人
+//     */
+//    private List<PatentAgent> patentAgentList;
+//
+//    /**
+//     * 专利信息质押职权人
+//     */
+//    private List<PatentPledge> patentPledgeList;
+//
+//    /**
+//     * 专利信息许可人
+//     */
+//    private List<PatentLicensor> patentLicensorList;
+//
+//    /**
+//     * 专利信息事务信息
+//     */
+//    private List<PatentAffair> patentAffairList;
+
+
+
 }
 }

+ 1 - 1
PAS/src/main/java/cn/cslg/pas/common/utils/FileUtils.java

@@ -116,7 +116,7 @@ public class FileUtils {
     }
     }
 
 
     public String analysisJsonFile() {
     public String analysisJsonFile() {
-        String settingFilePath = "E:\\uploadSetting.json";
+        String settingFilePath = "D:\\Data\\uploadSetting.json";
         BufferedReader reader = null;
         BufferedReader reader = null;
         StringBuilder last = new StringBuilder();
         StringBuilder last = new StringBuilder();
         InputStreamReader inputStreamReader;
         InputStreamReader inputStreamReader;

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

@@ -63,7 +63,11 @@ public class ProjectImportController {
         TaskParams taskParams = projectService.getImportPatentTaskParams(file, params.getProjectId());
         TaskParams taskParams = projectService.getImportPatentTaskParams(file, params.getProjectId());
         projectService.importPatent(taskParams, params);
         projectService.importPatent(taskParams, params);
 
 
+        // TODO: 2022/7/1 专利处理开始入口处
+        //专利导入新方法入口
+        //先解析Json文件 获得配置文件的Json串
         String getSettingJson = fileUtils.analysisJsonFile();
         String getSettingJson = fileUtils.analysisJsonFile();
+        //进入处理方法
         uploadSettingTest.processData(taskParams, params, getSettingJson);
         uploadSettingTest.processData(taskParams, params, getSettingJson);
 
 
         return Response.success(true);
         return Response.success(true);

+ 2 - 2
PAS/src/main/java/cn/cslg/pas/domain/PatentInstructionText.java

@@ -22,12 +22,12 @@ public class PatentInstructionText extends BaseEntity<PatentInstructionText> {
     private Integer patentId;
     private Integer patentId;
 
 
     /**
     /**
-     * 
+     * 说明书
      */
      */
     private String manual;
     private String manual;
 
 
     /**
     /**
-     * 
+     * 说明书(译)
      */
      */
     private String manualOut;
     private String manualOut;
 
 

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

@@ -472,11 +472,21 @@ public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
             if (projectImportPatentVO != null) {
             if (projectImportPatentVO != null) {
                 List<SystemDict> systemDictList = systemDictService.getSystemDictListByType(Arrays.asList(Constants.PATENT_TYPE, Constants.PATENT_SIMPLE_STATUS));
                 List<SystemDict> systemDictList = systemDictService.getSystemDictListByType(Arrays.asList(Constants.PATENT_TYPE, Constants.PATENT_SIMPLE_STATUS));
                 Map<String, PictureData> pictureDataMap = ExcelUtils.getDataFromExcel(params.getPath());
                 Map<String, PictureData> pictureDataMap = ExcelUtils.getDataFromExcel(params.getPath());
+
+
                 for (int i = 0; i < params.getRowList().size(); i++) {
                 for (int i = 0; i < params.getRowList().size(); i++) {
                     Map<Object, Object> row = params.getRowList().get(i);
                     Map<Object, Object> row = params.getRowList().get(i);
+
+                    //var waitingSavedData = new abc();
+
                     Object patentNo = row.get("公开(公告)号");
                     Object patentNo = row.get("公开(公告)号");
                     if (StringUtils.isNotNull(patentNo)) {
                     if (StringUtils.isNotNull(patentNo)) {
 
 
+
+
+
+
+
                         PatentCustomFieldParams patentCustomFieldParams = new PatentCustomFieldParams();
                         PatentCustomFieldParams patentCustomFieldParams = new PatentCustomFieldParams();
 
 
                         //用专利号查找专利的相关信息 并装配到 Patent 中
                         //用专利号查找专利的相关信息 并装配到 Patent 中
@@ -542,6 +552,17 @@ public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
 
 
                         //keySet() 返回map中所有key值的列别
                         //keySet() 返回map中所有key值的列别
                         for (Object object : row.keySet()) {
                         for (Object object : row.keySet()) {
+
+                            //申请人
+//                            var temValue = row["申请人"];
+//
+//                            var config = getconfig("申请人",shujulaiyuanType);
+//
+//                            var columnHander = getHandler(config);
+//                            var obj = columnHander.GetValues(temvalue);
+//
+//                            setvalues(obj,waitingSavedData);
+
                             String key = object.toString();
                             String key = object.toString();
                             if (key.equals("摘要附图")) {
                             if (key.equals("摘要附图")) {
                                 PictureData pictureData = pictureDataMap.get(String.valueOf(i + 1));
                                 PictureData pictureData = pictureDataMap.get(String.valueOf(i + 1));
@@ -810,6 +831,8 @@ public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
                                 }
                                 }
                             }
                             }
                         }
                         }
+
+//                        savetodb();
                         patent.updateById();
                         patent.updateById();
                         //专利权利要求表
                         //专利权利要求表
                         patentRightService.updatePatentRight(patentRightParams);
                         patentRightService.updatePatentRight(patentRightParams);
@@ -858,6 +881,8 @@ public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
                                 .setTotal(total), ResponseEnum.PATENT_IMPORT_TASK_SUCCESS), params.getUserId());
                                 .setTotal(total), ResponseEnum.PATENT_IMPORT_TASK_SUCCESS), params.getUserId());
                     }
                     }
                 }
                 }
+
+                //savetodb(waitingSavedData);
                 SpringUtil.getBean(ProjectService.class).setImportPatentTaskStatus(2, params.getTaskId());
                 SpringUtil.getBean(ProjectService.class).setImportPatentTaskStatus(2, params.getTaskId());
                 WebSocketServer.sendInfo(Response.websocket(new TaskWebSocketDTO()
                 WebSocketServer.sendInfo(Response.websocket(new TaskWebSocketDTO()
                         .setTaskId(params.getTaskId())
                         .setTaskId(params.getTaskId())

+ 77 - 3
PAS/src/main/java/cn/cslg/pas/service/UploadSettingTest.java

@@ -6,10 +6,11 @@ import cn.cslg.pas.common.model.vo.TaskParams;
 import cn.cslg.pas.common.model.vo.UploadParamsVO;
 import cn.cslg.pas.common.model.vo.UploadParamsVO;
 import cn.cslg.pas.common.utils.DateUtils;
 import cn.cslg.pas.common.utils.DateUtils;
 import cn.cslg.pas.common.utils.JsonUtils;
 import cn.cslg.pas.common.utils.JsonUtils;
+import cn.cslg.pas.domain.PatentInstructionText;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.util.ReflectionUtils;
 import org.springframework.util.ReflectionUtils;
 
 
-import java.lang.reflect.Field;
+import java.lang.reflect.*;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
@@ -40,6 +41,8 @@ public class UploadSettingTest {
                 jsonData = constant.getColumn();
                 jsonData = constant.getColumn();
             }
             }
         }
         }
+        // TODO: 2022/7/1 从解析出来的配置文件Json里面和Excel解析出来的栏位进行匹配 FOR循环 能不能在减少一层?
+        // TODO: 2022/7/1 接入分割处理方法 处理Excel解析数据 然后作为参数装配进 UploadParamsVO里面 如何实现?
 
 
         try {
         try {
             for (int i = 0; i < taskParams.getRowList().size(); i++) {
             for (int i = 0; i < taskParams.getRowList().size(); i++) {
@@ -58,6 +61,16 @@ public class UploadSettingTest {
                                     ReflectionUtils.setField(propertyList, uploadParamsVO, DateUtils.getDateTime(value.toString()));
                                     ReflectionUtils.setField(propertyList, uploadParamsVO, DateUtils.getDateTime(value.toString()));
                                     break;
                                     break;
                                 case "String":
                                 case "String":
+                                    if (!jsonDatum.getSplitSymbol().equals("")) {
+                                        // TODO: 2022/7/1 进入到数据拆分流程 新建方法将分隔符以参数的形式传入拆分公用方法内
+                                        System.out.println("此处为进行数据拆分部分 待开发");
+                                    } else {
+
+                                        PatentInstructionText patentInstructionText = new PatentInstructionText();
+                                        patentInstructionText.setManual(value.toString());
+                                        ReflectionUtils.setField(propertyList, uploadParamsVO.getPatentInstructionTextList()
+                                                .add(patentInstructionText), value.toString());
+                                    }
                                     ReflectionUtils.setField(propertyList, uploadParamsVO, value.toString());
                                     ReflectionUtils.setField(propertyList, uploadParamsVO, value.toString());
                                     break;
                                     break;
                                 case "Integer":
                                 case "Integer":
@@ -69,8 +82,69 @@ public class UploadSettingTest {
                         }
                         }
                     }
                     }
                 }
                 }
-                System.out.println(uploadParamsVO.getPatentNo());
-                System.out.println(uploadParamsVO.getApplicationDate());
+//                System.out.println(uploadParamsVO.getPatentNo());
+//                System.out.println(uploadParamsVO.getApplicationDate());
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public static void main(String[] args) {
+        UploadParamsVO obj = new UploadParamsVO();
+        PatentInstructionText a = new PatentInstructionText();
+        a.setManual("1");
+        a.setManualOut("1");
+        a.setPatentId(1);
+        List<PatentInstructionText> aa = new ArrayList<>();
+        aa.add(a);
+        obj.setPatentInstructionTextList(aa);
+        List<PatentInstructionText> B = obj.getPatentInstructionTextList();
+        B.add(a);
+        B.add(a);
+        B.add(a);
+        obj.setPatentInstructionTextList(B);
+
+        try {
+            Field[] fields = obj.getClass().getDeclaredFields();
+            for (Field field : fields) {
+                if (!field.isAccessible()) {
+                    field.setAccessible(true);
+                }
+                if (List.class.isAssignableFrom(field.getType())) {
+                    Method vvv = List.class.getDeclaredMethod("get", int.class);
+                    System.out.println(vvv);
+                    Method m = List.class.getDeclaredMethod("size");
+                    int size = 0;//调用list的size方法,得到list的长度
+                    //size = (Integer) m.invoke(field.get(obj));
+                    System.out.println(size);
+                    Type t = field.getGenericType();
+                    if (t instanceof ParameterizedType) {
+                        ParameterizedType pt = (ParameterizedType) t;
+                        Class clz = (Class) pt.getActualTypeArguments()[0];//得到对象list中实例的类型
+                        System.out.println(clz.getName());//获得List的泛型类型
+                        Field gg = clz.getDeclaredField("manual");
+                        gg.setAccessible(true);
+                        gg.set(obj.getPatentInstructionTextList().get(0).getManual(),"1");
+                        obj.getPatentInstructionTextList().get(0).getId();
+                        System.out.println("1");
+                        //获取集合的第一个对象
+                        for (int i = 0; i < size; i++) {//遍历list,调用get方法,获取list中的对象实例
+                            Method getM = List.class.getDeclaredMethod("get", int.class);
+                            if (!getM.isAccessible()) {
+                                getM.setAccessible(true);
+                            }
+                            Object list_i_Obj = getM.invoke(field.get(obj), i);
+                            System.out.println(list_i_Obj);
+                            //集合中的每个元素对象
+                            //获取每个对象的cargoNumber属性值
+                            Field cnField = clz.getDeclaredField("cargoNumber");
+                            cnField.setAccessible(true);
+                            Object o = cnField.get(list_i_Obj);//每个元素对象中的cargoNumber值
+                            System.out.println(o.toString());
+                        }
+                    }
+                }
             }
             }
         } catch (Exception e) {
         } catch (Exception e) {
             e.printStackTrace();
             e.printStackTrace();

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

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

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

@@ -20,7 +20,7 @@ spring:
       max-file-size: 1000MB
       max-file-size: 1000MB
       max-request-size: 1000MB
       max-request-size: 1000MB
   profiles:
   profiles:
-    active: dev
+    active: test
   jackson:
   jackson:
     default-property-inclusion: non_null
     default-property-inclusion: non_null
     serialization:
     serialization: