Pārlūkot izejas kodu

PAS系统后端代码首次上传Master分支 2022/7/1

沈永艺 3 gadi atpakaļ
vecāks
revīzija
0bd4913bc4
100 mainītis faili ar 81246 papildinājumiem un 0 dzēšanām
  1. 3 0
      PAS/docker/api/Dockerfile
  2. 49 0
      PAS/docker/docker-compose.yaml
  3. 9 0
      PAS/docker/mysql/conf.d/my.cnf
  4. 7921 0
      PAS/docker/mysql/init/pas.sql
  5. 3 0
      PAS/docker/web/Dockerfile
  6. 36 0
      PAS/docker/web/default.conf
  7. 173 0
      PAS/pom.xml
  8. 68707 0
      PAS/sql/pas.sql
  9. 16 0
      PAS/src/main/java/cn/cslg/pas/Application.java
  10. 32 0
      PAS/src/main/java/cn/cslg/pas/common/GlobalException.java
  11. 13 0
      PAS/src/main/java/cn/cslg/pas/common/config/AsyncExceptionHandler.java
  12. 53 0
      PAS/src/main/java/cn/cslg/pas/common/config/AsyncTaskPoolConfig.java
  13. 24 0
      PAS/src/main/java/cn/cslg/pas/common/config/MetaObjectHandlerConfig.java
  14. 20 0
      PAS/src/main/java/cn/cslg/pas/common/config/MybatisPlusConfig.java
  15. 35 0
      PAS/src/main/java/cn/cslg/pas/common/config/SaTokenConfigure.java
  16. 18 0
      PAS/src/main/java/cn/cslg/pas/common/config/SpringDocConfig.java
  17. 13 0
      PAS/src/main/java/cn/cslg/pas/common/config/WebSocketConfig.java
  18. 849 0
      PAS/src/main/java/cn/cslg/pas/common/core/Convert.java
  19. 14 0
      PAS/src/main/java/cn/cslg/pas/common/core/annotation/AnnotationParse.java
  20. 13 0
      PAS/src/main/java/cn/cslg/pas/common/core/annotation/Permission.java
  21. 72 0
      PAS/src/main/java/cn/cslg/pas/common/core/annotation/PermissionAspect.java
  22. 146 0
      PAS/src/main/java/cn/cslg/pas/common/core/base/Constants.java
  23. 9 0
      PAS/src/main/java/cn/cslg/pas/common/core/base/DocFlag.java
  24. 15 0
      PAS/src/main/java/cn/cslg/pas/common/core/base/EStatus.java
  25. 20 0
      PAS/src/main/java/cn/cslg/pas/common/core/base/RedisConf.java
  26. 116 0
      PAS/src/main/java/cn/cslg/pas/common/core/base/RequestHolder.java
  27. 90 0
      PAS/src/main/java/cn/cslg/pas/common/core/exception/BaseException.java
  28. 16 0
      PAS/src/main/java/cn/cslg/pas/common/core/exception/CustomException.java
  29. 16 0
      PAS/src/main/java/cn/cslg/pas/common/core/exception/PermissionException.java
  30. 28 0
      PAS/src/main/java/cn/cslg/pas/common/model/BaseEntity.java
  31. 61 0
      PAS/src/main/java/cn/cslg/pas/common/model/SuperEntity.java
  32. 13 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/AreaAddressDTO.java
  33. 31 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/ClassNumberDTO.java
  34. 8 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/CommonData.java
  35. 12 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/CustomFieldDTO.java
  36. 13 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/CustomFieldLabelDTO.java
  37. 9 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/LabelDTO.java
  38. 13 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/PageDTO.java
  39. 347 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/PatentDTO.java
  40. 11 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/PatentQueryFieldSourceDTO.java
  41. 9 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/ProjectFieldOrderDTO.java
  42. 19 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/TaskWebSocketDTO.java
  43. 12 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/UploadFileDTO.java
  44. 11 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/analysis/AnalysisItemResultDTO.java
  45. 14 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/analysis/CustomSettingColorConfigDTO.java
  46. 27 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/analysis/CustomSettingConfigDTO.java
  47. 17 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/analysis/CustomSettingLineConfigDTO.java
  48. 10 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/analysis/CustomSettingTableConfigDTO.java
  49. 16 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/analysis/DateTimeDTO.java
  50. 27 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/analysis/SchemaDataDTO.java
  51. 24 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/analysis/SchemaDimensionDTO.java
  52. 33 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/analysis/SourceDataDTO.java
  53. 14 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/analysis/SourceMinAndMaxDataDTO.java
  54. 39 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/report/ClassifyMO.java
  55. 38 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/report/InventorMO.java
  56. 37 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/report/KeyWordModel.java
  57. 28 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/report/LicensedMO.java
  58. 97 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/report/MergeApplyMO.java
  59. 64 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/report/ParameModel.java
  60. 112 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/report/PatentApplyMO.java
  61. 42 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/report/PatentContentMO.java
  62. 37 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/report/PatentDuquanMO.java
  63. 52 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/report/PatentLawMO.java
  64. 738 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/report/PatentMO.java
  65. 31 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/report/PermitMO.java
  66. 27 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/report/ReportPatentDTO.java
  67. 11 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/report/ReportPatentLabelDTO.java
  68. 72 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/report/SystemMO.java
  69. 146 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/report/ThematicMO.java
  70. 14 0
      PAS/src/main/java/cn/cslg/pas/common/model/params/PatentAffairParams.java
  71. 11 0
      PAS/src/main/java/cn/cslg/pas/common/model/params/PatentAgentParams.java
  72. 13 0
      PAS/src/main/java/cn/cslg/pas/common/model/params/PatentApplicantAddressParams.java
  73. 16 0
      PAS/src/main/java/cn/cslg/pas/common/model/params/PatentApplicantParams.java
  74. 16 0
      PAS/src/main/java/cn/cslg/pas/common/model/params/PatentClassNumberParams.java
  75. 12 0
      PAS/src/main/java/cn/cslg/pas/common/model/params/PatentCustomFieldParams.java
  76. 10 0
      PAS/src/main/java/cn/cslg/pas/common/model/params/PatentInstructionTextParams.java
  77. 10 0
      PAS/src/main/java/cn/cslg/pas/common/model/params/PatentInventorAddressParams.java
  78. 12 0
      PAS/src/main/java/cn/cslg/pas/common/model/params/PatentInventorParams.java
  79. 13 0
      PAS/src/main/java/cn/cslg/pas/common/model/params/PatentIpcMessageParams.java
  80. 12 0
      PAS/src/main/java/cn/cslg/pas/common/model/params/PatentLabelParams.java
  81. 13 0
      PAS/src/main/java/cn/cslg/pas/common/model/params/PatentLicensorParams.java
  82. 12 0
      PAS/src/main/java/cn/cslg/pas/common/model/params/PatentPledgeParams.java
  83. 12 0
      PAS/src/main/java/cn/cslg/pas/common/model/params/PatentRightParams.java
  84. 14 0
      PAS/src/main/java/cn/cslg/pas/common/model/params/PatentSimpleFamilyParams.java
  85. 9 0
      PAS/src/main/java/cn/cslg/pas/common/model/vo/AdminUserLoginVO.java
  86. 9 0
      PAS/src/main/java/cn/cslg/pas/common/model/vo/AdminUserVO.java
  87. 15 0
      PAS/src/main/java/cn/cslg/pas/common/model/vo/AnalysisItemCountVO.java
  88. 13 0
      PAS/src/main/java/cn/cslg/pas/common/model/vo/AnalysisItemExportVO.java
  89. 39 0
      PAS/src/main/java/cn/cslg/pas/common/model/vo/AnalysisItemResultVO.java
  90. 10 0
      PAS/src/main/java/cn/cslg/pas/common/model/vo/BaseVO.java
  91. 8 0
      PAS/src/main/java/cn/cslg/pas/common/model/vo/ClientVO.java
  92. 9 0
      PAS/src/main/java/cn/cslg/pas/common/model/vo/PatentAnnotationVO.java
  93. 11 0
      PAS/src/main/java/cn/cslg/pas/common/model/vo/PatentApplicantMergeVO.java
  94. 15 0
      PAS/src/main/java/cn/cslg/pas/common/model/vo/PatentApplicantVO.java
  95. 13 0
      PAS/src/main/java/cn/cslg/pas/common/model/vo/PatentBatchIndexVO.java
  96. 14 0
      PAS/src/main/java/cn/cslg/pas/common/model/vo/PatentCustomFieldSettingVO.java
  97. 13 0
      PAS/src/main/java/cn/cslg/pas/common/model/vo/PatentExportParams.java
  98. 12 0
      PAS/src/main/java/cn/cslg/pas/common/model/vo/PatentExportVO.java
  99. 15 0
      PAS/src/main/java/cn/cslg/pas/common/model/vo/PatentIndexSettingVO.java
  100. 0 0
      PAS/src/main/java/cn/cslg/pas/common/model/vo/PatentInstructionVO.java

+ 3 - 0
PAS/docker/api/Dockerfile

@@ -0,0 +1,3 @@
+FROM java:8
+ADD pas-0.0.1-SNAPSHOT.jar app.jar
+ENTRYPOINT ["java", "-jar", "/app.jar", "--spring.profiles.active=docker"]

+ 49 - 0
PAS/docker/docker-compose.yaml

@@ -0,0 +1,49 @@
+version: "3"
+services:
+  pas-mysql:
+    container_name: pas-mysql
+    image: mysql:8
+    ports:
+      - "3307:3306"
+    environment:
+      TZ: Asia/Shanghai
+      MYSQL_ROOT_PASSWORD: cslg_docker_123456
+      MYSQL_DATABASE: pas
+    volumes:
+      - "./mysql/conf.d/:/etc/mysql/conf.d/"
+      - "./mysql/init/:/docker-entrypoint-initdb.d/"
+    privileged: true
+    restart: always
+  pas-redis:
+    container_name: pas-redis
+    image: redis
+    ports:
+      - "6380:6379"
+    command:
+      --requirepass "cslg_docker_123456"
+    restart: always
+  pas-api:
+    container_name: pas-api
+    build:
+      context: ./api
+    ports:
+      - "8879:8879"
+    environment:
+      TZ: Asia/Shanghai
+    volumes:
+      - "./api/logs:/logs"
+      - "./api/file:/file"
+      - "./api/backup:/backup"
+    restart: always
+    depends_on:
+      - pas-mysql
+      - pas-redis
+  pas-web:
+    container_name: pas-web
+    build:
+      context: ./web
+    ports:
+      - "8085:80"
+    volumes:
+      - "./web/nginx:/var/log/nginx"
+    restart: always

+ 9 - 0
PAS/docker/mysql/conf.d/my.cnf

@@ -0,0 +1,9 @@
+[mysqld]
+skip-name-resolve
+group_concat_max_len = 4294967295
+innodb_buffer_pool_size = 16G
+join_buffer_size = 128M
+sort_buffer_size = 2M
+read_rnd_buffer_size = 2M
+max_allowed_packet = 100M
+sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 7921 - 0
PAS/docker/mysql/init/pas.sql


+ 3 - 0
PAS/docker/web/Dockerfile

@@ -0,0 +1,3 @@
+FROM nginx
+COPY dist/ /usr/share/nginx/html/
+COPY default.conf /etc/nginx/conf.d/default.conf

+ 36 - 0
PAS/docker/web/default.conf

@@ -0,0 +1,36 @@
+server {
+    listen       80;
+    server_name localhost;
+	client_max_body_size 1000m;
+	gzip_static on;
+    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
+    gzip_proxied  any;
+    gzip_vary on;
+    gzip_comp_level 6;
+    gzip_buffers 16 8k;
+    gzip_http_version 1.1;
+	add_header Access-Control-Allow-Origin *;
+	add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
+	add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
+	if ($request_method = 'OPTIONS') {
+		return 204;
+	}
+    location / {
+        root   /usr/share/nginx/html;
+        try_files $uri $uri/ /index.html;
+    }
+	location /api/v2 {
+		proxy_pass   http://pas-api:8879;
+	    proxy_set_header Upgrade $http_upgrade;
+	    proxy_set_header Connection "upgrade";
+		proxy_connect_timeout 86400s;
+		proxy_read_timeout 86400s;
+		proxy_send_timeout 86400s;
+	}
+    location /pdfjs {
+		proxy_pass   http://pas-api:8879;
+	}
+    location /file {
+		proxy_pass   http://pas-api:8879;
+	}
+}

+ 173 - 0
PAS/pom.xml

@@ -0,0 +1,173 @@
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>2.6.4</version>
+    </parent>
+
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>cn.cslg</groupId>
+    <artifactId>pas</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+    <packaging>jar</packaging>
+    <name>pas</name>
+    <description>常熟理工学院 专利分析系统</description>
+
+    <properties>
+        <java.version>1.8</java.version>
+        <jwt.version>0.9.0</jwt.version>
+        <commons.io.version>2.5</commons.io.version>
+        <mybatisplus.version>3.4.3.4</mybatisplus.version>
+        <google.code.gson.version>2.7</google.code.gson.version>
+        <hutool.version>5.6.5</hutool.version>
+        <okhttps.version>3.1.1</okhttps.version>
+        <poi.version>4.1.2</poi.version>
+        <poi-tl.version>1.10.3</poi-tl.version>
+        <druid.version>1.1.10</druid.version>
+        <sa-token.version>1.29.0</sa-token.version>
+        <springdoc.version>1.6.6</springdoc.version>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springdoc</groupId>
+            <artifactId>springdoc-openapi-ui</artifactId>
+            <version>${springdoc.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-aop</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.deepoove</groupId>
+            <artifactId>poi-tl</artifactId>
+            <version>${poi-tl.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>cn.dev33</groupId>
+            <artifactId>sa-token-spring-boot-starter</artifactId>
+            <version>${sa-token.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>cn.dev33</groupId>
+            <artifactId>sa-token-dao-redis-jackson</artifactId>
+            <version>${sa-token.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>druid-spring-boot-starter</artifactId>
+            <version>${druid.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-compress</artifactId>
+            <version>1.21</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>2.6</version>
+        </dependency>
+        <dependency>
+            <groupId>io.jsonwebtoken</groupId>
+            <artifactId>jjwt</artifactId>
+            <version>${jwt.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.ejlchina</groupId>
+            <artifactId>okhttps</artifactId>
+            <version>${okhttps.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-thymeleaf</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>${hutool.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.code.gson</groupId>
+            <artifactId>gson</artifactId>
+            <version>${google.code.gson.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>${mybatisplus.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-redis</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-websocket</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-pool2</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <optional>true</optional>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <configuration>
+                    <includeSystemScope>true</includeSystemScope>
+                    <!-- 指定该Main Class为全局的唯一入口 -->
+                    <mainClass>cn.cslg.pas.Application</mainClass>
+                    <layout>ZIP</layout>
+                    <excludes>
+                        <exclude>
+                            <groupId>org.projectlombok</groupId>
+                            <artifactId>lombok</artifactId>
+                        </exclude>
+                    </excludes>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>repackage</goal><!--可以把依赖的包都打包到生成的Jar包中-->
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+    <!--阿里云镜像源(因需要提交到GithubActions,会引起依赖下载过慢的问题)-->
+    <repositories>
+        <repository>
+            <id>nexus-aliyun</id>
+            <name>nexus-aliyun</name>
+            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+        </repository>
+    </repositories>
+
+</project>

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 68707 - 0
PAS/sql/pas.sql


+ 16 - 0
PAS/src/main/java/cn/cslg/pas/Application.java

@@ -0,0 +1,16 @@
+package cn.cslg.pas;
+
+import cn.hutool.cron.CronUtil;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class Application {
+
+    public static void main(String[] args) {
+        SpringApplication.run(Application.class, args);
+        CronUtil.setMatchSecond(true);
+        CronUtil.start();
+    }
+
+}

+ 32 - 0
PAS/src/main/java/cn/cslg/pas/common/GlobalException.java

@@ -0,0 +1,32 @@
+package cn.cslg.pas.common;
+
+import cn.cslg.pas.common.core.exception.PermissionException;
+import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.common.utils.ResponseEnum;
+import cn.dev33.satoken.exception.NotLoginException;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * 全局异常处理
+ */
+@RestControllerAdvice // 可指定包前缀,比如:(basePackages = "com.pj.admin")
+public class GlobalException {
+
+    // 全局异常拦截(拦截项目中的所有异常)
+    @ExceptionHandler
+    public String handlerException(Exception e, HttpServletRequest request, HttpServletResponse response) throws Exception {
+        // 打印堆栈,以供调试
+        e.printStackTrace();
+        if (e instanceof NotLoginException) {
+            return Response.error(ResponseEnum.UNAUTHORIZED);
+        } else if (e instanceof PermissionException) {
+            return Response.error(ResponseEnum.NOT_PERMISSION);
+        } else {
+            return Response.error(ResponseEnum.SYSTEM_ERROR);
+        }
+    }
+}

+ 13 - 0
PAS/src/main/java/cn/cslg/pas/common/config/AsyncExceptionHandler.java

@@ -0,0 +1,13 @@
+package cn.cslg.pas.common.config;
+
+import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
+
+import java.lang.reflect.Method;
+
+public class AsyncExceptionHandler implements AsyncUncaughtExceptionHandler {
+
+    @Override
+    public void handleUncaughtException(Throwable ex, Method method, Object... params) {
+        ex.printStackTrace();
+    }
+}

+ 53 - 0
PAS/src/main/java/cn/cslg/pas/common/config/AsyncTaskPoolConfig.java

@@ -0,0 +1,53 @@
+package cn.cslg.pas.common.config;
+
+import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.task.AsyncTaskExecutor;
+import org.springframework.scheduling.annotation.AsyncConfigurer;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+
+import java.util.concurrent.Executor;
+import java.util.concurrent.ThreadPoolExecutor;
+
+@EnableAsync
+@Configuration
+public class AsyncTaskPoolConfig implements AsyncConfigurer {
+
+    @Bean("singleThreadAsyncTaskExecutor")
+    public AsyncTaskExecutor singleThreadAsyncTaskExecutor() {
+        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
+        executor.setCorePoolSize(1);
+        executor.setMaxPoolSize(1);
+        executor.setQueueCapacity(64);
+        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
+        executor.initialize();
+        return executor;
+    }
+
+    @Override
+    public Executor getAsyncExecutor() {
+        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
+        //配置核心线程数
+        executor.setCorePoolSize(8);
+        //配置最大线程数
+        executor.setMaxPoolSize(16);
+        //配置队列大小
+        executor.setQueueCapacity(64);
+        //配置线程池中的线程的名称前缀
+        executor.setThreadNamePrefix("async-service-");
+
+        // 设置拒绝策略:当pool已经达到max size的时候,如何处理新任务
+        // CALLER_RUNS:不在新线程中执行任务,而是有调用者所在的线程来执行
+        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
+        //执行初始化
+        executor.initialize();
+        return executor;
+    }
+
+    @Override
+    public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
+        return new AsyncExceptionHandler();
+    }
+}

+ 24 - 0
PAS/src/main/java/cn/cslg/pas/common/config/MetaObjectHandlerConfig.java

@@ -0,0 +1,24 @@
+package cn.cslg.pas.common.config;
+
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.ibatis.reflection.MetaObject;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+@Slf4j
+@Component
+public class MetaObjectHandlerConfig implements MetaObjectHandler {
+
+    @Override
+    public void insertFill(MetaObject metaObject) {
+        setFieldValByName("createTime", new Date(), metaObject);
+        setFieldValByName("updateTime", new Date(), metaObject);
+    }
+
+    @Override
+    public void updateFill(MetaObject metaObject) {
+        setFieldValByName("updateTime", new Date(), metaObject);
+    }
+}

+ 20 - 0
PAS/src/main/java/cn/cslg/pas/common/config/MybatisPlusConfig.java

@@ -0,0 +1,20 @@
+package cn.cslg.pas.common.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@MapperScan("cn.cslg.pas.mapper")
+public class MybatisPlusConfig {
+
+    @Bean
+    public MybatisPlusInterceptor mybatisPlusInterceptor() {
+        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+        return interceptor;
+    }
+}

+ 35 - 0
PAS/src/main/java/cn/cslg/pas/common/config/SaTokenConfigure.java

@@ -0,0 +1,35 @@
+package cn.cslg.pas.common.config;
+
+import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.common.utils.ResponseEnum;
+import cn.cslg.pas.common.utils.StpAdminUtil;
+import cn.dev33.satoken.filter.SaServletFilter;
+import cn.dev33.satoken.router.SaRouter;
+import cn.dev33.satoken.stp.StpUtil;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class SaTokenConfigure {
+
+    @Bean
+    public SaServletFilter getSaServletFilter() {
+        return new SaServletFilter()
+                .addInclude(Constants.API_VERSION_V2 + "/**")
+                .addExclude("/favicon.ico")
+                .setAuth(obj -> {
+                    SaRouter.match(Constants.API_VERSION_V2 + "/**").notMatch(
+                            Constants.API_VERSION_V2 + "/ws/**",
+                            Constants.API_VERSION_V2 + "/test/**",
+                            Constants.API_VERSION_V2 + "/oauth2/**",
+                            Constants.API_VERSION_V2 + "/admin/**",
+                            Constants.API_VERSION_V2 + "/common/download",
+                            Constants.API_VERSION_V2 + "/common/export"
+                    ).check(StpUtil::checkLogin);
+                    SaRouter.match(Constants.API_VERSION_V2 + "/admin/**", Constants.API_VERSION_V2 + "/admin/login", StpAdminUtil::checkLogin);
+                })
+                .setError(e -> Response.error(ResponseEnum.UNAUTHORIZED));
+    }
+
+}

+ 18 - 0
PAS/src/main/java/cn/cslg/pas/common/config/SpringDocConfig.java

@@ -0,0 +1,18 @@
+package cn.cslg.pas.common.config;
+
+import io.swagger.v3.oas.models.ExternalDocumentation;
+import io.swagger.v3.oas.models.OpenAPI;
+import io.swagger.v3.oas.models.info.Info;
+import io.swagger.v3.oas.models.info.License;
+import org.springdoc.core.GroupedOpenApi;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class SpringDocConfig {
+
+    @Bean
+    public OpenAPI apiInfo() {
+        return new OpenAPI().info(new Info().title("接口文档").description("接口文档").version("v1.0.0"));
+    }
+}

+ 13 - 0
PAS/src/main/java/cn/cslg/pas/common/config/WebSocketConfig.java

@@ -0,0 +1,13 @@
+package cn.cslg.pas.common.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.socket.server.standard.ServerEndpointExporter;
+
+@Configuration
+public class WebSocketConfig {
+    @Bean
+    public ServerEndpointExporter serverEndpointExporter() {
+        return new ServerEndpointExporter();
+    }
+}

+ 849 - 0
PAS/src/main/java/cn/cslg/pas/common/core/Convert.java

@@ -0,0 +1,849 @@
+package cn.cslg.pas.common.core;
+
+import cn.cslg.pas.common.utils.StringUtils;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.nio.ByteBuffer;
+import java.nio.charset.Charset;
+import java.text.NumberFormat;
+import java.util.Set;
+
+/**
+ * 类型转换器
+ */
+public class Convert {
+    /**
+     * 转换为字符串<br>
+     * 如果给定的值为null,或者转换失败,返回默认值<br>
+     * 转换失败不会报错
+     *
+     * @param value        被转换的值
+     * @param defaultValue 转换错误时的默认值
+     * @return 结果
+     */
+    public static String toStr(Object value, String defaultValue) {
+        if (null == value) {
+            return defaultValue;
+        }
+        if (value instanceof String) {
+            return (String) value;
+        }
+        return value.toString();
+    }
+
+    /**
+     * 转换为字符串<br>
+     * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br>
+     * 转换失败不会报错
+     *
+     * @param value 被转换的值
+     * @return 结果
+     */
+    public static String toStr(Object value) {
+        return toStr(value, null);
+    }
+
+    /**
+     * 转换为字符<br>
+     * 如果给定的值为null,或者转换失败,返回默认值<br>
+     * 转换失败不会报错
+     *
+     * @param value        被转换的值
+     * @param defaultValue 转换错误时的默认值
+     * @return 结果
+     */
+    public static Character toChar(Object value, Character defaultValue) {
+        if (null == value) {
+            return defaultValue;
+        }
+        if (value instanceof Character) {
+            return (Character) value;
+        }
+
+        final String valueStr = toStr(value, null);
+        return StringUtils.isEmpty(valueStr) ? defaultValue : valueStr.charAt(0);
+    }
+
+    /**
+     * 转换为字符<br>
+     * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br>
+     * 转换失败不会报错
+     *
+     * @param value 被转换的值
+     * @return 结果
+     */
+    public static Character toChar(Object value) {
+        return toChar(value, null);
+    }
+
+    /**
+     * 转换为byte<br>
+     * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<br>
+     * 转换失败不会报错
+     *
+     * @param value        被转换的值
+     * @param defaultValue 转换错误时的默认值
+     * @return 结果
+     */
+    public static Byte toByte(Object value, Byte defaultValue) {
+        if (value == null) {
+            return defaultValue;
+        }
+        if (value instanceof Byte) {
+            return (Byte) value;
+        }
+        if (value instanceof Number) {
+            return ((Number) value).byteValue();
+        }
+        final String valueStr = toStr(value, null);
+        if (StringUtils.isEmpty(valueStr)) {
+            return defaultValue;
+        }
+        try {
+            return Byte.parseByte(valueStr);
+        } catch (Exception e) {
+            return defaultValue;
+        }
+    }
+
+    /**
+     * 转换为byte<br>
+     * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br>
+     * 转换失败不会报错
+     *
+     * @param value 被转换的值
+     * @return 结果
+     */
+    public static Byte toByte(Object value) {
+        return toByte(value, null);
+    }
+
+    /**
+     * 转换为Short<br>
+     * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<br>
+     * 转换失败不会报错
+     *
+     * @param value        被转换的值
+     * @param defaultValue 转换错误时的默认值
+     * @return 结果
+     */
+    public static Short toShort(Object value, Short defaultValue) {
+        if (value == null) {
+            return defaultValue;
+        }
+        if (value instanceof Short) {
+            return (Short) value;
+        }
+        if (value instanceof Number) {
+            return ((Number) value).shortValue();
+        }
+        final String valueStr = toStr(value, null);
+        if (StringUtils.isEmpty(valueStr)) {
+            return defaultValue;
+        }
+        try {
+            return Short.parseShort(valueStr.trim());
+        } catch (Exception e) {
+            return defaultValue;
+        }
+    }
+
+    /**
+     * 转换为Short<br>
+     * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br>
+     * 转换失败不会报错
+     *
+     * @param value 被转换的值
+     * @return 结果
+     */
+    public static Short toShort(Object value) {
+        return toShort(value, null);
+    }
+
+    /**
+     * 转换为Number<br>
+     * 如果给定的值为空,或者转换失败,返回默认值<br>
+     * 转换失败不会报错
+     *
+     * @param value        被转换的值
+     * @param defaultValue 转换错误时的默认值
+     * @return 结果
+     */
+    public static Number toNumber(Object value, Number defaultValue) {
+        if (value == null) {
+            return defaultValue;
+        }
+        if (value instanceof Number) {
+            return (Number) value;
+        }
+        final String valueStr = toStr(value, null);
+        if (StringUtils.isEmpty(valueStr)) {
+            return defaultValue;
+        }
+        try {
+            return NumberFormat.getInstance().parse(valueStr);
+        } catch (Exception e) {
+            return defaultValue;
+        }
+    }
+
+    /**
+     * 转换为Number<br>
+     * 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br>
+     * 转换失败不会报错
+     *
+     * @param value 被转换的值
+     * @return 结果
+     */
+    public static Number toNumber(Object value) {
+        return toNumber(value, null);
+    }
+
+    /**
+     * 转换为int<br>
+     * 如果给定的值为空,或者转换失败,返回默认值<br>
+     * 转换失败不会报错
+     *
+     * @param value        被转换的值
+     * @param defaultValue 转换错误时的默认值
+     * @return 结果
+     */
+    public static Integer toInt(Object value, Integer defaultValue) {
+        if (value == null) {
+            return defaultValue;
+        }
+        if (value instanceof Integer) {
+            return (Integer) value;
+        }
+        if (value instanceof Number) {
+            return ((Number) value).intValue();
+        }
+        final String valueStr = toStr(value, null);
+        if (StringUtils.isEmpty(valueStr)) {
+            return defaultValue;
+        }
+        try {
+            return Integer.parseInt(valueStr.trim());
+        } catch (Exception e) {
+            return defaultValue;
+        }
+    }
+
+    /**
+     * 转换为int<br>
+     * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br>
+     * 转换失败不会报错
+     *
+     * @param value 被转换的值
+     * @return 结果
+     */
+    public static Integer toInt(Object value) {
+        return toInt(value, null);
+    }
+
+    /**
+     * 转换为Integer数组<br>
+     *
+     * @param str 被转换的值
+     * @return 结果
+     */
+    public static Integer[] toIntArray(String str) {
+        return toIntArray(",", str);
+    }
+
+    /**
+     * 转换为Long数组<br>
+     *
+     * @param str 被转换的值
+     * @return 结果
+     */
+    public static Long[] toLongArray(String str) {
+        return toLongArray(",", str);
+    }
+
+    /**
+     * 转换为Integer数组<br>
+     *
+     * @param split 分隔符
+     * @param split 被转换的值
+     * @return 结果
+     */
+    public static Integer[] toIntArray(String split, String str) {
+        if (StringUtils.isEmpty(str)) {
+            return new Integer[]{};
+        }
+        String[] arr = str.split(split);
+        final Integer[] ints = new Integer[arr.length];
+        for (int i = 0; i < arr.length; i++) {
+            final Integer v = toInt(arr[i], 0);
+            ints[i] = v;
+        }
+        return ints;
+    }
+
+    /**
+     * 转换为Long数组<br>
+     *
+     * @param split 分隔符
+     * @param str   被转换的值
+     * @return 结果
+     */
+    public static Long[] toLongArray(String split, String str) {
+        if (StringUtils.isEmpty(str)) {
+            return new Long[]{};
+        }
+        String[] arr = str.split(split);
+        final Long[] longs = new Long[arr.length];
+        for (int i = 0; i < arr.length; i++) {
+            final Long v = toLong(arr[i], null);
+            longs[i] = v;
+        }
+        return longs;
+    }
+
+    /**
+     * 转换为String数组<br>
+     *
+     * @param str 被转换的值
+     * @return 结果
+     */
+    public static String[] toStrArray(String str) {
+        return toStrArray(",", str);
+    }
+
+    /**
+     * 转换为String数组<br>
+     *
+     * @param split 分隔符
+     * @param split 被转换的值
+     * @return 结果
+     */
+    public static String[] toStrArray(String split, String str) {
+        return str.split(split);
+    }
+
+    /**
+     * 转换为long<br>
+     * 如果给定的值为空,或者转换失败,返回默认值<br>
+     * 转换失败不会报错
+     *
+     * @param value        被转换的值
+     * @param defaultValue 转换错误时的默认值
+     * @return 结果
+     */
+    public static Long toLong(Object value, Long defaultValue) {
+        if (value == null) {
+            return defaultValue;
+        }
+        if (value instanceof Long) {
+            return (Long) value;
+        }
+        if (value instanceof Number) {
+            return ((Number) value).longValue();
+        }
+        final String valueStr = toStr(value, null);
+        if (StringUtils.isEmpty(valueStr)) {
+            return defaultValue;
+        }
+        try {
+            // 支持科学计数法
+            return new BigDecimal(valueStr.trim()).longValue();
+        } catch (Exception e) {
+            return defaultValue;
+        }
+    }
+
+    /**
+     * 转换为long<br>
+     * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br>
+     * 转换失败不会报错
+     *
+     * @param value 被转换的值
+     * @return 结果
+     */
+    public static Long toLong(Object value) {
+        return toLong(value, null);
+    }
+
+    /**
+     * 转换为double<br>
+     * 如果给定的值为空,或者转换失败,返回默认值<br>
+     * 转换失败不会报错
+     *
+     * @param value        被转换的值
+     * @param defaultValue 转换错误时的默认值
+     * @return 结果
+     */
+    public static Double toDouble(Object value, Double defaultValue) {
+        if (value == null) {
+            return defaultValue;
+        }
+        if (value instanceof Double) {
+            return (Double) value;
+        }
+        if (value instanceof Number) {
+            return ((Number) value).doubleValue();
+        }
+        final String valueStr = toStr(value, null);
+        if (StringUtils.isEmpty(valueStr)) {
+            return defaultValue;
+        }
+        try {
+            // 支持科学计数法
+            return new BigDecimal(valueStr.trim()).doubleValue();
+        } catch (Exception e) {
+            return defaultValue;
+        }
+    }
+
+    /**
+     * 转换为double<br>
+     * 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br>
+     * 转换失败不会报错
+     *
+     * @param value 被转换的值
+     * @return 结果
+     */
+    public static Double toDouble(Object value) {
+        return toDouble(value, null);
+    }
+
+    /**
+     * 转换为Float<br>
+     * 如果给定的值为空,或者转换失败,返回默认值<br>
+     * 转换失败不会报错
+     *
+     * @param value        被转换的值
+     * @param defaultValue 转换错误时的默认值
+     * @return 结果
+     */
+    public static Float toFloat(Object value, Float defaultValue) {
+        if (value == null) {
+            return defaultValue;
+        }
+        if (value instanceof Float) {
+            return (Float) value;
+        }
+        if (value instanceof Number) {
+            return ((Number) value).floatValue();
+        }
+        final String valueStr = toStr(value, null);
+        if (StringUtils.isEmpty(valueStr)) {
+            return defaultValue;
+        }
+        try {
+            return Float.parseFloat(valueStr.trim());
+        } catch (Exception e) {
+            return defaultValue;
+        }
+    }
+
+    /**
+     * 转换为Float<br>
+     * 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br>
+     * 转换失败不会报错
+     *
+     * @param value 被转换的值
+     * @return 结果
+     */
+    public static Float toFloat(Object value) {
+        return toFloat(value, null);
+    }
+
+    /**
+     * 转换为boolean<br>
+     * String支持的值为:true、false、yes、ok、no,1,0 如果给定的值为空,或者转换失败,返回默认值<br>
+     * 转换失败不会报错
+     *
+     * @param value        被转换的值
+     * @param defaultValue 转换错误时的默认值
+     * @return 结果
+     */
+    public static Boolean toBool(Object value, Boolean defaultValue) {
+        if (value == null) {
+            return defaultValue;
+        }
+        if (value instanceof Boolean) {
+            return (Boolean) value;
+        }
+        String valueStr = toStr(value, null);
+        if (StringUtils.isEmpty(valueStr)) {
+            return defaultValue;
+        }
+        valueStr = valueStr.trim().toLowerCase();
+        switch (valueStr) {
+            case "true":
+                return true;
+            case "false":
+                return false;
+            case "yes":
+                return true;
+            case "ok":
+                return true;
+            case "no":
+                return false;
+            case "1":
+                return true;
+            case "0":
+                return false;
+            default:
+                return defaultValue;
+        }
+    }
+
+    /**
+     * 转换为boolean<br>
+     * 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br>
+     * 转换失败不会报错
+     *
+     * @param value 被转换的值
+     * @return 结果
+     */
+    public static Boolean toBool(Object value) {
+        return toBool(value, null);
+    }
+
+    /**
+     * 转换为Enum对象<br>
+     * 如果给定的值为空,或者转换失败,返回默认值<br>
+     *
+     * @param clazz        Enum的Class
+     * @param value        值
+     * @param defaultValue 默认值
+     * @return Enum
+     */
+    public static <E extends Enum<E>> E toEnum(Class<E> clazz, Object value, E defaultValue) {
+        if (value == null) {
+            return defaultValue;
+        }
+        if (clazz.isAssignableFrom(value.getClass())) {
+            @SuppressWarnings("unchecked")
+            E myE = (E) value;
+            return myE;
+        }
+        final String valueStr = toStr(value, null);
+        if (StringUtils.isEmpty(valueStr)) {
+            return defaultValue;
+        }
+        try {
+            return Enum.valueOf(clazz, valueStr);
+        } catch (Exception e) {
+            return defaultValue;
+        }
+    }
+
+    /**
+     * 转换为Enum对象<br>
+     * 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br>
+     *
+     * @param clazz Enum的Class
+     * @param value 值
+     * @return Enum
+     */
+    public static <E extends Enum<E>> E toEnum(Class<E> clazz, Object value) {
+        return toEnum(clazz, value, null);
+    }
+
+    /**
+     * 转换为BigInteger<br>
+     * 如果给定的值为空,或者转换失败,返回默认值<br>
+     * 转换失败不会报错
+     *
+     * @param value        被转换的值
+     * @param defaultValue 转换错误时的默认值
+     * @return 结果
+     */
+    public static BigInteger toBigInteger(Object value, BigInteger defaultValue) {
+        if (value == null) {
+            return defaultValue;
+        }
+        if (value instanceof BigInteger) {
+            return (BigInteger) value;
+        }
+        if (value instanceof Long) {
+            return BigInteger.valueOf((Long) value);
+        }
+        final String valueStr = toStr(value, null);
+        if (StringUtils.isEmpty(valueStr)) {
+            return defaultValue;
+        }
+        try {
+            return new BigInteger(valueStr);
+        } catch (Exception e) {
+            return defaultValue;
+        }
+    }
+
+    /**
+     * 转换为BigInteger<br>
+     * 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br>
+     * 转换失败不会报错
+     *
+     * @param value 被转换的值
+     * @return 结果
+     */
+    public static BigInteger toBigInteger(Object value) {
+        return toBigInteger(value, null);
+    }
+
+    /**
+     * 转换为BigDecimal<br>
+     * 如果给定的值为空,或者转换失败,返回默认值<br>
+     * 转换失败不会报错
+     *
+     * @param value        被转换的值
+     * @param defaultValue 转换错误时的默认值
+     * @return 结果
+     */
+    public static BigDecimal toBigDecimal(Object value, BigDecimal defaultValue) {
+        if (value == null) {
+            return defaultValue;
+        }
+        if (value instanceof BigDecimal) {
+            return (BigDecimal) value;
+        }
+        if (value instanceof Long) {
+            return new BigDecimal((Long) value);
+        }
+        if (value instanceof Double) {
+            return new BigDecimal((Double) value);
+        }
+        if (value instanceof Integer) {
+            return new BigDecimal((Integer) value);
+        }
+        final String valueStr = toStr(value, null);
+        if (StringUtils.isEmpty(valueStr)) {
+            return defaultValue;
+        }
+        try {
+            return new BigDecimal(valueStr);
+        } catch (Exception e) {
+            return defaultValue;
+        }
+    }
+
+    /**
+     * 转换为BigDecimal<br>
+     * 如果给定的值为空,或者转换失败,返回默认值<br>
+     * 转换失败不会报错
+     *
+     * @param value 被转换的值
+     * @return 结果
+     */
+    public static BigDecimal toBigDecimal(Object value) {
+        return toBigDecimal(value, null);
+    }
+
+    /**
+     * 将对象转为字符串<br>
+     * 1、Byte数组和ByteBuffer会被转换为对应字符串的数组 2、对象数组会调用Arrays.toString方法
+     *
+     * @param obj 对象
+     * @return 字符串
+     */
+//    public static String utf8Str(Object obj)
+//    {
+//        return str(obj, CharsetKit.CHARSET_UTF_8);
+//    }
+
+    /**
+     * 将对象转为字符串<br>
+     * 1、Byte数组和ByteBuffer会被转换为对应字符串的数组 2、对象数组会调用Arrays.toString方法
+     *
+     * @param obj         对象
+     * @param charsetName 字符集
+     * @return 字符串
+     */
+    public static String str(Object obj, String charsetName) {
+        return str(obj, Charset.forName(charsetName));
+    }
+
+    /**
+     * 将对象转为字符串<br>
+     * 1、Byte数组和ByteBuffer会被转换为对应字符串的数组 2、对象数组会调用Arrays.toString方法
+     *
+     * @param obj     对象
+     * @param charset 字符集
+     * @return 字符串
+     */
+    public static String str(Object obj, Charset charset) {
+        if (null == obj) {
+            return null;
+        }
+
+        if (obj instanceof String) {
+            return (String) obj;
+        } else if (obj instanceof byte[] || obj instanceof Byte[]) {
+            return str((Byte[]) obj, charset);
+        } else if (obj instanceof ByteBuffer) {
+            return str((ByteBuffer) obj, charset);
+        }
+        return obj.toString();
+    }
+
+    /**
+     * 将byte数组转为字符串
+     *
+     * @param bytes   byte数组
+     * @param charset 字符集
+     * @return 字符串
+     */
+    public static String str(byte[] bytes, String charset) {
+        return str(bytes, StringUtils.isEmpty(charset) ? Charset.defaultCharset() : Charset.forName(charset));
+    }
+
+    /**
+     * 解码字节码
+     *
+     * @param data    字符串
+     * @param charset 字符集,如果此字段为空,则解码的结果取决于平台
+     * @return 解码后的字符串
+     */
+    public static String str(byte[] data, Charset charset) {
+        if (data == null) {
+            return null;
+        }
+
+        if (null == charset) {
+            return new String(data);
+        }
+        return new String(data, charset);
+    }
+
+    /**
+     * 将编码的byteBuffer数据转换为字符串
+     *
+     * @param data    数据
+     * @param charset 字符集,如果为空使用当前系统字符集
+     * @return 字符串
+     */
+    public static String str(ByteBuffer data, String charset) {
+        if (data == null) {
+            return null;
+        }
+
+        return str(data, Charset.forName(charset));
+    }
+
+    /**
+     * 将编码的byteBuffer数据转换为字符串
+     *
+     * @param data    数据
+     * @param charset 字符集,如果为空使用当前系统字符集
+     * @return 字符串
+     */
+    public static String str(ByteBuffer data, Charset charset) {
+        if (null == charset) {
+            charset = Charset.defaultCharset();
+        }
+        return charset.decode(data).toString();
+    }
+
+    // ----------------------------------------------------------------------- 全角半角转换
+
+    /**
+     * 半角转全角
+     *
+     * @param input String.
+     * @return 全角字符串.
+     */
+    public static String toSBC(String input) {
+        return toSBC(input, null);
+    }
+
+    /**
+     * 半角转全角
+     *
+     * @param input         String
+     * @param notConvertSet 不替换的字符集合
+     * @return 全角字符串.
+     */
+    public static String toSBC(String input, Set<Character> notConvertSet) {
+        char c[] = input.toCharArray();
+        for (int i = 0; i < c.length; i++) {
+            if (null != notConvertSet && notConvertSet.contains(c[i])) {
+                // 跳过不替换的字符
+                continue;
+            }
+
+            if (c[i] == ' ') {
+                c[i] = '\u3000';
+            } else if (c[i] < '\177') {
+                c[i] = (char) (c[i] + 65248);
+
+            }
+        }
+        return new String(c);
+    }
+
+    /**
+     * 全角转半角
+     *
+     * @param input String.
+     * @return 半角字符串
+     */
+    public static String toDBC(String input) {
+        return toDBC(input, null);
+    }
+
+    /**
+     * 替换全角为半角
+     *
+     * @param text          文本
+     * @param notConvertSet 不替换的字符集合
+     * @return 替换后的字符
+     */
+    public static String toDBC(String text, Set<Character> notConvertSet) {
+        char c[] = text.toCharArray();
+        for (int i = 0; i < c.length; i++) {
+            if (null != notConvertSet && notConvertSet.contains(c[i])) {
+                // 跳过不替换的字符
+                continue;
+            }
+
+            if (c[i] == '\u3000') {
+                c[i] = ' ';
+            } else if (c[i] > '\uFF00' && c[i] < '\uFF5F') {
+                c[i] = (char) (c[i] - 65248);
+            }
+        }
+        String returnString = new String(c);
+
+        return returnString;
+    }
+
+    /**
+     * 数字金额大写转换 先写个完整的然后将如零拾替换成零
+     *
+     * @param n 数字
+     * @return 中文大写数字
+     */
+    public static String digitUppercase(double n) {
+        String[] fraction = {"角", "分"};
+        String[] digit = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
+        String[][] unit = {{"元", "万", "亿"}, {"", "拾", "佰", "仟"}};
+
+        String head = n < 0 ? "负" : "";
+        n = Math.abs(n);
+
+        String s = "";
+        for (int i = 0; i < fraction.length; i++) {
+            s += (digit[(int) (Math.floor(n * 10 * Math.pow(10, i)) % 10)] + fraction[i]).replaceAll("(零.)+", "");
+        }
+        if (s.length() < 1) {
+            s = "整";
+        }
+        int integerPart = (int) Math.floor(n);
+
+        for (int i = 0; i < unit[0].length && integerPart > 0; i++) {
+            String p = "";
+            for (int j = 0; j < unit[1].length && n > 0; j++) {
+                p = digit[integerPart % 10] + unit[1][j] + p;
+                integerPart = integerPart / 10;
+            }
+            s = p.replaceAll("(零.)*零$", "").replaceAll("^$", "零") + unit[0][i] + s;
+        }
+        return head + s.replaceAll("(零.)*零元", "元").replaceFirst("(零.)+", "").replaceAll("(零.)+", "零").replaceAll("^整$", "零元整");
+    }
+}

+ 14 - 0
PAS/src/main/java/cn/cslg/pas/common/core/annotation/AnnotationParse.java

@@ -0,0 +1,14 @@
+package cn.cslg.pas.common.core.annotation;
+
+import java.lang.reflect.Method;
+
+public class AnnotationParse {
+
+    public static int[] permissionParse(Method method) throws Exception {
+        if(method.isAnnotationPresent(Permission.class)){
+            Permission annotation = method.getAnnotation(Permission.class);
+            return annotation.roles();
+        }
+        return null;
+    }
+}

+ 13 - 0
PAS/src/main/java/cn/cslg/pas/common/core/annotation/Permission.java

@@ -0,0 +1,13 @@
+package cn.cslg.pas.common.core.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import java.util.List;
+
+@Target({ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Permission {
+    int[] roles();
+}

+ 72 - 0
PAS/src/main/java/cn/cslg/pas/common/core/annotation/PermissionAspect.java

@@ -0,0 +1,72 @@
+package cn.cslg.pas.common.core.annotation;
+
+import cn.cslg.pas.common.core.base.RequestHolder;
+import cn.cslg.pas.common.core.exception.PermissionException;
+import cn.cslg.pas.domain.Project;
+import cn.cslg.pas.domain.ProjectUser;
+import cn.cslg.pas.domain.User;
+import cn.cslg.pas.common.utils.CacheUtils;
+import cn.cslg.pas.common.utils.StringUtils;
+import cn.cslg.pas.service.ProjectService;
+import cn.cslg.pas.service.ProjectUserService;
+import cn.dev33.satoken.stp.StpUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Pointcut;
+import org.aspectj.lang.reflect.MethodSignature;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+import java.lang.reflect.Method;
+import java.util.Arrays;
+
+@Slf4j
+@Aspect
+@Component
+public class PermissionAspect {
+
+    @Autowired
+    private ProjectUserService projectUserService;
+    @Autowired
+    private ProjectService projectService;
+    @Autowired
+    private CacheUtils cacheUtils;
+
+    @Pointcut("execution(public * cn.cslg.pas.controller.*.*(..))")
+    public void privilege() {
+    }
+
+    @ResponseBody
+    @Around("privilege()")
+    public Object isAccessMethod(ProceedingJoinPoint joinPoint) throws Throwable {
+        //获取访问目标方法
+        MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();
+        Method targetMethod = methodSignature.getMethod();
+        final int[] methodAccess = AnnotationParse.permissionParse(targetMethod);
+        if (methodAccess != null && methodAccess.length != 0) {
+            HttpServletRequest request = RequestHolder.getRequest();
+            if (request != null) {
+                String projectId = request.getHeader("x-project-id");
+                Integer userId = StpUtil.getLoginIdAsInt();
+                if (StringUtils.isNotEmpty(projectId)) {
+                    Project project = projectService.getById(projectId);
+                    User user = cacheUtils.getLoginUser(userId);
+                    ProjectUser projectUser = projectUserService.getProjectUserByProjectIdAndUserId(Integer.parseInt(projectId), userId);
+                    if (projectUser != null && project != null && user != null) {
+                        if (project.getCreateBy().equals(userId)) {
+                            return joinPoint.proceed();
+                        }
+                        if (Arrays.stream(methodAccess).noneMatch(item -> item == projectUser.getType())) {
+                            throw new PermissionException("用户操作拦截");
+                        }
+                    }
+                }
+            }
+        }
+        return joinPoint.proceed();
+    }
+}

+ 146 - 0
PAS/src/main/java/cn/cslg/pas/common/core/base/Constants.java

@@ -0,0 +1,146 @@
+package cn.cslg.pas.common.core.base;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class Constants {
+
+    public static final String ADMIN_USERNAME = "admin";
+
+    public static final String PROJECT_INFO_FILE_NAME = "project.json";
+    public static final String PROJECT_REPORT_DIRECTORY_NAME = "project-report";
+    public static final String PROJECT_REPORT_FILE_NAME = "project-report.json";
+    public static final String PROJECT_FILE_DIRECTORY_NAME = "project-file";
+    public static final String PROJECT_FILE_FILE_NAME = "project-file.json";
+    public static final String PROJECT_PATENT_LINK_FILE_NAME = "project-patent-link.json";
+    public static final String PATENT_IMAGE_DIRECTORY_NAME = "patent-image";
+    public static final String PATENT_IMAGE_FILE_NAME = "patent-image.json";
+    public static final String PATENT_INSTRUCTION_DIRECTORY_NAME = "patent-instruction";
+    public static final String PATENT_INSTRUCTION_FILE_NAME = "patent-instruction.json";
+    public static final String PATENT_APPLICANT_MERGE_LINK_FILE_NAME = "patent-applicant-merge-link.json";
+    public static final String PATENT_APPLICANT_FILE_NAME = "patent-applicant.json";
+    public static final String PATENT_APPLICANT_LINK_FILE_NAME = "patent-applicant-link.json";
+    public static final String PATENT_FILE_NAME = "patent.json";
+    public static final String PATENT_ID_PATENT_NO_FILE_NAME = "patent-id-patentno.json";
+    public static final String PATENT_AFFAIR_FILE_NAME = "patent-affair.json";
+    public static final String PATENT_AGENCY_FILE_NAME = "patent-agency.json";
+    public static final String PATENT_AGENT_LINK_FILE_NAME = "patent-agent-link.json";
+    public static final String PATENT_AGENT_FILE_NAME = "patent-agent.json";
+    public static final String PATENT_INSTRUCTION_TEXT_FILE_NAME = "patent-instruction-text.json";
+    public static final String PATENT_INVENTOR_LINK_FILE_NAME = "patent-inventor-link.json";
+    public static final String PATENT_INVENTOR_MERGE_FILE_NAME = "patent-inventor-merge.json";
+    public static final String PATENT_INVENTOR_FILE_NAME = "patent-inventor.json";
+    public static final String PATENT_LICENSOR_FILE_NAME = "patent-licensor.json";
+    public static final String PATENT_PLEDGE_FILE_NAME = "patent-pledge.json";
+    public static final String PATENT_RIGHT_FILE_NAME = "patent-right.json";
+    public static final String PATENT_FAMILY_LINK_FILE_NAME = "patent-family-link.json";
+    public static final String PATENT_FAMILY_FILE_NAME = "patent-family.json";
+    public static final String PATENT_CLASS_NUMBER_FILE_NAME = "patent-class-number.json";
+    public static final String PATENT_LABEL_FILE_NAME = "patent-label.json";
+    public static final String PROJECT_FIELD_FILE_NAME = "project-field.json";
+    public static final String PROJECT_FIELD_OPTION_FILE_NAME = "project-field-option.json";
+    public static final String PROJECT_FIELD_TREE_FILE_NAME = "project-field-tree.json";
+    public static final String PROJECT_FIELD_TEXT_FILE_NAME = "project-field-text.json";
+    public static final String PROJECT_FIELD_PATENT_LINK_FILE_NAME = "project-field-patent-link.json";
+
+    public static final String API_VERSION_V2 = "/api/v2";
+
+    public static final Integer PATENT_CLASS_NUMBER_IPC = 1;
+    public static final Integer PATENT_CLASS_NUMBER_CPC = 2;
+    public static final Integer PATENT_CLASS_NUMBER_UPC = 3;
+    public static final Integer PATENT_CLASS_NUMBER_LOC = 4;
+
+    /**
+     * 分隔符-竖线
+     */
+    public static final String SEPARATOR_VERTICAL_BAR = " | ";
+
+    /**
+     * 系统字段类型-查询检索
+     */
+    public static final String SYSTEM_FIELD_QUERY = "query";
+
+    /**
+     * 系统字段类型-专利导出
+     */
+    public static final String SYSTEM_FIELD_EXPORT = "export";
+
+    /**
+     * 系统字段类型-专利列表
+     */
+    public static final String SYSTEM_FIELD_PATENT_LIST = "list";
+
+    /**
+     * 系统字段类型-专题库字段
+     */
+    public static final String SYSTEM_FIELD_PROJECT = "project";
+
+    /**
+     * 专题库导入专利任务名称
+     */
+    public static final Integer TASK_IMPORT_PATENT = 1;
+
+    /**
+     * 专利说明书导入任务名称
+     */
+    public static final Integer TASK_IMPORT_PATENT_INSTRUCTION = 3;
+
+    /**
+     * 专利导出任务名称
+     */
+    public static final Integer TASK_EXPORT_PATENT = 2;
+
+    /**
+     * 日期位移值
+     */
+    public static final Map<String, Integer> DATE_OFFSET = new HashMap<String, Integer>() {{
+        put("月", -1);
+        put("季", -3);
+        put("半年", -6);
+        put("年", -12);
+        put("2年", -24);
+        put("3年", -36);
+        put("5年", -60);
+    }};
+
+    /**
+     * 专利类型
+     */
+    public static final String PATENT_TYPE = "PATENT_TYPE";
+
+    /**
+     * 机构类型
+     */
+    public static final String ORGAN_TYPE = "ORGAN_TYPE";
+
+    /**
+     * 许可人/被许可人
+     */
+    public static final String LICENSOR_TYPE = "LICENSOR_TYPE";
+
+    /**
+     * 简单法律状态
+     */
+    public static final String PATENT_SIMPLE_STATUS = "PATENT_SIMPLE_STATUS";
+
+    /**
+     * 国家
+     */
+    public static final String COUNTRIES = "COUNTRIES";
+
+    /**
+     * 法律状态
+     */
+    public static final String PATENT_STATUS = "PATENT_STATUS";
+
+    /**
+     * 企业应用场景
+     */
+    public static final String ENTERPRISE_APPLICATION_SCENARIO = "ENTERPRISE_APPLICATION_SCENARIO";
+
+    /**
+     * 调查类型
+     */
+    public static final String INVESTIGATION_TYPE = "INVESTIGATION_TYPE";
+
+}

+ 9 - 0
PAS/src/main/java/cn/cslg/pas/common/core/base/DocFlag.java

@@ -0,0 +1,9 @@
+package cn.cslg.pas.common.core.base;
+
+public class DocFlag {
+    public final static String classify = "^@=classify-\\d+:.*@$";
+    public final static String titleNumber = "^@=index-\\d+(.\\d+)*:.*@$";
+    public final static String content = "^\\d+.*";
+//    public final  static String content="^\\d+.根据权利要求";
+//    public final  static String nocontent="^(?:(?!^\\d+.根据权利要求).)*";//不以开头
+}

+ 15 - 0
PAS/src/main/java/cn/cslg/pas/common/core/base/EStatus.java

@@ -0,0 +1,15 @@
+package cn.cslg.pas.common.core.base;
+
+/**
+ * 状态枚举类
+ */
+public class EStatus {
+    /**
+     * 删除的
+     */
+    public static final int DISABLED = 0;
+    /**
+     * 激活的
+     */
+    public static final int ENABLE = 1;
+}

+ 20 - 0
PAS/src/main/java/cn/cslg/pas/common/core/base/RedisConf.java

@@ -0,0 +1,20 @@
+package cn.cslg.pas.common.core.base;
+
+
+/**
+ * Redis常量类
+ */
+public class RedisConf {
+
+    public static final String SYMBOL_COLON = ":";
+    public static final String SYMBOL_LINE = "-";
+    public final static String COMMON_DATA = "common-data";
+    public final static String LOGIN_USER = "login-user";
+    public final static String VERIFY_CODE = "verify-code";
+    public final static String SELECT_PATENT = "select-patent";
+    public final static String ANALYSIS_COUNT = "analysis-count";
+    public final static String AREA_LIST = "area-list";
+    public final static String USER_FIELD = "user-field";
+    public final static String FIELD_ORDER = "field-order";
+    public final static String USER_IMPORT = "user-import";
+}

+ 116 - 0
PAS/src/main/java/cn/cslg/pas/common/core/base/RequestHolder.java

@@ -0,0 +1,116 @@
+package cn.cslg.pas.common.core.base;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.context.request.RequestAttributes;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+@Slf4j
+public class RequestHolder {
+
+    /**
+     * 获取request
+     *
+     * @return HttpServletRequest
+     */
+    public static HttpServletRequest getRequest() {
+        log.debug("getRequest -- Thread id :{}, name : {}", Thread.currentThread().getId(), Thread.currentThread().getName());
+        ServletRequestAttributes servletRequestAttributes = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes());
+        if (null == servletRequestAttributes) {
+            return null;
+        }
+        return servletRequestAttributes.getRequest();
+    }
+
+    /**
+     * 获取Response
+     *
+     * @return HttpServletRequest
+     */
+    public static HttpServletResponse getResponse() {
+        log.debug("getResponse -- Thread id :{}, name : {}", Thread.currentThread().getId(), Thread.currentThread().getName());
+        ServletRequestAttributes servletRequestAttributes = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes());
+        if (null == servletRequestAttributes) {
+            return null;
+        }
+        return servletRequestAttributes.getResponse();
+    }
+
+    /**
+     * 获取session
+     *
+     * @return HttpSession
+     */
+    public static HttpSession getSession() {
+        log.debug("getSession -- Thread id :{}, name : {}", Thread.currentThread().getId(), Thread.currentThread().getName());
+        HttpServletRequest request = null;
+        if (null == (request = getRequest())) {
+            return null;
+        }
+        return request.getSession();
+    }
+
+    /**
+     * 获取session的Attribute
+     *
+     * @param name session的key
+     * @return Object
+     */
+    public static Object getSession(String name) {
+        log.debug("getSession -- Thread id :{}, name : {}", Thread.currentThread().getId(), Thread.currentThread().getName());
+        ServletRequestAttributes servletRequestAttributes = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes());
+        if (null == servletRequestAttributes) {
+            return null;
+        }
+        return servletRequestAttributes.getAttribute(name, RequestAttributes.SCOPE_SESSION);
+    }
+
+    /**
+     * 添加session
+     *
+     * @param name
+     * @param value
+     */
+    public static void setSession(String name, Object value) {
+        log.debug("setSession -- Thread id :{}, name : {}", Thread.currentThread().getId(), Thread.currentThread().getName());
+        ServletRequestAttributes servletRequestAttributes = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes());
+        if (null == servletRequestAttributes) {
+            return;
+        }
+        servletRequestAttributes.setAttribute(name, value, RequestAttributes.SCOPE_SESSION);
+    }
+
+    /**
+     * 清除指定session
+     *
+     * @param name
+     * @return void
+     */
+    public static void removeSession(String name) {
+        log.debug("removeSession -- Thread id :{}, name : {}", Thread.currentThread().getId(), Thread.currentThread().getName());
+        ServletRequestAttributes servletRequestAttributes = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes());
+        if (null == servletRequestAttributes) {
+            return;
+        }
+        servletRequestAttributes.removeAttribute(name, RequestAttributes.SCOPE_SESSION);
+    }
+
+    /**
+     * 获取所有session key
+     *
+     * @return String[]
+     */
+    public static String[] getSessionKeys() {
+        log.debug("getSessionKeys -- Thread id :{}, name : {}", Thread.currentThread().getId(), Thread.currentThread().getName());
+        ServletRequestAttributes servletRequestAttributes = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes());
+        if (null == servletRequestAttributes) {
+            return null;
+        }
+        return servletRequestAttributes.getAttributeNames(RequestAttributes.SCOPE_SESSION);
+    }
+
+}

+ 90 - 0
PAS/src/main/java/cn/cslg/pas/common/core/exception/BaseException.java

@@ -0,0 +1,90 @@
+package cn.cslg.pas.common.core.exception;
+
+import cn.cslg.pas.common.utils.SpringUtils;
+import cn.cslg.pas.common.utils.StringUtils;
+import org.springframework.context.MessageSource;
+import org.springframework.context.i18n.LocaleContextHolder;
+
+/**
+ * 基础异常
+ */
+public class BaseException extends RuntimeException {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 所属模块
+     */
+    private String module;
+
+    /**
+     * 错误码
+     */
+    private String code;
+
+    /**
+     * 错误码对应的参数
+     */
+    private Object[] args;
+
+    /**
+     * 错误消息
+     */
+    private String defaultMessage;
+
+    public BaseException(String module, String code, Object[] args, String defaultMessage) {
+        this.module = module;
+        this.code = code;
+        this.args = args;
+        this.defaultMessage = defaultMessage;
+    }
+
+    public BaseException(String module, String code, Object[] args) {
+        this(module, code, args, null);
+    }
+
+    public BaseException(String module, String defaultMessage) {
+        this(module, null, null, defaultMessage);
+    }
+
+    public BaseException(String code, Object[] args) {
+        this(null, code, args, null);
+    }
+
+    public BaseException(String defaultMessage) {
+        this(null, null, null, defaultMessage);
+    }
+
+    @Override
+    public String getMessage() {
+        String message = null;
+        if (!StringUtils.isEmpty(code)) {
+            message = message(code, args);
+        }
+        if (message == null) {
+            message = defaultMessage;
+        }
+        return message;
+    }
+
+    public static String message(String code, Object... args) {
+        MessageSource messageSource = SpringUtils.getBean(MessageSource.class);
+        return messageSource.getMessage(code, args, LocaleContextHolder.getLocale());
+    }
+
+    public String getModule() {
+        return module;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public Object[] getArgs() {
+        return args;
+    }
+
+    public String getDefaultMessage() {
+        return defaultMessage;
+    }
+}
+

+ 16 - 0
PAS/src/main/java/cn/cslg/pas/common/core/exception/CustomException.java

@@ -0,0 +1,16 @@
+package cn.cslg.pas.common.core.exception;
+
+public class CustomException extends RuntimeException {
+
+    public CustomException(String message) {
+        super(message);
+    }
+
+    public CustomException(Throwable cause) {
+        super(cause);
+    }
+
+    public CustomException(String message, Throwable cause) {
+        super(message, cause);
+    }
+}

+ 16 - 0
PAS/src/main/java/cn/cslg/pas/common/core/exception/PermissionException.java

@@ -0,0 +1,16 @@
+package cn.cslg.pas.common.core.exception;
+
+public class PermissionException extends RuntimeException {
+
+    public PermissionException(String message) {
+        super(message);
+    }
+
+    public PermissionException(Throwable cause) {
+        super(cause);
+    }
+
+    public PermissionException(String message, Throwable cause) {
+        super(message, cause);
+    }
+}

+ 28 - 0
PAS/src/main/java/cn/cslg/pas/common/model/BaseEntity.java

@@ -0,0 +1,28 @@
+package cn.cslg.pas.common.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+
+/**
+ * Entity基类
+ *
+ */
+@Data
+@SuppressWarnings("rawtypes")
+public class BaseEntity<T extends Model> extends Model {
+
+    /**
+     *
+     */
+    private static final long serialVersionUID = -4851055162892178225L;
+
+    /**
+     * 唯一ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+}

+ 61 - 0
PAS/src/main/java/cn/cslg/pas/common/model/SuperEntity.java

@@ -0,0 +1,61 @@
+package cn.cslg.pas.common.model;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+
+/**
+ * Entity基类
+ *
+ */
+@Data
+@SuppressWarnings("rawtypes")
+public class SuperEntity<T extends Model> extends Model {
+
+    /**
+     *
+     */
+    private static final long serialVersionUID = -4851055162892178225L;
+
+    /**
+     * 唯一ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 状态 0:失效  1:生效
+     */
+    private Integer status;
+
+    /**
+     * @TableField 配置需要填充的字段
+     * 创建时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Date updateTime;
+
+    public SuperEntity() {
+        this.status = 1;
+        this.createTime = new Date();
+        this.updateTime = new Date();
+    }
+}

+ 13 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/AreaAddressDTO.java

@@ -0,0 +1,13 @@
+package cn.cslg.pas.common.model.dto;
+
+import lombok.Data;
+
+@Data
+public class AreaAddressDTO {
+    private Integer provinceId;
+    private Integer cityId;
+    private Integer areaId;
+    private String provinceName;
+    private String cityName;
+    private String areaName;
+}

+ 31 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/ClassNumberDTO.java

@@ -0,0 +1,31 @@
+package cn.cslg.pas.common.model.dto;
+
+import lombok.Data;
+
+@Data
+public class ClassNumberDTO {
+    /**
+     * 部
+     */
+    private String a;
+    /**
+     * 大类
+     */
+    private String b;
+    /**
+     * 小类
+     */
+    private String c;
+    /**
+     * 大组
+     */
+    private String d;
+    /**
+     * 小组
+     */
+    private String e;
+    /**
+     * 分类号
+     */
+    private String classNumber;
+}

+ 8 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/CommonData.java

@@ -0,0 +1,8 @@
+package cn.cslg.pas.common.model.dto;
+
+import lombok.Data;
+
+@Data
+public class CommonData {
+
+}

+ 12 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/CustomFieldDTO.java

@@ -0,0 +1,12 @@
+package cn.cslg.pas.common.model.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class CustomFieldDTO {
+    private String name;
+    private Integer type;
+    private List<String> selected;
+}

+ 13 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/CustomFieldLabelDTO.java

@@ -0,0 +1,13 @@
+package cn.cslg.pas.common.model.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class CustomFieldLabelDTO {
+    private Integer id;
+    private Integer type;
+    private String name;
+    private List<LabelDTO> selected;
+}

+ 9 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/LabelDTO.java

@@ -0,0 +1,9 @@
+package cn.cslg.pas.common.model.dto;
+
+import lombok.Data;
+
+@Data
+public class LabelDTO {
+    private String label;
+    private Integer value;
+}

+ 13 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/PageDTO.java

@@ -0,0 +1,13 @@
+package cn.cslg.pas.common.model.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PageDTO<T> {
+    private Integer total;
+    private Long size;
+    private Long current;
+    private List<T> records;
+}

+ 347 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/PatentDTO.java

@@ -0,0 +1,347 @@
+package cn.cslg.pas.common.model.dto;
+
+import cn.cslg.pas.domain.*;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PatentDTO {
+    private Integer id;
+    private List<PatentLabel> label;
+    private List<PatentApplicant> applicant;
+    private List<PatentInventor> inventor;
+    private PatentAgency agency;
+    private List<PatentAgent> agent;
+    private List<PatentAffair> affair;
+    private List<Field> field;
+    private Integer read;
+    private List<String> ipcList;
+    private List<String> cpcList;
+    private List<String> upcList;
+    private List<String> locList;
+    private List<PatentImage> image;
+    private List<PatentInstruction> pdf;
+    private Integer simpleFamily;
+    private Integer inpadocFamily;
+    private Integer patSnapFamily;
+    private PatentFamily family;
+    private List<PatentRight> rights;
+    private PatentInstructionText instruction;
+    private List<String> priorityCountry;
+
+    @Data
+    public static class PatentFamily {
+        private List<String> simple;
+        private List<String> inpadoc;
+        private List<String> patSnap;
+    }
+
+    @Data
+    public static class Field {
+        private Integer id;
+        private Integer type;
+        private String name;
+        private List<String> selected;
+    }
+
+    /**
+     * 专利名称(标题)
+     */
+    private String name;
+
+    /**
+     * 专利名称(标题)(译)
+     */
+    private String nameOut;
+
+    /**
+     * 专利号
+     */
+    private String patentNo;
+
+    /**
+     * 摘要
+     */
+    private String abstractStr;
+
+    /**
+     * 摘要(译)
+     */
+    private String abstractOut;
+
+    /**
+     * 申请号
+     */
+    private String applicationNo;
+
+    /**
+     * 申请日
+     */
+    private String applicationDate;
+
+    /**
+     * 公开号
+     */
+    private String publicNo;
+
+    /**
+     * 公开日
+     */
+    private String publicDate;
+
+    /**
+     * 首次公开日
+     */
+    private String firstPublicDate;
+
+    /**
+     * 公开授权号
+     */
+    private String publicAccreditNo;
+
+    /**
+     * 公开授权日
+     */
+    private String publicAccreditDate;
+
+    /**
+     * 受理局
+     */
+    private String bureau;
+
+    /**
+     * IPC国际分类号(主)
+     */
+    private String ipc;
+
+    /**
+     * CPC国际分类号(主)
+     */
+    private String cpc;
+
+    /**
+     * UPC国际分类号(主)
+     */
+    private String upc;
+
+    /**
+     * LOC国际分类号(主)
+     */
+    private String loc;
+
+    /**
+     * 专利状态【有权、审中、无权、PCT状态】
+     */
+    private String simpleStatus;
+
+    /**
+     * 专利类型【发明、新型、外观】
+     */
+    private String type;
+
+    /**
+     * 授权文档名称
+     */
+    private String authDocName;
+
+    /**
+     * 授权文档文件地址
+     */
+    private String authDocUrl;
+
+    /**
+     * 公开文档名称
+     */
+    private String publicDocName;
+
+    /**
+     * 公开文档文件地址
+     */
+    private String publicDocUrl;
+
+    /**
+     * 文献代码
+     */
+    private String code;
+
+    /**
+     * 说明书
+     */
+    private String manual;
+
+    /**
+     * 说明书(译)
+     */
+    private String manualOut;
+
+    /**
+     * 文献页数
+     */
+    private Integer docPage;
+
+    /**
+     * 发明人数量
+     */
+    private Integer inventorNum;
+
+    /**
+     * 主权项数量
+     */
+    private Integer mainRightNum;
+
+    /**
+     * 权利要求数量
+     */
+    private Integer rightNum;
+
+    /**
+     * 权利要求
+     */
+    private String rightContent;
+
+    /**
+     * 独立权力要求
+     */
+    private String selfRightContent;
+
+    /**
+     * 权利要求(译)
+     */
+    private String rightContentOut;
+
+    /**
+     * 优先权号
+     */
+    private String priorityNo;
+
+    /**
+     * 优先权日
+     */
+    private String priorityDate;
+
+    /**
+     * 简单同族数量
+     */
+    private Integer simpleFamilyNum;
+
+    /**
+     * INPADOC同族数量
+     */
+    private Integer inpadocFamilyNum;
+
+    private Integer patSnapFamilyNum;
+
+    /**
+     * 引用专利数量
+     */
+    private Integer quoteNum;
+
+    /**
+     * 被引用次数
+     */
+    private Integer quotedNum;
+
+    /**
+     * 3年内被引用次数
+     */
+    private Integer quotedNum3;
+
+    /**
+     * 5年内被引用次数
+     */
+    private Integer quotedNum5;
+
+    /**
+     * 非专利引用文献数量
+     */
+    private Integer notPatentQuoteNum;
+
+    /**
+     * WO国家阶段
+     */
+    private String wo;
+
+    /**
+     * 代理机构ID
+     */
+    private String agencyId;
+
+    /**
+     * 代理人ID
+     */
+    private String agentId;
+
+    /**
+     * 审查员
+     */
+    private String examiner;
+
+    /**
+     * 助理审查员
+     */
+    private String aidExaminer;
+
+    /**
+     * 引用专利
+     */
+    private String quote;
+
+    /**
+     * 被引用专利
+     */
+    private String quoted;
+
+    /**
+     * 非专利引用文献
+     */
+    private String notPatentQuote;
+
+    /**
+     * 摘要附图
+     */
+    private String abstractPath;
+
+    /**
+     * 当前第一申请人
+     */
+    private String firstApplicant;
+
+    /**
+     * 当前第一申请人地址
+     */
+    private String firstApplicantAddress;
+
+    /**
+     * 申请人数量
+     */
+    private Integer applicantNum;
+
+    /**
+     * 第一发明人
+     */
+    private String firstInventor;
+
+    /**
+     * 第一发明人地址
+     */
+    private String firstInventorAddress;
+
+    private Integer selfRightContentNum;
+
+    /**
+     * 简单同族
+     */
+    private String simpleFamilyStr;
+
+    /**
+     * INPADOC同族
+     */
+    private String inpadocFamilyStr;
+
+    /**
+     * EP指定国状态
+     */
+    private String epStatus;
+
+}

+ 11 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/PatentQueryFieldSourceDTO.java

@@ -0,0 +1,11 @@
+package cn.cslg.pas.common.model.dto;
+
+import lombok.Data;
+
+@Data
+public class PatentQueryFieldSourceDTO {
+    private String value;
+    private String label;
+    private Integer count;
+    private String ids;
+}

+ 9 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/ProjectFieldOrderDTO.java

@@ -0,0 +1,9 @@
+package cn.cslg.pas.common.model.dto;
+
+import lombok.Data;
+
+@Data
+public class ProjectFieldOrderDTO {
+    private Integer id;
+    private Integer order;
+}

+ 19 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/TaskWebSocketDTO.java

@@ -0,0 +1,19 @@
+package cn.cslg.pas.common.model.dto;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+@Data
+@Accessors(chain = true)
+public class TaskWebSocketDTO {
+    private Integer projectId;
+    private Integer total;
+    private Integer index;
+    private Integer taskId;
+    private Boolean complete;
+    private String url;
+    private String fileName;
+    private Integer taskType;
+    private Long percentage;
+    private String oldName;
+}

+ 12 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/UploadFileDTO.java

@@ -0,0 +1,12 @@
+package cn.cslg.pas.common.model.dto;
+
+import lombok.Data;
+
+@Data
+public class UploadFileDTO {
+    private String name;
+    private String fileName;
+    private String path;
+    private String extName;
+    private Long fileSize;
+}

+ 11 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/analysis/AnalysisItemResultDTO.java

@@ -0,0 +1,11 @@
+package cn.cslg.pas.common.model.dto.analysis;
+
+import lombok.Data;
+
+@Data
+public class AnalysisItemResultDTO {
+    private String ids;
+    private String name;
+    private String id;
+    private Integer count;
+}

+ 14 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/analysis/CustomSettingColorConfigDTO.java

@@ -0,0 +1,14 @@
+package cn.cslg.pas.common.model.dto.analysis;
+
+import lombok.Data;
+
+@Data
+public class CustomSettingColorConfigDTO {
+    private String name;
+    private String color;
+
+    public CustomSettingColorConfigDTO() {
+        this.name = "";
+        this.color = "";
+    }
+}

+ 27 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/analysis/CustomSettingConfigDTO.java

@@ -0,0 +1,27 @@
+package cn.cslg.pas.common.model.dto.analysis;
+
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+public class CustomSettingConfigDTO {
+    private List<CustomSettingTableConfigDTO> table;
+    private CustomSettingLineConfigDTO line;
+    private List<CustomSettingColorConfigDTO> color;
+
+    public CustomSettingConfigDTO() {
+        this.line = new CustomSettingLineConfigDTO();
+        List<CustomSettingTableConfigDTO> configs = new ArrayList<>();
+        for (int i = 0; i < 10; i++) {
+            CustomSettingTableConfigDTO configDTO = new CustomSettingTableConfigDTO();
+            configDTO.setMax(0);
+            configDTO.setMin(0);
+            configDTO.setColor("");
+            configs.add(configDTO);
+        }
+        this.table = configs;
+        this.color = new ArrayList<>();
+    }
+}

+ 17 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/analysis/CustomSettingLineConfigDTO.java

@@ -0,0 +1,17 @@
+package cn.cslg.pas.common.model.dto.analysis;
+
+import lombok.Data;
+
+@Data
+public class CustomSettingLineConfigDTO {
+
+    private String name;
+    private Integer operator;
+    private Boolean enable;
+
+    public CustomSettingLineConfigDTO() {
+        this.name = "";
+        this.operator = 0;
+        this.enable = false;
+    }
+}

+ 10 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/analysis/CustomSettingTableConfigDTO.java

@@ -0,0 +1,10 @@
+package cn.cslg.pas.common.model.dto.analysis;
+
+import lombok.Data;
+
+@Data
+public class CustomSettingTableConfigDTO {
+    private Integer min;
+    private Integer max;
+    private String color;
+}

+ 16 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/analysis/DateTimeDTO.java

@@ -0,0 +1,16 @@
+package cn.cslg.pas.common.model.dto.analysis;
+
+import lombok.Data;
+
+@Data
+public class DateTimeDTO {
+    private Long startTime;
+    private Long endTime;
+    private String key;
+
+    public DateTimeDTO(Long startTime, Long endTime, String key) {
+        this.startTime = startTime / 1000;
+        this.endTime = endTime / 1000;
+        this.key = key;
+    }
+}

+ 27 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/analysis/SchemaDataDTO.java

@@ -0,0 +1,27 @@
+package cn.cslg.pas.common.model.dto.analysis;
+
+import lombok.Data;
+
+@Data
+public class SchemaDataDTO {
+    private Integer field;
+    private Integer expand;
+    private Integer ptype;
+    private Integer type;
+    private Integer num;
+    private Integer merge;
+
+    public SchemaDataDTO() {
+        this.field = 0;
+        this.expand = 0;
+        this.type = 0;
+        this.ptype = 0;
+        this.num = 0;
+        this.merge = 0;
+    }
+
+    public SchemaDataDTO(Integer field, Integer expand) {
+        this.field = field;
+        this.expand = expand;
+    }
+}

+ 24 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/analysis/SchemaDimensionDTO.java

@@ -0,0 +1,24 @@
+package cn.cslg.pas.common.model.dto.analysis;
+
+import cn.cslg.pas.common.model.dto.analysis.SchemaDataDTO;
+
+public class SchemaDimensionDTO {
+    private SchemaDataDTO x;
+    private SchemaDataDTO y;
+
+    public SchemaDataDTO getX() {
+        return x;
+    }
+
+    public void setX(SchemaDataDTO x) {
+        this.x = x;
+    }
+
+    public SchemaDataDTO getY() {
+        return y;
+    }
+
+    public void setY(SchemaDataDTO y) {
+        this.y = y;
+    }
+}

+ 33 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/analysis/SourceDataDTO.java

@@ -0,0 +1,33 @@
+package cn.cslg.pas.common.model.dto.analysis;
+
+
+import cn.cslg.pas.domain.CustomAnalysisItemSource;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class SourceDataDTO {
+    private List<CustomAnalysisItemSource> x;
+    private List<CustomAnalysisItemSource> y;
+
+    public SourceDataDTO() {
+        this.x = new ArrayList<>();
+        this.y = new ArrayList<>();
+    }
+
+    public List<CustomAnalysisItemSource> getX() {
+        return x;
+    }
+
+    public void setX(List<CustomAnalysisItemSource> x) {
+        this.x = x;
+    }
+
+    public List<CustomAnalysisItemSource> getY() {
+        return y;
+    }
+
+    public void setY(List<CustomAnalysisItemSource> y) {
+        this.y = y;
+    }
+}

+ 14 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/analysis/SourceMinAndMaxDataDTO.java

@@ -0,0 +1,14 @@
+package cn.cslg.pas.common.model.dto.analysis;
+
+import lombok.Data;
+
+@Data
+public class SourceMinAndMaxDataDTO {
+    private Integer value;
+    private Integer operator;
+
+    public SourceMinAndMaxDataDTO() {
+        this.operator = 0;
+        this.value = 0;
+    }
+}

+ 39 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/report/ClassifyMO.java

@@ -0,0 +1,39 @@
+package cn.cslg.pas.common.model.dto.report;
+
+import java.util.List;
+
+/**
+ * @author Coding.lu
+ * @version V1.0
+ * @Package com.shouyue.patentapi.model
+ * @date 2021/12/15 上午11:42
+ */
+public class ClassifyMO {
+    private String key;  //模板代表的key
+    private String classify_name;
+    private List<PatentMO> arrys;
+
+    public String getClassify_name() {
+        return classify_name;
+    }
+
+    public void setClassify_name(String classify_name) {
+        this.classify_name = classify_name;
+    }
+
+    public List<PatentMO> getArrys() {
+        return arrys;
+    }
+
+    public void setArrys(List<PatentMO> arrys) {
+        this.arrys = arrys;
+    }
+
+    public String getKey() {
+        return key;
+    }
+
+    public void setKey(String key) {
+        this.key = key;
+    }
+}

+ 38 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/report/InventorMO.java

@@ -0,0 +1,38 @@
+package cn.cslg.pas.common.model.dto.report;
+
+/**
+ * @author Coding.lu
+ * @version V1.0
+ * @Package com.shouyue.api.model.report
+ * @date 2021/12/27 上午1:08
+ */
+public class InventorMO {
+    private String biaoname;
+    private String name;
+    private String type;
+
+    public String getBiaoname() {
+        return biaoname;
+    }
+
+    public void setBiaoname(String biaoname) {
+        this.biaoname = biaoname;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+}
+

+ 37 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/report/KeyWordModel.java

@@ -0,0 +1,37 @@
+package cn.cslg.pas.common.model.dto.report;
+
+import cn.cslg.pas.common.model.vo.TemplateVO;
+
+import java.util.List;
+
+/**
+ * @author Coding.lu
+ * @version V1.0
+ * @Package com.shouyue.api.model.report
+ * @date 2022/1/16 下午9:41
+ */
+public class KeyWordModel {
+    private List<TemplateVO> list;
+    private String fileUrl;
+
+    public KeyWordModel(List<TemplateVO> list, String fileUrl) {
+        this.list = list;
+        this.fileUrl = fileUrl;
+    }
+
+    public List<TemplateVO> getList() {
+        return list;
+    }
+
+    public void setList(List<TemplateVO> list) {
+        this.list = list;
+    }
+
+    public String getFileUrl() {
+        return fileUrl;
+    }
+
+    public void setFileUrl(String fileUrl) {
+        this.fileUrl = fileUrl;
+    }
+}

+ 28 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/report/LicensedMO.java

@@ -0,0 +1,28 @@
+package cn.cslg.pas.common.model.dto.report;
+
+/**
+ * @author Coding.lu
+ * @version V1.0
+ * @Package com.shouyue.api.model.report
+ * @date 2021/12/24 上午12:02
+ */
+public class LicensedMO {
+    private String licensed_name;//许可人
+    private String licensed_permittype;//被许可类型
+
+    public String getLicensed_name() {
+        return licensed_name;
+    }
+
+    public void setLicensed_name(String licensed_name) {
+        this.licensed_name = licensed_name;
+    }
+
+    public String getLicensed_permittype() {
+        return licensed_permittype;
+    }
+
+    public void setLicensed_permittype(String licensed_permittype) {
+        this.licensed_permittype = licensed_permittype;
+    }
+}

+ 97 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/report/MergeApplyMO.java

@@ -0,0 +1,97 @@
+package cn.cslg.pas.common.model.dto.report;
+
+/**
+ *合并检查
+ */
+public class MergeApplyMO {
+    private String mname ;//合并名称
+    private String mabbreviation ;//检查
+    private String mcountry ;//国家
+    private String mmark ;//备注
+    private String muser ;//更新人
+    private String mupdate_time ;//更新时间
+    private String mprovince ;//省份
+    private String mcity ;//城市
+    private String marea ;//区域
+    private String maddress ;//详细地址
+
+    public String getMname() {
+        return mname;
+    }
+
+    public void setMname(String mname) {
+        this.mname = mname;
+    }
+
+    public String getMabbreviation() {
+        return mabbreviation;
+    }
+
+    public void setMabbreviation(String mabbreviation) {
+        this.mabbreviation = mabbreviation;
+    }
+
+    public String getMcountry() {
+        return mcountry;
+    }
+
+    public void setMcountry(String mcountry) {
+        this.mcountry = mcountry;
+    }
+
+    public String getMmark() {
+        return mmark;
+    }
+
+    public void setMmark(String mmark) {
+        this.mmark = mmark;
+    }
+
+    public String getMuser() {
+        return muser;
+    }
+
+    public void setMuser(String muser) {
+        this.muser = muser;
+    }
+
+    public String getMupdate_time() {
+        return mupdate_time;
+    }
+
+    public void setMupdate_time(String mupdate_time) {
+        this.mupdate_time = mupdate_time;
+    }
+
+    public String getMprovince() {
+        return mprovince;
+    }
+
+    public void setMprovince(String mprovince) {
+        this.mprovince = mprovince;
+    }
+
+    public String getMcity() {
+        return mcity;
+    }
+
+    public void setMcity(String mcity) {
+        this.mcity = mcity;
+    }
+
+    public String getMarea() {
+        return marea;
+    }
+
+    public void setMarea(String marea) {
+        this.marea = marea;
+    }
+
+    public String getMaddress() {
+        return maddress;
+    }
+
+    public void setMaddress(String maddress) {
+        this.maddress = maddress;
+    }
+}

+ 64 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/report/ParameModel.java

@@ -0,0 +1,64 @@
+package cn.cslg.pas.common.model.dto.report;
+
+import cn.cslg.pas.domain.*;
+
+import java.util.List;
+
+/**
+ * @author Coding.lu
+ * @version V1.0
+ * @Package com.shouyue.api.model.report
+ * @date 2021/12/27 上午1:38
+ */
+public class ParameModel {
+
+    List<PatentApplicantLink> allApplicant;
+    List<PatentAffair> allAffair;
+    List<PatentInventor> allInventor;
+    List<PatentInventorLink> allInventorRelation;
+    List<PatentLicensor> allLicensorRelation;
+
+
+
+    public List<PatentApplicantLink> getAllApplicant() {
+        return allApplicant;
+    }
+
+    public void setAllApplicant(List<PatentApplicantLink> allApplicant) {
+        this.allApplicant = allApplicant;
+    }
+
+
+
+    public List<PatentAffair> getAllAffair() {
+        return allAffair;
+    }
+
+    public void setAllAffair(List<PatentAffair> allAffair) {
+        this.allAffair = allAffair;
+    }
+
+    public List<PatentInventor> getAllInventor() {
+        return allInventor;
+    }
+
+    public void setAllInventor(List<PatentInventor> allInventor) {
+        this.allInventor = allInventor;
+    }
+
+    public List<PatentInventorLink> getAllInventorRelation() {
+        return allInventorRelation;
+    }
+
+    public void setAllInventorRelation(List<PatentInventorLink> allInventorRelation) {
+        this.allInventorRelation = allInventorRelation;
+    }
+
+    public List<PatentLicensor> getAllLicensorRelation() {
+        return allLicensorRelation;
+    }
+
+    public void setAllLicensorRelation(List<PatentLicensor> allLicensorRelation) {
+        this.allLicensorRelation = allLicensorRelation;
+    }
+}

+ 112 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/report/PatentApplyMO.java

@@ -0,0 +1,112 @@
+package cn.cslg.pas.common.model.dto.report;
+
+/**
+ * @author Coding.lu
+ * @version V1.0
+ * @Package com.shouyue.api.model.report
+ * @date 2021/12/23 下午11:49
+ */
+public class PatentApplyMO {
+    private String name;//申请人/权利人
+    private String bname;//标准名称
+    private String remark;//备注
+    private String last_user;//更新人
+    private String last_time;//更新时间
+    private String type;//类型
+    private String country;//国家
+    private String province;//省份
+    private String city;//城市
+    private String area;//区域
+    private String address;//详细地址
+
+
+
+    public String getBname() {
+        return bname;
+    }
+
+    public void setBname(String bname) {
+        this.bname = bname;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public String getLast_user() {
+        return last_user;
+    }
+
+    public void setLast_user(String last_user) {
+        this.last_user = last_user;
+    }
+
+    public String getLast_time() {
+        return last_time;
+    }
+
+    public void setLast_time(String last_time) {
+        this.last_time = last_time;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getCountry() {
+        return country;
+    }
+
+    public void setCountry(String country) {
+        this.country = country;
+    }
+
+    public String getProvince() {
+        return province;
+    }
+
+    public void setProvince(String province) {
+        this.province = province;
+    }
+
+    public String getCity() {
+        return city;
+    }
+
+    public void setCity(String city) {
+        this.city = city;
+    }
+
+    public String getArea() {
+        return area;
+    }
+
+    public void setArea(String area) {
+        this.area = area;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+}
+

+ 42 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/report/PatentContentMO.java

@@ -0,0 +1,42 @@
+package cn.cslg.pas.common.model.dto.report;
+
+
+//专利权利要求 详细
+public class PatentContentMO {
+    private String name;
+    private String dname;
+    private String bproduct;
+    private String result;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getDname() {
+        return dname;
+    }
+
+    public void setDname(String dname) {
+        this.dname = dname;
+    }
+
+    public String getBproduct() {
+        return bproduct;
+    }
+
+    public void setBproduct(String bproduct) {
+        this.bproduct = bproduct;
+    }
+
+    public String getResult() {
+        return result;
+    }
+
+    public void setResult(String result) {
+        this.result = result;
+    }
+}

+ 37 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/report/PatentDuquanMO.java

@@ -0,0 +1,37 @@
+package cn.cslg.pas.common.model.dto.report;
+
+/**
+ * @author Coding.lu
+ * @version V1.0
+ * @Package com.shouyue.patentapi.model
+ * @date 2021/12/16 上午12:24
+ */
+public class PatentDuquanMO {
+    private String keyName;
+    private String name;
+    private String detail;
+
+    public String getKeyName() {
+        return keyName;
+    }
+
+    public void setKeyName(String keyName) {
+        this.keyName = keyName;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getDetail() {
+        return detail;
+    }
+
+    public void setDetail(String detail) {
+        this.detail = detail;
+    }
+}

+ 52 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/report/PatentLawMO.java

@@ -0,0 +1,52 @@
+package cn.cslg.pas.common.model.dto.report;
+
+/**
+ * 专利法律状态
+ */
+public class PatentLawMO {
+    private String law_datetime;//发生日期
+    private String law_status;//法律状态
+    private String law_simplestatus;//简单法律状态
+    private String law_content;//事物内容
+    private String law_remark;//备注
+
+    public String getLaw_datetime() {
+        return law_datetime;
+    }
+
+    public void setLaw_datetime(String law_datetime) {
+        this.law_datetime = law_datetime;
+    }
+
+    public String getLaw_status() {
+        return law_status;
+    }
+
+    public void setLaw_status(String law_status) {
+        this.law_status = law_status;
+    }
+
+    public String getLaw_simplestatus() {
+        return law_simplestatus;
+    }
+
+    public void setLaw_simplestatus(String law_simplestatus) {
+        this.law_simplestatus = law_simplestatus;
+    }
+
+    public String getLaw_content() {
+        return law_content;
+    }
+
+    public void setLaw_content(String law_content) {
+        this.law_content = law_content;
+    }
+
+    public String getLaw_remark() {
+        return law_remark;
+    }
+
+    public void setLaw_remark(String law_remark) {
+        this.law_remark = law_remark;
+    }
+}

+ 738 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/report/PatentMO.java

@@ -0,0 +1,738 @@
+package cn.cslg.pas.common.model.dto.report;
+
+import com.deepoove.poi.data.PictureRenderData;
+
+import java.util.List;
+
+/**
+ * @author Coding.lu
+ * @version V1.0
+ * @Package com.shouyue.patentreport.model
+ * @date 2021/12/14 下午8:55
+ */
+public class PatentMO {
+    private String applicant_names_current;//当前申请人名字拼接
+    private List<PatentApplyMO> applicant_list_current;//当前申请人列表
+    private String applicant_names_standard;//标准申请人名字拼接
+    private List<PatentApplyMO> applicant_list_standard;//标准申请人列表
+    private String applicant_names_merge;//合并申请人名字拼接
+    private List<PatentApplyMO> applicant_list_merge;//合并申请人列表
+
+
+    private String obligee_names_current;//当前申请人名字拼接
+    private List<PatentApplyMO> obligee_list_current;//当前申请人列表
+    private String obligee_names_standard;//标准申请人名字拼接
+    private List<PatentApplyMO> obligee_list_standard;//标准申请人列表
+    private String obligee_names_merge;//合并申请人名字拼接
+    private List<PatentApplyMO> obligee_list_merge;//合并申请人列表
+
+    //许可人
+    private List<PermitMO> permit_list;
+    //被许可人
+    private List<PermitMO> licensed_list;
+
+    //法律事务
+    private List<PatentLawMO> lawArrys;
+    private String inventor_names;//发明人名字拼接
+    private List<InventorMO> inventor_list;//发明人里列表
+
+
+
+
+
+    public List<PermitMO> getPermit_list() {
+        return permit_list;
+    }
+
+    public void setPermit_list(List<PermitMO> permit_list) {
+        this.permit_list = permit_list;
+    }
+
+    public List<PermitMO> getLicensed_list() {
+        return licensed_list;
+    }
+
+    public void setLicensed_list(List<PermitMO> licensed_list) {
+        this.licensed_list = licensed_list;
+    }
+
+    public String getInventor_names() {
+        return inventor_names;
+    }
+
+    public void setInventor_names(String inventor_names) {
+        this.inventor_names = inventor_names;
+    }
+
+    public List<InventorMO> getInventor_list() {
+        return inventor_list;
+    }
+
+    public void setInventor_list(List<InventorMO> inventor_list) {
+        this.inventor_list = inventor_list;
+    }
+
+    public String getObligee_names_current() {
+        return obligee_names_current;
+    }
+
+    public void setObligee_names_current(String obligee_names_current) {
+        this.obligee_names_current = obligee_names_current;
+    }
+
+    public List<PatentApplyMO> getObligee_list_current() {
+        return obligee_list_current;
+    }
+
+    public void setObligee_list_current(List<PatentApplyMO> obligee_list_current) {
+        this.obligee_list_current = obligee_list_current;
+    }
+
+    public String getObligee_names_standard() {
+        return obligee_names_standard;
+    }
+
+    public void setObligee_names_standard(String obligee_names_standard) {
+        this.obligee_names_standard = obligee_names_standard;
+    }
+
+    public List<PatentApplyMO> getObligee_list_standard() {
+        return obligee_list_standard;
+    }
+
+    public void setObligee_list_standard(List<PatentApplyMO> obligee_list_standard) {
+        this.obligee_list_standard = obligee_list_standard;
+    }
+
+    public String getObligee_names_merge() {
+        return obligee_names_merge;
+    }
+
+    public void setObligee_names_merge(String obligee_names_merge) {
+        this.obligee_names_merge = obligee_names_merge;
+    }
+
+    public List<PatentApplyMO> getObligee_list_merge() {
+        return obligee_list_merge;
+    }
+
+    public void setObligee_list_merge(List<PatentApplyMO> obligee_list_merge) {
+        this.obligee_list_merge = obligee_list_merge;
+    }
+
+    public String getApplicant_names_merge() {
+        return applicant_names_merge;
+    }
+
+    public void setApplicant_names_merge(String applicant_names_merge) {
+        this.applicant_names_merge = applicant_names_merge;
+    }
+
+    public List<PatentApplyMO> getApplicant_list_merge() {
+        return applicant_list_merge;
+    }
+
+    public void setApplicant_list_merge(List<PatentApplyMO> applicant_list_merge) {
+        this.applicant_list_merge = applicant_list_merge;
+    }
+
+
+
+    public String getApplicant_names_standard() {
+        return applicant_names_standard;
+    }
+
+    public void setApplicant_names_standard(String applicant_names_standard) {
+        this.applicant_names_standard = applicant_names_standard;
+    }
+
+    public List<PatentApplyMO> getApplicant_list_standard() {
+        return applicant_list_standard;
+    }
+
+    public void setApplicant_list_standard(List<PatentApplyMO> applicant_list_standard) {
+        this.applicant_list_standard = applicant_list_standard;
+    }
+
+    public String getApplicant_names_current() {
+        return applicant_names_current;
+    }
+
+    public void setApplicant_names_current(String applicant_names_current) {
+        this.applicant_names_current = applicant_names_current;
+    }
+
+    public List<PatentApplyMO> getApplicant_list_current() {
+        return applicant_list_current;
+    }
+
+    public void setApplicant_list_current(List<PatentApplyMO> applicant_list_current) {
+        this.applicant_list_current = applicant_list_current;
+    }
+
+
+    public List<PatentLawMO> getLawArrys() {
+        return lawArrys;
+    }
+    public void setLawArrys(List<PatentLawMO> lawArrys) {
+        this.lawArrys = lawArrys;
+    }
+
+
+    private String pname;//专利名称
+    private String translate_name;//专利标题(译)
+    private String patentno;//专利号
+    private String abstracts; //摘要
+    private String abstractout;//摘要 译
+    private String applicationno;//申请号
+    private String appdate;//申请日
+    private String publicno;//公开号
+    private String publicdate;
+    private String fpublicdate;
+    private String publictono;
+    private String publictodate;
+    private String bureau;
+    private String intclassno;
+    private String intclasscpcno;
+    private String intclassupcno;
+    private String intclasslocno;
+    private String pstatus;
+    private String ptype;
+    private String code;
+    private String manual;
+    private String manualout;
+    private String page;
+    private String inventornum;
+    private String num2;
+    private List<PatentContentMO> content;
+    private List<PatentContentMO> contentout;
+    private List<ContentMO2> selfcontent;
+    private String priorityno;
+    private String prioritycountry;
+    private String prioritydate;
+    private String simplefamilynum;
+    private String inpadocfamilynum;
+    private String quoteno;
+    private String quotedno;
+    private String quotedno3;
+    private String quotedno5;
+    private String agency;
+    private String agent;
+    private String wonational;
+    private String examiner;
+    private String assexaminer;
+    private String quote;
+    private String quoted;
+    private String nonpatentquote;
+    private PictureRenderData abstract_path;//摘要附图
+
+    private String firstapplicant;
+    private String firstapplicantaddr;
+    private String firstapplicantnum;
+    private String firstnventor;
+    private String firstnventoraddr;
+    private String epcountry;
+    private String authorizationpdf;
+    private String  Publicpdf;
+
+    private String sfamily;
+    private String ifamily;
+
+    public String getSfamily() {
+        return sfamily;
+    }
+
+    public void setSfamily(String sfamily) {
+        this.sfamily = sfamily;
+    }
+
+    public String getIfamily() {
+        return ifamily;
+    }
+
+    public void setIfamily(String ifamily) {
+        this.ifamily = ifamily;
+    }
+
+    public String getPname() {
+        return pname;
+    }
+
+    public void setPname(String pname) {
+        this.pname = pname;
+    }
+
+    public String getTranslate_name() {
+        return translate_name;
+    }
+
+    public void setTranslate_name(String translate_name) {
+        this.translate_name = translate_name;
+    }
+
+    public String getPatentno() {
+        return patentno;
+    }
+
+    public void setPatentno(String patentno) {
+        this.patentno = patentno;
+    }
+
+    public String getAbstracts() {
+        return abstracts;
+    }
+
+    public void setAbstracts(String abstracts) {
+        this.abstracts = abstracts;
+    }
+
+    public String getAbstractout() {
+        return abstractout;
+    }
+
+    public void setAbstractout(String abstractout) {
+        this.abstractout = abstractout;
+    }
+
+    public String getApplicationno() {
+        return applicationno;
+    }
+
+    public void setApplicationno(String applicationno) {
+        this.applicationno = applicationno;
+    }
+
+    public String getAppdate() {
+        return appdate;
+    }
+
+    public void setAppdate(String appdate) {
+        this.appdate = appdate;
+    }
+
+    public String getPublicno() {
+        return publicno;
+    }
+
+    public void setPublicno(String publicno) {
+        this.publicno = publicno;
+    }
+
+    public String getPublicdate() {
+        return publicdate;
+    }
+
+    public void setPublicdate(String publicdate) {
+        this.publicdate = publicdate;
+    }
+
+    public String getFpublicdate() {
+        return fpublicdate;
+    }
+
+    public void setFpublicdate(String fpublicdate) {
+        this.fpublicdate = fpublicdate;
+    }
+
+    public String getPublictono() {
+        return publictono;
+    }
+
+    public void setPublictono(String publictono) {
+        this.publictono = publictono;
+    }
+
+    public String getPublictodate() {
+        return publictodate;
+    }
+
+    public void setPublictodate(String publictodate) {
+        this.publictodate = publictodate;
+    }
+
+    public String getBureau() {
+        return bureau;
+    }
+
+    public void setBureau(String bureau) {
+        this.bureau = bureau;
+    }
+
+    public String getIntclassno() {
+        return intclassno;
+    }
+
+    public void setIntclassno(String intclassno) {
+        this.intclassno = intclassno;
+    }
+
+    public String getIntclasscpcno() {
+        return intclasscpcno;
+    }
+
+    public void setIntclasscpcno(String intclasscpcno) {
+        this.intclasscpcno = intclasscpcno;
+    }
+
+    public String getIntclassupcno() {
+        return intclassupcno;
+    }
+
+    public void setIntclassupcno(String intclassupcno) {
+        this.intclassupcno = intclassupcno;
+    }
+
+    public String getIntclasslocno() {
+        return intclasslocno;
+    }
+
+    public void setIntclasslocno(String intclasslocno) {
+        this.intclasslocno = intclasslocno;
+    }
+
+    public String getPstatus() {
+        return pstatus;
+    }
+
+    public void setPstatus(String pstatus) {
+        this.pstatus = pstatus;
+    }
+
+    public String getPtype() {
+        return ptype;
+    }
+
+    public void setPtype(String ptype) {
+        this.ptype = ptype;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getManual() {
+        return manual;
+    }
+
+    public void setManual(String manual) {
+        this.manual = manual;
+    }
+
+    public String getManualout() {
+        return manualout;
+    }
+
+    public void setManualout(String manualout) {
+        this.manualout = manualout;
+    }
+
+    public String getPage() {
+        return page;
+    }
+
+    public void setPage(String page) {
+        this.page = page;
+    }
+
+    public String getInventornum() {
+        return inventornum;
+    }
+
+    public void setInventornum(String inventornum) {
+        this.inventornum = inventornum;
+    }
+
+    public String getNum2() {
+        return num2;
+    }
+
+    public void setNum2(String num2) {
+        this.num2 = num2;
+    }
+
+    public List<PatentContentMO> getContent() {
+        return content;
+    }
+
+    public void setContent(List<PatentContentMO> content) {
+        this.content = content;
+    }
+
+    public List<PatentContentMO> getContentout() {
+        return contentout;
+    }
+
+    public void setContentout(List<PatentContentMO> contentout) {
+        this.contentout = contentout;
+    }
+
+    public List<ContentMO2> getSelfcontent() {
+        return selfcontent;
+    }
+
+    public void setSelfcontent(List<ContentMO2> selfcontent) {
+        this.selfcontent = selfcontent;
+    }
+
+    public String getPriorityno() {
+        return priorityno;
+    }
+
+    public void setPriorityno(String priorityno) {
+        this.priorityno = priorityno;
+    }
+
+    public String getPrioritycountry() {
+        return prioritycountry;
+    }
+
+    public void setPrioritycountry(String prioritycountry) {
+        this.prioritycountry = prioritycountry;
+    }
+
+    public String getPrioritydate() {
+        return prioritydate;
+    }
+
+    public void setPrioritydate(String prioritydate) {
+        this.prioritydate = prioritydate;
+    }
+
+    public String getSimplefamilynum() {
+        return simplefamilynum;
+    }
+
+    public void setSimplefamilynum(String simplefamilynum) {
+        this.simplefamilynum = simplefamilynum;
+    }
+
+    public String getInpadocfamilynum() {
+        return inpadocfamilynum;
+    }
+
+    public void setInpadocfamilynum(String inpadocfamilynum) {
+        this.inpadocfamilynum = inpadocfamilynum;
+    }
+
+    public String getQuoteno() {
+        return quoteno;
+    }
+
+    public void setQuoteno(String quoteno) {
+        this.quoteno = quoteno;
+    }
+
+    public String getQuotedno() {
+        return quotedno;
+    }
+
+    public void setQuotedno(String quotedno) {
+        this.quotedno = quotedno;
+    }
+
+    public String getQuotedno3() {
+        return quotedno3;
+    }
+
+    public void setQuotedno3(String quotedno3) {
+        this.quotedno3 = quotedno3;
+    }
+
+    public String getQuotedno5() {
+        return quotedno5;
+    }
+
+    public void setQuotedno5(String quotedno5) {
+        this.quotedno5 = quotedno5;
+    }
+
+    public String getAgency() {
+        return agency;
+    }
+
+    public void setAgency(String agency) {
+        this.agency = agency;
+    }
+
+    public String getAgent() {
+        return agent;
+    }
+
+    public void setAgent(String agent) {
+        this.agent = agent;
+    }
+
+    public String getWonational() {
+        return wonational;
+    }
+
+    public void setWonational(String wonational) {
+        this.wonational = wonational;
+    }
+
+    public String getExaminer() {
+        return examiner;
+    }
+
+    public void setExaminer(String examiner) {
+        this.examiner = examiner;
+    }
+
+    public String getAssexaminer() {
+        return assexaminer;
+    }
+
+    public void setAssexaminer(String assexaminer) {
+        this.assexaminer = assexaminer;
+    }
+
+    public String getQuote() {
+        return quote;
+    }
+
+    public void setQuote(String quote) {
+        this.quote = quote;
+    }
+
+    public String getQuoted() {
+        return quoted;
+    }
+
+    public void setQuoted(String quoted) {
+        this.quoted = quoted;
+    }
+
+    public String getNonpatentquote() {
+        return nonpatentquote;
+    }
+
+    public void setNonpatentquote(String nonpatentquote) {
+        this.nonpatentquote = nonpatentquote;
+    }
+
+
+    public String getFirstapplicant() {
+        return firstapplicant;
+    }
+
+    public void setFirstapplicant(String firstapplicant) {
+        this.firstapplicant = firstapplicant;
+    }
+
+    public String getFirstapplicantaddr() {
+        return firstapplicantaddr;
+    }
+
+    public void setFirstapplicantaddr(String firstapplicantaddr) {
+        this.firstapplicantaddr = firstapplicantaddr;
+    }
+
+    public String getFirstapplicantnum() {
+        return firstapplicantnum;
+    }
+
+    public void setFirstapplicantnum(String firstapplicantnum) {
+        this.firstapplicantnum = firstapplicantnum;
+    }
+
+    public String getFirstnventor() {
+        return firstnventor;
+    }
+
+    public void setFirstnventor(String firstnventor) {
+        this.firstnventor = firstnventor;
+    }
+
+    public String getFirstnventoraddr() {
+        return firstnventoraddr;
+    }
+
+    public void setFirstnventoraddr(String firstnventoraddr) {
+        this.firstnventoraddr = firstnventoraddr;
+    }
+
+    public String getEpcountry() {
+        return epcountry;
+    }
+
+    public void setEpcountry(String epcountry) {
+        this.epcountry = epcountry;
+    }
+
+    public String getAuthorizationpdf() {
+        return authorizationpdf;
+    }
+
+    public void setAuthorizationpdf(String authorizationpdf) {
+        this.authorizationpdf = authorizationpdf;
+    }
+
+    public String getPublicpdf() {
+        return Publicpdf;
+    }
+
+    public void setPublicpdf(String publicpdf) {
+        Publicpdf = publicpdf;
+    }
+
+    public PictureRenderData getAbstract_path() {
+        return abstract_path;
+    }
+
+    public void setAbstract_path(PictureRenderData abstract_path) {
+        this.abstract_path = abstract_path;
+    }
+
+    public static class ContentMO
+    {
+        private String title;
+        List<String> item;
+
+
+        public String getTitle() {
+            return title;
+        }
+
+        public void setTitle(String title) {
+            this.title = title;
+        }
+
+        public List<String> getItem() {
+            return item;
+        }
+
+        public void setItem(List<String> item) {
+            this.item = item;
+        }
+    }
+    public static class ContentMO2
+    {
+        private String title;
+        private String item;
+
+        public ContentMO2(String title, String item) {
+            this.title = title;
+            this.item = item;
+        }
+
+        public String getTitle() {
+            return title;
+        }
+
+        public void setTitle(String title) {
+            this.title = title;
+        }
+
+        public String getItem() {
+            return item;
+        }
+
+        public void setItem(String item) {
+            this.item = item;
+        }
+    }
+}

+ 31 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/report/PermitMO.java

@@ -0,0 +1,31 @@
+package cn.cslg.pas.common.model.dto.report;
+
+/**
+ * @author Coding.lu
+ * @version V1.0
+ * @Package com.shouyue.api.model.report
+ * @date 2021/12/23 下午11:57
+ */
+public class PermitMO {
+    private String name;//许可人
+    private String permittype;//许可类型
+
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getPermittype() {
+        return permittype;
+    }
+
+    public void setPermittype(String permittype) {
+        this.permittype = permittype;
+    }
+
+
+}

+ 27 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/report/ReportPatentDTO.java

@@ -0,0 +1,27 @@
+package cn.cslg.pas.common.model.dto.report;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ReportPatentDTO {
+    private Integer id;
+    private String name;
+    private String patentno;
+    private String applicationno;
+    private String publicno;
+    private Integer type;
+    private Integer status;
+    private List<String> applicant;
+    private List<String> obligee;
+    private List<Integer> folder;
+    private List<Field> field;
+    private List<String> label;
+
+    @Data
+    public static class Field {
+        private Integer id;
+        private List<Integer> value;
+    }
+}

+ 11 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/report/ReportPatentLabelDTO.java

@@ -0,0 +1,11 @@
+package cn.cslg.pas.common.model.dto.report;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ReportPatentLabelDTO {
+    private Integer label;
+    private List<Integer> id;
+}

+ 72 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/report/SystemMO.java

@@ -0,0 +1,72 @@
+package cn.cslg.pas.common.model.dto.report;
+
+/**
+ * 报表系统数据 年月日、专案代码
+ */
+public class SystemMO {
+    private String year; //年
+    private String month; //月
+    private String day; //日
+    private String date; //完整日期
+    private String zadm; //专案代码
+    private String reportName;
+
+
+
+    public SystemMO(String year, String month, String day, String zadm,String report) {
+        this.year = year;
+        this.month = month;
+        this.day = day;
+        this.date = year+"-"+month+"-"+day;
+        this.zadm = zadm;
+        this.reportName=report;
+    }
+
+    public String getReportName() {
+        return reportName;
+    }
+
+    public void setReportName(String reportName) {
+        this.reportName = reportName;
+    }
+
+    public String getYear() {
+        return year;
+    }
+
+    public void setYear(String year) {
+        this.year = year;
+    }
+
+    public String getMonth() {
+        return month;
+    }
+
+    public void setMonth(String month) {
+        this.month = month;
+    }
+
+    public String getDay() {
+        return day;
+    }
+
+    public void setDay(String day) {
+        this.day = day;
+    }
+
+    public String getDate() {
+        return date;
+    }
+
+    public void setDate(String date) {
+        this.date = date;
+    }
+
+    public String getZadm() {
+        return zadm;
+    }
+
+    public void setZadm(String zadm) {
+        this.zadm = zadm;
+    }
+}

+ 146 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/report/ThematicMO.java

@@ -0,0 +1,146 @@
+package cn.cslg.pas.common.model.dto.report;
+
+/**
+ * @author Coding.lu
+ * @version V1.0
+ * 专题库信息
+ * @date 2021/12/23 下午10:30
+ */
+public class ThematicMO {
+    private String tname;//专题库名称
+    private String technical_theme;//技术主题
+    private String innerfile;//内部案卷
+    private String update_cycle;//是否更新
+    private String Treat_status;//处理状态
+    private String contract_no;//合同号
+    private String case_data;//委案日
+    private String tupdate_time;//更新周期
+    private String tremark;//备注
+    private String tcreate_time;//创建时间
+    private String participant;//参与者
+    private String survey_type;//调查类型
+    private String scenario;//委托场景
+    private String client;//委托方
+    private String creator;//创建者
+
+    public String getTname() {
+        return tname;
+    }
+
+    public void setTname(String tname) {
+        this.tname = tname;
+    }
+
+    public String getTechnical_theme() {
+        return technical_theme;
+    }
+
+    public void setTechnical_theme(String technical_theme) {
+        this.technical_theme = technical_theme;
+    }
+
+    public String getInnerfile() {
+        return innerfile;
+    }
+
+    public void setInnerfile(String innerfile) {
+        this.innerfile = innerfile;
+    }
+
+    public String getUpdate_cycle() {
+        return update_cycle;
+    }
+
+    public void setUpdate_cycle(String update_cycle) {
+        this.update_cycle = update_cycle;
+    }
+
+    public String getTreat_status() {
+        return Treat_status;
+    }
+
+    public void setTreat_status(String treat_status) {
+        Treat_status = treat_status;
+    }
+
+    public String getContract_no() {
+        return contract_no;
+    }
+
+    public void setContract_no(String contract_no) {
+        this.contract_no = contract_no;
+    }
+
+    public String getCase_data() {
+        return case_data;
+    }
+
+    public void setCase_data(String case_data) {
+        this.case_data = case_data;
+    }
+
+    public String getTupdate_time() {
+        return tupdate_time;
+    }
+
+    public void setTupdate_time(String tupdate_time) {
+        this.tupdate_time = tupdate_time;
+    }
+
+    public String getTremark() {
+        return tremark;
+    }
+
+    public void setTremark(String tremark) {
+        this.tremark = tremark;
+    }
+
+    public String getTcreate_time() {
+        return tcreate_time;
+    }
+
+    public void setTcreate_time(String tcreate_time) {
+        this.tcreate_time = tcreate_time;
+    }
+
+    public String getParticipant() {
+        return participant;
+    }
+
+    public void setParticipant(String participant) {
+        this.participant = participant;
+    }
+
+    public String getSurvey_type() {
+        return survey_type;
+    }
+
+    public void setSurvey_type(String survey_type) {
+        this.survey_type = survey_type;
+    }
+
+    public String getScenario() {
+        return scenario;
+    }
+
+    public void setScenario(String scenario) {
+        this.scenario = scenario;
+    }
+
+    public String getClient() {
+        return client;
+    }
+
+    public void setClient(String client) {
+        this.client = client;
+    }
+
+    public String getCreator() {
+        return creator;
+    }
+
+    public void setCreator(String creator) {
+        this.creator = creator;
+    }
+}
+

+ 14 - 0
PAS/src/main/java/cn/cslg/pas/common/model/params/PatentAffairParams.java

@@ -0,0 +1,14 @@
+package cn.cslg.pas.common.model.params;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PatentAffairParams {
+    private Integer dateTime;
+    private List<String> statusList;
+    private Integer simpleStatus;
+    private String content;
+    private Integer patentId;
+}

+ 11 - 0
PAS/src/main/java/cn/cslg/pas/common/model/params/PatentAgentParams.java

@@ -0,0 +1,11 @@
+package cn.cslg.pas.common.model.params;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PatentAgentParams {
+    private Integer patentId;
+    private List<String> agent;
+}

+ 13 - 0
PAS/src/main/java/cn/cslg/pas/common/model/params/PatentApplicantAddressParams.java

@@ -0,0 +1,13 @@
+package cn.cslg.pas.common.model.params;
+
+import lombok.Data;
+
+@Data
+public class PatentApplicantAddressParams {
+    private String currentCountry;
+    private String originalCountry;
+    private String currentAddress;
+    private String firstCurrentAddress;
+    private String originalAddress;
+    private Integer patentId;
+}

+ 16 - 0
PAS/src/main/java/cn/cslg/pas/common/model/params/PatentApplicantParams.java

@@ -0,0 +1,16 @@
+package cn.cslg.pas.common.model.params;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PatentApplicantParams {
+    private List<String> currentName;
+    private List<String> originalName;
+    private List<String> standardCurrentName;
+    private List<String> standardOriginalName;
+    private String firstCurrentName;
+    private String firstOriginalName;
+    private Integer patentId;
+}

+ 16 - 0
PAS/src/main/java/cn/cslg/pas/common/model/params/PatentClassNumberParams.java

@@ -0,0 +1,16 @@
+package cn.cslg.pas.common.model.params;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PatentClassNumberParams {
+    private Integer patentId;
+    private String mainIpc;
+    private String mainUpc;
+    private List<String> ipcList;
+    private List<String> cpcList;
+    private List<String> upcList;
+    private List<String> locList;
+}

+ 12 - 0
PAS/src/main/java/cn/cslg/pas/common/model/params/PatentCustomFieldParams.java

@@ -0,0 +1,12 @@
+package cn.cslg.pas.common.model.params;
+
+import lombok.Data;
+
+import java.util.HashMap;
+
+@Data
+public class PatentCustomFieldParams extends HashMap<String, Object> {
+    private Integer projectId;
+    private Integer patentId;
+    private Integer userId;
+}

+ 10 - 0
PAS/src/main/java/cn/cslg/pas/common/model/params/PatentInstructionTextParams.java

@@ -0,0 +1,10 @@
+package cn.cslg.pas.common.model.params;
+
+import lombok.Data;
+
+@Data
+public class PatentInstructionTextParams {
+    private String manual;
+    private String manualOut;
+    private Integer patentId;
+}

+ 10 - 0
PAS/src/main/java/cn/cslg/pas/common/model/params/PatentInventorAddressParams.java

@@ -0,0 +1,10 @@
+package cn.cslg.pas.common.model.params;
+
+import lombok.Data;
+
+@Data
+public class PatentInventorAddressParams {
+    private String address;
+    private String firstAddress;
+    private Integer patentId;
+}

+ 12 - 0
PAS/src/main/java/cn/cslg/pas/common/model/params/PatentInventorParams.java

@@ -0,0 +1,12 @@
+package cn.cslg.pas.common.model.params;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PatentInventorParams {
+    private List<String> nameList;
+    private Integer patentId;
+    private String firstName;
+}

+ 13 - 0
PAS/src/main/java/cn/cslg/pas/common/model/params/PatentIpcMessageParams.java

@@ -0,0 +1,13 @@
+package cn.cslg.pas.common.model.params;
+
+import lombok.Data;
+
+@Data
+public class PatentIpcMessageParams {
+    private String level1;
+    private String level2;
+    private String level3;
+    private String level4;
+    private String level5;
+    private Integer patentId;
+}

+ 12 - 0
PAS/src/main/java/cn/cslg/pas/common/model/params/PatentLabelParams.java

@@ -0,0 +1,12 @@
+package cn.cslg.pas.common.model.params;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PatentLabelParams {
+    private Integer patentId;
+    private Integer projectId;
+    private List<String> label;
+}

+ 13 - 0
PAS/src/main/java/cn/cslg/pas/common/model/params/PatentLicensorParams.java

@@ -0,0 +1,13 @@
+package cn.cslg.pas.common.model.params;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PatentLicensorParams {
+    private Integer patentId;
+    private List<String> licensor;
+    private List<String> licensee;
+    private List<String> type;
+}

+ 12 - 0
PAS/src/main/java/cn/cslg/pas/common/model/params/PatentPledgeParams.java

@@ -0,0 +1,12 @@
+package cn.cslg.pas.common.model.params;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PatentPledgeParams {
+    private Integer patentId;
+    private List<String> pledgor;
+    private List<String> pledgee;
+}

+ 12 - 0
PAS/src/main/java/cn/cslg/pas/common/model/params/PatentRightParams.java

@@ -0,0 +1,12 @@
+package cn.cslg.pas.common.model.params;
+
+import lombok.Data;
+
+@Data
+public class PatentRightParams {
+    private Integer patentId;
+    private String patentNo;
+    private String content;
+    private String contentOut;
+    private String selfContent;
+}

+ 14 - 0
PAS/src/main/java/cn/cslg/pas/common/model/params/PatentSimpleFamilyParams.java

@@ -0,0 +1,14 @@
+package cn.cslg.pas.common.model.params;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PatentSimpleFamilyParams {
+    private Integer patentId;
+    private String patentNo;
+    private List<String> simpleFamily;
+    private List<String> inpadocFamily;
+    private List<String> patSnapFamily;
+}

+ 9 - 0
PAS/src/main/java/cn/cslg/pas/common/model/vo/AdminUserLoginVO.java

@@ -0,0 +1,9 @@
+package cn.cslg.pas.common.model.vo;
+
+import lombok.Data;
+
+@Data
+public class AdminUserLoginVO {
+    private String username;
+    private String password;
+}

+ 9 - 0
PAS/src/main/java/cn/cslg/pas/common/model/vo/AdminUserVO.java

@@ -0,0 +1,9 @@
+package cn.cslg.pas.common.model.vo;
+
+import lombok.Data;
+
+@Data
+public class AdminUserVO extends BaseVO {
+    private String username;
+    private String name;
+}

+ 15 - 0
PAS/src/main/java/cn/cslg/pas/common/model/vo/AnalysisItemCountVO.java

@@ -0,0 +1,15 @@
+package cn.cslg.pas.common.model.vo;
+
+import cn.cslg.pas.common.model.dto.analysis.SchemaDimensionDTO;
+import cn.cslg.pas.common.model.dto.analysis.SourceDataDTO;
+import lombok.Data;
+
+@Data
+public class AnalysisItemCountVO {
+    private Integer projectId;
+    private String patentKey;
+    private String key;
+    private SchemaDimensionDTO schema;
+    private SourceDataDTO source;
+    private Integer type;
+}

+ 13 - 0
PAS/src/main/java/cn/cslg/pas/common/model/vo/AnalysisItemExportVO.java

@@ -0,0 +1,13 @@
+package cn.cslg.pas.common.model.vo;
+
+import lombok.Data;
+
+import java.util.List;
+import java.util.Map;
+
+@Data
+public class AnalysisItemExportVO {
+    private Integer id;
+    private List<String> base64;
+    private Map<String, Integer> count;
+}

+ 39 - 0
PAS/src/main/java/cn/cslg/pas/common/model/vo/AnalysisItemResultVO.java

@@ -0,0 +1,39 @@
+package cn.cslg.pas.common.model.vo;
+
+import lombok.Data;
+
+@Data
+public class AnalysisItemResultVO {
+    private String ids;
+    private Integer ismain;
+    private Integer type;
+    private Integer le;
+    private String function;
+    private Integer sbbType;
+    private Integer subType;
+    private Integer projectId;
+
+    private Integer field;
+    private String nodes;
+
+    private int vmax;
+    private int vmin;
+    private String maxv;
+    private String minv;
+    private String omax;
+    private String omin;
+
+    public AnalysisItemResultVO(String function, Integer ismain, Integer type, Integer le, Integer sbbType, Integer subType) {
+        this.function = function;
+        this.ismain = ismain;
+        this.type = type;
+        this.le = le;
+        this.sbbType = sbbType;
+        this.subType = subType;
+    }
+
+    public AnalysisItemResultVO() {
+
+    }
+
+}

+ 10 - 0
PAS/src/main/java/cn/cslg/pas/common/model/vo/BaseVO.java

@@ -0,0 +1,10 @@
+package cn.cslg.pas.common.model.vo;
+
+import lombok.Data;
+
+@Data
+public class BaseVO {
+    private Long current;
+    private Long size;
+    private String order;
+}

+ 8 - 0
PAS/src/main/java/cn/cslg/pas/common/model/vo/ClientVO.java

@@ -0,0 +1,8 @@
+package cn.cslg.pas.common.model.vo;
+
+import lombok.Data;
+
+@Data
+public class ClientVO extends BaseVO {
+    private String name;
+}

+ 9 - 0
PAS/src/main/java/cn/cslg/pas/common/model/vo/PatentAnnotationVO.java

@@ -0,0 +1,9 @@
+package cn.cslg.pas.common.model.vo;
+
+import lombok.Data;
+
+@Data
+public class PatentAnnotationVO extends BaseVO {
+    private Integer patentId;
+    private Integer projectId;
+}

+ 11 - 0
PAS/src/main/java/cn/cslg/pas/common/model/vo/PatentApplicantMergeVO.java

@@ -0,0 +1,11 @@
+package cn.cslg.pas.common.model.vo;
+
+import lombok.Data;
+
+@Data
+public class PatentApplicantMergeVO extends BaseVO {
+    private Integer projectId;
+    private String name;
+    private String country;
+    private String address;
+}

+ 15 - 0
PAS/src/main/java/cn/cslg/pas/common/model/vo/PatentApplicantVO.java

@@ -0,0 +1,15 @@
+package cn.cslg.pas.common.model.vo;
+
+import lombok.Data;
+
+@Data
+public class PatentApplicantVO extends BaseVO {
+    private Integer projectId;
+    private Integer mergeId;
+    private String country;
+    private String name;
+    private String shortName;
+    private String order;
+    private String prop;
+    private String from;
+}

+ 13 - 0
PAS/src/main/java/cn/cslg/pas/common/model/vo/PatentBatchIndexVO.java

@@ -0,0 +1,13 @@
+package cn.cslg.pas.common.model.vo;
+
+import cn.cslg.pas.domain.ProjectField;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PatentBatchIndexVO {
+    private Integer projectId;
+    private List<Integer> patentIds;
+    private List<ProjectField> fieldList;
+}

+ 14 - 0
PAS/src/main/java/cn/cslg/pas/common/model/vo/PatentCustomFieldSettingVO.java

@@ -0,0 +1,14 @@
+package cn.cslg.pas.common.model.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PatentCustomFieldSettingVO {
+    private Integer projectId;
+    private Integer patentId;
+    private String type;
+    private String field;
+    private List<String> selected;
+}

+ 13 - 0
PAS/src/main/java/cn/cslg/pas/common/model/vo/PatentExportParams.java

@@ -0,0 +1,13 @@
+package cn.cslg.pas.common.model.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PatentExportParams {
+    private List<PatentExportVO> selected;
+    private String key;
+    private Integer projectId;
+    private Integer patentId;
+}

+ 12 - 0
PAS/src/main/java/cn/cslg/pas/common/model/vo/PatentExportVO.java

@@ -0,0 +1,12 @@
+package cn.cslg.pas.common.model.vo;
+
+import lombok.Data;
+
+@Data
+public class PatentExportVO {
+    private String key;
+    private String name;
+    private Integer order;
+    private Boolean selected;
+    private String type;
+}

+ 15 - 0
PAS/src/main/java/cn/cslg/pas/common/model/vo/PatentIndexSettingVO.java

@@ -0,0 +1,15 @@
+package cn.cslg.pas.common.model.vo;
+
+import cn.cslg.pas.common.model.dto.LabelDTO;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PatentIndexSettingVO {
+    private Integer id;
+    private Integer fieldId;
+    private Integer projectId;
+    private Integer type;
+    private List<LabelDTO> selected;
+}

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


Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels