Quellcode durchsuchen

Merge branch 'dev2' into test

lwhhszx vor 2 Jahren
Ursprung
Commit
cd78ec7414
100 geänderte Dateien mit 3231 neuen und 350 gelöschten Zeilen
  1. 0 205
      PAS/pas.iml
  2. 26 0
      PAS/pom.xml
  3. 25 0
      PAS/src/main/java/cn/cslg/pas/common/GlobalException.java
  4. 45 0
      PAS/src/main/java/cn/cslg/pas/common/config/XDns.java
  5. 89 0
      PAS/src/main/java/cn/cslg/pas/common/core/CreateTaskThread.java
  6. 25 4
      PAS/src/main/java/cn/cslg/pas/common/model/PatentCell.java
  7. 17 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/ConfigDTO.java
  8. 30 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/GetClaimsInfoParamsDTO.java
  9. 30 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/GetDescriptionInfoParamsDTO.java
  10. 30 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/GetFuTuParamsDTO.java
  11. 30 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/GetPatentStarPartDTO.java
  12. 30 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/GetSearchBiblioParamsDTO.java
  13. 4 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/PatentDTO.java
  14. 22 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/QueryQrtzTaskLogsDTO.java
  15. 51 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/QueryTaskDTO.java
  16. 32 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/RetrieveRecordDTO.java
  17. 144 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/TaskAddNewDTO.java
  18. 2 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/TaskWebSocketDTO.java
  19. 35 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/WebQueryDTO.java
  20. 47 0
      PAS/src/main/java/cn/cslg/pas/common/model/outApi/PatentStarDto.java
  21. 59 0
      PAS/src/main/java/cn/cslg/pas/common/model/outApi/PatentStarListDto.java
  22. 14 0
      PAS/src/main/java/cn/cslg/pas/common/model/outApi/RetrieveRecordDeDTO.java
  23. 23 0
      PAS/src/main/java/cn/cslg/pas/common/model/outApi/RetrieveRecordQueryDTO.java
  24. 6 0
      PAS/src/main/java/cn/cslg/pas/common/model/params/PatentAgentParams.java
  25. 9 0
      PAS/src/main/java/cn/cslg/pas/common/model/params/PatentInstructionTextParams.java
  26. 15 0
      PAS/src/main/java/cn/cslg/pas/common/model/params/PatentInventorParams.java
  27. 12 0
      PAS/src/main/java/cn/cslg/pas/common/model/params/PatentLicensorParams.java
  28. 9 0
      PAS/src/main/java/cn/cslg/pas/common/model/params/PatentPledgeParams.java
  29. 2 2
      PAS/src/main/java/cn/cslg/pas/common/model/params/PatentRightParams.java
  30. 9 0
      PAS/src/main/java/cn/cslg/pas/common/model/params/PatentSimpleFamilyParams.java
  31. 0 8
      PAS/src/main/java/cn/cslg/pas/common/model/vo/ApplicationScenarioEventNumberVO.java
  32. 17 0
      PAS/src/main/java/cn/cslg/pas/common/model/vo/ConfigVO.java
  33. 1 1
      PAS/src/main/java/cn/cslg/pas/common/model/vo/EventListItemVO.java
  34. 1 1
      PAS/src/main/java/cn/cslg/pas/common/model/vo/InvestigationTypeProjectNumberVO.java
  35. 35 0
      PAS/src/main/java/cn/cslg/pas/common/model/vo/PageVO.java
  36. 12 13
      PAS/src/main/java/cn/cslg/pas/common/model/vo/ProductMarketDataTrendVO.java
  37. 49 1
      PAS/src/main/java/cn/cslg/pas/common/model/vo/ProjectImportPatentVO.java
  38. 4 0
      PAS/src/main/java/cn/cslg/pas/common/model/vo/ProjectImportVO.java
  39. 14 0
      PAS/src/main/java/cn/cslg/pas/common/model/vo/QuartzVO.java
  40. 19 0
      PAS/src/main/java/cn/cslg/pas/common/model/vo/QueryConfigVO.java
  41. 148 0
      PAS/src/main/java/cn/cslg/pas/common/model/vo/QueryTaskVO.java
  42. 25 1
      PAS/src/main/java/cn/cslg/pas/common/model/vo/TaskParams.java
  43. 29 2
      PAS/src/main/java/cn/cslg/pas/common/model/vo/UploadParamsVO.java
  44. 3 1
      PAS/src/main/java/cn/cslg/pas/common/model/vo/UploadSettingVO.java
  45. 142 0
      PAS/src/main/java/cn/cslg/pas/common/model/vo/outApi/StarPatentVO.java
  46. 5 1
      PAS/src/main/java/cn/cslg/pas/common/utils/DateUtils.java
  47. 116 0
      PAS/src/main/java/cn/cslg/pas/common/utils/DateUtils2.java
  48. 8 6
      PAS/src/main/java/cn/cslg/pas/common/utils/ExcelUtils.java
  49. 28 0
      PAS/src/main/java/cn/cslg/pas/common/utils/FileUtils.java
  50. 29 0
      PAS/src/main/java/cn/cslg/pas/common/utils/FormatUtil.java
  51. 17 0
      PAS/src/main/java/cn/cslg/pas/common/utils/MathUtils.java
  52. 24 28
      PAS/src/main/java/cn/cslg/pas/common/utils/PatentRightUtils.java
  53. 187 0
      PAS/src/main/java/cn/cslg/pas/common/utils/ReadExcelUtils.java
  54. 39 0
      PAS/src/main/java/cn/cslg/pas/common/utils/RemoveHtmlTagsUtils.java
  55. 16 1
      PAS/src/main/java/cn/cslg/pas/common/utils/Response.java
  56. 38 0
      PAS/src/main/java/cn/cslg/pas/common/utils/SpringContextUtils.java
  57. 5 5
      PAS/src/main/java/cn/cslg/pas/common/utils/UploadPatentBatchUtil.java
  58. 4 4
      PAS/src/main/java/cn/cslg/pas/controller/EventController.java
  59. 41 0
      PAS/src/main/java/cn/cslg/pas/controller/GetPatentStarPartController.java
  60. 7 13
      PAS/src/main/java/cn/cslg/pas/controller/PatentController.java
  61. 1 4
      PAS/src/main/java/cn/cslg/pas/controller/PermissionRecordController.java
  62. 3 1
      PAS/src/main/java/cn/cslg/pas/controller/ProductMarketDataController.java
  63. 1 0
      PAS/src/main/java/cn/cslg/pas/controller/ProjectController.java
  64. 25 13
      PAS/src/main/java/cn/cslg/pas/controller/ProjectImportController.java
  65. 56 0
      PAS/src/main/java/cn/cslg/pas/controller/RetrieveRecordController.java
  66. 1 1
      PAS/src/main/java/cn/cslg/pas/controller/StructureController.java
  67. 5 4
      PAS/src/main/java/cn/cslg/pas/controller/SystemController.java
  68. 80 6
      PAS/src/main/java/cn/cslg/pas/controller/TaskController.java
  69. 11 1
      PAS/src/main/java/cn/cslg/pas/controller/UserController.java
  70. 98 0
      PAS/src/main/java/cn/cslg/pas/controller/outApi/PatentStarController.java
  71. 38 0
      PAS/src/main/java/cn/cslg/pas/domain/AppNo.java
  72. 34 0
      PAS/src/main/java/cn/cslg/pas/domain/Application.java
  73. 3 6
      PAS/src/main/java/cn/cslg/pas/domain/Authority.java
  74. 28 0
      PAS/src/main/java/cn/cslg/pas/domain/BaseEntity.java
  75. 35 0
      PAS/src/main/java/cn/cslg/pas/domain/Calculate.java
  76. 178 0
      PAS/src/main/java/cn/cslg/pas/domain/ChinaLeagalStatus.java
  77. 99 0
      PAS/src/main/java/cn/cslg/pas/domain/ChinaPatentZhuLu.java
  78. 26 0
      PAS/src/main/java/cn/cslg/pas/domain/FamilyPatentNo.java
  79. 39 0
      PAS/src/main/java/cn/cslg/pas/domain/Image.java
  80. 27 0
      PAS/src/main/java/cn/cslg/pas/domain/ImageInfo.java
  81. 34 0
      PAS/src/main/java/cn/cslg/pas/domain/Inventor.java
  82. 27 0
      PAS/src/main/java/cn/cslg/pas/domain/MultipleCondition.java
  83. 32 0
      PAS/src/main/java/cn/cslg/pas/domain/PQueueData.java
  84. 3 4
      PAS/src/main/java/cn/cslg/pas/domain/Patent.java
  85. 3 2
      PAS/src/main/java/cn/cslg/pas/domain/PatentAgent.java
  86. 25 0
      PAS/src/main/java/cn/cslg/pas/domain/PatentData.java
  87. 2 4
      PAS/src/main/java/cn/cslg/pas/domain/PatentImage.java
  88. 0 1
      PAS/src/main/java/cn/cslg/pas/domain/PatentInstructionText.java
  89. 3 4
      PAS/src/main/java/cn/cslg/pas/domain/PatentLicensor.java
  90. 81 0
      PAS/src/main/java/cn/cslg/pas/domain/PatentZhuLu.java
  91. 30 0
      PAS/src/main/java/cn/cslg/pas/domain/Priority.java
  92. 38 0
      PAS/src/main/java/cn/cslg/pas/domain/PriorityNumber.java
  93. 32 0
      PAS/src/main/java/cn/cslg/pas/domain/Priorityy.java
  94. 1 1
      PAS/src/main/java/cn/cslg/pas/domain/Project.java
  95. 4 1
      PAS/src/main/java/cn/cslg/pas/domain/ProjectField.java
  96. 38 0
      PAS/src/main/java/cn/cslg/pas/domain/PubNo.java
  97. 23 0
      PAS/src/main/java/cn/cslg/pas/domain/PubReference.java
  98. 89 0
      PAS/src/main/java/cn/cslg/pas/domain/QrtzTask.java
  99. 43 0
      PAS/src/main/java/cn/cslg/pas/domain/QuestionRecord.java
  100. 0 0
      PAS/src/main/java/cn/cslg/pas/domain/QueueData.java

+ 0 - 205
PAS/pas.iml

@@ -1,205 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
-  <component name="FacetManager">
-    <facet type="web" name="Web">
-      <configuration>
-        <webroots />
-        <sourceRoots>
-          <root url="file://$MODULE_DIR$/src/main/java" />
-          <root url="file://$MODULE_DIR$/src/main/resources" />
-        </sourceRoots>
-      </configuration>
-    </facet>
-    <facet type="Spring" name="Spring">
-      <configuration />
-    </facet>
-  </component>
-  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
-    <output url="file://$MODULE_DIR$/target/classes" />
-    <output-test url="file://$MODULE_DIR$/target/test-classes" />
-    <content url="file://$MODULE_DIR$">
-      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
-      <excludeFolder url="file://$MODULE_DIR$/target" />
-    </content>
-    <orderEntry type="inheritedJdk" />
-    <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="library" name="Maven: org.springdoc:springdoc-openapi-ui:1.6.6" level="project" />
-    <orderEntry type="library" name="Maven: org.springdoc:springdoc-openapi-webmvc-core:1.6.6" level="project" />
-    <orderEntry type="library" name="Maven: org.springdoc:springdoc-openapi-common:1.6.6" level="project" />
-    <orderEntry type="library" name="Maven: io.swagger.core.v3:swagger-core:2.1.12" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.12.6" level="project" />
-    <orderEntry type="library" name="Maven: io.swagger.core.v3:swagger-annotations:2.1.12" level="project" />
-    <orderEntry type="library" name="Maven: io.swagger.core.v3:swagger-models:2.1.12" level="project" />
-    <orderEntry type="library" name="Maven: jakarta.validation:jakarta.validation-api:2.0.2" level="project" />
-    <orderEntry type="library" name="Maven: org.webjars:swagger-ui:4.5.0" level="project" />
-    <orderEntry type="library" name="Maven: org.webjars:webjars-locator-core:0.46" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.12.6" level="project" />
-    <orderEntry type="library" name="Maven: io.github.classgraph:classgraph:4.8.138" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-aop:2.5.9" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.5.9" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.5.9" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.5.9" level="project" />
-    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.10" level="project" />
-    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.10" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.17.1" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.17.1" level="project" />
-    <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.33" level="project" />
-    <orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5" level="project" />
-    <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.28" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.3.15" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.3.15" level="project" />
-    <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.9.7" level="project" />
-    <orderEntry type="library" name="Maven: com.deepoove:poi-tl:1.10.3" level="project" />
-    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.33" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.12.0" level="project" />
-    <orderEntry type="library" name="Maven: com.deepoove:poi-ooxml-schemas-extra:4.1.4" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-transcoder:1.14" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-anim:1.14" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-css:1.14" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-ext:1.14" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-parser:1.14" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-svg-dom:1.14" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-awt-util:1.14" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:xmlgraphics-commons:2.6" level="project" />
-    <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.0.4" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-bridge:1.14" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-script:1.14" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-dom:1.14" level="project" />
-    <orderEntry type="library" name="Maven: xalan:xalan:2.7.2" level="project" />
-    <orderEntry type="library" name="Maven: xalan:serializer:2.7.2" level="project" />
-    <orderEntry type="library" name="Maven: xml-apis:xml-apis:1.4.01" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-gvt:1.14" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-shared-resources:1.14" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-svggen:1.14" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-util:1.14" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-constants:1.14" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-i18n:1.14" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-xml:1.14" level="project" />
-    <orderEntry type="library" name="Maven: xml-apis:xml-apis-ext:1.3.04" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlgraphics:batik-codec:1.14" level="project" />
-    <orderEntry type="library" name="Maven: cn.dev33:sa-token-spring-boot-starter:1.29.0" level="project" />
-    <orderEntry type="library" name="Maven: cn.dev33:sa-token-servlet:1.29.0" level="project" />
-    <orderEntry type="library" name="Maven: cn.dev33:sa-token-dao-redis-jackson:1.29.0" level="project" />
-    <orderEntry type="library" name="Maven: cn.dev33:sa-token-core:1.29.0" level="project" />
-    <orderEntry type="library" name="Maven: com.alibaba:druid-spring-boot-starter:1.1.20" level="project" />
-    <orderEntry type="library" name="Maven: com.alibaba:druid:1.1.20" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.5.9" level="project" />
-    <orderEntry type="library" name="Maven: com.alibaba:fastjson:2.0.12" level="project" />
-    <orderEntry type="library" name="Maven: com.alibaba.fastjson2:fastjson2-extension:2.0.12" level="project" />
-    <orderEntry type="library" name="Maven: com.alibaba.fastjson2:fastjson2:2.0.12" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.commons:commons-compress:1.21" level="project" />
-    <orderEntry type="library" name="Maven: commons-io:commons-io:2.6" level="project" />
-    <orderEntry type="library" name="Maven: io.jsonwebtoken:jjwt:0.9.0" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.12.6" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.12.6" level="project" />
-    <orderEntry type="library" name="Maven: com.ejlchina:okhttps:3.1.1" level="project" />
-    <orderEntry type="library" name="Maven: com.ejlchina:data-core:1.0.1" level="project" />
-    <orderEntry type="library" name="Maven: com.squareup.okhttp3:okhttp:3.14.9" level="project" />
-    <orderEntry type="library" name="Maven: com.squareup.okio:okio:1.17.5" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-thymeleaf:2.5.9" level="project" />
-    <orderEntry type="library" name="Maven: org.thymeleaf:thymeleaf-spring5:3.0.14.RELEASE" level="project" />
-    <orderEntry type="library" name="Maven: org.thymeleaf:thymeleaf:3.0.14.RELEASE" level="project" />
-    <orderEntry type="library" name="Maven: org.attoparser:attoparser:2.0.5.RELEASE" level="project" />
-    <orderEntry type="library" name="Maven: org.unbescape:unbescape:1.1.6.RELEASE" level="project" />
-    <orderEntry type="library" name="Maven: org.thymeleaf.extras:thymeleaf-extras-java8time:3.0.4.RELEASE" level="project" />
-    <orderEntry type="library" name="Maven: cn.hutool:hutool-all:5.6.5" level="project" />
-    <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.9" level="project" />
-    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-boot-starter:3.4.3.4" level="project" />
-    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus:3.4.3.4" level="project" />
-    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-extension:3.4.3.4" level="project" />
-    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-core:3.4.3.4" level="project" />
-    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-annotation:3.4.3.4" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.5.9" level="project" />
-    <orderEntry type="library" name="Maven: com.zaxxer:HikariCP:4.0.3" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.3.15" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-redis:2.5.9" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-redis:2.5.8" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-keyvalue:2.5.8" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:2.5.8" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-tx:5.3.15" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-oxm:5.3.15" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-context-support:5.3.15" level="project" />
-    <orderEntry type="library" name="Maven: io.lettuce:lettuce-core:6.1.6.RELEASE" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-common:4.1.73.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.73.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.73.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.73.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.73.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-tcnative-classes:2.0.46.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.73.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.projectreactor:reactor-core:3.4.14" level="project" />
-    <orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.3" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.5.9" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.5.9" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.12.6" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.12.6" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.12.6" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.5.9" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:9.0.56" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:9.0.56" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:9.0.56" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-web:5.3.15" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.3.15" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-context:5.3.15" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.3.15" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-websocket:2.5.9" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-messaging:5.3.15" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-websocket:5.3.15" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.commons:commons-pool2:2.9.0" level="project" />
-    <orderEntry type="library" scope="RUNTIME" name="Maven: mysql:mysql-connector-java:8.0.28" level="project" />
-    <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.22" level="project" />
-    <orderEntry type="library" name="Maven: junit:junit:4.13.2" level="project" />
-    <orderEntry type="library" name="Maven: org.hamcrest:hamcrest-core:2.2" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.poi:poi:4.1.2" level="project" />
-    <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.15" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.4" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.commons:commons-math3:3.6.1" level="project" />
-    <orderEntry type="library" name="Maven: com.zaxxer:SparseBitSet:1.2" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:4.1.2" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-schemas:4.1.2" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:3.1.0" level="project" />
-    <orderEntry type="library" name="Maven: com.github.virtuald:curvesapi:1.06" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.poi:poi-scratchpad:4.1.2" level="project" />
-    <orderEntry type="library" name="Maven: commons-fileupload:commons-fileupload:1.3.3" level="project" />
-    <orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-starter:1.4.0" level="project" />
-    <orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.0" level="project" />
-    <orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:2.2.0" level="project" />
-    <orderEntry type="library" name="Maven: org.mybatis:mybatis:3.5.7" level="project" />
-    <orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:2.0.6" level="project" />
-    <orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-autoconfigure:1.4.0" level="project" />
-    <orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper:5.3.0" level="project" />
-    <orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:4.2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:2.5.9" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:2.5.9" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:2.5.9" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: com.jayway.jsonpath:json-path:2.5.0" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: net.minidev:json-smart:2.4.7" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: net.minidev:accessors-smart:2.4.7" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.ow2.asm:asm:9.1" level="project" />
-    <orderEntry type="library" name="Maven: jakarta.xml.bind:jakarta.xml.bind-api:2.3.3" level="project" />
-    <orderEntry type="library" name="Maven: jakarta.activation:jakarta.activation-api:1.2.2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:3.19.0" level="project" />
-    <orderEntry type="library" name="Maven: org.hamcrest:hamcrest:2.2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter:5.7.2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-api:5.7.2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.apiguardian:apiguardian-api:1.1.0" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.opentest4j:opentest4j:1.2.0" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-commons:1.7.2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-params:5.7.2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-engine:5.7.2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-engine:1.7.2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:3.9.0" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy:1.10.22" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy-agent:1.10.22" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:3.2" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-junit-jupiter:3.9.0" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.skyscreamer:jsonassert:1.5.0" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-core:5.3.15" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.3.15" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:5.3.15" level="project" />
-    <orderEntry type="library" scope="TEST" name="Maven: org.xmlunit:xmlunit-core:2.8.4" level="project" />
-  </component>
-</module>

+ 26 - 0
PAS/pom.xml

@@ -172,8 +172,29 @@
             <artifactId>spring-boot-starter-test</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-quartz</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.mchange</groupId>
+            <artifactId>c3p0</artifactId>
+            <version>0.9.5.2</version>
+        </dependency>
+        <dependency>
+            <groupId>e-iceblue</groupId>
+            <artifactId>spire.pdf</artifactId>
+            <version>8.7.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>joda-time</groupId>
+            <artifactId>joda-time</artifactId>
+            <version>2.9.9</version>
+        </dependency>
     </dependencies>
 
+
     <build>
         <finalName>PAS_PROD2.0</finalName>
         <plugins>
@@ -216,6 +237,11 @@
                 <enabled>false</enabled>
             </snapshots>
         </repository>
+    <repository>
+        <id>com.e-iceblue</id>
+        <name>e-iceblue</name>
+        <url>http://repo.e-iceblue.com/nexus/content/groups/public/</url>
+    </repository>
     </repositories>
 
 </project>

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

@@ -3,16 +3,20 @@ 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.cslg.pas.exception.XiaoShiException;
 import cn.dev33.satoken.exception.NotLoginException;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.ExceptionHandler;
 import org.springframework.web.bind.annotation.RestControllerAdvice;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 
 /**
  * 全局异常处理
  */
+@Slf4j
 @RestControllerAdvice // 可指定包前缀,比如:(basePackages = "com.pj.admin")
 public class GlobalException {
 
@@ -30,4 +34,25 @@ public class GlobalException {
             return Response.error(ResponseEnum.SYSTEM_ERROR);
         }
     }
+
+    @ExceptionHandler
+    public Response handleXiaoShiException(XiaoShiException e) {
+        log.info("全局异常处理机制捕获到XiaoShiException,异常信息提示:{}", e.getMessage());
+        return Response.fail(e.getMessage());
+    }
+
+    @ExceptionHandler
+    public Response handleIOException(IOException e) {
+        log.info("全局异常处理机制捕获到IOException,异常信息打桩输出为:");
+        e.printStackTrace();
+        return Response.fail();
+    }
+
+    @ExceptionHandler
+    public Response handleThrowable(Throwable e) {
+        log.info("全局异常处理机制捕获到Throwable,异常信息打桩输出为:");
+        e.printStackTrace();
+        return Response.fail();
+    }
+
 }

+ 45 - 0
PAS/src/main/java/cn/cslg/pas/common/config/XDns.java

@@ -0,0 +1,45 @@
+package cn.cslg.pas.common.config;
+
+import okhttp3.Dns;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.concurrent.*;
+
+public class XDns implements Dns {
+    private long timeout;
+
+    public XDns(long timeout) {
+        this.timeout = timeout;
+    }
+
+    @Override
+    public List<InetAddress> lookup(final String hostname) throws UnknownHostException {
+        if (hostname == null) {
+            throw new UnknownHostException("hostname == null");
+        } else {
+            List<InetAddress> inetAddresses =new ArrayList<>();
+            Boolean falg =true;
+            while (falg){
+                try {
+                    FutureTask<List<InetAddress>>  task = new FutureTask<>(
+                            new Callable<List<InetAddress>>() {
+                                @Override
+                                public List<InetAddress> call() throws Exception {
+                                    return Arrays.asList(InetAddress.getAllByName(hostname));
+                                }
+                            });
+                    new Thread(task).start();
+                    inetAddresses=task.get(timeout, TimeUnit.MILLISECONDS);
+                    falg =false;
+                } catch (Exception var4) {
+                  continue;
+                }
+            }
+                return inetAddresses;
+        }
+    }
+}

+ 89 - 0
PAS/src/main/java/cn/cslg/pas/common/core/CreateTaskThread.java

@@ -0,0 +1,89 @@
+package cn.cslg.pas.common.core;
+
+import cn.cslg.pas.domain.Task;
+import cn.cslg.pas.service.TaskService;
+import cn.cslg.pas.service.upLoadPatent.PantentQueueService;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Component;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 项目启动时初始化任务列表队列
+ *
+ * @Author chenyu
+ * @Date 2023/6/2
+ */
+@Component
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class CreateTaskThread implements InitializingBean {
+
+    private final TaskService taskService;
+    private final PantentQueueService pantentQueueService;
+
+    @Override
+    public void afterPropertiesSet() throws Exception {
+        //初始化任务队列
+        //查找任务状态为0(队列中)和1(进行中)的任务
+        List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().in(Task::getStatus, new ArrayList<>(Arrays.asList(0, 1))));
+        if (tasks.size() > 0) {
+            //过滤出任务ids
+            List<Integer> taskIds = tasks.stream().map(Task::getId).collect(Collectors.toList());
+            //过滤出进行中的任务的id
+            List<Task> doingTasks = tasks.stream().filter(item -> item.getStatus() == 1).collect(Collectors.toList());
+            List<Integer> doingTaskIds = doingTasks.stream().map(Task::getId).collect(Collectors.toList());
+            if (doingTaskIds.size() > 0) {
+                //先将进行中的任务(项目重启后进行中的任务仅会有1个)的id先存入任务队列,再将其余存入
+                pantentQueueService.taskQueueListAddTask(doingTaskIds);
+                taskIds.removeAll(doingTaskIds);
+            }
+            pantentQueueService.taskQueueListAddTask(taskIds);
+        }
+
+        //生产者线程
+        Thread threadProducer = new Thread(pantentQueueService::addPatnetToQueue);
+        threadProducer.start();
+
+        //装载专利著录线程
+        Thread threadSetPatentZhuLu = new Thread(pantentQueueService::setPatentZhuLu);
+        threadSetPatentZhuLu.start();
+        //装载权要线程
+        Thread threadSetPatentClaim = new Thread(pantentQueueService::setPatentRight);
+        threadSetPatentClaim.start();
+        //装载说明书文本线程
+        Thread threadSetPatentInstructionText = new Thread(pantentQueueService::setPatentInstructionText);
+        threadSetPatentInstructionText.start();
+        //装载说明书pdf线程
+        Thread threadSetPatentInstructionPDF = new Thread(pantentQueueService::setPatentInstructionPDF);
+        threadSetPatentInstructionPDF.start();
+        //装载摘要附图线程
+        Thread threadSetPatentPicture = new Thread(pantentQueueService::setPatentImage);
+        threadSetPatentPicture.start();
+
+        //消费者1线程(著录项目)
+        Thread threadConsumer1 = new Thread(pantentQueueService::pushPatentZhuLuToDB);
+        threadConsumer1.start();
+        //消费者2线程(权利要求)
+        Thread threadConsumer2 = new Thread(pantentQueueService::pushPatentRightToDB);
+        threadConsumer2.start();
+        //消费者3线程(说明书文本)
+        Thread threadConsumer3 = new Thread(pantentQueueService::pushPatentInstructionTextToDB);
+        threadConsumer3.start();
+        //消费者4线程(说明书pdf)
+        Thread threadConsumer4 = new Thread(pantentQueueService::pushPatentInstructionPDFToDB);
+        threadConsumer4.start();
+        //消费者5线程(摘要附图)
+        Thread threadConsumer5 = new Thread(pantentQueueService::pushPatentImageToDB);
+        threadConsumer5.start();
+
+    }
+
+}

+ 25 - 4
PAS/src/main/java/cn/cslg/pas/common/model/PatentCell.java

@@ -2,6 +2,7 @@ package cn.cslg.pas.common.model;
 
 
 import cn.cslg.pas.common.model.dto.UploadFileDTO;
+import cn.cslg.pas.domain.Priority;
 import lombok.Data;
 
 import java.util.List;
@@ -29,7 +30,14 @@ public class PatentCell {
     private String legal;
     private String url;
     private String abstrc;
+    /**
+     * 附图路径
+     */
     private String picUrl;
+    /**
+     * 附图文件名称
+     */
+    private String fileName;
     /*
     申请号
      */
@@ -91,7 +99,7 @@ public class PatentCell {
     /*
     摘要
      */
-    private  String abstrText;
+    private String abstrText;
 
     /*
     主权要
@@ -126,7 +134,7 @@ public class PatentCell {
     /*
    代理机构
     */
-    private  String agency;
+    private String agency;
     /*
     代理人
      */
@@ -135,9 +143,22 @@ public class PatentCell {
     /*专利法律状态
 
      */
-    List<PatentAffair> patentAffairs ;
+    List<PatentAffair> patentAffairs;
+    /**
+     * 同族号
+     */
+    private String familyId;
+    /**
+     * 优先权信息(优先权号、优先权国家、优先权日)
+     */
+    private List<Priority> priorities;
+    /**
+     * 其他附图路径
+     */
+    private List<String> otherUrls;
+
     @Data
-    public static  class PatentAffair{
+    public static class PatentAffair {
         /**
          * 法律状态
          */

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

@@ -0,0 +1,17 @@
+package cn.cslg.pas.common.model.dto;
+
+import lombok.Data;
+
+@Data
+public class ConfigDTO {
+
+    private String loginAccount;
+
+    private String loginPassword;
+
+    private Integer tenantId;
+
+    private Integer webId;
+
+
+}

+ 30 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/GetClaimsInfoParamsDTO.java

@@ -0,0 +1,30 @@
+package cn.cslg.pas.common.model.dto;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 远程调用爬取欧专局,获取获取权要信息的接口的DTO类
+ *
+ * @Author chenyu
+ * @Date 2023/4/12
+ */
+@Accessors(chain = true)
+@Data
+public class GetClaimsInfoParamsDTO implements Serializable {
+    /**
+     * 国家前2位首字母
+     */
+    private String cc;
+    /**
+     * 专利号数字
+     */
+    private String number;
+    /**
+     * 专利种类
+     */
+    private String kind;
+
+}

+ 30 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/GetDescriptionInfoParamsDTO.java

@@ -0,0 +1,30 @@
+package cn.cslg.pas.common.model.dto;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 远程调用爬取欧专局,获取说明书信息的接口的DTO类
+ *
+ * @Author chenyu
+ * @Date 2023/4/12
+ */
+@Accessors(chain = true)
+@Data
+public class GetDescriptionInfoParamsDTO implements Serializable {
+    /**
+     * 国家前2位首字母
+     */
+    private String cc;
+    /**
+     * 专利号数字
+     */
+    private String number;
+    /**
+     * 专利种类
+     */
+    private String kind;
+
+}

+ 30 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/GetFuTuParamsDTO.java

@@ -0,0 +1,30 @@
+package cn.cslg.pas.common.model.dto;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 远程调用爬取欧专局,获取附件的接口的DTO类
+ *
+ * @Author chenyu
+ * @Date 2023/4/12
+ */
+@Accessors(chain = true)
+@Data
+public class GetFuTuParamsDTO implements Serializable {
+    /**
+     * 附件链接
+     */
+    private String link;
+    /**
+     * 附件页数
+     */
+    private Integer page;
+    /**
+     * 附件类型
+     */
+    private String type;
+
+}

+ 30 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/GetPatentStarPartDTO.java

@@ -0,0 +1,30 @@
+package cn.cslg.pas.common.model.dto;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 获取专利之星专利指定项DTO类
+ *
+ * @Author chenyu
+ * @Date 2023/6/30
+ */
+@Accessors(chain = true)
+@Data
+public class GetPatentStarPartDTO extends PageDTO2 implements Serializable {
+    /**
+     * 获取专利项(1.权要 2.说明书文本 3.说明书pdf 4.摘要附图 5.同族专利)
+     */
+    private Integer patentCell;
+    /**
+     * 公开号
+     */
+    private String patentNo;
+    /**
+     * 申请号
+     */
+    private String appNo;
+
+}

+ 30 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/GetSearchBiblioParamsDTO.java

@@ -0,0 +1,30 @@
+package cn.cslg.pas.common.model.dto;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 远程调用爬取欧专局,获取一批专利著录接口的DTO类
+ *
+ * @Author chenyu
+ * @Date 2023/4/11
+ */
+@Accessors(chain = true)
+@Data
+public class GetSearchBiblioParamsDTO implements Serializable {
+    /**
+     * 检索信息条件
+     */
+    private String query;
+    /**
+     * 起始专利数(1代表从第1个专利开始,注意不是页数)
+     */
+    private Integer start;
+    /**
+     * 最后专利数(10代表到第10个专利为止,注意不是页数)
+     */
+    private Integer end;
+
+}

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

@@ -29,6 +29,10 @@ public class PatentDTO {
     private List<PatentRight> rights;
     private PatentInstructionText instruction;
     private List<String> priorityCountry;
+    /**
+     * 结果集(专利之星检索接口返回同族专利的接口使用)
+     */
+    private Object familyPatentResult;
 
     @Data
     public static class PatentFamily {

+ 22 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/QueryQrtzTaskLogsDTO.java

@@ -0,0 +1,22 @@
+package cn.cslg.pas.common.model.dto;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 查询定时任务更新日志DTO类
+ *
+ * @Author chenyu
+ * @Date 2023/7/10
+ */
+@Accessors(chain = true)
+@Data
+public class QueryQrtzTaskLogsDTO extends PageDTO2 implements Serializable {
+    /**
+     * 某定时任务条件最新一条任务的id
+     */
+    private Integer taskId;
+
+}

+ 51 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/QueryTaskDTO.java

@@ -0,0 +1,51 @@
+package cn.cslg.pas.common.model.dto;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 查询任务DTO类
+ *
+ * @Author chenyu
+ * @Date 2023/7/7
+ */
+@Accessors(chain = true)
+@Data
+public class QueryTaskDTO extends PageDTO2 implements Serializable {
+    /**
+     * 专题库id
+     */
+    private Integer projectId;
+    /**
+     * 报告id
+     */
+    private Integer reportId;
+    /**
+     * 创建人名称
+     */
+    private String createName;
+    /**
+     * 当前登陆人id
+     */
+    private Integer createId;
+    /**
+     * 创建人ids
+     */
+    private List<Integer> personIds;
+    /**
+     * 任务类型1(0普通任务 1定时任务)
+     */
+    private Integer taskType;
+    /**
+     * 任务类型2(1Excel导入 3欧专局导入 4专利之星导入)
+     */
+    private Integer taskType2;
+    /**
+     * 任务状态(0等待中 1进行中 2已完成 4已暂停)
+     */
+    private List<Integer> taskStatus;
+
+}

+ 32 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/RetrieveRecordDTO.java

@@ -0,0 +1,32 @@
+package cn.cslg.pas.common.model.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class RetrieveRecordDTO {
+
+    private Integer id;
+    /**
+     * 检索式
+     */
+    private String conditions;
+    /**
+     * 数据库类型
+     */
+    private String dbType;
+
+    /**
+     * 检索时间
+     */
+    private Date retrieveTime;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    private Integer totalNum;
+}

+ 144 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/TaskAddNewDTO.java

@@ -0,0 +1,144 @@
+package cn.cslg.pas.common.model.dto;
+
+import cn.cslg.pas.common.model.vo.ProjectImportPatentVO;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+/**
+ * 新增任务条件DTO
+ *
+ * @Author chenyu
+ * @Date 2023/3/27
+ */
+@Accessors(chain = true)
+@Data
+public class TaskAddNewDTO {
+    /**
+     * 检索信息
+     */
+    private String conditions;
+    /**
+     * 排序字段:“AD”,“PD”,“GD”,“ID”
+     */
+    private String orderBy;
+    /**
+     * 排序方式:“ASC”,“DESC”
+     */
+    private String orderByType;
+    /**
+     * 需要检索的数据库类型("CN"/"WD")
+     */
+    @JsonProperty(value = "DBType")
+    private String dBType;
+    /**
+     * 下载起始条数位置(如2表示从第二个专利开始下载)
+     */
+    private Integer startNumber;
+    /**
+     * 下载终止条数位置(如13表示从第十三个专利开始下载)
+     */
+    private Integer endNumber;
+    /**
+     * 需要额外下载的专利
+     */
+    private List<String> isAddPatentNos;
+    /**
+     * isAddPatentNos中的多个专利或申请号的下载任务类型(1.检索页面手动勾选的专利下载任务 2.多个专利号导入的下载任务)
+     */
+    private Integer isAddType;
+    /**
+     * 起止条数中不需要下载的专利
+     */
+    private List<String> isDeletePatentNos;
+    /**
+     * 专题库id
+     */
+    private Integer projectId;
+    /**
+     * 报告id
+     */
+    private Integer reportId;
+    /**
+     * 任务类型2(3.欧专局 4.专利之星)
+     */
+    private Integer taskType2;
+    /**
+     * 任务类型1 (0普通任务 1定时任务)
+     */
+    private Integer taskType;
+    /**
+     * cron表达式
+     */
+    private String crons;
+    /**
+     * 下载字段(1.著录项 2.权要 3.说明书文本 4.说明书pdf 6.摘要附图)
+     */
+    private List<String> configCells;
+    /**
+     * 网站配置id
+     */
+    private Integer configId;
+    /**
+     * 任务名称
+     */
+    private String taskName;
+
+
+    //以下为自定义字段和文件夹信息 ↓
+    /**
+     * 自定义字段ids
+     */
+    private List<ProjectImportPatentVO.Field> fieldList;
+    /**
+     * 文件夹ids
+     */
+    private List<Integer> folderIds;
+
+    /**
+     * 自定义字段信息
+     */
+    @Data
+    public static class Field {
+        /**
+         * 自定义字段id
+         */
+        private Integer fieldId;
+        /**
+         * 自定义字段类型(6为树)
+         */
+        private Integer type;
+        /**
+         * 选项id
+         */
+        private Integer optionId;
+        private String text;
+    }
+
+    /**
+     * 文件夹信息
+     */
+    @Data
+    public static class Folder {
+        /**
+         * 文件夹id
+         */
+        private Integer id;
+        /**
+         * 上级文件夹id
+         */
+        private Integer parentId;
+        /**
+         * 文件夹名称
+         */
+        private String name;
+        private Boolean selected;
+        /**
+         * 子级文件夹们
+         */
+        private List<ProjectImportPatentVO.Folder> children;
+    }
+
+}

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

@@ -7,9 +7,11 @@ import lombok.experimental.Accessors;
 @Accessors(chain = true)
 public class TaskWebSocketDTO {
     private Integer projectId;
+    private Integer reportId;
     private Integer total;
     private Integer index;
     private Integer taskId;
+    private Integer taskStatus;
     private Boolean complete;
     private String url;
     private String fileName;

+ 35 - 0
PAS/src/main/java/cn/cslg/pas/common/model/dto/WebQueryDTO.java

@@ -0,0 +1,35 @@
+package cn.cslg.pas.common.model.dto;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+@Accessors(chain = true)
+@Data
+public class WebQueryDTO {
+    /**
+     * 专题库id
+     */
+    private Integer projectId;
+    /**
+     * 检索信息
+     */
+    private String conditions;
+    /**
+     * 网站id
+     */
+    private Integer webConfigId;
+    /**
+     * 任务id
+     */
+    private Integer taskId;
+    /**
+     * 报告id
+     */
+    private Integer reportId;
+    /**
+     * 下载字段
+     */
+    private List<String> conCells;
+}

+ 47 - 0
PAS/src/main/java/cn/cslg/pas/common/model/outApi/PatentStarDto.java

@@ -0,0 +1,47 @@
+package cn.cslg.pas.common.model.outApi;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * 专利之星检索dto类
+ *
+ * @author 李仁杰
+ */
+
+@Accessors(chain = true)
+@Data
+public class PatentStarDto {
+    /**
+     * 检索式
+     */
+    @JsonProperty(value = "CurrentQuery")
+    private String CurrentQuery;
+    /**
+     * 表示检索中文库或世界库(CN中文专利库 WD世界专利库)
+     */
+    @JsonProperty(value = "DBType")
+    private String DBType;
+    /**
+     * 当前页,最多 200 页
+     */
+    @JsonProperty(value = "PageNum")
+    private Integer PageNum;
+    /**
+     * 每页条数,最多 50 条
+     */
+    @JsonProperty(value = "RowCount")
+    private Integer RowCount;
+    /**
+     * 排序字段:“AD”,“PD”,“GD”, “ID”
+     */
+    @JsonProperty(value = "OrderBy")
+    private String OrderBy;
+    /**
+     * 排序方式:“ASC”,“DESC”
+     */
+    @JsonProperty(value = "OrderByType")
+    private String OrderByType;
+
+}

+ 59 - 0
PAS/src/main/java/cn/cslg/pas/common/model/outApi/PatentStarListDto.java

@@ -0,0 +1,59 @@
+package cn.cslg.pas.common.model.outApi;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import org.joda.time.DateTime;
+
+/**
+ * 专利之星检索dto类
+ *
+ * @author 李仁杰
+ */
+
+@Accessors(chain = true)
+@Data
+public class PatentStarListDto {
+    private Integer retrieveRecordId;
+    /**
+     * 检索式
+     */
+    @JsonProperty(value = "CurrentQuery")
+    private String CurrentQuery;
+    /**
+     * 表示检索中文库或世界库(CN中文专利库 WD世界专利库)
+     */
+    @JsonProperty(value = "DBType")
+    private String DBType;
+    /**
+     * 当前页,最多 200 页
+     */
+    @JsonProperty(value = "PageNum")
+    private Integer PageNum;
+    /**
+     * 每页条数,最多 50 条
+     */
+    @JsonProperty(value = "RowCount")
+    private Integer RowCount;
+    /**
+     * 排序字段:“AD”,“PD”,“GD”, “ID”
+     */
+    @JsonProperty(value = "OrderBy")
+    private String OrderBy;
+    /**
+     * 排序方式:“ASC”,“DESC”
+     */
+    @JsonProperty(value = "OrderByType")
+    private String OrderByType;
+
+    private Integer total;
+
+    private DateTime startTime;
+
+    private DateTime endTime;
+
+    private String orginCondition;
+
+    private Boolean formed;
+
+}

+ 14 - 0
PAS/src/main/java/cn/cslg/pas/common/model/outApi/RetrieveRecordDeDTO.java

@@ -0,0 +1,14 @@
+package cn.cslg.pas.common.model.outApi;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class RetrieveRecordDeDTO {
+
+    private List<Integer> ids;
+    private Boolean isAll;
+}

+ 23 - 0
PAS/src/main/java/cn/cslg/pas/common/model/outApi/RetrieveRecordQueryDTO.java

@@ -0,0 +1,23 @@
+package cn.cslg.pas.common.model.outApi;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class RetrieveRecordQueryDTO {
+    /**
+     * 每页条数
+     */
+    private Integer size;
+
+    /**
+     * 当前页数
+     */
+    private Integer current;
+
+    /**
+     * 数据总数
+     */
+    private Integer total;
+}

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

@@ -6,6 +6,12 @@ import java.util.List;
 
 @Data
 public class PatentAgentParams {
+    /**
+     * 专利id
+     */
     private Integer patentId;
+    /**
+     * 代理人名称集合
+     */
     private List<String> agent;
 }

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

@@ -4,7 +4,16 @@ import lombok.Data;
 
 @Data
 public class PatentInstructionTextParams {
+    /**
+     * 说明书
+     */
     private String manual;
+    /**
+     * 说明书(译文)
+     */
     private String manualOut;
+    /**
+     * 专利id
+     */
     private Integer patentId;
 }

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

@@ -6,9 +6,24 @@ import java.util.List;
 
 @Data
 public class PatentInventorParams {
+    /**
+     * 专利id
+     */
     private Integer patentId;
+    /**
+     * 发明人地址
+     */
     private List<String> addressList;
+    /**
+     * 合并前发明人名称
+     */
     private List<String> nameList;
+    /**
+     * 第一发明人名称
+     */
     private String firstName;
+    /**
+     * 第一发明人地址
+     */
     private String firstAddress;
 }

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

@@ -6,8 +6,20 @@ import java.util.List;
 
 @Data
 public class PatentLicensorParams {
+    /**
+     * 专利id
+     */
     private Integer patentId;
+    /**
+     * 许可人
+     */
     private List<String> licensor;
+    /**
+     * 被许可人
+     */
     private List<String> licensee;
+    /**
+     * 许可类型
+     */
     private List<String> type;
 }

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

@@ -6,7 +6,16 @@ import java.util.List;
 
 @Data
 public class PatentPledgeParams {
+    /**
+     * 专利id
+     */
     private Integer patentId;
+    /**
+     * 质押人
+     */
     private List<String> pledgor;
+    /**
+     * 质权人
+     */
     private List<String> pledgee;
 }

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

@@ -18,11 +18,11 @@ public class PatentRightParams {
      */
     private String patentNo;
     /**
-     * 原文
+     * 权要原文
      */
     private String content;
     /**
-     * 译文
+     * 权要译文
      */
     private String contentOut;
     /**

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

@@ -6,8 +6,17 @@ import java.util.List;
 
 @Data
 public class PatentSimpleFamilyParams {
+    /**
+     * 专利id
+     */
     private Integer patentId;
+    /**
+     * 专利号
+     */
     private String patentNo;
+    /**
+     * 简单同族
+     */
     private List<String> simpleFamily;
     private List<String> inpadocFamily;
     private List<String> patSnapFamily;

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

@@ -23,14 +23,6 @@ public class ApplicationScenarioEventNumberVO implements Serializable {
      */
     private String applicationScenarioName;
     /**
-     * 应用场景直接对应的事件数量
-     */
-    //private Integer eventNumberFromEvent;
-    /**
-     * 应用场景对应的专题库中事件的数量
-     */
-    //private Integer eventNumberFromProject;
-    /**
      * 事件数量
      */
     private Integer eventNumber;

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

@@ -0,0 +1,17 @@
+package cn.cslg.pas.common.model.vo;
+
+import lombok.Data;
+
+@Data
+public class ConfigVO {
+
+    private String loginAccount;
+
+    private String loginPassword;
+
+    private String webAddress;
+
+    private String webName;
+    private Integer id;
+    private Integer webId;
+}

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

@@ -20,7 +20,7 @@ import java.util.List;
 @Data
 public class EventListItemVO implements Serializable {
     /**
-     * 主键
+     * 事件id
      */
     private Integer id;
     /**

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

@@ -13,7 +13,7 @@ import java.io.Serializable;
 @Data
 public class InvestigationTypeProjectNumberVO implements Serializable {
     /**
-     * 调查类型
+     * 调查类型数值
      */
     private Integer investigationType;
     /**

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

@@ -0,0 +1,35 @@
+package cn.cslg.pas.common.model.vo;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 装载并返回分页信息的类
+ *
+ * @Author chenyu
+ * @Date 2023/7/4
+ */
+@Accessors(chain = true)
+@Data
+public class PageVO implements Serializable {
+    /**
+     * 当前页
+     */
+    private Integer current;
+    /**
+     * 每页条数
+     */
+    private Integer size;
+    /**
+     * 总条数
+     */
+    private Integer total;
+    /**
+     * 结果集
+     */
+    private Object records;
+
+}

+ 12 - 13
PAS/src/main/java/cn/cslg/pas/common/model/vo/ProductMarketDataTrendVO.java

@@ -4,7 +4,6 @@ import lombok.Data;
 import lombok.experimental.Accessors;
 
 
-
 /**
  * 产品营销数据返回的数据VO
  *
@@ -15,20 +14,20 @@ import lombok.experimental.Accessors;
 @Data
 public class ProductMarketDataTrendVO {
 
-        /**
-         * 时间(季度/月份/年份)
-         */
-        private String marketDate;
+    /**
+     * 时间(季度/月份/年份)
+     */
+    private String marketDate;
 
-        /**
-         * 销售额
-         */
-        private Double saleTotalMoney;
+    /**
+     * 销售额
+     */
+    private Double saleTotalMoney;
 
-        /**
-         * 自定义许可费(销售量 * 自定义许可费率)
-         */
-        private Double customLicenseMoney;
+    /**
+     * 自定义许可费(销售量 * 自定义许可费率)
+     */
+    private Double customLicenseMoney;
 
 
 }

+ 49 - 1
PAS/src/main/java/cn/cslg/pas/common/model/vo/ProjectImportPatentVO.java

@@ -1,30 +1,78 @@
 package cn.cslg.pas.common.model.vo;
 
 import lombok.Data;
+import lombok.experimental.Accessors;
 
 import java.util.List;
 
+/**
+ * 前台参数实体类
+ */
+@Accessors(chain = true)
 @Data
 public class ProjectImportPatentVO {
+    /**
+     * 专题库id
+     */
     private Integer projectId;
+    /**
+     * 报告id
+     */
+    private Integer reportId;
+    /**
+     * 数据来源(1.智慧芽 2.合享 3.Patentics)
+     */
+    private String sourceId;
+    /**
+     * 自定义字段ids
+     */
     private List<Field> fieldList;
+    /**
+     * 文件夹ids
+     */
     private List<Integer> folderIds;
-    private String sourceId;
 
+    /**
+     * 自定义字段信息
+     */
     @Data
     public static class Field {
+        /**
+         * 自定义字段id
+         */
         private Integer fieldId;
+        /**
+         * 自定义字段类型(6为树)
+         */
         private Integer type;
+        /**
+         * 选项id
+         */
         private Integer optionId;
         private String text;
     }
 
+    /**
+     * 文件夹信息
+     */
     @Data
     public static class Folder {
+        /**
+         * 文件夹id
+         */
         private Integer id;
+        /**
+         * 上级文件夹id
+         */
         private Integer parentId;
+        /**
+         * 文件夹名称
+         */
         private String name;
         private Boolean selected;
+        /**
+         * 子级文件夹们
+         */
         private List<Folder> children;
     }
 }

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

@@ -13,4 +13,8 @@ public class ProjectImportVO extends BaseVO {
     private String patentNo;
     private List<Integer> createIds;
     private Integer tenantId;
+    /**
+     * 报告id
+     */
+    private Integer reportId;
 }

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

@@ -0,0 +1,14 @@
+package cn.cslg.pas.common.model.vo;
+
+import lombok.Data;
+
+@Data
+public class QuartzVO {
+    /**
+     * 任务名称
+     */
+    private String jobName;
+    private String jobGroupName;
+    private String triggerName;
+    private String triggerGroupName;
+}

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

@@ -0,0 +1,19 @@
+package cn.cslg.pas.common.model.vo;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * @author 沈永艺
+ * @date 2022-8-3
+ * @description VO基类
+ */
+
+@Data
+@Accessors(chain = true)
+public class QueryConfigVO extends BaseVO {
+    private Integer tenantId;
+    private Integer webId;
+    private String loginAccount;
+
+}

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

@@ -0,0 +1,148 @@
+package cn.cslg.pas.common.model.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 查询任务返回VO类
+ *
+ * @Author chenyu
+ * @Date 2023/7/7
+ */
+@Accessors(chain = true)
+@Data
+public class QueryTaskVO implements Serializable {
+    /**
+     * 主键
+     */
+    private Integer id;
+    /**
+     * 任务类型 1.Excel导入专利任务 2.导出 3.Epo欧专局导入 4.专利之星导入
+     */
+    private Integer type;
+    /**
+     * 创建人
+     */
+    private Integer createBy;
+    /**
+     * 开始时间
+     */
+    private Integer startTime;
+    /**
+     * 专题库id
+     */
+    private Integer projectId;
+    /**
+     * 报告id
+     */
+    private Integer reportId;
+    /**
+     * 专利总数量
+     */
+    private Integer total;
+    /**
+     * 完成时间
+     */
+    private Integer endTime;
+    /**
+     * 任务状态(0.队列中 1.进行中 2.已完成 4.已暂停)
+     */
+    private Integer status;
+    /**
+     * 文件名(Excel导入的任务的任务名称)
+     */
+    private String fileName;
+    /**
+     * 文件大小(Excel导入的任务的文件大小)
+     */
+    private Long fileSize;
+    /**
+     * 完成条数(非成功条数)
+     */
+    private Integer successNum;
+    /**
+     * 成功条数
+     */
+    private Integer trueSuccessNum;
+    /**
+     * 失败条数
+     */
+    private Integer defaultNum;
+    /**
+     * 文件原名称(Excel导入的任务的文件名称)
+     */
+    private String oldName;
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    /**
+     * 所属任务条件id
+     */
+    private Integer taskConditionId;
+    /**
+     * 任务类型1 (0普通任务 1定时任务)
+     */
+    private Integer taskType;
+    /**
+     * 最近更新时间(即上面的结束时间endTime)
+     */
+    private Integer modifiedTime;
+
+    //以上若是网站导入的任务,则以下为关联任务条件表数据;以上若是Excel导入的任务,则以下都是null
+    /**
+     * 检索式
+     */
+    private String conditions;
+    /**
+     * cron表达式
+     */
+    private String crons;
+    /**
+     * 下载字段
+     */
+    private String configCells;
+    /**
+     * 排序字段
+     */
+    private String orderBy;
+    /**
+     * 排序类型
+     */
+    private String orderByType;
+    /**
+     * 检索数据库类型
+     */
+    private String DBType;
+    /**
+     * 下载起始条数位置
+     */
+    private Integer startNumber;
+    /**
+     * 下载终止条数位置
+     */
+    private Integer endNumber;
+    /**
+     * 需要额外下载的专利
+     */
+    private String isAddPatentNos;
+    /**
+     * 起止条数中不需要下载的专利
+     */
+    private String isDeletePatentNos;
+    /**
+     * 创建人名称
+     */
+    private String createName;
+
+    //以下属性是两张表都没有的(值为:任务表使用的oldName、任务条件表由手动装载生成)
+    /**
+     * 任务名称
+     */
+    private String taskName;
+
+}

+ 25 - 1
PAS/src/main/java/cn/cslg/pas/common/model/vo/TaskParams.java

@@ -1,6 +1,5 @@
 package cn.cslg.pas.common.model.vo;
 
-import cn.hutool.poi.excel.ExcelReader;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
@@ -11,19 +10,44 @@ import java.util.Map;
 @Data
 @Accessors(chain = true)
 public class TaskParams implements Serializable {
+    /**
+     * 任务类型(1.上传,2导出)
+     */
     private Integer taskType;
+    /**
+     * 任务id
+     */
     private Integer taskId;
+    /**
+     * 创建人id
+     */
     private String userId;
+    /**
+     * 文件路径
+     */
     private String path;
     private String token;
     private String ids;
+    /**
+     * 专题库id
+     */
     private Integer projectId;
     private String selected;
+    /**
+     * Excel中的全部专利的数据(key:表头(如"公开号")  value:表头对应的专利内容(如"CN204445352U"))
+     */
     private List<Map<Object, Object>> rowList;
+    /**
+     * 文件原始名称
+     */
     private String oldName;
+    /**
+     * 专利总数量
+     */
     private Integer total;
     private Integer index;
     private Integer productId;
+
     public TaskParams() {
 
     }

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

@@ -1,8 +1,10 @@
 package cn.cslg.pas.common.model.vo;
 
+import cn.cslg.pas.common.model.dto.UploadFileDTO;
 import cn.cslg.pas.domain.*;
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.apache.poi.ss.usermodel.PictureData;
 
 import java.util.List;
 
@@ -17,15 +19,19 @@ public class UploadParamsVO {
      * 专利
      */
     private Patent patent;
+    /**
+     * 法律状态
+     */
     private String patentSimpleStatus;
 
     /**
      * 权利要求
      */
     private PatentRight patentRight;
+    /**
+     * 独立权要
+     */
     private String selfContent;
-
-
     /**
      * 说明书(文本)
      */
@@ -87,6 +93,9 @@ public class UploadParamsVO {
      * 分类号关联
      */
     private String mainUpc;
+    /**
+     * 主分类号
+     */
     private String mainIpc;
     private List<String> cpcList;
     private List<String> locList;
@@ -111,5 +120,23 @@ public class UploadParamsVO {
         private List<String> fieldList;
     }
 
+    /**
+     * 专利摘要附图
+     */
+    private PictureData pictureData;
+    /**
+     * 摘要附图
+     */
+    private UploadFileDTO pictureFileDTO;
+    /**
+     * 说明书公开pdf文档
+     */
+    private UploadFileDTO pdf1FileDTO;
+
+    /**
+     * 说明书授权pdf文档
+     */
+    private UploadFileDTO pdf2FileDTO;
+
 
 }

+ 3 - 1
PAS/src/main/java/cn/cslg/pas/common/model/vo/UploadSettingVO.java

@@ -6,6 +6,8 @@ import lombok.experimental.Accessors;
 import java.util.List;
 
 /**
+ * uploadSetting.json数据源配置文件实体类
+ *
  * @author 沈永艺
  * @date 2022/7/1
  * @description 用于存储从配置文件(Json类型)中解析出来的配置参数
@@ -15,7 +17,7 @@ import java.util.List;
 @Accessors(chain = true)
 public class UploadSettingVO {
     /**
-     * 数据来源 ID
+     * 数据来源id(1.智慧芽 2.合享 3.Patentics)
      */
     private String sourceId;
 

+ 142 - 0
PAS/src/main/java/cn/cslg/pas/common/model/vo/outApi/StarPatentVO.java

@@ -0,0 +1,142 @@
+package cn.cslg.pas.common.model.vo.outApi;
+
+import cn.cslg.pas.domain.PatentAgency;
+import cn.cslg.pas.domain.PatentAgent;
+import cn.cslg.pas.domain.PatentApplicant;
+import cn.cslg.pas.domain.PatentInventor;
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Accessors(chain = true)
+@Data
+public class StarPatentVO implements Serializable {
+    /**
+     * 原始申请号
+     */
+    @JSONField(name = "ANO")
+    private String rowApplicationNo;
+    /**
+     * 专利类型(1和8为发明 2和9为新型 3为外观)
+     */
+    @JSONField(name = "PT")
+    private Integer patentType;
+    /**
+     * 申请人地址
+     */
+    @JSONField(name = "DZ")
+    private String applicationAddress;
+    /**
+     * 主分类号
+     */
+    @JSONField(name = "MC")
+    private String mainIpc;
+    /**
+     * IPC分类号
+     */
+    @JSONField(name = "IC")
+    private String ipcListStr;
+    /**
+     * 公告日
+     */
+    @JSONField(name = "GD")
+    private String publicAccreditDate;
+    /**
+     * 摘要
+     */
+    @JSONField(name = "AB")
+    private String abstractStr;
+    /**
+     * 申请日
+     */
+    @JSONField(name = "AD")
+    private String applicationDate;
+    /**
+     * 发明人
+     */
+    @JSONField(name = "IN")
+    private String inventorStr;
+    /**
+     * 专利号
+     */
+    private String patentNo;
+    /**
+     * 公告号
+     */
+    @JSONField(name = "GN")
+    private String publicAccreditNo;
+    /**
+     * 代理机构
+     */
+    @JSONField(name = "AGN")
+    private String agencyStr;
+    /**
+     * 申请号
+     */
+    @JSONField(name = "AN")
+    private String applicationNo;
+    /**
+     * 申请人
+     */
+    @JSONField(name = "PA")
+    private String applicantStr;
+    /**
+     * 代理人
+     */
+    @JSONField(name = "AT")
+    private String agentStr;
+    /**
+     * 公开日
+     */
+    @JSONField(name = "PD")
+    private String publicDate;
+    /**
+     * 标题
+     */
+    @JSONField(name = "TI")
+    private String name;
+    /**
+     * 权利人
+     */
+    @JSONField(name = "PE")
+    private String currentApplicantStr;
+    /**
+     * 法律状态
+     */
+    @JSONField(name = "LG")
+    private Integer LG;
+    /**
+     * 公开号
+     */
+    @JSONField(name = "PN")
+    private String publicNo;
+    /**
+     * 受理局
+     */
+    @JSONField(name = "GJ")
+    private String bureau;
+    /**
+     * 优先权
+     */
+    @JSONField(name = "PR")
+    private String priorityNo;
+    /**
+     * 优先权日
+     */
+    @JSONField(name = "PRD")
+    private String priorityDate;
+
+    private List<PatentInventor> inventor;
+    private List<String> ipcList;
+    private List<PatentApplicant> applicant;
+    private PatentAgency agency;
+    private List<PatentAgent> agent;
+    private String simpleStatus;
+    /**
+     * 摘要附图路径
+     */
+    private String abstractPath;
+}

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

@@ -1,13 +1,17 @@
 package cn.cslg.pas.common.utils;
 
-import cn.hutool.core.date.DateTime;
+
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.date.DateTime;
+
+import org.joda.time.format.DateTimeFormat;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.lang.management.ManagementFactory;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.regex.Pattern;
 

+ 116 - 0
PAS/src/main/java/cn/cslg/pas/common/utils/DateUtils2.java

@@ -0,0 +1,116 @@
+package cn.cslg.pas.common.utils;
+
+
+import cn.hutool.core.date.DateUtil;
+import org.joda.time.DateTime;
+import org.joda.time.format.DateTimeFormat;
+import org.joda.time.format.DateTimeFormatter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.management.ManagementFactory;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.regex.Pattern;
+
+import static cn.cslg.pas.common.utils.DateUtils.FORMAT_STRING;
+
+public class DateUtils2 {
+
+    public static DateTime formStrToDateTime(String dateString) {
+        try {
+            DateTimeFormatter formatter;
+
+            if (dateString.contains("-")) {
+                formatter = DateTimeFormat.forPattern("yyyy-MM-dd");
+            } else if (dateString.contains("//")) {
+                formatter = DateTimeFormat.forPattern("yyyy/MM/dd");
+            } else if (dateString.contains(":")) {
+                formatter = DateTimeFormat.forPattern("yyyy:MM:dd");
+            } else if (dateString.contains(".")) {
+                formatter = DateTimeFormat.forPattern("yyyy.MM.dd");
+            } else {
+                formatter = DateTimeFormat.forPattern("yyyyMMdd");
+            }
+
+            return formatter.parseDateTime(dateString);
+        } catch (Exception e) {
+            throw new RuntimeException("时间转化格式错误" + "[dateString=" + dateString + "]" + "[FORMAT_STRING=" + FORMAT_STRING + "]");
+        }
+    }
+
+
+    public static List<DateTime> formStrToDateTime(DateTime dateStart, DateTime dateEnd) {
+        List<DateTime> dateTimes = new ArrayList<>();
+        dateTimes.add(dateStart);
+        DateTime minDate1 = new DateTime();
+        DateTime minDate2= new DateTime();
+        Integer startYear = dateStart.getYear();
+        Integer startMonth = dateStart.getMonthOfYear();
+        Integer startDay = dateStart.getDayOfYear();
+        Integer endYear = dateEnd.getYear();
+        Integer endMonth = dateEnd.getMonthOfYear();
+        Integer endDay = dateEnd.getDayOfYear();
+        if (startYear.equals(endYear) ) {
+            if (startMonth.equals(endMonth)) {
+                if (startDay .equals(endDay) ) {
+                    minDate1=dateStart;
+                } else {
+                    int diffDay = endDay - startDay;
+                    int minDay = diffDay / 2;
+                    minDate1 = dateStart.plusDays(minDay);
+                }
+            } else {
+                int diffMonth = endYear - startYear;
+                int minMonth = diffMonth / 2;
+                if(minMonth==0){
+                    minMonth=1;
+                }
+                minDate1 = dateStart.plusMonths(minMonth).minusDays(1);
+                minDate2 =dateStart.plusMonths(minMonth);
+            }
+        } else {
+            int diffYear = endYear - startYear;
+            int minYear = diffYear / 2;
+            if(minYear==0){
+                minYear=1;
+            }
+            minDate1 = dateStart.plusYears(minYear).minusDays(1);
+            minDate2 =dateStart.plusYears(minYear);
+            if(minDate1.isAfter(minDate2)){
+                System.out.println("aa");
+            }
+        }
+        dateTimes.add(minDate1);
+        dateTimes.add(minDate2);
+        dateTimes.add(dateEnd);
+        return dateTimes;
+    }
+
+    public static void main(String[] args) {
+        List<DateTime> dateTimeList =new ArrayList<>();
+        List<DateTime> dateTimeList2 =new ArrayList<>();
+        DateTime dateTime =DateUtils2.formStrToDateTime("1901-7-14");
+        DateTime dateTime1 =DateUtils2.formStrToDateTime("1900-1-1");
+      List<DateTime> dateTimes =   DateUtils2.formStrToDateTime(dateTime1,dateTime);
+        dateTimeList2.addAll(dateTimes);
+         while (true){
+             DateTime d1 =dateTimeList2.get(0);
+             DateTime d2 =dateTimeList2.get(1);
+             DateTime d3 =dateTimeList2.get(2);
+             DateTime d4 =dateTimeList2.get(3);
+             dateTimeList2.remove(d1);
+             dateTimeList2.remove(d2);
+             dateTimeList2.remove(d3);
+             dateTimeList2.remove(d4);
+             List<DateTime> dateTimes3 =   DateUtils2.formStrToDateTime(d1,d2);
+             List<DateTime> dateTimes4 =   DateUtils2.formStrToDateTime(d3,d4);
+             dateTimeList2.addAll(dateTimes3);
+             dateTimeList2.addAll(dateTimes4);
+             dateTimeList.addAll(dateTimes3);
+             dateTimeList.addAll(dateTimes4);
+
+         }
+    }
+}

+ 8 - 6
PAS/src/main/java/cn/cslg/pas/common/utils/ExcelUtils.java

@@ -1,8 +1,5 @@
 package cn.cslg.pas.common.utils;
 
-import cn.cslg.pas.common.utils.DateUtils;
-import cn.cslg.pas.common.utils.FileUtils;
-import cn.cslg.pas.common.utils.SpringUtils;
 import cn.hutool.core.util.IdUtil;
 import org.apache.poi.hssf.usermodel.*;
 import org.apache.poi.ooxml.POIXMLDocumentPart;
@@ -26,6 +23,7 @@ public class ExcelUtils {
         if (!filePath.endsWith(".xls") && !filePath.endsWith(".xlsx") && !filePath.endsWith(".XLS") && !filePath.endsWith(".XLSX")) {
             System.out.println("文件不是excel类型");
         }
+
         FileInputStream fis = null;
         Workbook wookbook = null;
         Sheet sheet = null;
@@ -38,7 +36,6 @@ public class ExcelUtils {
         try {
             //2003版本的excel,用.xls结尾
             wookbook = new HSSFWorkbook(fis);//得到工作簿
-
         } catch (Exception ex) {
             //ex.printStackTrace();
             try {
@@ -51,6 +48,7 @@ public class ExcelUtils {
             }
         }
         Map<String, PictureData> maplist = null;
+        //拿到excel表格的第一个sheet工作簿
         sheet = wookbook.getSheetAt(0);
         // 判断用07还是03的方法获取图片
         if (filePath.endsWith(".xls") || filePath.endsWith(".XLS")) {
@@ -70,7 +68,7 @@ public class ExcelUtils {
      * @throws IOException
      */
     public static Map<String, PictureData> getPictures1(HSSFSheet sheet) throws IOException {
-        Map<String, PictureData> map = new HashMap<String, PictureData>();
+        Map<String, PictureData> map = new HashMap();
         if (sheet.getDrawingPatriarch() != null) {
             List<HSSFShape> list = sheet.getDrawingPatriarch().getChildren();
             for (HSSFShape shape : list) {
@@ -94,7 +92,7 @@ public class ExcelUtils {
      * @throws IOException
      */
     public static Map<String, PictureData> getPictures2(XSSFSheet sheet) throws IOException {
-        Map<String, PictureData> map = new HashMap<String, PictureData>();
+        Map<String, PictureData> map = new HashMap();
         List<POIXMLDocumentPart> list = sheet.getRelations();
         for (POIXMLDocumentPart part : list) {
             if (part instanceof XSSFDrawing) {
@@ -115,6 +113,10 @@ public class ExcelUtils {
         return map;
     }
 
+    /**
+     * @param pictureData 图片
+     * @return 返回图片的文件路径和文件名称
+     */
     public static Map<String, String> savePicture(PictureData pictureData) throws IOException {
         FileUtils fileUtils = SpringUtils.getBean(FileUtils.class);
         Map<String, String> result = new HashMap<>();

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

@@ -149,7 +149,35 @@ public class FileUtils {
         }
         return last.toString();
     }
+    public String analysisJsonFile(String fileName) {
+        ApplicationHome ah = new ApplicationHome(BackupUtils.class);
+        File file = ah.getSource();
+        String settingFilePath = file.getParentFile().toString() + FileUtils.FILE_SEPARATOR + "uploadSetting.json";
+        BufferedReader reader = null;
+        StringBuilder last = new StringBuilder();
+        InputStreamReader inputStreamReader;
+        try (FileInputStream fileInputStream = new FileInputStream(settingFilePath)) {
+            inputStreamReader = new InputStreamReader(fileInputStream, StandardCharsets.UTF_8);
 
+            reader = new BufferedReader(inputStreamReader);
+            String tempString;
+            while ((tempString = reader.readLine()) != null) {
+                last.append(tempString);
+            }
+            reader.close();
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            if (reader != null) {
+                try {
+                    reader.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return last.toString();
+    }
 
     public static MultipartFile fileToMultipartFile(File file) {
         DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory(16, null);

+ 29 - 0
PAS/src/main/java/cn/cslg/pas/common/utils/FormatUtil.java

@@ -1,7 +1,36 @@
 package cn.cslg.pas.common.utils;
 
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
 public class FormatUtil {
     public static String toString(Object o) {
         return o == null ? "" : o.toString();
     }
+
+    public static String MD5(String src) {
+        // 需要加密的字符串
+        try {
+            // 加密对象,指定加密方式
+            MessageDigest md5 = MessageDigest.getInstance("md5");
+            // 准备要加密的数据
+            byte[] b = src.getBytes();
+            // 加密
+            byte[] digest = md5.digest(b);
+            // 十六进制的字符
+            char[] chars = new char[]{'0', '1', '2', '3', '4', '5',
+                    '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
+            StringBuffer sb = new StringBuffer();
+            // 处理成十六进制的字符串(通常)
+            for (byte bb : digest) {
+                sb.append(chars[(bb >> 4) & 15]);
+                sb.append(chars[bb & 15]);
+            }
+            return sb.toString();
+        } catch (NoSuchAlgorithmException e) {
+            e.printStackTrace();
+        }
+        return "";
+    }
+
 }

+ 17 - 0
PAS/src/main/java/cn/cslg/pas/common/utils/MathUtils.java

@@ -0,0 +1,17 @@
+package cn.cslg.pas.common.utils;
+
+import java.math.BigDecimal;
+
+/**
+ * @Author chenyu
+ * @Date 2023/3/28
+ */
+public class MathUtils {
+
+    public static double saveTwoDecimal(double value) {
+        BigDecimal bd = new BigDecimal(value);
+        value = bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
+        return value;
+    }
+
+}

+ 24 - 28
PAS/src/main/java/cn/cslg/pas/common/utils/PatentRightUtils.java

@@ -21,6 +21,7 @@ public class PatentRightUtils {
 
     public static List<PatentRight> formatPatentRight(PatentRightParams params) {
         try {
+
             //国家
             String country = params.getPatentNo().substring(0, 2);
             //原文
@@ -43,13 +44,15 @@ public class PatentRightUtils {
             //将原文和译文的所有换行符 "\r\n"或是"\n" 替换成 "@",这样首先可以使得全文连在一起,其次再根据特殊符号@拆分权要
             if (content.contains("\r\n")) {
                 content = content.replaceAll("\r\n", "@");
-            } else {
+            }
+            if (content.contains("\n")) {
                 content = content.replaceAll("\n", "@");
             }
 
             if (contentOut.contains("\r\n")) {
                 contentOut = contentOut.replaceAll("\r\n", "@");
-            } else {
+            }
+            if (contentOut.contains("\n")) {
                 contentOut = contentOut.replaceAll("\n", "@");
             }
 
@@ -79,8 +82,7 @@ public class PatentRightUtils {
                     strs = content.split("。");
                     strsOut = contentOut.split("。");
                     //若匹配到,则根据不同情形拆分
-                }
-                else {
+                } else {
                     Matcher matcher = Pattern.compile(regex).matcher(content);
                     Matcher matcherOut = Pattern.compile(regex).matcher(contentOut);
                     while (matcher.find()) {
@@ -133,10 +135,9 @@ public class PatentRightUtils {
                                     .setParentSort(builder + "");
                             if (strsOut.length - 1 >= i) {
                                 //当翻译的长度大于原文权要的长度时,将剩下所有的译文给最后一条原文
-                                if(strsOut.length>strs.length&&strs.length==(i+1)){
-                                    patentRight.setContentOut(String.join(" ",Arrays.copyOfRange(strsOut,i,strsOut.length)));
-                                }
-                                else {
+                                if (strsOut.length > strs.length && strs.length == (i + 1)) {
+                                    patentRight.setContentOut(String.join(" ", Arrays.copyOfRange(strsOut, i, strsOut.length)));
+                                } else {
                                     patentRight.setContentOut(strsOut[i]);
                                 }
                             }
@@ -164,10 +165,9 @@ public class PatentRightUtils {
                                 .setParentSort("-1");
                         if (strsOut.length - 1 >= i) {
                             //当翻译的长度大于原文权要的长度时,将剩下所有的译文给最后一条原文
-                            if(strsOut.length>strs.length&&strs.length==(i+1)){
-                                patentRight.setContentOut(String.join(" ",Arrays.copyOfRange(strsOut,i,strsOut.length)));
-                            }
-                            else {
+                            if (strsOut.length > strs.length && strs.length == (i + 1)) {
+                                patentRight.setContentOut(String.join(" ", Arrays.copyOfRange(strsOut, i, strsOut.length)));
+                            } else {
                                 patentRight.setContentOut(strsOut[i]);
                             }
                         }
@@ -244,10 +244,9 @@ public class PatentRightUtils {
                                     .setParentSort(builder + "");
                             if (strsOut.length - 1 >= i) {
                                 //当翻译的长度大于原文权要的长度时,将剩下所有的译文给最后一条原文
-                                if(strsOut.length>strs.length&&strs.length==(i+1)){
-                                    patentRight.setContentOut(String.join(" ",Arrays.copyOfRange(strsOut,i,strsOut.length)));
-                                }
-                                else {
+                                if (strsOut.length > strs.length && strs.length == (i + 1)) {
+                                    patentRight.setContentOut(String.join(" ", Arrays.copyOfRange(strsOut, i, strsOut.length)));
+                                } else {
                                     patentRight.setContentOut(strsOut[i]);
                                 }
                             }
@@ -261,10 +260,9 @@ public class PatentRightUtils {
                                     .setSort(i)
                                     .setParentSort((Integer.parseInt(parentNum) - 1) + "");
                             //当翻译的长度大于原文权要的长度时,将剩下所有的译文给最后一条原文
-                            if(strsOut.length>strs.length&&strs.length==(i+1)){
-                                patentRight.setContentOut(String.join(" ",Arrays.copyOfRange(strsOut,i,strsOut.length)));
-                            }
-                            else {
+                            if (strsOut.length > strs.length && strs.length == (i + 1)) {
+                                patentRight.setContentOut(String.join(" ", Arrays.copyOfRange(strsOut, i, strsOut.length)));
+                            } else {
                                 patentRight.setContentOut(strsOut[i]);
                             }
                             patentRights.add(patentRight);
@@ -283,10 +281,9 @@ public class PatentRightUtils {
                                     .setSort(i)
                                     .setParentSort(builder.substring(0, builder.lastIndexOf(",")));
                             //当翻译的长度大于原文权要的长度时,将剩下所有的译文给最后一条原文
-                            if(strsOut.length>strs.length&&strs.length==(i+1)){
-                                patentRight.setContentOut(String.join(" ",Arrays.copyOfRange(strsOut,i,strsOut.length)));
-                            }
-                            else {
+                            if (strsOut.length > strs.length && strs.length == (i + 1)) {
+                                patentRight.setContentOut(String.join(" ", Arrays.copyOfRange(strsOut, i, strsOut.length)));
+                            } else {
                                 patentRight.setContentOut(strsOut[i]);
                             }
                             patentRights.add(patentRight);
@@ -300,10 +297,9 @@ public class PatentRightUtils {
                                 .setSort(i)
                                 .setParentSort("-1");
                         //当翻译的长度大于原文权要的长度时,将剩下所有的译文给最后一条原文
-                        if(strsOut.length>strs.length&&strs.length==(i+1)){
-                            patentRight.setContentOut(String.join(" ",Arrays.copyOfRange(strsOut,i,strsOut.length)));
-                        }
-                        else {
+                        if (strsOut.length > strs.length && strs.length == (i + 1)) {
+                            patentRight.setContentOut(String.join(" ", Arrays.copyOfRange(strsOut, i, strsOut.length)));
+                        } else {
                             patentRight.setContentOut(strsOut[i]);
                         }
                         patentRights.add(patentRight);

+ 187 - 0
PAS/src/main/java/cn/cslg/pas/common/utils/ReadExcelUtils.java

@@ -0,0 +1,187 @@
+package cn.cslg.pas.common.utils;
+
+import cn.cslg.pas.domain.PatentData;
+import org.apache.poi.hssf.usermodel.*;
+import org.apache.poi.ooxml.POIXMLDocumentPart;
+import org.apache.poi.ss.usermodel.PictureData;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.*;
+import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTMarker;
+import org.springframework.stereotype.Service;
+
+import java.awt.*;
+import java.io.*;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Author xiexiang
+ * @Date 2023/5/30
+ */
+@Service
+public class ReadExcelUtils {
+    /**
+     * 检测Excel文件合法性
+     *
+     * @param filePath 文件路径
+     * @return 返回文件总行数
+     */
+    public static Integer textExcel(String filePath) throws IOException {
+        //判断文件是否存在
+        if (filePath == null || filePath.equals("")) {
+            ThrowException.throwXiaoShiException("文件上传失败,服务器忙请稍后再试!");
+        }
+        File file = new File(filePath);
+        if (!file.exists()) {
+            ThrowException.throwXiaoShiException("文件上传失败,服务器忙请稍后再试!");
+        }
+
+        // 检测是否为excel文件
+        if (!filePath.endsWith(".xls") && !filePath.endsWith(".xlsx") && !filePath.endsWith(".XLS") && !filePath.endsWith(".XLSX")) {
+            ThrowException.throwXiaoShiException("文件格式错误,请上传Excel文件!");
+        }
+
+        InputStream fis = new FileInputStream(file);
+        //使用poi框架解析处理Excel文件
+        Workbook workbook = null;
+        //区分不同版本Excel,使用各自对应的工具类
+        if (filePath.endsWith(".xls") || filePath.endsWith(".XLS")) {
+            workbook = new HSSFWorkbook(fis);
+        } else if (filePath.endsWith(".xlsx") || filePath.endsWith(".XLSX")) {
+            workbook = new XSSFWorkbook(fis);
+        }
+        //读取第几个sheet
+        Sheet sheet = workbook.getSheetAt(0);
+        //读取总行数
+        int rows = sheet.getPhysicalNumberOfRows();
+        if (rows <= 1) {
+            ThrowException.throwXiaoShiException("文件内容格式不正确,请检查总行数是否有专利内容");
+        }
+
+        Row firstRow = sheet.getRow(0);
+        if (!firstRow.getCell(0).getStringCellValue().equals("公开(公告)号")) {
+            ThrowException.throwXiaoShiException("文件内容格式不正确,第一列应为【公开(公告)号】");
+        }
+
+        //返回文件总行数-1(即专利总数量)
+        return rows - 1;
+    }
+
+    /**
+     * 获取一行专利的全部数据(专利内容数据 + 摘要附图)
+     *
+     * @param filePath Excel文件路径
+     * @param row      行数
+     * @return 返回装载专利数据(专利内容数据 + 摘要附图)的对象
+     */
+    public static PatentData readExcelOneRow(String filePath, Sheet sheet, int row) throws IOException {
+        //返回最终结果的对象
+        PatentData patentData = new PatentData();
+        //装载专利数据(除了摘要附图)的map:(key:表头如 "公开(公告)号"  value:表头对应内容如 "CN1307082B")
+        Map<Object, Object> map = new HashMap<>();
+        //装载摘要附图的对象
+        PictureData pictureData = null;
+
+        //开始装载专利数据
+        Row firstRow = sheet.getRow(0);
+        Row needRow = sheet.getRow(row);
+        //获得总列数
+        int columns = firstRow.getLastCellNum();
+        for (int i = 0; i < columns; i++) {
+            map.put(firstRow.getCell(i) + "", needRow.getCell(i) + "");
+        }
+
+        //开始装载专利摘要附图(判断用07还是03的方法获取图片)
+        if (filePath.endsWith(".xls") || filePath.endsWith(".XLS")) {
+            pictureData = getPictures1((HSSFSheet) sheet, row);
+        } else if (filePath.endsWith(".xlsx") || filePath.endsWith(".XLSX")) {
+            pictureData = getPictures2((XSSFSheet) sheet, row);
+        }
+
+        //返回结果对象装载结果
+        patentData.setMap(map);
+        patentData.setPictureData(pictureData);
+
+        return patentData;
+    }
+
+    public static Sheet readExcel(String filePath) {
+        Sheet sheet = null;
+
+        File file = new File(filePath);
+        try {
+            InputStream inputStream = new FileInputStream(file);
+            //POI可以处理Excel文件
+            Workbook workbook = null;
+            //当文件以.xls结尾时
+            if (filePath.endsWith(".xls") || filePath.endsWith(".XLS")) {
+                workbook = new HSSFWorkbook(inputStream);
+            } else if (filePath.endsWith(".xlsx") || filePath.endsWith(".XLSX")) {
+                workbook = new XSSFWorkbook(inputStream);
+            }
+
+            //读取第几个sheet
+            sheet = workbook.getSheetAt(0);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        return sheet;
+    }
+
+    /**
+     * 03版本Excel取附图
+     *
+     * @param sheet Excel工作簿
+     * @return 返回附图map
+     */
+    public static PictureData getPictures1(HSSFSheet sheet, Integer row) throws IOException {
+        if (sheet.getDrawingPatriarch() != null) {
+            List<HSSFShape> list = sheet.getDrawingPatriarch().getChildren();
+            for (HSSFShape shape : list) {
+                if (shape instanceof HSSFPicture) {
+                    HSSFPicture picture = (HSSFPicture) shape;
+                    HSSFClientAnchor cAnchor = (HSSFClientAnchor) picture.getAnchor();
+                    int row1 = cAnchor.getRow1();
+                    if (row1 == row) {
+                        return picture.getPictureData();
+                    }
+                }
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 07版本Excel取附图
+     *
+     * @param sheet Excel工作簿
+     * @return 返回附图map
+     */
+    public static PictureData getPictures2(XSSFSheet sheet, Integer row) throws IOException {
+        List<POIXMLDocumentPart> list = sheet.getRelations();
+        for (POIXMLDocumentPart part : list) {
+            if (part instanceof XSSFDrawing) {
+                XSSFDrawing drawing = (XSSFDrawing) part;
+                List<XSSFShape> shapes = drawing.getShapes();
+                for (XSSFShape shape : shapes) {
+                    //解决图片空指针报错问题 lig  2021-06-03
+                    XSSFClientAnchor anchor = (XSSFClientAnchor) shape.getAnchor();
+                    //XSSFClientAnchor anchor = picture.getPreferredSize();
+                    CTMarker marker = anchor.getFrom();
+                    int excelRow = marker.getRow();
+                    if (excelRow == row) {
+                        XSSFPicture picture = (XSSFPicture) shape;
+                        return picture.getPictureData();
+                    }
+                }
+            }
+        }
+
+        return null;
+    }
+
+}

+ 39 - 0
PAS/src/main/java/cn/cslg/pas/common/utils/RemoveHtmlTagsUtils.java

@@ -0,0 +1,39 @@
+package cn.cslg.pas.common.utils;
+
+/**
+ * @Author chenyu
+ * @Date 2023/6/27
+ */
+public class RemoveHtmlTagsUtils {
+
+    /**
+     * 去除字符串文本中的所有HTML格式标签
+     *
+     * @param xmlText 字符串文本
+     * @return 返回修改后的字符串文本
+     */
+    public static String removeHtmlTags(String xmlText) {
+        //定义script的正则表达式,去除js可以防止注入
+        String scriptRegex = "<script[^>]*?>[\\s\\S]*?</script>";
+        //定义style的正则表达式,去除style样式,防止css代码过多时只截取到css样式代码
+        String styleRegex = "<style[^>]*?>[\\s\\S]*?</style>";
+        //定义HTML标签的正则表达式,去除标签,只提取文字内容
+        String htmlRegex = "<[^>]+>";
+        //定义空格,回车,换行符,制表符
+        //String spaceRegex = "\\s*|\t|\r|\n";
+        // 过滤script标签
+        xmlText = xmlText.replaceAll(scriptRegex, "");
+        // 过滤style标签
+        xmlText = xmlText.replaceAll(styleRegex, "");
+        // 过滤html标签
+        xmlText = xmlText.replaceAll(htmlRegex, "");
+        // 过滤空格,回车,换行符,制表符等
+        //instructionText = instructionText.replaceAll(spaceRegex, "");
+        // 过滤空格&nbsp;、&nbsp、&NBSP
+        xmlText = xmlText.replace("&nbsp;", "");
+        xmlText = xmlText.replace("&nbsp", " ");
+        xmlText = xmlText.replace("&NBSP", " ");
+        return xmlText;
+    }
+
+}

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

@@ -25,16 +25,31 @@ public class Response {
         response.setData(data);
         return JsonUtils.objectToJson(response);
     }
+
     /**
      * 陈宇 ↓ 直接返回对象(前台默认显示为jsonResult格式对象)
      */
-    public static Response success2(Object data) {
+    public static Response ok(Object data) {
         Response response = new Response();
         response.setResultEnum(ResponseEnum.SUCCESS);
         response.setData(data);
         return response;
     }
 
+    public static Response fail() {
+        Response response = new Response();
+        response.setResultEnum(ResponseEnum.ERROR);
+        return response;
+    }
+
+    public static Response fail(Object data) {
+        Response response = new Response();
+        response.setCode(ResponseEnum.ERROR.getCode());
+        response.setMessage(data + "");
+        response.setData(data);
+        return response;
+    }
+
     public static String websocket(Object data, ResponseEnum responseEnum) {
         Response response = new Response();
         response.setResultEnum(responseEnum);

+ 38 - 0
PAS/src/main/java/cn/cslg/pas/common/utils/SpringContextUtils.java

@@ -0,0 +1,38 @@
+package cn.cslg.pas.common.utils;
+
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.stereotype.Component;
+
+@Component
+public class SpringContextUtils implements ApplicationContextAware {
+    private static ApplicationContext applicationContext;
+
+    @Override
+    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+        SpringContextUtils.applicationContext = applicationContext;
+    }
+
+    /**
+     * 获取 ApplicationContext
+     *
+     * @return
+     */
+    public static ApplicationContext getApplicationContext() {
+        return applicationContext;
+    }
+
+    public static Object getBean(String name) {
+        return applicationContext.getBean(name);
+    }
+
+    public static <T> T getBean(Class<T> clazz) {
+        return applicationContext.getBean(clazz);
+    }
+
+    public static <T> T getBean(String name, Class<T> clazz) {
+        return applicationContext.getBean(name, clazz);
+    }
+
+}

+ 5 - 5
PAS/src/main/java/cn/cslg/pas/common/utils/UploadPatentBatchUtil.java

@@ -32,14 +32,14 @@ public class UploadPatentBatchUtil {
      * @description 通过与前段传入参数中的数据源ID进行比对从而得到对应数据源的配置项目
      */
     public static List<UploadSettingVO.Column> parsingConfigurationFiles(ProjectImportPatentVO projectImportPatentVO, String getSettingJson) {
-        //将 Json 转换为 对象数组
-        List<UploadSettingVO> test = JsonUtils.jsonToList(getSettingJson, UploadSettingVO.class);
+        //将uploadSetting.json数据源配置文件的json字符串转换为UploadSettingVO对象(即实体类)集合
+        List<UploadSettingVO> uploadSettingVOs = JsonUtils.jsonToList(getSettingJson, UploadSettingVO.class);
         //创建一个存放单一数据源的对象 这个对象存放的是 我们需要使用哪一个数据源的配置数据 所以只存一个 正常在Json文件里面会有多个数据源 也就是多条数据
         List<UploadSettingVO.Column> jsonData = new ArrayList<>();
-        //开始将前端传入的数据源参数与 Json 中解析出来的 sourceId(数据来源ID) 进行比对 并将比对中的那一条数据放入上方定义的 jsonData 中 用于后续使用
-        for (int i = 0; i < Objects.requireNonNull(test).size(); i++) {
+        //遍历uploadSettingVOs,
+        for (int i = 0; i < Objects.requireNonNull(uploadSettingVOs).size(); i++) {
             //提取一个常量
-            UploadSettingVO constant = Objects.requireNonNull(test).get(i);
+            UploadSettingVO constant = Objects.requireNonNull(uploadSettingVOs).get(i);
             //判断 如果说 Json 解析出来的 List<T> 中的 sourceId 和传入参数的 sourceId 匹配成功 则开始装配数据
             if (constant.getSourceId().equals(projectImportPatentVO.getSourceId())) {
                 //填充数据

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

@@ -30,10 +30,10 @@ import java.util.List;
 public class EventController {
     private final IEventService eventService;
 
-    @Operation(summary = "新增事件")
+    @Operation(summary = "新增专题库时批量新增新事件(无事件id)")
     @PostMapping("/addNew")
     public String addNew(@RequestBody List<EventAddNewDTO> eventAddNewDTOs) {
-        log.info("开始处理【新增事件】的请求,请求参数为:{}", eventAddNewDTOs);
+        log.info("开始处理【新增专题库时批量新增新事件(无事件id)】的请求,请求参数为:{}", eventAddNewDTOs);
         List<Integer> eventIds;
         try {
             eventIds = eventService.addNew(eventAddNewDTOs);
@@ -43,10 +43,10 @@ public class EventController {
         return Response.success(eventIds);
     }
 
-    @Operation(summary = "专题库中新增事件")
+    @Operation(summary = "新增事件")
     @PostMapping("/addNewEvent")
     public String addNewEvent(@RequestBody ProjectEventAddNewDTO projectEventAddNewDTO) {
-        log.info("开始处理【专题库中新增事件】的请求,请求参数为:{}", projectEventAddNewDTO);
+        log.info("开始处理【新增事件】的请求,请求参数为:{}", projectEventAddNewDTO);
         try {
             eventService.addNewEvent(projectEventAddNewDTO);
         } catch (XiaoShiException e) {

+ 41 - 0
PAS/src/main/java/cn/cslg/pas/controller/GetPatentStarPartController.java

@@ -0,0 +1,41 @@
+package cn.cslg.pas.controller;
+
+import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.model.dto.GetPatentStarPartDTO;
+import cn.cslg.pas.common.model.dto.PatentDTO;
+import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.service.getPatentStarPart.GetPatentStarPartService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+
+/**
+ * 获取专利之星专利某部分(如权要、说明书等一项)控制层
+ *
+ * @Author chenyu
+ * @Date 2023/6/30
+ */
+@Tag(name = "专利之星")
+@Slf4j
+@RequestMapping(Constants.API_VERSION_V2 + "/patentStar")
+@RestController
+@RequiredArgsConstructor
+public class GetPatentStarPartController {
+
+    private final GetPatentStarPartService getPatentStarPartService;
+
+    @Operation(summary = "根据专利号或申请号获取专利指定部分项")
+    @PostMapping("/getPatentPart")
+    public String getPatentPart(@RequestBody GetPatentStarPartDTO getPatentStarPartDTO) throws IOException {
+        log.info("开始处理【根据专利号或申请号获取专利指定部分项】的请求,请求参数为:{}", getPatentStarPartDTO);
+
+        PatentDTO patentPart = getPatentStarPartService.getPatentPart(getPatentStarPartDTO);
+        return Response.success(patentPart);
+
+    }
+
+}

+ 7 - 13
PAS/src/main/java/cn/cslg/pas/controller/PatentController.java

@@ -4,7 +4,6 @@ import cn.cslg.pas.common.core.annotation.Permission;
 import cn.cslg.pas.common.core.base.Constants;
 import cn.cslg.pas.common.model.dto.PatentDTO;
 import cn.cslg.pas.common.model.dto.PatentMarketDataDTO;
-import cn.cslg.pas.common.model.dto.UploadFileDTO;
 import cn.cslg.pas.common.utils.*;
 import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils;
 import cn.cslg.pas.common.utils.auth.checkAuth;
@@ -12,23 +11,15 @@ import cn.cslg.pas.domain.Patent;
 import cn.cslg.pas.common.model.vo.*;
 import cn.cslg.pas.domain.PatentRight;
 import cn.cslg.pas.service.*;
-import cn.dev33.satoken.stp.StpUtil;
+
 import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.Parameters;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
-import org.apache.commons.compress.utils.IOUtils;
-import org.apache.tomcat.util.http.fileupload.disk.DiskFileItem;
+
 import org.springframework.context.annotation.Lazy;
-import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-import org.springframework.web.multipart.commons.CommonsMultipartFile;
 
-import java.io.*;
-import java.net.HttpURLConnection;
-import java.net.URL;
+
 import java.util.Collections;
 import java.util.List;
 
@@ -45,7 +36,6 @@ import java.util.List;
 @RequestMapping(Constants.API_VERSION_V2 + "/patent")
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class PatentController {
-
     private final PatentService patentService;
     private final ProjectPatentLinkService projectPatentLinkService;
     private final TaskService taskService;
@@ -87,17 +77,20 @@ public class PatentController {
         PatentDTO patentDTO =patentService.getPatentDTOById(patentNo,projectId);
         return Response.success(patentDTO);
     }
+
     @GetMapping("id")
     @Operation(summary = "根据专利号获取专利")
     public String getPatentByPatentNo(String patentNo) {
         Patent patent = patentService.getByPatentNo(patentNo);
         return Response.success(patent);
     }
+
     @PostMapping("ids")
     @Operation(summary = "根据范围获取专利ID")
     public String getPatentListIds(@RequestBody PatentVO params) {
         return Response.success(patentService.getPatentListIds(params));
     }
+
     @checkAuth(FunId = "/workspace/folder/exportPatent")
     @PostMapping("export")
     @Operation(summary = "导出专利")
@@ -130,6 +123,7 @@ public class PatentController {
         return Response.success(patentService.getPatentQuerySourcePageList(params));
     }
 
+
     @PostMapping("/save/select")
     @Operation(summary = "保存选择的专利")
     public String saveSelectPatentIds(@RequestBody PatentVO params) {

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

@@ -70,7 +70,7 @@ public class PermissionRecordController {
 
     @Operation(summary = "根据专利号分页查询许可记录数据信息")
     @PostMapping("/query")
-    public String query(@RequestBody QueryPREntity queryPREntity){
+    public String query(@RequestBody QueryPREntity queryPREntity) {
         List<PermissionRecordVO> queryResult = permissionRecordService.findAllByPage(queryPREntity);
         PageHelperT pageHelperT = new PageHelperT();
         pageHelperT.setList(queryResult);
@@ -80,6 +80,3 @@ public class PermissionRecordController {
         return Response.success(pageHelperT);
     }
 }
-
-
-

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

@@ -27,7 +27,6 @@ import org.springframework.web.bind.annotation.*;
 @RestController
 public class ProductMarketDataController {
     private final IProductMarketDataService productMarketDataService;
-
     @Operation(summary = "新增产品营销数据")
     @PostMapping("/addNew")
     public String addNew(@RequestBody ProductMarketDataAddNewDTO productMarketDataAddNewDTO) {
@@ -40,6 +39,7 @@ public class ProductMarketDataController {
         return Response.success("新增产品营销数据完成");
     }
 
+
     @Operation(summary = "修改产品营销数据")
     @PostMapping("/update")
     public String update(@RequestBody ProductMarketDataUpdateDTO productMarketDataUpdateDTO) {
@@ -52,6 +52,7 @@ public class ProductMarketDataController {
         return Response.success("修改产品营销数据完成");
     }
 
+
     @Operation(summary = "分页查询产品营销数据")
     @PostMapping("/query")
     public String update(@RequestBody ProductMarketDataQueryPageDTO productMarketDataQueryPageDTO) {
@@ -60,6 +61,7 @@ public class ProductMarketDataController {
         return Response.success(jsonPage);
     }
 
+
     @Operation(summary = "删除产品营销数据")
     @GetMapping("/delete")
     public String delete(Integer id) {

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

@@ -88,6 +88,7 @@ public class ProjectController {
         return projectService.delete(id);
     }
 
+
     @checkAuth(FunId = "/workspace/project/delete")
     @PostMapping("/patent/delete")
     @Operation(summary = "删除专题库专利")

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

@@ -3,16 +3,19 @@ package cn.cslg.pas.controller;
 import cn.cslg.pas.common.core.annotation.Permission;
 import cn.cslg.pas.common.core.base.Constants;
 import cn.cslg.pas.common.model.PersonnelVO;
+import cn.cslg.pas.common.model.dto.TaskAddNewDTO;
 import cn.cslg.pas.common.model.vo.ProjectImportPatentVO;
 import cn.cslg.pas.common.model.vo.ProjectImportVO;
 import cn.cslg.pas.common.model.vo.TaskParams;
 import cn.cslg.pas.common.utils.*;
 import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils;
 import cn.cslg.pas.common.utils.auth.checkAuth;
+import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.service.ProjectImportService;
 import cn.cslg.pas.service.ProjectImportStatusService;
 import cn.cslg.pas.service.ProjectService;
 import cn.cslg.pas.service.UploadPatentBatchService;
+import cn.cslg.pas.service.upLoadPatent.UploadTaskService;
 import cn.dev33.satoken.stp.StpUtil;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -23,6 +26,7 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -44,18 +48,20 @@ public class ProjectImportController {
     private final ProjectImportStatusService projectImportStatusService;
     private final LoginUtils loginUtils;
     private final UploadPatentBatchService uploadPatentBatchService;
+    private final UploadTaskService uploadTaskService;
 
     @Permission(roles = {2})
     @PostMapping("patent")
     @Operation(summary = "为专题库导入专利")
-    public String importPatent(MultipartFile file, String json) {
+    public String importPatent(MultipartFile file, String json) throws IOException {
         ProjectImportPatentVO params = JsonUtils.jsonToPojo(json, ProjectImportPatentVO.class);
         if (params == null) {
             return Response.error("参数错误");
         }
-        TaskParams taskParams = projectService.getImportPatentTaskParams(file, params.getProjectId());
-        //projectService.importPatent(taskParams, params);
-        uploadPatentBatchService.uploadPatentBatch(taskParams, params);
+//        TaskParams taskParams = projectService.getImportPatentTaskParams(file, params.getProjectId());
+//        uploadPatentBatchService.uploadPatentBatch(taskParams, params);
+        //Excel导入专利
+        uploadTaskService.addExcelTask(file, json);
         return Response.success(true);
     }
 
@@ -96,7 +102,7 @@ public class ProjectImportController {
         if (StringUtils.isNotEmpty(tempId)) {
             return Response.error("有导入任务在进行中");
         }
-        Integer importId = projectImportService.add(userId, url,personnelVO.getTenantId());
+        Integer importId = projectImportService.add(userId, url, personnelVO.getTenantId());
         projectService.importData(url, params, userId, importId);
         cacheUtils.setUserImportId(userId, importId);
         return Response.success(importId);
@@ -113,13 +119,19 @@ public class ProjectImportController {
         return Response.success(false);
     }
 
-    @PostMapping("importByNos")
-    @Operation(summary = "根据专利号导入专利到专题库")
-    public String importByNos(@RequestBody ProjectImportVO patentDTO) {
-        List<String> notQuery = projectImportService.importByNos(patentDTO);
-        if (notQuery.size() > 0) {
-            return Response.successBut(notQuery);
-        }
-        return Response.success(true);
+    @PostMapping("/importByNos")
+    @Operation(summary = "根据专利号导入专利到专题库或报告")
+    public String importByNos(@RequestBody ProjectImportVO patentDTO) throws IOException {
+//        List<String> notQuery = projectImportService.importByNos(patentDTO);
+//        if (notQuery.size() > 0) {
+//            return Response.successBut(notQuery);
+//        }
+//        return Response.success(true);
+        TaskAddNewDTO taskAddNewDTO = new TaskAddNewDTO()
+                .setProjectId(patentDTO.getProjectId())
+                .setReportId(patentDTO.getReportId())
+                .setConditions(patentDTO.getPatentNo());
+        uploadTaskService.addPatentNoTask(taskAddNewDTO);
+        return Response.success();
     }
 }

+ 56 - 0
PAS/src/main/java/cn/cslg/pas/controller/RetrieveRecordController.java

@@ -0,0 +1,56 @@
+package cn.cslg.pas.controller;
+
+/**
+ * 检索历史的控制层
+ * @Author xiexiang
+ * @Date 2023/7/10
+ */
+
+import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.model.dto.RetrieveRecordDTO;
+import cn.cslg.pas.common.model.outApi.RetrieveRecordDeDTO;
+import cn.cslg.pas.common.model.outApi.RetrieveRecordQueryDTO;
+import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.domain.RetrieveRecord;
+import cn.cslg.pas.service.upLoadPatent.RetrieveRecordService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@Tag(name = "无效理由和证据管理")
+@Slf4j
+@RequiredArgsConstructor
+@RestController
+@RequestMapping(Constants.API_VERSION_V2 + "/RetrieveRecord")
+public class RetrieveRecordController {
+    private final RetrieveRecordService retrieveRecordService;
+
+    @Operation(summary = "添加检索历史")
+    @PostMapping("/addRetrieveRecord")
+    public String addRetrieveRecord(@RequestBody RetrieveRecordDTO retrieveRecordDTO){
+        return Response.success(retrieveRecordService.addRetrieveRecord(retrieveRecordDTO));
+    }
+
+    @Operation(summary = "修改检索历史")
+    @PostMapping("/updateRetrieveRecord")
+    public String updateRetrieveRecord(@RequestBody RetrieveRecordDTO retrieveRecordDTO){
+        return Response.success(retrieveRecordService.updateRetrieveRecord(retrieveRecordDTO));
+    }
+
+    @Operation(summary = "查询检索历史")
+    @PostMapping("/queryRetrieveRecord")
+    public String queryRetrieveRecord(@RequestBody RetrieveRecordQueryDTO retrieveRecordQueryDTO){
+        return Response.success(retrieveRecordService.queryRetrieveRecord(retrieveRecordQueryDTO));
+    }
+
+    @Operation(summary = "删除检索历史")
+    @PostMapping("/deleteRetrieveRecord")
+    public String deleteRetrieveRecord(@RequestBody RetrieveRecordDeDTO retrieveRecordDeDTO){
+        retrieveRecordService.deleteRetrieveRecord(retrieveRecordDeDTO);
+        return Response.success("删除成功");
+    }
+}

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

@@ -71,7 +71,7 @@ public class StructureController {
     public Response query(@RequestBody StructureQueryPageDTO structureQueryPageDTO) {
         log.info("开始处理【查询架构树】的请求,请求参数为:{}", structureQueryPageDTO);
         StructureVO queryResult = structureService.query(structureQueryPageDTO);
-        return Response.success2(queryResult);
+        return Response.ok(queryResult);
     }
 
     @Operation(summary = "查询拼接路径名")

+ 5 - 4
PAS/src/main/java/cn/cslg/pas/controller/SystemController.java

@@ -46,7 +46,7 @@ public class SystemController {
 
     @PostMapping("dict")
     @Operation(summary = "根据类型获得字典")
-    public String getPageList(@RequestBody  List<String> dicts) {
+    public String getPageList(@RequestBody List<String> dicts) {
         List<SystemDict> systemDictList = systemDictService.getSystemDictListByType(dicts);
 //        Arrays.asList(Constants.ENTERPRISE_APPLICATION_SCENARIO)
         return Response.success(systemDictList);
@@ -60,7 +60,7 @@ public class SystemController {
 
     @PostMapping("getComPantentNos")
     @Operation(summary = "获得对比专利号")
-    public String getComPantentNos( @RequestBody QueryPatentVO params) {
+    public String getComPantentNos(@RequestBody QueryPatentVO params) {
         return patentService.getComPantentNos(params);
     }
 
@@ -69,6 +69,7 @@ public class SystemController {
     public String getConPantentNos(@RequestBody QueryPatentVO params) {
         return patentService.getConPantentNos(params);
     }
+
     @PostMapping("getConPantents")
     @Operation(summary = "获得条件过滤的专利")
     public String getConPantents(@RequestBody QueryPatentVO params) {
@@ -77,7 +78,7 @@ public class SystemController {
 
     @PostMapping("getPatentDTOListForRMS")
     @Operation(summary = "获得所有对比文件详细信息")
-    public String   getPatentDTOListForRMS(@RequestBody PatentVO params) {
+    public String getPatentDTOListForRMS(@RequestBody PatentVO params) {
         return Response.success(patentService.getPatentDTOListForRMS(params));
     }
 
@@ -89,7 +90,7 @@ public class SystemController {
 
     @PostMapping("/patentCellTODb")
     @Operation(summary = "专利上传到数据库")
-    public String   getPatentDTOListForRMS(@RequestBody PatentCell patentCell) throws ParseException {
+    public String getPatentDTOListForRMS(@RequestBody PatentCell patentCell) throws ParseException {
         uploadPatentBatchService.dataToDBCell(patentCell);
         return Response.success();
 

+ 80 - 6
PAS/src/main/java/cn/cslg/pas/controller/TaskController.java

@@ -1,17 +1,26 @@
 package cn.cslg.pas.controller;
 
 import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.model.dto.QueryQrtzTaskLogsDTO;
+import cn.cslg.pas.common.model.dto.TaskAddNewDTO;
+import cn.cslg.pas.common.model.dto.QueryTaskDTO;
+import cn.cslg.pas.common.model.vo.TaskVO;
 import cn.cslg.pas.common.utils.Response;
 import cn.cslg.pas.domain.Task;
-import cn.cslg.pas.common.model.vo.TaskVO;
+import cn.cslg.pas.domain.asso.TaskCondition;
 import cn.cslg.pas.service.TaskService;
+import cn.cslg.pas.service.upLoadPatent.JobService;
+import cn.cslg.pas.service.upLoadPatent.UploadTaskService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.quartz.SchedulerException;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.web.bind.annotation.*;
 
 import java.io.IOException;
+import java.util.List;
 
 /**
  * <p>
@@ -21,18 +30,84 @@ import java.io.IOException;
  * @author 王岩
  * @since 2022-02-17
  */
+@Slf4j
 @Tag(name = "系统任务")
 @RestController
 @RequestMapping(Constants.API_VERSION_V2 + "/task")
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class TaskController {
-
     private final TaskService taskService;
+    private final UploadTaskService uploadTaskService;
+    private final JobService jobService;
+
+    @PostMapping("/addTask")
+    @Operation(summary = "新增网站导入任务")
+    public String add(@RequestBody TaskAddNewDTO taskAddNewDTO) throws IOException, SchedulerException {
+        log.info("开始处理【新增网站导入专利任务】的请求,请求参数为:{}", taskAddNewDTO);
+
+        TaskCondition taskCondition = new TaskCondition();
+        //新增欧专局网站导入任务
+        if (taskAddNewDTO.getTaskType2().equals(3)) {
+            taskCondition = uploadTaskService.addEpoTask(taskAddNewDTO);
+            //新增专利之星网站导入任务
+        } else if (taskAddNewDTO.getTaskType2().equals(4)) {
+            taskCondition = uploadTaskService.addPatentStarTask(taskAddNewDTO);
+        }
+
+        //若是定时任务,则新增添加定时任务的job
+        if (taskCondition.getTaskType() == 1) {
+            jobService.addJob(taskCondition);
+        }
+        return Response.success("添加任务完成");
+    }
+
+//    @PostMapping("/addPatentNoTask")
+//    @Operation(summary = "根据专利号导入专利任务")
+//    public String addPatentNoTask(@RequestBody TaskAddNewDTO taskAddNewDTO) throws IOException {
+//        uploadTaskService.addPatentNoTask(taskAddNewDTO);
+//        return Response.success();
+//    }
+
+    @PostMapping("/queryTasks")
+    @Operation(summary = "查询任务列表")
+    public String queryTasks(@RequestBody QueryTaskDTO queryTaskDTO) throws IOException {
+        return Response.success(taskService.queryTasks(queryTaskDTO));
+    }
+
+    @PostMapping("/queryQrtzTaskLogs")
+    @Operation(summary = "查询定时任务执行日志")
+    public String queryQrtzTaskLogs(@RequestBody QueryQrtzTaskLogsDTO queryQrtzTaskLogsDTO) {
+        return Response.success(taskService.queryQrtzTaskLogs(queryQrtzTaskLogsDTO));
+    }
+
+    @GetMapping("/pause")
+    @Operation(summary = "暂停任务")
+    public Response pauseTask(Integer taskId) throws InterruptedException {
+        log.info("开始处理【暂停任务】的请求,请求参数为:taskId={}", taskId);
+        Integer taskStatus = taskService.pauseTask(taskId);
+        return Response.ok(taskStatus);
+    }
+
+    @GetMapping("/continue")
+    @Operation(summary = "继续任务")
+    public Response continueTask(Integer taskId) {
+        log.info("开始处理【继续任务】的请求,请求参数为:taskId={}", taskId);
+        Integer taskStatus = taskService.continueTask(taskId);
+        return Response.ok(taskStatus);
+    }
+
+    @GetMapping("/cancelTask")
+    @Operation(summary = "取消任务")
+    public String cancelTask(Integer taskId) throws SchedulerException, InterruptedException {
+        log.info("开始处理【取消任务】的请求,请求参数为:taskId={}", taskId);
+        taskService.cancelTask(taskId);
+        return Response.success("任务取消成功");
+    }
 
     @GetMapping("list")
     @Operation(summary = "任务列表")
     public String getPageList(TaskVO params) throws IOException {
-      return Response.success(taskService.getPageList(params));
+        return Response.success(taskService.getPageList(params));
     }
 
     @PostMapping("delete")
@@ -43,8 +118,8 @@ public class TaskController {
 
     @GetMapping("queue")
     @Operation(summary = "获取进行中的任务")
-    public String getQueueList(Integer type, Integer projectId,Integer productId) {
-        return Response.success(taskService.getQueueList(type, projectId,productId));
+    public String getQueueList(Integer type, Integer projectId, Integer productId) {
+        return Response.success(taskService.getQueueList(type, projectId, productId));
     }
 
     @PostMapping("update")
@@ -54,6 +129,5 @@ public class TaskController {
         return Response.success(true);
     }
 
-
 }
 

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

@@ -5,6 +5,7 @@ import cn.cslg.pas.common.model.vo.UserVO;
 import cn.cslg.pas.common.utils.Response;
 import cn.cslg.pas.domain.User;
 import cn.cslg.pas.service.UserService;
+import cn.cslg.pas.service.upLoadPatent.UploadTaskService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
@@ -28,7 +29,7 @@ import java.io.IOException;
 public class UserController {
 
     private final UserService userService;
-
+    private final UploadTaskService uploadTaskService;
     @GetMapping("list")
     @Operation(summary = "租户列表")
     public String getPageList(UserVO params) throws IOException {
@@ -57,4 +58,13 @@ public class UserController {
     public String delete(Integer id) {
         return userService.delete(id);
     }
+
+    @PostMapping("addTask")
+    @Operation(summary = "删除用户")
+    public String test(Integer id) {
+        return "test";
+    }
+
+
+
 }

+ 98 - 0
PAS/src/main/java/cn/cslg/pas/controller/outApi/PatentStarController.java

@@ -0,0 +1,98 @@
+package cn.cslg.pas.controller.outApi;
+
+import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.model.outApi.PatentStarListDto;
+import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.common.utils.auth.checkAuth;
+import cn.cslg.pas.service.OAuth2Service;
+import cn.cslg.pas.service.outApi.PatentStarApiService;
+import cn.dev33.satoken.stp.StpUtil;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.Map;
+
+@Tag(name = "专利之星接口服务类")
+@RestController
+@RequestMapping(Constants.API_VERSION_V2 + "/patentStar")
+@RequiredArgsConstructor(onConstructor_ = {@Lazy})
+public class PatentStarController {
+    private final PatentStarApiService patentStarApiService;
+
+    @PostMapping("/select")
+    @Operation(summary = "一般检索接口")
+    @checkAuth(FunId = "/workspace/common/retrieval")
+    public String getAreaList(@RequestBody @Validated PatentStarListDto patentStarListDto) throws IOException {
+        Map<String, Object> map = patentStarApiService.patentStarSearchLocal(patentStarListDto);
+        return Response.success(map);
+    }
+
+    @GetMapping("/getCnBib")
+    @Operation(summary = "获得中国专利著录")
+    public String getCnBib(String appNo) {
+        return patentStarApiService.getCnBibApi(appNo);
+    }
+
+    @GetMapping("/getPicture")
+    @Operation(summary = "获得中国专利摘要附图")
+    public String getPicture(String appNo) {
+        return patentStarApiService.getPictureApi(appNo);
+    }
+
+    @GetMapping("/getWGPicture")
+    @Operation(summary = "获得中国专利外观图")
+    public String getWGPicture(String appNo) throws IOException {
+        return patentStarApiService.getWGPictureApi(appNo);
+    }
+
+    @GetMapping("/getCnLegal")
+    @Operation(summary = "获得中国专利法律状态")
+    public String getCnLegal(String appNo) {
+        return patentStarApiService.getCnLegalApi(appNo);
+    }
+
+    @GetMapping("/getCnPdf")
+    @Operation(summary = "获得中国专利pdf全文")
+    public String getCnPdf(String appNo) throws IOException {
+        String picUrl = patentStarApiService.getCnPdfApi(appNo);
+        return picUrl;
+    }
+
+    @GetMapping("/getCnFullXml")
+    @Operation(summary = "获得中国专利全文文本")
+    public String getCnFullXml(String appNo) throws IOException {
+        return patentStarApiService.getCnFullXmlApi(appNo);
+    }
+
+    @GetMapping("/getEnPdf")
+    @Operation(summary = "获得世界专利pdf")
+    public String getEnPdf(String patentNo) throws IOException {
+        return patentStarApiService.getEnPdfApi(patentNo);
+    }
+
+    @GetMapping("/getENBib")
+    @Operation(summary = "获得世界专利著录信息")
+    public String getENBib(String patentNo) throws IOException {
+        String result = patentStarApiService.getENBibApi(patentNo);
+        return result;
+    }
+
+    @GetMapping("/getFamilyByPubNo")
+    @Operation(summary = "获得同族专利")
+    public String getFamilyByPubNo(String patentNo) {
+        return patentStarApiService.getFamilyByPubNoApi(patentNo);
+    }
+
+    @GetMapping("/getCitedNumByPubNo")
+    @Operation(summary = "获得被引用次数")
+    public String getCitedNumByPubNo(String patentNo) throws IOException {
+        return patentStarApiService.getCitedNumByPubNoApi(patentNo);
+    }
+}

+ 38 - 0
PAS/src/main/java/cn/cslg/pas/domain/AppNo.java

@@ -0,0 +1,38 @@
+package cn.cslg.pas.domain;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 申请号
+ *
+ * @Author chenyu
+ * @Date 2023/4/11
+ */
+@Accessors(chain = true)
+@Data
+public class AppNo implements Serializable {
+    /**
+     * 申请号类型(如:docdb、epodoc、original)
+     */
+    private String type;
+    /**
+     * 申请国家(如:AU)
+     */
+    private String country;
+    /**
+     * 申请号数字(如:2021229172)
+     */
+    private String number;
+    /**
+     * 申请号类型格式(如:A)
+     */
+    private String kind;
+    /**
+     * 申请号日期(如:2021-08-25T00:00:00)
+     */
+    private String date;
+
+}

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

@@ -0,0 +1,34 @@
+package cn.cslg.pas.domain;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 这是啥???
+ *
+ * @Author chenyu
+ * @Date 2023/4/11
+ */
+@Accessors(chain = true)
+@Data
+public class Application implements Serializable {
+    /**
+     * 这是啥
+     */
+    private Integer sequence;
+    /**
+     * 国家前两位首字母
+     */
+    private String country;
+    /**
+     * 英文翻译名称(外国专利使用英文翻译名称)
+     */
+    private String enName;
+    /**
+     * 原始名称(中国专利使用原始名称)
+     */
+    private String originalName;
+
+}

+ 3 - 6
PAS/src/main/java/cn/cslg/pas/domain/Authority.java

@@ -11,7 +11,6 @@ import java.util.List;
 @Data
 @TableName("Authority")
 public class Authority extends BaseEntity<AdminUser> {
-
     /**
      * 内容
      */
@@ -23,7 +22,7 @@ public class Authority extends BaseEntity<AdminUser> {
     @TableField("contentOut")
     private String contentOut;
     /**
-     * 0代表主权要1代表次权要
+     * 0代表主权要 1代表次权要
      */
     @TableField("contentOut")
     private Integer type;
@@ -43,14 +42,12 @@ public class Authority extends BaseEntity<AdminUser> {
     @TableField("SID")
     private String SID;
     /**
-     *父id
+     * 父id
      */
     private List<Integer> fatherID;
     /**
-     *子id
+     * 子id
      */
     private List<Integer> sonID;
 
-
-
 }

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

@@ -0,0 +1,28 @@
+package cn.cslg.pas.domain;
+
+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;
+
+}

+ 35 - 0
PAS/src/main/java/cn/cslg/pas/domain/Calculate.java

@@ -0,0 +1,35 @@
+package cn.cslg.pas.domain;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 根据起止条数计算开始页数、开始页数的开始位置、结束页数、结束页数的结束位置
+ *
+ * @Author chenyu
+ * @Date 2023/7/14
+ */
+@Accessors(chain = true)
+@Data
+public class Calculate implements Serializable {
+    /**
+     * 检索开始页数
+     */
+    private Integer startPage;
+    /**
+     * 检索开始页数的开始专利位置
+     */
+    private Integer startNum;
+    /**
+     * 检索结束页数
+     */
+    private Integer endPage;
+    /**
+     * 检索结束页数的结束专利位置
+     */
+    private Integer endNum;
+
+
+}

+ 178 - 0
PAS/src/main/java/cn/cslg/pas/domain/ChinaLeagalStatus.java

@@ -0,0 +1,178 @@
+package cn.cslg.pas.domain;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 专利之星获得中国专利法律状态接口实体类
+ *
+ * @Author chenyu
+ * @Date 2023/6/28
+ */
+@Accessors(chain = true)
+@Data
+public class ChinaLeagalStatus implements Serializable {
+    /**
+     * 流水号
+     */
+    private String ID;
+    /**
+     * 卷期号
+     */
+    private String JUANQI;
+    /**
+     * 专利类型
+     */
+    private String PatentType;
+    /**
+     * 法律状态日期
+     */
+    private String LegalDate;
+    /**
+     * 法律状态
+     */
+    private String LegalStatus;
+    /**
+     * 详细法律状态
+     */
+    private String LegalStatusInfo;
+    /**
+     * 法律状态编码
+     */
+    private String LegalCode;
+    /**
+     * 卷
+     */
+    private String VOL;
+    /**
+     * 期
+     */
+    private String NUM;
+    /**
+     * 页码
+     */
+    private String PAG;
+    /**
+     * IPC分类
+     */
+    private String IPC;
+    /**
+     * 申请号
+     */
+    private String SHENQINGH;
+    /**
+     * 申请日
+     */
+    private String SHENQINGR;
+    /**
+     * 公开日
+     */
+    private String SHENQINGGBR;
+    /**
+     * 公告日
+     */
+    private String SHOUQUANGGR;
+    /**
+     * 无效登记号
+     */
+    private String WUXIAOXGJDH;
+    /**
+     * 无效登记日
+     */
+    private String WUXIAOXGJDR;
+    /**
+     * 终止日
+     */
+    private String ZHONGZHIR;
+    /**
+     * 放弃生效日
+     */
+    private String FANGQISXR;
+    /**
+     * 原名称
+     */
+    private String YUANMINGC;
+    /**
+     * 原公告号
+     */
+    private String YUANGONGGR;
+    /**
+     * 变更编号
+     */
+    private String BIANGENGSXCODE;
+    /**
+     * 变更事项
+     */
+    private String BIANGENGSX;
+    /**
+     * 变更前
+     */
+    private String BIANGENGQ;
+    /**
+     * 变更后
+     */
+    private String BIANGENGH;
+    /**
+     * 登记生效日
+     */
+    private String DENGJISXR;
+    /**
+     * 合同备案号
+     */
+    private String HETONGBAH;
+    /**
+     * 让与人
+     */
+    private String RANGYUR;
+    /**
+     * 受让人
+     */
+    private String SHOURANGR;
+    /**
+     * 专利名称
+     */
+    private String ZHUANLIMC;
+    /**
+     * 许可种类
+     */
+    private String XUKEZL;
+    /**
+     * 备案日期
+     */
+    private String BEIANRQ;
+    /**
+     * 变更日
+     */
+    private String BIANGENGR;
+    /**
+     * 解除日
+     */
+    private String JIECHUR;
+    /**
+     * 登记号
+     */
+    private String DENGJIH;
+    /**
+     * 出质人
+     */
+    private String CHUZHIR;
+    /**
+     * 质权人
+     */
+    private String ZHIQUANR;
+    /**
+     * 收件日
+     */
+    private String SHOUJIANR;
+    /**
+     * 文件名称
+     */
+    private String WENJIANMC;
+    /**
+     * 详细信息
+     */
+    private String DETAIL;
+
+}

+ 99 - 0
PAS/src/main/java/cn/cslg/pas/domain/ChinaPatentZhuLu.java

@@ -0,0 +1,99 @@
+package cn.cslg.pas.domain;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 专利之星中国专利著录实体类
+ *
+ * @Author chenyu
+ * @Date 2023/6/25
+ */
+@Accessors(chain = true)
+@Data
+public class ChinaPatentZhuLu implements Serializable {
+    /**
+     * 申请号
+     */
+    private String AN;
+    /**
+     * 申请日
+     */
+    private String AD;
+    private String CPT;
+    /**
+     * 公开日
+     */
+    private String PD;
+    private String CGT;
+    /**
+     * 公告日
+     */
+    private String GD;
+    private String ZLTP;
+    /**
+     * 标题
+     */
+    private String TI;
+    /**
+     * 国省代码
+     */
+    private String CO;
+    private String MingCheng;
+    /**
+     * 代理人
+     */
+    private String AT;
+    /**
+     * 代理机构代码
+     */
+    private String AG;
+    /**
+     * 代理机构名称
+     */
+    private String AGN;
+    /**
+     * 主分类号
+     */
+    private String MC;
+    /**
+     * 分类号
+     */
+    private String IC;
+    /**
+     * 范畴分类
+     */
+    private String CT;
+    /**
+     * 申请人
+     */
+    private String PA;
+    /**
+     * 发明人
+     */
+    private String IV;
+    /**
+     * 申请人地址
+     */
+    private String DZ;
+    private String ZipCode;
+    /**
+     * 优先权号
+     */
+    private String PR;
+    private String PRD;
+    private String Examiner;
+    private String CiteInfo;
+    private String NoCiteInfo;
+    /**
+     * 摘要
+     */
+    private String AB;
+    /**
+     * 主权要
+     */
+    private String CL1;
+
+}

+ 26 - 0
PAS/src/main/java/cn/cslg/pas/domain/FamilyPatentNo.java

@@ -0,0 +1,26 @@
+package cn.cslg.pas.domain;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 专利之星获得同族专利接口实体类
+ *
+ * @Author chenyu
+ * @Date 2023/6/27
+ */
+@Accessors(chain = true)
+@Data
+public class FamilyPatentNo implements Serializable {
+    /**
+     * 同族专利(包含自身,以分号;分隔的多个专利号)
+     */
+    private String familyinfo;
+    /**
+     * 同族专利数量
+     */
+    private String familycount;
+
+}

+ 39 - 0
PAS/src/main/java/cn/cslg/pas/domain/Image.java

@@ -0,0 +1,39 @@
+package cn.cslg.pas.domain;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 封装images信息(imageType、urlLink、formatOptions)
+ *
+ * @Author chenyu
+ * @Date 2023/4/12
+ */
+@Accessors(chain = true)
+@Data
+public class Image implements Serializable {
+    /**
+     * 图片类型("FullDocument"为说明书pdf、"FirstPageClipping"为摘要附图、"Drawing"为其他附图)
+     */
+    private String imageType;
+    /**
+     * 图片页数(此属性值作为调用获取具体图片的接口的参数)
+     */
+    private Integer numberOfPages;
+    /**
+     * 链接参数(此属性值作为调用获取具体图片的接口的参数)
+     */
+    private String urlLink;
+    /**
+     * 图片格式((此属性值作为调用获取具体图片的接口的参数)(说明书FullDocument用application/pdf、摘要附图FirstPageClipping用image/jpeg、其他附图Drawing用application/tiff)
+     */
+    private List<String> formatOptions;
+    /**
+     * 无用类,仅为了放入ImageInfo中凑数(为了JSONObject.parseObject能转化成功)
+     */
+    private List<Section> sections;
+
+}

+ 27 - 0
PAS/src/main/java/cn/cslg/pas/domain/ImageInfo.java

@@ -0,0 +1,27 @@
+package cn.cslg.pas.domain;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 图片信息(接收http://192.168.1.24:5001/api/OPSQuery/GetImagesInfo接口的返回值data)
+ *
+ * @Author chenyu
+ * @Date 2023/4/12
+ */
+@Accessors(chain = true)
+@Data
+public class ImageInfo implements Serializable {
+    /**
+     * 无用类,仅为了放入ImageInfo中凑数(为了JSONObject.parseObject能转化成功)
+     */
+    private PubReference pubReference;
+    /**
+     * 代表各种附件的信息(封装着三种附件的类型、链接、附件页数)
+     */
+    private List<Image> images;
+
+}

+ 34 - 0
PAS/src/main/java/cn/cslg/pas/domain/Inventor.java

@@ -0,0 +1,34 @@
+package cn.cslg.pas.domain;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 发明人信息
+ *
+ * @Author chenyu
+ * @Date 2023/4/11
+ */
+@Accessors(chain = true)
+@Data
+public class Inventor implements Serializable {
+    /**
+     * 这是啥
+     */
+    private Integer sequence;
+    /**
+     * 国家前两位首字母
+     */
+    private String country;
+    /**
+     * 英文名(外国专利使用英文名)
+     */
+    private String enName;
+    /**
+     * 原名(中国专利使用原名)
+     */
+    private String originalName;
+
+}

+ 27 - 0
PAS/src/main/java/cn/cslg/pas/domain/MultipleCondition.java

@@ -0,0 +1,27 @@
+package cn.cslg.pas.domain;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 多个检索式信息
+ *
+ * @Author chenyu
+ * @Date 2023/7/14
+ */
+@Accessors(chain = true)
+@Data
+public class MultipleCondition implements Serializable {
+    /**
+     * 检索式
+     */
+    private String conditions;
+    /**
+     * 检索式检索出的专利总条数
+     */
+    private Integer total;
+
+
+}

+ 32 - 0
PAS/src/main/java/cn/cslg/pas/domain/PQueueData.java

@@ -0,0 +1,32 @@
+package cn.cslg.pas.domain;
+
+import cn.cslg.pas.common.model.vo.UploadParamsVO;
+import cn.cslg.pas.common.model.vo.outApi.StarPatentVO;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 装载生产队列实体类
+ *
+ * @Author chenyu
+ * @Date 2023/6/28
+ */
+@Accessors(chain = true)
+@Data
+public class PQueueData implements Serializable {
+    /**
+     * 任务
+     */
+    private Task task;
+    /**
+     * 专利实体类
+     */
+    private UploadParamsVO uploadParamsVO;
+    /**
+     * 专利之星调用一般接口返回专利数据
+     */
+    private StarPatentVO starPatent;
+
+}

+ 3 - 4
PAS/src/main/java/cn/cslg/pas/domain/Patent.java

@@ -16,7 +16,6 @@ import lombok.Data;
 @Data
 @TableName("os_patent")
 public class Patent extends BaseEntity<Patent> {
-
     /**
      * 专利名称(标题)
      */
@@ -100,7 +99,7 @@ public class Patent extends BaseEntity<Patent> {
     private Integer simpleStatus;
 
     /**
-     * 专利类型【发明、新型、外观】
+     * 专利类型【1新型、2发明、3外观】
      */
     private Integer type;
 
@@ -151,7 +150,7 @@ public class Patent extends BaseEntity<Patent> {
     private Integer selfRightNum;
 
     /**
-     * 权利要求
+     * 权利要求原文
      */
     @TableField("content")
     private String rightContent;
@@ -274,7 +273,7 @@ public class Patent extends BaseEntity<Patent> {
     private String notPatentQuote;
 
     /**
-     * 摘要附图
+     * 摘要附图路径
      */
     private String abstractPath;
 

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

@@ -16,12 +16,13 @@ import lombok.Data;
 @Data
 @TableName("os_patent_agent")
 public class PatentAgent extends BaseEntity<PatentAgent> {
-
     /**
      * 代理人
      */
     private String name;
-
+    /**
+     * 专利id
+     */
     @TableField(exist = false)
     private Integer patentId;
 }

+ 25 - 0
PAS/src/main/java/cn/cslg/pas/domain/PatentData.java

@@ -0,0 +1,25 @@
+package cn.cslg.pas.domain;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+import org.apache.poi.ss.usermodel.PictureData;
+
+import java.util.Map;
+
+/**
+ * @Author chenyu
+ * @Date 2023/5/31
+ */
+@Accessors(chain = true)
+@Data
+public class PatentData {
+    /**
+     * 专利内容数据(除了摘要附图, key:表头如 "公开(公告)号"  value:表头对应内容如 "CN1307082B")
+     */
+    private Map<Object, Object> map;
+    /**
+     * 专利摘要附图
+     */
+    private PictureData pictureData;
+
+}

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

@@ -16,9 +16,8 @@ import lombok.Data;
 @Data
 @TableName("os_patent_img")
 public class PatentImage extends BaseEntity<PatentImage> {
-
     /**
-     * 摘要附图 
+     * 摘要附图
      */
     private Integer status;
 
@@ -27,9 +26,8 @@ public class PatentImage extends BaseEntity<PatentImage> {
      */
     @TableField("address")
     private String url;
-
     /**
-     * 专利信息ID
+     * 专利ID
      */
     @TableField("pid")
     private Integer patentId;

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

@@ -15,7 +15,6 @@ import lombok.Data;
 @Data
 @TableName(value ="os_patent_instruction_text")
 public class PatentInstructionText extends BaseEntity<PatentInstructionText> {
-
     /**
      * 专利ID
      */

+ 3 - 4
PAS/src/main/java/cn/cslg/pas/domain/PatentLicensor.java

@@ -15,22 +15,21 @@ import lombok.Data;
 @Data
 @TableName("os_patent_licensor")
 public class PatentLicensor extends BaseEntity<PatentLicensor> {
-
     /**
      * 被许可人
      */
     private String licensee;
-
     /**
      * 许可人
      */
     private String licensor;
-
     /**
      * 许可类型
      */
     private String type;
-
+    /**
+     * 专利id
+     */
     private Integer patentId;
 
 }

+ 81 - 0
PAS/src/main/java/cn/cslg/pas/domain/PatentZhuLu.java

@@ -0,0 +1,81 @@
+package cn.cslg.pas.domain;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 专利著录信息(接收http://192.168.1.24:5001/api/OPSQuery/SearchBiblio接口的返回值data)
+ *
+ * @Author chenyu
+ * @Date 2023/4/11
+ */
+@Accessors(chain = true)
+@Data
+public class PatentZhuLu implements Serializable {
+    /**
+     * 申请国家
+     */
+    private String appCountry;
+    /**
+     * 同族号
+     */
+    private String familyId;
+    /**
+     * 多个申请号(只需取type是docdb的)
+     */
+    private List<AppNo> appNos;
+    /**
+     * 申请日
+     */
+    private String appDate;
+    /**
+     * 多个公开号(只需取type是docdb的)
+     */
+    private List<PubNo> pubNos;
+    /**
+     * 公开日
+     */
+    private String pubDate;
+    /**
+     * 多个ipc分类号
+     */
+    private List<String> ipCs;
+    /**
+     * 多个cpc分类号
+     */
+    private List<String> cpCs;
+    /**
+     * 多个申请人
+     */
+    private List<Application> applications;
+    /**
+     * 多个发明人
+     */
+    private List<Inventor> inventors;
+    /**
+     * 英文翻译标题
+     */
+    private String enTitle;
+    /**
+     * 原始标题
+     */
+    private String olTitle;
+    /**
+     * 英文翻译摘要
+     */
+    private String enAbstract;
+    /**
+     * 原始摘要
+     */
+    private String olAbstract;
+    /**
+     * 优先权
+     */
+    private List<Priorityy> priorties;
+
+
+
+}

+ 30 - 0
PAS/src/main/java/cn/cslg/pas/domain/Priority.java

@@ -0,0 +1,30 @@
+package cn.cslg.pas.domain;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 优先权信息(优先权号、优先权国家、优先权日)
+ *
+ * @Author chenyu
+ * @Date 2023/4/12
+ */
+@Accessors(chain = true)
+@Data
+public class Priority implements Serializable {
+    /**
+     * 优先权号
+     */
+    private String priorityNo;
+    /**
+     * 优先权国家
+     */
+    private String priorityCountry;
+    /**
+     * 优先权日
+     */
+    private String priorityDate;
+
+}

+ 38 - 0
PAS/src/main/java/cn/cslg/pas/domain/PriorityNumber.java

@@ -0,0 +1,38 @@
+package cn.cslg.pas.domain;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 优先权Number这是啥
+ *
+ * @Author chenyu
+ * @Date 2023/4/11
+ */
+@Accessors(chain = true)
+@Data
+public class PriorityNumber implements Serializable {
+    /**
+     * 优先权Number类型(如:epodoc、original)
+     */
+    private String type;
+    /**
+     * 优先权Number国家(如:GB)
+     */
+    private String country;
+    /**
+     * 优先权number(如:GB20200003495)
+     */
+    private String number;
+    /**
+     * 优先权Number类型格式(如:A)
+     */
+    private String kind;
+    /**
+     * 优先权Number日期(如:0001-01-01T00:00:00)
+     */
+    private String date;
+
+}

+ 32 - 0
PAS/src/main/java/cn/cslg/pas/domain/Priorityy.java

@@ -0,0 +1,32 @@
+package cn.cslg.pas.domain;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 优先权信息
+ *
+ * @Author chenyu
+ * @Date 2023/4/11
+ */
+@Accessors(chain = true)
+@Data
+public class Priorityy implements Serializable {
+    /**
+     * 优先权顺序
+     */
+    private Integer sequence;
+    /**
+     * 优先权Number这是啥
+     */
+    private List<PriorityNumber> numbers;
+    /**
+     * 优先权日期
+     */
+    private String date;
+
+
+}

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

@@ -24,7 +24,7 @@ import java.util.List;
 @TableName("os_thematic")
 public class Project extends BaseEntity<Project> {
     /**
-     * 标题
+     * 专题库名称
      */
     private String name;
 

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

@@ -35,7 +35,7 @@ public class ProjectField extends BaseEntity<ProjectField> {
     private Integer type;
 
     /**
-     * 状态(正常、关闭)
+     * 状态(1正常、0关闭)
      */
     private Integer status;
 
@@ -88,6 +88,9 @@ public class ProjectField extends BaseEntity<ProjectField> {
     @TableField(exist = false)
     private String projectName;
 
+    /**
+     * 数据来源对象
+     */
     @Data
     public static class dataType {
         private String name;

+ 38 - 0
PAS/src/main/java/cn/cslg/pas/domain/PubNo.java

@@ -0,0 +1,38 @@
+package cn.cslg.pas.domain;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 公开号
+ *
+ * @Author chenyu
+ * @Date 2023/4/11
+ */
+@Accessors(chain = true)
+@Data
+public class PubNo implements Serializable {
+    /**
+     * 公开号类型(如:docdb、epodoc)
+     */
+    private String type;
+    /**
+     * 公开号国家(如:AU)
+     */
+    private String country;
+    /**
+     * 公开号数字(如:2021229172)
+     */
+    private String number;
+    /**
+     * 申请号类型格式(如:A1)
+     */
+    private String kind;
+    /**
+     * 申请号日期(如:2023-04-06T00:00:00)
+     */
+    private String date;
+
+}

+ 23 - 0
PAS/src/main/java/cn/cslg/pas/domain/PubReference.java

@@ -0,0 +1,23 @@
+package cn.cslg.pas.domain;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 无用类,仅为了放入ImageInfo中凑数(为了JSONObject.parseObject能转化成功)
+ *
+ * @Author chenyu
+ * @Date 2023/4/13
+ */
+@Accessors(chain = true)
+@Data
+public class PubReference implements Serializable {
+    private String type;
+    private String country;
+    private String number;
+    private String kind;
+    private String date;
+
+}

+ 89 - 0
PAS/src/main/java/cn/cslg/pas/domain/QrtzTask.java

@@ -0,0 +1,89 @@
+package cn.cslg.pas.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * 任务执行情况表的实体类
+ *
+ * @Author chenyu
+ * @Date 2023/3/27
+ */
+@TableName(value = "qrtz_task")
+@Accessors(chain = true)
+@Data
+public class QrtzTask extends BaseEntity<QrtzTask> {
+    /**
+     * 专题库id
+     */
+    @TableField(value = "project_id")
+    private Integer projectId;
+    /**
+     * 任务名称
+     */
+    @TableField(value = "task_name")
+    private String taskName;
+    /**
+     * 任务类型(0普通任务 1定时任务)
+     */
+    @TableField(value = "task_type")
+    private Integer taskType;
+    /**
+     * 状态(0等待中 1进行中 2成功 3失败 4等待下一次执行 5取消 6暂停)
+     */
+    @TableField(value = "task_state")
+    private Integer taskState;
+    /**
+     * 检索信息
+     */
+    @TableField(value = "conditions")
+    private String conditions;
+    /**
+     * cron表达式
+     */
+    @TableField(value = "crons")
+    private String crons;
+    /**
+     * 下载字段
+     */
+    @TableField(value = "config_cells")
+    private String configCells;
+    /**
+     * 网站id
+     */
+    @TableField(value = "config_id")
+    private Integer configId;
+    /**
+     * 创建人id
+     */
+    @TableField(value = "create_person_id")
+    private Integer createPersonId;
+    /**
+     * 创建人名称
+     */
+    @TableField(value = "create_person_name")
+    private String createName;
+    @TableField(value = "tenant_id")
+    private Integer tenantId;
+    /**
+     * 创建时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(value = "create_time")
+    private Date createTime;
+    /**
+     * 最后修改时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(value = "modified_time")
+    private Date modifiedTime;
+
+}

+ 43 - 0
PAS/src/main/java/cn/cslg/pas/domain/QuestionRecord.java

@@ -0,0 +1,43 @@
+package cn.cslg.pas.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 问题记录表实体类
+ *
+ * @Author chenyu
+ * @Date 2023/7/8
+ */
+@TableName(value = "question_records")
+@Accessors(chain = true)
+@Data
+public class QuestionRecord implements Serializable {
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+    /**
+     * 失败的专利号
+     */
+    @TableField(value = "patent_no")
+    private String patentNo;
+    /**
+     * 所属任务id
+     */
+    @TableField(value = "task_id")
+    private Integer taskId;
+    /**
+     * 失败字段
+     */
+    @TableField(value = "cell")
+    private Integer cell;
+
+}

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


Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.