Browse Source

Merge remote-tracking branch 'origin/dev2' into dev2

xiexiang 2 years ago
parent
commit
03618e207a
56 changed files with 2453 additions and 776 deletions
  1. 211 0
      PAS/pas.iml
  2. 6 0
      PAS/pom.xml
  3. 45 0
      PAS/src/main/java/cn/cslg/pas/common/config/XDns.java
  4. 2 0
      PAS/src/main/java/cn/cslg/pas/common/model/QueryPatentVO.java
  5. 1 1
      PAS/src/main/java/cn/cslg/pas/common/model/dto/SWQueryDTO.java
  6. 6 1
      PAS/src/main/java/cn/cslg/pas/common/model/dto/TaskAddNewDTO.java
  7. 1 0
      PAS/src/main/java/cn/cslg/pas/common/model/dto/TaskWebSocketDTO.java
  8. 11 3
      PAS/src/main/java/cn/cslg/pas/common/model/outApi/PatentStarListDto.java
  9. 2 0
      PAS/src/main/java/cn/cslg/pas/common/model/vo/ProjectImportPatentVO.java
  10. 16 0
      PAS/src/main/java/cn/cslg/pas/common/model/vo/QueryTaskVO.java
  11. 14 3
      PAS/src/main/java/cn/cslg/pas/common/model/vo/UploadParamsVO.java
  12. 75 37
      PAS/src/main/java/cn/cslg/pas/common/model/vo/outApi/StarPatentVO.java
  13. 5 1
      PAS/src/main/java/cn/cslg/pas/common/utils/DateUtils.java
  14. 116 0
      PAS/src/main/java/cn/cslg/pas/common/utils/DateUtils2.java
  15. 8 8
      PAS/src/main/java/cn/cslg/pas/common/utils/PatentRightUtils.java
  16. 7 0
      PAS/src/main/java/cn/cslg/pas/controller/CommonController.java
  17. 2 1
      PAS/src/main/java/cn/cslg/pas/controller/GetPatentStarPartController.java
  18. 8 13
      PAS/src/main/java/cn/cslg/pas/controller/PatentInstructionController.java
  19. 0 5
      PAS/src/main/java/cn/cslg/pas/controller/ProjectImportController.java
  20. 6 7
      PAS/src/main/java/cn/cslg/pas/controller/TaskController.java
  21. 6 2
      PAS/src/main/java/cn/cslg/pas/controller/outApi/PatentStarController.java
  22. 35 0
      PAS/src/main/java/cn/cslg/pas/domain/Calculate.java
  23. 2 2
      PAS/src/main/java/cn/cslg/pas/domain/ImportTaskPatent.java
  24. 27 0
      PAS/src/main/java/cn/cslg/pas/domain/MultipleCondition.java
  25. 4 0
      PAS/src/main/java/cn/cslg/pas/domain/PQueueData.java
  26. 1 2
      PAS/src/main/java/cn/cslg/pas/domain/Patent.java
  27. 13 11
      PAS/src/main/java/cn/cslg/pas/domain/PatentInstruction.java
  28. 22 3
      PAS/src/main/java/cn/cslg/pas/domain/PatentSimpleFamilyLink.java
  29. 6 1
      PAS/src/main/java/cn/cslg/pas/domain/QuestionRecord.java
  30. 16 6
      PAS/src/main/java/cn/cslg/pas/domain/Task.java
  31. 4 0
      PAS/src/main/java/cn/cslg/pas/domain/WebLoginConfig.java
  32. 99 0
      PAS/src/main/java/cn/cslg/pas/domain/WorldPatentZhuLu.java
  33. 10 0
      PAS/src/main/java/cn/cslg/pas/domain/asso/TaskCondition.java
  34. 20 2
      PAS/src/main/java/cn/cslg/pas/service/OutInterfaceService.java
  35. 2 0
      PAS/src/main/java/cn/cslg/pas/service/PatentFieldService.java
  36. 2 2
      PAS/src/main/java/cn/cslg/pas/service/PatentImageService.java
  37. 77 13
      PAS/src/main/java/cn/cslg/pas/service/PatentInstructionService.java
  38. 35 7
      PAS/src/main/java/cn/cslg/pas/service/PatentRightService.java
  39. 17 3
      PAS/src/main/java/cn/cslg/pas/service/PatentService.java
  40. 1 0
      PAS/src/main/java/cn/cslg/pas/service/PatentSimpleFamilyService.java
  41. 68 23
      PAS/src/main/java/cn/cslg/pas/service/TaskService.java
  42. 1 1
      PAS/src/main/java/cn/cslg/pas/service/UploadPatentBatchService.java
  43. 11 0
      PAS/src/main/java/cn/cslg/pas/service/WebLoginConfigService.java
  44. 262 105
      PAS/src/main/java/cn/cslg/pas/service/getPatentStarPart/GetPatentStarPartService.java
  45. 1 1
      PAS/src/main/java/cn/cslg/pas/service/impl/ProductServiceImpl.java
  46. 239 81
      PAS/src/main/java/cn/cslg/pas/service/outApi/PatentStarApiService.java
  47. 4 0
      PAS/src/main/java/cn/cslg/pas/service/upLoadPatent/ExcutePatentDataExcel.java
  48. 739 278
      PAS/src/main/java/cn/cslg/pas/service/upLoadPatent/ExcutePatentDataStar.java
  49. 1 0
      PAS/src/main/java/cn/cslg/pas/service/upLoadPatent/MessageService.java
  50. 79 41
      PAS/src/main/java/cn/cslg/pas/service/upLoadPatent/PantentQueueService.java
  51. 1 1
      PAS/src/main/java/cn/cslg/pas/service/upLoadPatent/UploadPatentToDBService.java
  52. 71 85
      PAS/src/main/java/cn/cslg/pas/service/upLoadPatent/UploadTaskService.java
  53. 6 0
      PAS/src/main/resources/application-prodNetIn.yml
  54. 7 1
      PAS/src/main/resources/application-prodNetOut.yml
  55. 8 21
      PAS/src/main/resources/mapper/PatentMapper.xml
  56. 14 4
      PAS/src/main/resources/mapper/TaskMapper.xml

+ 211 - 0
PAS/pas.iml

@@ -0,0 +1,211 @@
+<?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-oxm: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" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-quartz:2.5.9" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-context-support:5.3.15" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-tx:5.3.15" level="project" />
+    <orderEntry type="library" name="Maven: org.quartz-scheduler:quartz:2.3.2" level="project" />
+    <orderEntry type="library" name="Maven: com.mchange:c3p0:0.9.5.2" level="project" />
+    <orderEntry type="library" name="Maven: com.mchange:mchange-commons-java:0.2.11" level="project" />
+    <orderEntry type="library" name="Maven: e-iceblue:spire.pdf:8.7.0" level="project" />
+    <orderEntry type="library" name="Maven: joda-time:joda-time:2.9.9" level="project" />
+  </component>
+</module>

+ 6 - 0
PAS/pom.xml

@@ -186,6 +186,12 @@
             <artifactId>spire.pdf</artifactId>
             <artifactId>spire.pdf</artifactId>
             <version>8.7.0</version>
             <version>8.7.0</version>
         </dependency>
         </dependency>
+
+        <dependency>
+            <groupId>joda-time</groupId>
+            <artifactId>joda-time</artifactId>
+            <version>2.9.9</version>
+        </dependency>
     </dependencies>
     </dependencies>
 
 
 
 

+ 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;
+        }
+    }
+}

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

@@ -14,6 +14,8 @@ import java.util.List;
  */
  */
 @Data
 @Data
 public class QueryPatentVO extends BaseVO {
 public class QueryPatentVO extends BaseVO {
+    //报告id
+    private Integer reportId;
     //架构id
     //架构id
     private Integer structureId;
     private Integer structureId;
     //产品id
     //产品id

+ 1 - 1
PAS/src/main/java/cn/cslg/pas/common/model/dto/SWQueryDTO.java

@@ -16,7 +16,7 @@ public class SWQueryDTO {
     private String patentNo;
     private String patentNo;
 
 
     /**
     /**
-     * id
+     * id(专题库id/报告id)
      */
      */
     private Integer id;
     private Integer id;
 
 

+ 6 - 1
PAS/src/main/java/cn/cslg/pas/common/model/dto/TaskAddNewDTO.java

@@ -46,6 +46,10 @@ public class TaskAddNewDTO {
      */
      */
     private List<String> isAddPatentNos;
     private List<String> isAddPatentNos;
     /**
     /**
+     * isAddPatentNos中的多个专利或申请号的下载任务类型(1.检索页面手动勾选的专利下载任务 2.多个专利号导入的下载任务)
+     */
+    private Integer isAddType;
+    /**
      * 起止条数中不需要下载的专利
      * 起止条数中不需要下载的专利
      */
      */
     private List<String> isDeletePatentNos;
     private List<String> isDeletePatentNos;
@@ -58,7 +62,7 @@ public class TaskAddNewDTO {
      */
      */
     private Integer reportId;
     private Integer reportId;
     /**
     /**
-     * 任务类型2(3.欧专局 4.专利之星)
+     * 任务类型2(3.欧专局导入 4.专利之星导入 5.专利号导入
      */
      */
     private Integer taskType2;
     private Integer taskType2;
     /**
     /**
@@ -93,6 +97,7 @@ public class TaskAddNewDTO {
      */
      */
     private List<Integer> folderIds;
     private List<Integer> folderIds;
 
 
+    private Integer asCompare;
     /**
     /**
      * 自定义字段信息
      * 自定义字段信息
      */
      */

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

@@ -7,6 +7,7 @@ import lombok.experimental.Accessors;
 @Accessors(chain = true)
 @Accessors(chain = true)
 public class TaskWebSocketDTO {
 public class TaskWebSocketDTO {
     private Integer projectId;
     private Integer projectId;
+    private Integer reportId;
     private Integer total;
     private Integer total;
     private Integer index;
     private Integer index;
     private Integer taskId;
     private Integer taskId;

+ 11 - 3
PAS/src/main/java/cn/cslg/pas/common/model/outApi/PatentStarListDto.java

@@ -3,9 +3,7 @@ package cn.cslg.pas.common.model.outApi;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Data;
 import lombok.Data;
 import lombok.experimental.Accessors;
 import lombok.experimental.Accessors;
-import reactor.util.annotation.NonNull;
-
-import javax.validation.constraints.NotNull;
+import org.joda.time.DateTime;
 
 
 /**
 /**
  * 专利之星检索dto类
  * 专利之星检索dto类
@@ -48,4 +46,14 @@ public class PatentStarListDto {
     @JsonProperty(value = "OrderByType")
     @JsonProperty(value = "OrderByType")
     private String OrderByType;
     private String OrderByType;
 
 
+    private Integer total;
+
+    private DateTime startTime;
+
+    private DateTime endTime;
+
+    private String orginCondition;
+
+    private Boolean formed;
+
 }
 }

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

@@ -19,6 +19,8 @@ public class ProjectImportPatentVO {
      * 报告id
      * 报告id
      */
      */
     private Integer reportId;
     private Integer reportId;
+
+    private Integer asCompare;
     /**
     /**
      * 数据来源(1.智慧芽 2.合享 3.Patentics)
      * 数据来源(1.智慧芽 2.合享 3.Patentics)
      */
      */

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

@@ -92,6 +92,10 @@ public class QueryTaskVO implements Serializable {
      * 最近更新时间(即上面的结束时间endTime)
      * 最近更新时间(即上面的结束时间endTime)
      */
      */
     private Integer modifiedTime;
     private Integer modifiedTime;
+    /**
+     * Excel文件地址
+     */
+    private String url;
 
 
     //以上若是网站导入的任务,则以下为关联任务条件表数据;以上若是Excel导入的任务,则以下都是null
     //以上若是网站导入的任务,则以下为关联任务条件表数据;以上若是Excel导入的任务,则以下都是null
     /**
     /**
@@ -138,6 +142,18 @@ public class QueryTaskVO implements Serializable {
      * 创建人名称
      * 创建人名称
      */
      */
     private String createName;
     private String createName;
+    /**
+     * isAddPatentNos中的多个专利或申请号的下载任务类型(1.检索页面手动勾选的专利下载任务 2.多个专利号导入的下载任务)
+     */
+    private Integer isAddType;
+    /**
+     * 专题库名称
+     */
+    private String projectName;
+    /**
+     * 报告名称
+     */
+    private String reportName;
 
 
     //以下属性是两张表都没有的(值为:任务表使用的oldName、任务条件表由手动装载生成)
     //以下属性是两张表都没有的(值为:任务表使用的oldName、任务条件表由手动装载生成)
     /**
     /**

+ 14 - 3
PAS/src/main/java/cn/cslg/pas/common/model/vo/UploadParamsVO.java

@@ -93,6 +93,9 @@ public class UploadParamsVO {
      * 分类号关联
      * 分类号关联
      */
      */
     private String mainUpc;
     private String mainUpc;
+    /**
+     * 主分类号
+     */
     private String mainIpc;
     private String mainIpc;
     private List<String> cpcList;
     private List<String> cpcList;
     private List<String> locList;
     private List<String> locList;
@@ -118,14 +121,22 @@ public class UploadParamsVO {
     }
     }
 
 
     /**
     /**
-     * 专利摘要附图
+     * 专利摘要附图(用于Excel导入存放附图)
      */
      */
     private PictureData pictureData;
     private PictureData pictureData;
+    /**
+     * 摘要附图
+     */
+    private UploadFileDTO pictureFileDTO;
+    /**
+     * 说明书公开pdf文档
+     */
+    private UploadFileDTO pdf1FileDTO;
 
 
     /**
     /**
-     * 文件(说明书pdf/摘要附图)
+     * 说明书授权pdf文档
      */
      */
-    private UploadFileDTO fileDTO;
+    private UploadFileDTO pdf2FileDTO;
 
 
 
 
 }
 }

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

@@ -15,87 +15,125 @@ import java.util.List;
 @Data
 @Data
 public class StarPatentVO implements Serializable {
 public class StarPatentVO implements Serializable {
     /**
     /**
-     * 专利
+     * 原始申请
      */
      */
-    @JSONField(name = "PN")
-    private String patentNo;
-
+    @JSONField(name = "ANO")
+    private String rowApplicationNo;
     /**
     /**
-     * 公告号
+     * 专利类型(1和8为发明 2和9为新型 3为外观)
      */
      */
-    @JSONField(name = "GN")
-    private String announceNo;
-    /**
-     * 摘要
-     */
-    @JSONField(name = "AB")
-    private String abstractStr;
+    @JSONField(name = "PT")
+    private Integer patentType;
     /**
     /**
-     * 申请号
+     * 专利类型
      */
      */
-    @JSONField(name = "AN")
-    private String applicationNo;
+    private String type;
     /**
     /**
-     * 标题
+     * 申请人地址
      */
      */
-    @JSONField(name = "TI")
-    private String name;
+    @JSONField(name = "DZ")
+    private String applicationAddress;
     /**
     /**
-     * 申请日
+     * 主分类号
      */
      */
-    @JSONField(name = "AD")
-    private String applicationDate;
-    /**
-     * 申请人
-     */
-    @JSONField(name = "PA")
-    private String applicantStr;
+    @JSONField(name = "MC")
+    private String mainIpc;
     /**
     /**
      * IPC分类号
      * IPC分类号
      */
      */
     @JSONField(name = "IC")
     @JSONField(name = "IC")
     private String ipcListStr;
     private String ipcListStr;
     /**
     /**
-     * 陈宇 -> 公告日
+     * 公告日
      */
      */
     @JSONField(name = "GD")
     @JSONField(name = "GD")
     private String publicAccreditDate;
     private String publicAccreditDate;
     /**
     /**
-     * 公开日
+     * 摘要
      */
      */
-    @JSONField(name = "PD")
-    private String publicDate;
+    @JSONField(name = "AB")
+    private String abstractStr;
     /**
     /**
-     * 公开号
+     * 申请日
      */
      */
-    @JSONField(name = "PN")
-    private String publicNo;
+    @JSONField(name = "AD")
+    private String applicationDate;
     /**
     /**
      * 发明人
      * 发明人
      */
      */
     @JSONField(name = "IN")
     @JSONField(name = "IN")
     private String inventorStr;
     private String inventorStr;
-    private List<PatentInventor> inventor;
     /**
     /**
-     * 权利人
+     * 专利号
      */
      */
-    @JSONField(name = "PE")
-    private String currentApplicantStr;
+    private String patentNo;
+    /**
+     * 公告号
+     */
+    @JSONField(name = "GN")
+    private String publicAccreditNo;
     /**
     /**
      * 代理机构
      * 代理机构
      */
      */
     @JSONField(name = "AGN")
     @JSONField(name = "AGN")
     private String agencyStr;
     private String agencyStr;
     /**
     /**
+     * 申请号
+     */
+    @JSONField(name = "AN")
+    private String applicationNo;
+    /**
+     * 申请人
+     */
+    @JSONField(name = "PA")
+    private String applicantStr;
+    /**
      * 代理人
      * 代理人
      */
      */
     @JSONField(name = "AT")
     @JSONField(name = "AT")
     private String agentStr;
     private String agentStr;
     /**
     /**
+     * 公开日
+     */
+    @JSONField(name = "PD")
+    private String publicDate;
+    /**
+     * 标题
+     */
+    @JSONField(name = "TI")
+    private String name;
+    /**
+     * 权利人
+     */
+    @JSONField(name = "PE")
+    private String currentApplicantStr;
+    /**
      * 法律状态
      * 法律状态
      */
      */
     @JSONField(name = "LG")
     @JSONField(name = "LG")
     private Integer 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<String> ipcList;
     private List<PatentApplicant> applicant;
     private List<PatentApplicant> applicant;
     private PatentAgency agency;
     private PatentAgency agency;

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

@@ -1,13 +1,17 @@
 package cn.cslg.pas.common.utils;
 package cn.cslg.pas.common.utils;
 
 
-import cn.hutool.core.date.DateTime;
+
 import cn.hutool.core.date.DateUtil;
 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.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
 
 
 import java.lang.management.ManagementFactory;
 import java.lang.management.ManagementFactory;
 import java.text.ParseException;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.text.SimpleDateFormat;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.*;
 import java.util.regex.Pattern;
 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 - 8
PAS/src/main/java/cn/cslg/pas/common/utils/PatentRightUtils.java

@@ -28,19 +28,19 @@ public class PatentRightUtils {
             //译文
             //译文
             String contentOut = params.getContentOut();
             String contentOut = params.getContentOut();
 
 
-            //创建一个权要集合
+            //创建一个权要集合用于返回结果
             ArrayList<PatentRight> patentRights = new ArrayList<>();
             ArrayList<PatentRight> patentRights = new ArrayList<>();
 
 
-            //若原文为null或空串,则直接结束并返回空集合;若译文为null,则置为空串
+            //若原文为null或空串,则直接结束并返回空集合;
             if (content == null || content.equals("")) {
             if (content == null || content.equals("")) {
                 return patentRights;
                 return patentRights;
             }
             }
-
+            //若译文为null,则置为空串
             if (contentOut == null) {
             if (contentOut == null) {
                 contentOut = "";
                 contentOut = "";
             }
             }
 
 
-            //将原文和译文的所有换行符 "\r\n"或是"\n" 替换成 "@",这样首先可以使得全文连在一起,其次再根据特殊符号@拆分权要
+            //将原文和译文的所有换行符 "\r\n"或是"\n" 替换成 "@"(先使得全文连在一起,再根据特殊符号@拆分权要)
             if (content.contains("\r\n")) {
             if (content.contains("\r\n")) {
                 content = content.replaceAll("\r\n", "@");
                 content = content.replaceAll("\r\n", "@");
             }
             }
@@ -62,13 +62,13 @@ public class PatentRightUtils {
             if (country.equals("CN") || country.equals("JP") || country.equals("KR") || content.contains("权利要求")) {
             if (country.equals("CN") || country.equals("JP") || country.equals("KR") || content.contains("权利要求")) {
                 String regex;
                 String regex;
                 if (content.contains("@2")) {
                 if (content.contains("@2")) {
-                    regex = "@[0-9]+";
+                    regex = "@[1-9]+";
                 } else if (content.contains("@[00")) {
                 } else if (content.contains("@[00")) {
                     regex = "@\\[[0-9]+]";
                     regex = "@\\[[0-9]+]";
                 } else if (content.contains("@請求項")) {
                 } else if (content.contains("@請求項")) {
-                    regex = "@【請求項[0-9]+】";
+                    regex = "@【請求項[1-9]+】";
                 } else if (content.contains("@청구항")) {
                 } else if (content.contains("@청구항")) {
-                    regex = "@청구항 [0-9]+";
+                    regex = "@청구항 [1-9]+";
                 } else {
                 } else {
                     regex = "";
                     regex = "";
                 }
                 }
@@ -184,7 +184,7 @@ public class PatentRightUtils {
 
 
                 String regex;
                 String regex;
                 if (content.contains("@")) {
                 if (content.contains("@")) {
-                    regex = "@[0-9]+";
+                    regex = "@[1-9]+";
                 } else if (content.contains("[001]")) {
                 } else if (content.contains("[001]")) {
                     regex = "\\[[0-9]+]";
                     regex = "\\[[0-9]+]";
                 } else {
                 } else {

+ 7 - 0
PAS/src/main/java/cn/cslg/pas/controller/CommonController.java

@@ -178,6 +178,13 @@ public class CommonController {
         return new ResponseEntity<>(new FileSystemResource(file), headers, status);
         return new ResponseEntity<>(new FileSystemResource(file), headers, status);
     }
     }
 
 
+    @PostMapping("downloadPartUrlFile")
+    @Operation(summary = "由报告系统下载接口调用获得本分析系统的文件夹层级路径")
+    public String downloadPartUrlFile(@RequestBody String url) {
+        String filePath = fileUtils.getSystemPath() + url;
+        return Response.success(filePath);
+    }
+
     @PostMapping("/upload/chunks")
     @PostMapping("/upload/chunks")
     @Operation(summary = "上传分片")
     @Operation(summary = "上传分片")
     public String uploadChunks(MultipartFile file, String md5, Integer index) throws IOException {
     public String uploadChunks(MultipartFile file, String md5, Integer index) throws IOException {

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

@@ -12,6 +12,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
 import java.io.IOException;
 import java.io.IOException;
+import java.sql.SQLException;
 
 
 /**
 /**
  * 获取专利之星专利某部分(如权要、说明书等一项)控制层
  * 获取专利之星专利某部分(如权要、说明书等一项)控制层
@@ -30,7 +31,7 @@ public class GetPatentStarPartController {
 
 
     @Operation(summary = "根据专利号或申请号获取专利指定部分项")
     @Operation(summary = "根据专利号或申请号获取专利指定部分项")
     @PostMapping("/getPatentPart")
     @PostMapping("/getPatentPart")
-    public String getPatentPart(@RequestBody GetPatentStarPartDTO getPatentStarPartDTO) throws IOException {
+    public String getPatentPart(@RequestBody GetPatentStarPartDTO getPatentStarPartDTO) throws IOException, SQLException {
         log.info("开始处理【根据专利号或申请号获取专利指定部分项】的请求,请求参数为:{}", getPatentStarPartDTO);
         log.info("开始处理【根据专利号或申请号获取专利指定部分项】的请求,请求参数为:{}", getPatentStarPartDTO);
 
 
         PatentDTO patentPart = getPatentStarPartService.getPatentPart(getPatentStarPartDTO);
         PatentDTO patentPart = getPatentStarPartService.getPatentPart(getPatentStarPartDTO);

+ 8 - 13
PAS/src/main/java/cn/cslg/pas/controller/PatentInstructionController.java

@@ -3,31 +3,28 @@ package cn.cslg.pas.controller;
 
 
 import cn.cslg.pas.common.core.annotation.Permission;
 import cn.cslg.pas.common.core.annotation.Permission;
 import cn.cslg.pas.common.core.base.Constants;
 import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.model.vo.PatentInstructionVO;
+import cn.cslg.pas.common.utils.FileUtils;
+import cn.cslg.pas.common.utils.Response;
 import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils;
 import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils;
 import cn.cslg.pas.common.utils.auth.checkAuth;
 import cn.cslg.pas.common.utils.auth.checkAuth;
 import cn.cslg.pas.domain.PatentInstruction;
 import cn.cslg.pas.domain.PatentInstruction;
 import cn.cslg.pas.service.PatentInstructionService;
 import cn.cslg.pas.service.PatentInstructionService;
-import cn.cslg.pas.service.TaskService;
-import cn.cslg.pas.common.utils.FileUtils;
-import cn.cslg.pas.common.utils.Response;
-import cn.cslg.pas.common.model.vo.PatentInstructionVO;
-import cn.dev33.satoken.stp.StpUtil;
-import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.io.IoUtil;
 import cn.hutool.core.io.IoUtil;
-import cn.hutool.core.util.IdUtil;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.context.annotation.Lazy;
-import org.springframework.web.bind.annotation.*;
-
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartFile;
 
 
 import javax.servlet.ServletOutputStream;
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.io.IOException;
-import java.util.Date;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -42,9 +39,7 @@ import java.util.Date;
 @RequestMapping(Constants.API_VERSION_V2 + "/patent/instruction")
 @RequestMapping(Constants.API_VERSION_V2 + "/patent/instruction")
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class PatentInstructionController {
 public class PatentInstructionController {
-
     private final PatentInstructionService patentInstructionService;
     private final PatentInstructionService patentInstructionService;
-    private final TaskService taskService;
     private final FileUtils fileUtils;
     private final FileUtils fileUtils;
     private final LoginUtils loginUtils;
     private final LoginUtils loginUtils;
 
 
@@ -92,7 +87,7 @@ public class PatentInstructionController {
                 response.setHeader("Content-Disposition", "attachment;filename=" + patentInstruction.getFileName());
                 response.setHeader("Content-Disposition", "attachment;filename=" + patentInstruction.getFileName());
                 ServletOutputStream out = response.getOutputStream();
                 ServletOutputStream out = response.getOutputStream();
 //                out.write(FileUtil.readBytes(fileUtils.getSystemPath(patentInstruction.getUrl())));
 //                out.write(FileUtil.readBytes(fileUtils.getSystemPath(patentInstruction.getUrl())));
-                String fil =fileUtils.getSystemPath()+patentInstruction.getUrl();
+                String fil = fileUtils.getSystemPath() + patentInstruction.getUrl();
                 out.write(FileUtil.readBytes(fil));
                 out.write(FileUtil.readBytes(fil));
                 IoUtil.close(out);
                 IoUtil.close(out);
             }
             }

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

@@ -122,11 +122,6 @@ public class ProjectImportController {
     @PostMapping("/importByNos")
     @PostMapping("/importByNos")
     @Operation(summary = "根据专利号导入专利到专题库或报告")
     @Operation(summary = "根据专利号导入专利到专题库或报告")
     public String importByNos(@RequestBody ProjectImportVO patentDTO) throws IOException {
     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()
         TaskAddNewDTO taskAddNewDTO = new TaskAddNewDTO()
                 .setProjectId(patentDTO.getProjectId())
                 .setProjectId(patentDTO.getProjectId())
                 .setReportId(patentDTO.getReportId())
                 .setReportId(patentDTO.getReportId())

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

@@ -61,19 +61,18 @@ public class TaskController {
         return Response.success("添加任务完成");
         return Response.success("添加任务完成");
     }
     }
 
 
-//    @PostMapping("/addPatentNoTask")
-//    @Operation(summary = "根据专利号导入专利任务")
-//    public String addPatentNoTask(@RequestBody TaskAddNewDTO taskAddNewDTO) throws IOException {
-//        uploadTaskService.addPatentNoTask(taskAddNewDTO);
-//        return Response.success();
-//    }
-
     @PostMapping("/queryTasks")
     @PostMapping("/queryTasks")
     @Operation(summary = "查询任务列表")
     @Operation(summary = "查询任务列表")
     public String queryTasks(@RequestBody QueryTaskDTO queryTaskDTO) throws IOException {
     public String queryTasks(@RequestBody QueryTaskDTO queryTaskDTO) throws IOException {
         return Response.success(taskService.queryTasks(queryTaskDTO));
         return Response.success(taskService.queryTasks(queryTaskDTO));
     }
     }
 
 
+    @GetMapping("/queryTaskById")
+    @Operation(summary = "根据id查询任务")
+    public String queryTaskByTaskId(Integer taskId) {
+        return Response.success(taskService.getById(taskId));
+    }
+
     @PostMapping("/queryQrtzTaskLogs")
     @PostMapping("/queryQrtzTaskLogs")
     @Operation(summary = "查询定时任务执行日志")
     @Operation(summary = "查询定时任务执行日志")
     public String queryQrtzTaskLogs(@RequestBody QueryQrtzTaskLogsDTO queryQrtzTaskLogsDTO) {
     public String queryQrtzTaskLogs(@RequestBody QueryQrtzTaskLogsDTO queryQrtzTaskLogsDTO) {

+ 6 - 2
PAS/src/main/java/cn/cslg/pas/controller/outApi/PatentStarController.java

@@ -3,6 +3,7 @@ package cn.cslg.pas.controller.outApi;
 import cn.cslg.pas.common.core.base.Constants;
 import cn.cslg.pas.common.core.base.Constants;
 import cn.cslg.pas.common.model.outApi.PatentStarListDto;
 import cn.cslg.pas.common.model.outApi.PatentStarListDto;
 import cn.cslg.pas.common.utils.Response;
 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.OAuth2Service;
 import cn.cslg.pas.service.outApi.PatentStarApiService;
 import cn.cslg.pas.service.outApi.PatentStarApiService;
 import cn.dev33.satoken.stp.StpUtil;
 import cn.dev33.satoken.stp.StpUtil;
@@ -27,6 +28,7 @@ public class PatentStarController {
 
 
     @PostMapping("/select")
     @PostMapping("/select")
     @Operation(summary = "一般检索接口")
     @Operation(summary = "一般检索接口")
+    @checkAuth(FunId = "/workspace/common/retrieval")
     public String getAreaList(@RequestBody @Validated PatentStarListDto patentStarListDto) throws IOException {
     public String getAreaList(@RequestBody @Validated PatentStarListDto patentStarListDto) throws IOException {
         Map<String, Object> map = patentStarApiService.patentStarSearchLocal(patentStarListDto);
         Map<String, Object> map = patentStarApiService.patentStarSearchLocal(patentStarListDto);
         return Response.success(map);
         return Response.success(map);
@@ -59,7 +61,8 @@ public class PatentStarController {
     @GetMapping("/getCnPdf")
     @GetMapping("/getCnPdf")
     @Operation(summary = "获得中国专利pdf全文")
     @Operation(summary = "获得中国专利pdf全文")
     public String getCnPdf(String appNo) throws IOException {
     public String getCnPdf(String appNo) throws IOException {
-        return patentStarApiService.getCnPdfApi(appNo);
+        String picUrl = patentStarApiService.getCnPdfApi(appNo);
+        return picUrl;
     }
     }
 
 
     @GetMapping("/getCnFullXml")
     @GetMapping("/getCnFullXml")
@@ -77,7 +80,8 @@ public class PatentStarController {
     @GetMapping("/getENBib")
     @GetMapping("/getENBib")
     @Operation(summary = "获得世界专利著录信息")
     @Operation(summary = "获得世界专利著录信息")
     public String getENBib(String patentNo) throws IOException {
     public String getENBib(String patentNo) throws IOException {
-        return Response.success(patentStarApiService.getENBibApi(patentNo));
+        String result = patentStarApiService.getENBibApi(patentNo);
+        return result;
     }
     }
 
 
     @GetMapping("/getFamilyByPubNo")
     @GetMapping("/getFamilyByPubNo")

+ 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;
+
+
+}

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

@@ -32,7 +32,7 @@ public class ImportTaskPatent extends BaseEntity<ImportTaskPatent> {
     @TableField("PATENT_NO")
     @TableField("PATENT_NO")
     private String patentNo;
     private String patentNo;
 
 
-
-
+    @TableField("REPORT_ID")
+    private Integer reportId;
 
 
 }
 }

+ 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;
+
+
+}

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

@@ -28,5 +28,9 @@ public class PQueueData implements Serializable {
      * 专利之星调用一般接口返回专利数据
      * 专利之星调用一般接口返回专利数据
      */
      */
     private StarPatentVO starPatent;
     private StarPatentVO starPatent;
+    /**
+     * 该专利检索专利之星接口次数(如权要或说明书第一次调用中国专利全文文本接口返回空,则num++,直到num为3)
+     */
+    private int callNum;
 
 
 }
 }

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

@@ -16,7 +16,6 @@ import lombok.Data;
 @Data
 @Data
 @TableName("os_patent")
 @TableName("os_patent")
 public class Patent extends BaseEntity<Patent> {
 public class Patent extends BaseEntity<Patent> {
-
     /**
     /**
      * 专利名称(标题)
      * 专利名称(标题)
      */
      */
@@ -100,7 +99,7 @@ public class Patent extends BaseEntity<Patent> {
     private Integer simpleStatus;
     private Integer simpleStatus;
 
 
     /**
     /**
-     * 专利类型【发明、新型、外观】
+     * 专利类型【1新型、2发明、3外观】
      */
      */
     private Integer type;
     private Integer type;
 
 

+ 13 - 11
PAS/src/main/java/cn/cslg/pas/domain/PatentInstruction.java

@@ -1,9 +1,12 @@
 package cn.cslg.pas.domain;
 package cn.cslg.pas.domain;
 
 
 import cn.cslg.pas.common.model.SuperEntity;
 import cn.cslg.pas.common.model.SuperEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 import lombok.Data;
 
 
+import javax.sql.rowset.serial.SerialBlob;
+
 /**
 /**
  * <p>
  * <p>
  * 专利说明书
  * 专利说明书
@@ -15,45 +18,44 @@ import lombok.Data;
 @Data
 @Data
 @TableName("os_patent_instruction")
 @TableName("os_patent_instruction")
 public class PatentInstruction extends SuperEntity<PatentInstruction> {
 public class PatentInstruction extends SuperEntity<PatentInstruction> {
-
     /**
     /**
-     * 附件名称
+     * 专利号
      */
      */
     private String patentNo;
     private String patentNo;
-
     /**
     /**
-     * 件上传地址
+     * 件上传地址
      */
      */
     private String url;
     private String url;
-
     /**
     /**
      * 专利ID
      * 专利ID
      */
      */
     private Integer patentId;
     private Integer patentId;
-
     /**
     /**
      * 备注
      * 备注
      */
      */
     private String remark;
     private String remark;
-
     /**
     /**
-     * 上传人
+     * 上传人id
      */
      */
     private Integer createBy;
     private Integer createBy;
-
     /**
     /**
      * 类型
      * 类型
      */
      */
     private Integer type;
     private Integer type;
-
     /**
     /**
      * 大小
      * 大小
      */
      */
     private Long size;
     private Long size;
-
     /**
     /**
      * 文件名称
      * 文件名称
      */
      */
     private String fileName;
     private String fileName;
 
 
+
+    /**
+     * 文件流
+     */
+    @TableField(exist = false)
+    private String pictureStringData;
+
 }
 }

+ 22 - 3
PAS/src/main/java/cn/cslg/pas/domain/PatentSimpleFamilyLink.java

@@ -1,6 +1,7 @@
 package cn.cslg.pas.domain;
 package cn.cslg.pas.domain;
 
 
 import cn.cslg.pas.common.model.BaseEntity;
 import cn.cslg.pas.common.model.BaseEntity;
+import com.alibaba.fastjson.annotation.JSONField;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 import lombok.Data;
@@ -30,13 +31,31 @@ public class PatentSimpleFamilyLink extends BaseEntity<PatentSimpleFamilyLink> {
 
 
     @TableField(exist = false)
     @TableField(exist = false)
     private String name;
     private String name;
-
     @TableField(exist = false)
     @TableField(exist = false)
     private List<PatentApplicant> applicant;
     private List<PatentApplicant> applicant;
-
     @TableField(exist = false)
     @TableField(exist = false)
     private String abstractPath;
     private String abstractPath;
-
     @TableField(exist = false)
     @TableField(exist = false)
     private Integer patentId;
     private Integer patentId;
+    /**
+     * 公开号
+     */
+    @TableField(exist = false)
+    private String publicNo;
+    /**
+     * 申请号
+     */
+    @TableField(exist = false)
+    private String applicationNo;
+    /**
+     * 公开日
+     */
+    @TableField(exist = false)
+    private String publicDate;
+    /**
+     * 公告日
+     */
+    @TableField(exist = false)
+    private String publicAccreditDate;
+
 }
 }

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

@@ -35,9 +35,14 @@ public class QuestionRecord implements Serializable {
     @TableField(value = "task_id")
     @TableField(value = "task_id")
     private Integer taskId;
     private Integer taskId;
     /**
     /**
-     * 失败字段
+     * 失败字段(1著录 2权要 3说明书文本 4说明书pdf 5摘要附图)
      */
      */
     @TableField(value = "cell")
     @TableField(value = "cell")
     private Integer cell;
     private Integer cell;
+    /**
+     * 备注
+     */
+    @TableField(value = "remark")
+    private String remark;
 
 
 }
 }

+ 16 - 6
PAS/src/main/java/cn/cslg/pas/domain/Task.java

@@ -23,7 +23,7 @@ import java.util.List;
 public class Task extends BaseEntity<Task> {
 public class Task extends BaseEntity<Task> {
 
 
     /**
     /**
-     * 任务类型 1.Excel导入 2.导出 3.EPO欧专局导入 4.专利之星导入
+     * 任务类型 1.Excel导入 2.导出 3.EPO欧专局导入 4.专利之星导入 5.专利号导入
      */
      */
     @TableField("type")
     @TableField("type")
     private Integer type;
     private Integer type;
@@ -52,6 +52,11 @@ public class Task extends BaseEntity<Task> {
     private Integer reportId;
     private Integer reportId;
 
 
     /**
     /**
+     * 是否作为对比文件
+     */
+    @TableField("as_compare")
+    private Integer asCompare;
+    /**
      * 导入导出字段数量
      * 导入导出字段数量
      */
      */
     @TableField("mfields")
     @TableField("mfields")
@@ -101,11 +106,6 @@ public class Task extends BaseEntity<Task> {
     @TableField("default_num")
     @TableField("default_num")
     private Integer defaultNum;
     private Integer defaultNum;
     /**
     /**
-     * 生产过程中出错抛异常的专利数量
-     */
-    @TableField(exist = false)
-    private int exceptionNum;
-    /**
      * 自定义字段文件夹信息json格式
      * 自定义字段文件夹信息json格式
      */
      */
     @TableField("pram_json")
     @TableField("pram_json")
@@ -199,5 +199,15 @@ public class Task extends BaseEntity<Task> {
      */
      */
     @TableField(exist = false)
     @TableField(exist = false)
     private String conditions;
     private String conditions;
+    /**
+     * 上一次遍历位置信息(检索式下标|检索页数下标|检索专利下标)
+     */
+    @TableField(exist = false)
+    private String continueLastInformation;
+    /**
+     * isAddPatentNos中的多个专利或申请号的下载任务类型(1.检索页面手动勾选的专利下载任务 2.多个专利号导入的下载任务)
+     */
+    @TableField(exist = false)
+    private Integer isAddType;
 
 
 }
 }

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

@@ -35,5 +35,9 @@ public class WebLoginConfig implements Serializable {
     @TableField(value = "web_Id")
     @TableField(value = "web_Id")
     private Integer webId;
     private Integer webId;
 
 
+    @TableField(value = "web_config")
+    private String webConfig;
+    @TableField(value = "web_group")
+    private Integer webGroup;
 
 
 }
 }

+ 99 - 0
PAS/src/main/java/cn/cslg/pas/domain/WorldPatentZhuLu.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/7/19
+ */
+@Accessors(chain = true)
+@Data
+public class WorldPatentZhuLu implements Serializable {
+    /**
+     * 公开号(DocDB)
+     */
+    private String DocdbPubNo;
+    /**
+     * 申请号(Epo)
+     */
+    private String EpoAppNo;
+    /**
+     * 申请日
+     */
+    private String AppDate;
+    /**
+     * 公开日
+     */
+    private String PubDate;
+    /**
+     * IPC分类号
+     */
+    private String Ipc;
+    /**
+     * CPC分类号
+     */
+    private String cpc;
+    /**
+     * ECLA分类号
+     */
+    private String Ecla;
+    /**
+     * 申请人
+     */
+    private String Pa;
+    /**
+     * 申请人国别
+     */
+    private String PaAllCountry;
+    /**
+     * 发明人
+     */
+    private String Iv;
+    /**
+     * 发明人国别
+     */
+    private String IvAllCountry;
+    /**
+     * 引用文献号
+     */
+    private String Patcit;
+    /**
+     * 公开号(Original)
+     */
+    private String OriPubNo;
+    /**
+     * 申请号(Original)
+     */
+    private String OriAppNo;
+    /**
+     * 申请号(DocDB)
+     */
+    private String DocdbAppNo;
+    /**
+     * 公开号(EPO)
+     */
+    private String EpoPubNo;
+    /**
+     * 优先权
+     */
+    private String Pr;
+    /**
+     * 简单同族docdb
+     */
+    private String DocdbFamily;
+    /**
+     * 标题
+     */
+    private String Title;
+    /**
+     * 摘要
+     */
+    private String Abstract;
+
+
+}

+ 10 - 0
PAS/src/main/java/cn/cslg/pas/domain/asso/TaskCondition.java

@@ -106,5 +106,15 @@ public class TaskCondition implements Serializable {
      */
      */
     @TableField(value = "isdelete_patentnos")
     @TableField(value = "isdelete_patentnos")
     private String isDeletePatentNos;
     private String isDeletePatentNos;
+    /**
+     * 上一次遍历位置信息(检索式下标|检索页数下标|检索专利下标)
+     */
+    @TableField(value = "continue_last_information")
+    private String continueLastInformation;
+    /**
+     * isAddPatentNos中的多个专利或申请号的下载任务类型(1.检索页面手动勾选的专利下载任务 2.多个专利号导入的下载任务)
+     */
+    @TableField(value = "isadd_type")
+    private Integer isAddType;
 
 
 }
 }

+ 20 - 2
PAS/src/main/java/cn/cslg/pas/service/OutInterfaceService.java

@@ -199,17 +199,35 @@ public class OutInterfaceService {
         return Objects.requireNonNull(httpClient.newCall(request).execute().body()).string();
         return Objects.requireNonNull(httpClient.newCall(request).execute().body()).string();
     }
     }
 
 
-    public String importAssoReportPatentNo(Integer reportId, String patentNo,String name) throws IOException {
+    public String importAssoReportPatentNo(Integer reportId, String patentNo,String name,Integer asCompare) throws IOException {
+        if(asCompare==null){
+            asCompare=0;
+        }
         OkHttpClient httpClient = new OkHttpClient.Builder()
         OkHttpClient httpClient = new OkHttpClient.Builder()
                 .pingInterval(400, TimeUnit.SECONDS) // 设置 PING 帧发送间隔
                 .pingInterval(400, TimeUnit.SECONDS) // 设置 PING 帧发送间隔
                 .connectTimeout(300, TimeUnit.SECONDS)//设置连接超时时间
                 .connectTimeout(300, TimeUnit.SECONDS)//设置连接超时时间
                 .readTimeout(300, TimeUnit.SECONDS)//设置读取超时时间
                 .readTimeout(300, TimeUnit.SECONDS)//设置读取超时时间
                 .build();
                 .build();
         Request request = new Request.Builder()
         Request request = new Request.Builder()
-                .url(RMSUrl + "/api/report/api/compare/addSingle?reportId=" + reportId + "&patentNo=" + patentNo+"&name="+name)
+                .url(RMSUrl + "/api/report/api/compare/addSingle?reportId=" + reportId + "&patentNo=" + patentNo+"&name="+name+"&asCompare="+asCompare)
                 .get()
                 .get()
                 .build();
                 .build();
         return Objects.requireNonNull(httpClient.newCall(request).execute().body()).string();
         return Objects.requireNonNull(httpClient.newCall(request).execute().body()).string();
     }
     }
 
 
+    public String getReportsFromRMS(List<Integer> reportIds) throws IOException {
+        String param = new Gson().toJson(reportIds);
+        RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), param);
+        OkHttpClient httpClient = new OkHttpClient.Builder()
+                .pingInterval(400, TimeUnit.SECONDS) // 设置 PING 帧发送间隔
+                .connectTimeout(300, TimeUnit.SECONDS)//设置连接超时时间
+                .readTimeout(300, TimeUnit.SECONDS)//设置读取超时时间
+                .build();
+        Request request = new Request.Builder()
+                .url(RMSUrl + "/api/report/api/report/getReportsByIds")
+                .post(requestBody)
+                .build();
+        return Objects.requireNonNull(httpClient.newCall(request).execute().body()).string();
+    }
+
 }
 }

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

@@ -230,6 +230,8 @@ public class PatentFieldService {
             add(new PatentField("quotedNum", "被引用数量", Constants.SYSTEM_FIELD_PATENT_LIST, 25));
             add(new PatentField("quotedNum", "被引用数量", Constants.SYSTEM_FIELD_PATENT_LIST, 25));
             add(new PatentField("agency", "代理机构", Constants.SYSTEM_FIELD_PATENT_LIST, 26));
             add(new PatentField("agency", "代理机构", Constants.SYSTEM_FIELD_PATENT_LIST, 26));
             add(new PatentField("agent", "代理人", Constants.SYSTEM_FIELD_PATENT_LIST, 27));
             add(new PatentField("agent", "代理人", Constants.SYSTEM_FIELD_PATENT_LIST, 27));
+            add(new PatentField("publicAccreditNo", "授权号", Constants.SYSTEM_FIELD_PATENT_LIST, 28));
+            add(new PatentField("publicNo", "公开号", Constants.SYSTEM_FIELD_PATENT_LIST, 29));
             add(new PatentField("clientName", "委托方", Constants.SYSTEM_FIELD_PROJECT, 1));
             add(new PatentField("clientName", "委托方", Constants.SYSTEM_FIELD_PROJECT, 1));
             add(new PatentField("scenarioid", "应用场景", Constants.SYSTEM_FIELD_PROJECT, 1));
             add(new PatentField("scenarioid", "应用场景", Constants.SYSTEM_FIELD_PROJECT, 1));
             add(new PatentField("typeid", "调查类型", Constants.SYSTEM_FIELD_PROJECT, 1));
             add(new PatentField("typeid", "调查类型", Constants.SYSTEM_FIELD_PROJECT, 1));

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

@@ -99,8 +99,8 @@ public class PatentImageService extends ServiceImpl<PatentImageMapper, PatentIma
         PatentImage patentImage = new PatentImage();
         PatentImage patentImage = new PatentImage();
         patentImage.setStatus(1);
         patentImage.setStatus(1);
         patentImage.setPatentId(uploadParamsVO.getPatent().getId());
         patentImage.setPatentId(uploadParamsVO.getPatent().getId());
-        patentImage.setUrl(uploadParamsVO.getFileDTO().getPath());
-        patentImage.setFileName(uploadParamsVO.getFileDTO().getFileName());
+        patentImage.setUrl(uploadParamsVO.getPictureFileDTO().getPath());
+        patentImage.setFileName(uploadParamsVO.getPictureFileDTO().getFileName());
         //数据入库
         //数据入库
         patentImage.insert();
         patentImage.insert();
         return patentImage.getUrl();
         return patentImage.getUrl();

+ 77 - 13
PAS/src/main/java/cn/cslg/pas/service/PatentInstructionService.java

@@ -1,18 +1,14 @@
 package cn.cslg.pas.service;
 package cn.cslg.pas.service;
 
 
 
 
+import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.model.dto.UploadFileDTO;
+import cn.cslg.pas.common.model.vo.PatentInstructionVO;
 import cn.cslg.pas.common.utils.*;
 import cn.cslg.pas.common.utils.*;
 import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils;
 import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils;
 import cn.cslg.pas.domain.Patent;
 import cn.cslg.pas.domain.Patent;
-import cn.cslg.pas.domain.PatentImage;
 import cn.cslg.pas.domain.PatentInstruction;
 import cn.cslg.pas.domain.PatentInstruction;
-import cn.cslg.pas.domain.ProjectFile;
 import cn.cslg.pas.mapper.PatentInstructionMapper;
 import cn.cslg.pas.mapper.PatentInstructionMapper;
-import cn.cslg.pas.common.core.base.Constants;
-import cn.cslg.pas.common.core.base.EStatus;
-import cn.cslg.pas.common.model.dto.UploadFileDTO;
-import cn.cslg.pas.common.model.vo.PatentInstructionVO;
-import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.ZipUtil;
 import cn.hutool.core.util.ZipUtil;
@@ -30,7 +26,6 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartFile;
 
 
 import java.io.File;
 import java.io.File;
-import java.io.FileOutputStream;
 import java.util.*;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
@@ -45,10 +40,7 @@ import java.util.stream.Collectors;
 @Service
 @Service
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 @RequiredArgsConstructor(onConstructor_ = {@Lazy})
 public class PatentInstructionService extends ServiceImpl<PatentInstructionMapper, PatentInstruction> {
 public class PatentInstructionService extends ServiceImpl<PatentInstructionMapper, PatentInstruction> {
-
     private final FileUtils fileUtils;
     private final FileUtils fileUtils;
-    private final PatentService patentService;
-    private final ProjectFileService projectFileService;
     private final LoginUtils loginUtils;
     private final LoginUtils loginUtils;
 
 
     public IPage<PatentInstruction> getPageList(PatentInstructionVO params) {
     public IPage<PatentInstruction> getPageList(PatentInstructionVO params) {
@@ -84,7 +76,7 @@ public class PatentInstructionService extends ServiceImpl<PatentInstructionMappe
     public PatentInstruction getPatentInstructionByPatentNoAndType(String patentNo, Integer type) {
     public PatentInstruction getPatentInstructionByPatentNoAndType(String patentNo, Integer type) {
         LambdaQueryWrapper<PatentInstruction> queryWrapper = new LambdaQueryWrapper<>();
         LambdaQueryWrapper<PatentInstruction> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(PatentInstruction::getType, type);
         queryWrapper.eq(PatentInstruction::getType, type);
-        queryWrapper.eq(PatentInstruction::getPatentNo, patentNo);
+        queryWrapper.eq(PatentInstruction::getPatentNo, patentNo).last("Limit 1");
         return this.getOne(queryWrapper);
         return this.getOne(queryWrapper);
     }
     }
 
 
@@ -170,13 +162,85 @@ public class PatentInstructionService extends ServiceImpl<PatentInstructionMappe
      */
      */
     @Transactional
     @Transactional
     public String edit(String patentNo, UploadFileDTO pdf) {
     public String edit(String patentNo, UploadFileDTO pdf) {
+        //先把实体类对象赋好值
         PatentInstruction patentInstruction = new PatentInstruction();
         PatentInstruction patentInstruction = new PatentInstruction();
         patentInstruction.setUrl(pdf.getPath());
         patentInstruction.setUrl(pdf.getPath());
         patentInstruction.setFileName(pdf.getFileName());
         patentInstruction.setFileName(pdf.getFileName());
         patentInstruction.setSize(pdf.getFileSize());
         patentInstruction.setSize(pdf.getFileSize());
         patentInstruction.setPatentNo(patentNo);
         patentInstruction.setPatentNo(patentNo);
         patentInstruction.setType(1);
         patentInstruction.setType(1);
-        patentInstruction.insert();
+
+        //根据专利号和pdf类型(1公开 2授权)查询该专利号是否已有公开的pdf
+        List<PatentInstruction> patentInstructions = this.list(new LambdaQueryWrapper<PatentInstruction>().eq(PatentInstruction::getPatentNo, patentNo).eq(PatentInstruction::getType, 1));
+        if (patentInstructions != null && patentInstructions.size() > 0) {  //若有则更新
+            patentInstruction.setId(patentInstructions.get(0).getId());
+            this.updateById(patentInstruction);
+        } else {  //若没有则新增
+            this.save(patentInstruction);
+        }
+
+        return Response.success(true);
+    }
+
+    @Transactional
+    public String edit2(String patentNo, UploadFileDTO pdf2) {
+        //先把实体类对象赋好值
+        PatentInstruction patentInstruction = new PatentInstruction();
+        patentInstruction.setUrl(pdf2.getPath());
+        patentInstruction.setFileName(pdf2.getFileName());
+        patentInstruction.setSize(pdf2.getFileSize());
+        patentInstruction.setPatentNo(patentNo);
+        patentInstruction.setType(2);
+
+        //根据专利号和pdf类型(1公开 2授权)查询该专利号是否已有公开的pdf
+        List<PatentInstruction> patentInstructions = this.list(new LambdaQueryWrapper<PatentInstruction>().eq(PatentInstruction::getPatentNo, patentNo).eq(PatentInstruction::getType, 2));
+        //若有则更新
+        if (patentInstructions != null && patentInstructions.size() > 0) {
+            patentInstruction.setId(patentInstructions.get(0).getId());
+            this.updateById(patentInstruction);
+        } else {  //若没有则新增
+            this.save(patentInstruction);
+        }
+
+        return Response.success(true);
+    }
+
+    @Transactional
+    public String edit12(String patentNo, UploadFileDTO pdf1, UploadFileDTO pdf2) {
+        //处理公开pdf文档(更新或新增)
+        PatentInstruction patentInstruction1 = new PatentInstruction();
+        patentInstruction1.setUrl(pdf1.getPath());
+        patentInstruction1.setFileName(pdf1.getFileName());
+        patentInstruction1.setSize(pdf1.getFileSize());
+        patentInstruction1.setPatentNo(patentNo);
+        patentInstruction1.setType(1);
+        //先查询库中是否已有该专利号的公开pdf文档
+        List<PatentInstruction> patentInstructions1 = this.list(new LambdaQueryWrapper<PatentInstruction>().eq(PatentInstruction::getPatentNo, patentNo).eq(PatentInstruction::getType, 1));
+        //若有则更新
+        if (patentInstructions1 != null && patentInstructions1.size() > 0) {
+            patentInstruction1.setId(patentInstructions1.get(0).getId());
+            this.updateById(patentInstruction1);
+        } else {  //若没有则新增
+            this.save(patentInstruction1);
+        }
+
+        //处理授权pdf文档(更新或新增)
+        PatentInstruction patentInstruction2 = new PatentInstruction();
+        patentInstruction2.setUrl(pdf2.getPath());
+        patentInstruction2.setFileName(pdf2.getFileName());
+        patentInstruction2.setSize(pdf2.getFileSize());
+        patentInstruction2.setPatentNo(patentNo);
+        patentInstruction2.setType(2);
+        //再查询库中是否已有该专利号的授权pdf文档
+        List<PatentInstruction> patentInstructions2 = this.list(new LambdaQueryWrapper<PatentInstruction>().eq(PatentInstruction::getPatentNo, patentNo).eq(PatentInstruction::getType, 2));
+        //若有则更新
+        if (patentInstructions2 != null && patentInstructions2.size() > 0) {
+            patentInstruction2.setId(patentInstructions2.get(0).getId());
+            this.updateById(patentInstruction2);
+        } else {  //若没有则新增
+            this.save(patentInstruction2);
+        }
+
         return Response.success(true);
         return Response.success(true);
     }
     }
 
 

+ 35 - 7
PAS/src/main/java/cn/cslg/pas/service/PatentRightService.java

@@ -32,6 +32,9 @@ public class PatentRightService extends ServiceImpl<PatentRightMapper, PatentRig
 
 
     public List<PatentRight> getPatentRightByPatentNo(String patentNo) {
     public List<PatentRight> getPatentRightByPatentNo(String patentNo) {
         Patent patent = patentService.getByPatentNo(patentNo);
         Patent patent = patentService.getByPatentNo(patentNo);
+        if(patent==null){
+            patent =new Patent();
+        }
         LambdaQueryWrapper<PatentRight> queryWrapper = new LambdaQueryWrapper<>();
         LambdaQueryWrapper<PatentRight> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(PatentRight::getPatentId, patent.getId());
         queryWrapper.eq(PatentRight::getPatentId, patent.getId());
         queryWrapper.orderByAsc(PatentRight::getSort);
         queryWrapper.orderByAsc(PatentRight::getSort);
@@ -42,6 +45,18 @@ public class PatentRightService extends ServiceImpl<PatentRightMapper, PatentRig
         LambdaQueryWrapper<PatentRight> queryWrapper = new LambdaQueryWrapper<>();
         LambdaQueryWrapper<PatentRight> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(PatentRight::getPatentId, patentId);
         queryWrapper.eq(PatentRight::getPatentId, patentId);
         queryWrapper.orderByAsc(PatentRight::getSort);
         queryWrapper.orderByAsc(PatentRight::getSort);
+        List<PatentRight> patentRights = this.list(queryWrapper);
+        if (patentRights != null && patentRights.size() > 0) {
+            PatentRight patentRight = patentRights.get(0);
+            //创建PatentRightParams对象保存权要基本信息
+            PatentRightParams patentRightParams = new PatentRightParams();
+            patentRightParams.setPatentId(patentId);  //装载专利id
+            patentRightParams.setPatentNo(patentService.getById(patentId).getPatentNo());
+            patentRightParams.setContent(patentRight.getContent());  //装载权利要求原文
+            patentRightParams.setContentOut(patentRight.getContentOut());  //装载权利要求译文
+            patentRights = PatentRightUtils.formatPatentRight(patentRightParams);
+            return patentRights;
+        }
         return this.list(queryWrapper);
         return this.list(queryWrapper);
     }
     }
 
 
@@ -435,13 +450,26 @@ public class PatentRightService extends ServiceImpl<PatentRightMapper, PatentRig
     public void updatePatentRight(PatentRightParams params) {
     public void updatePatentRight(PatentRightParams params) {
         try {
         try {
             //调用拆分权要工具类
             //调用拆分权要工具类
-            List<PatentRight> patentRights = PatentRightUtils.formatPatentRight(params);
-
-            if (patentRights.size() > 0) {
-                //删除库表中原有该权要
-                this.deleteByPatentId(params.getPatentId());
-                //权要数据入表"os_patent_right"
-                this.saveOrUpdateBatch(patentRights);
+//            List<PatentRight> patentRights = PatentRightUtils.formatPatentRight(params);
+//
+//            if (patentRights.size() > 0) {
+//                //删除库表中原有该权要
+//                this.deleteByPatentId(params.getPatentId());
+//                //权要数据入表"os_patent_right"
+//                this.saveOrUpdateBatch(patentRights);
+//            }
+
+            //不进行拆分,原文直接保存入库
+            PatentRight patentRight = new PatentRight()
+                    .setPatentId(params.getPatentId())
+                    .setContent(params.getContent())
+                    .setContentOut(params.getContentOut());
+            //.setType(1)
+            //.setSort(0)
+            //.setParentSort("-1");
+            if (patentRight.getContent() != null && !patentRight.getContent().equals("")) {
+                this.deleteByPatentId(patentRight.getPatentId());
+                this.saveOrUpdate(patentRight);
             }
             }
 
 
         } catch (Exception e) {
         } catch (Exception e) {

+ 17 - 3
PAS/src/main/java/cn/cslg/pas/service/PatentService.java

@@ -108,7 +108,17 @@ public class PatentService extends ServiceImpl<PatentMapper, Patent> {
     public Patent getByPatentNo(String patentNo) {
     public Patent getByPatentNo(String patentNo) {
         LambdaQueryWrapper<Patent> queryWrapper = new LambdaQueryWrapper<>();
         LambdaQueryWrapper<Patent> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(Patent::getPatentNo, patentNo);
         queryWrapper.eq(Patent::getPatentNo, patentNo);
-        return this.getOne(queryWrapper);
+        if(patentNo.contains("CN")){
+            queryWrapper.or().eq(Patent::getPublicNo,patentNo)
+                    .or().eq(Patent::getPublicAccreditNo,patentNo);
+        }
+        queryWrapper.orderByDesc(Patent::getId);
+      List<Patent> patents = this.list(queryWrapper);
+        Patent patent =null;
+        if(patents.size()>0){
+            patent =patents.get(0);
+        }
+        return patent;
     }
     }
 
 
     public List<Patent> getPublicDateAndPatentNoByPatentNo(List<String> patentNo) {
     public List<Patent> getPublicDateAndPatentNoByPatentNo(List<String> patentNo) {
@@ -460,6 +470,7 @@ public class PatentService extends ServiceImpl<PatentMapper, Patent> {
             patentDTO.setPriorityDate(DateUtils.formatDate(item.getPriorityDate(), DateUtils.YYYY_MM_DD));
             patentDTO.setPriorityDate(DateUtils.formatDate(item.getPriorityDate(), DateUtils.YYYY_MM_DD));
             patentDTO.setPublicDate(DateUtils.formatDate(item.getPublicDate(), DateUtils.YYYY_MM_DD));
             patentDTO.setPublicDate(DateUtils.formatDate(item.getPublicDate(), DateUtils.YYYY_MM_DD));
             patentDTO.setPublicAccreditDate(DateUtils.formatDate(item.getPublicAccreditDate(), DateUtils.YYYY_MM_DD));
             patentDTO.setPublicAccreditDate(DateUtils.formatDate(item.getPublicAccreditDate(), DateUtils.YYYY_MM_DD));
+            patentDTO.setPublicAccreditNo(item.getPublicAccreditNo());
             patentDTO.setFirstPublicDate(DateUtils.formatDate(item.getFirstPublicDate(), DateUtils.YYYY_MM_DD));
             patentDTO.setFirstPublicDate(DateUtils.formatDate(item.getFirstPublicDate(), DateUtils.YYYY_MM_DD));
             patentDTO.setSimpleStatus(systemDictList.stream().filter(systemDict -> systemDict.getType().equals(Constants.PATENT_SIMPLE_STATUS) && systemDict.getValue().equals(String.valueOf(item.getSimpleStatus()))).findFirst().orElse(new SystemDict()).getLabel());
             patentDTO.setSimpleStatus(systemDictList.stream().filter(systemDict -> systemDict.getType().equals(Constants.PATENT_SIMPLE_STATUS) && systemDict.getValue().equals(String.valueOf(item.getSimpleStatus()))).findFirst().orElse(new SystemDict()).getLabel());
             patentDTO.setType(systemDictList.stream().filter(systemDict -> systemDict.getType().equals(Constants.PATENT_TYPE) && systemDict.getValue().equals(String.valueOf(item.getType()))).findFirst().orElse(new SystemDict()).getLabel());
             patentDTO.setType(systemDictList.stream().filter(systemDict -> systemDict.getType().equals(Constants.PATENT_TYPE) && systemDict.getValue().equals(String.valueOf(item.getType()))).findFirst().orElse(new SystemDict()).getLabel());
@@ -759,6 +770,10 @@ public class PatentService extends ServiceImpl<PatentMapper, Patent> {
     public PatentDTO getPatentDTOById(String patentNo, Integer projectId) {
     public PatentDTO getPatentDTOById(String patentNo, Integer projectId) {
         LambdaQueryWrapper<Patent> wrapper = new LambdaQueryWrapper<>();
         LambdaQueryWrapper<Patent> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(Patent::getPatentNo, patentNo);
         wrapper.eq(Patent::getPatentNo, patentNo);
+        if(patentNo.contains("CN")){
+            wrapper.or().eq(Patent::getPublicNo,patentNo)
+                    .or().eq(Patent::getPublicAccreditNo,patentNo);
+        }
         List<Patent> patents = this.list(wrapper);
         List<Patent> patents = this.list(wrapper);
         PatentDTO patentDTO = new PatentDTO();
         PatentDTO patentDTO = new PatentDTO();
         //如果未查出专利则返回为空
         //如果未查出专利则返回为空
@@ -767,11 +782,9 @@ public class PatentService extends ServiceImpl<PatentMapper, Patent> {
         }
         }
         Patent patent = patents.get(0);
         Patent patent = patents.get(0);
 
 
-
         BeanUtils.copyProperties(patent, patentDTO);
         BeanUtils.copyProperties(patent, patentDTO);
         List<SystemDict> systemDictList = systemDictService.getSystemDictListByType(Arrays.asList(Constants.PATENT_TYPE, Constants.PATENT_SIMPLE_STATUS, Constants.COUNTRIES));
         List<SystemDict> systemDictList = systemDictService.getSystemDictListByType(Arrays.asList(Constants.PATENT_TYPE, Constants.PATENT_SIMPLE_STATUS, Constants.COUNTRIES));
         List<PatentClassNumberLink> patentClassNumberLinkList = patentClassNumberLinkService.getPatentClassNumberLinkByPatentIds(Collections.singletonList(patent.getId()));
         List<PatentClassNumberLink> patentClassNumberLinkList = patentClassNumberLinkService.getPatentClassNumberLinkByPatentIds(Collections.singletonList(patent.getId()));
-
         if (patent.getPriorityNo() != null) {
         if (patent.getPriorityNo() != null) {
             patentDTO.setPriorityNo(patent.getPriorityNo());
             patentDTO.setPriorityNo(patent.getPriorityNo());
         } else {
         } else {
@@ -826,6 +839,7 @@ public class PatentService extends ServiceImpl<PatentMapper, Patent> {
         patentDTO.setPriorityDate(DateUtils.formatDate(patent.getPriorityDate(), DateUtils.YYYY_MM_DD));
         patentDTO.setPriorityDate(DateUtils.formatDate(patent.getPriorityDate(), DateUtils.YYYY_MM_DD));
         patentDTO.setPublicDate(DateUtils.formatDate(patent.getPublicDate(), DateUtils.YYYY_MM_DD));
         patentDTO.setPublicDate(DateUtils.formatDate(patent.getPublicDate(), DateUtils.YYYY_MM_DD));
         patentDTO.setPublicAccreditDate(DateUtils.formatDate(patent.getPublicAccreditDate(), DateUtils.YYYY_MM_DD));
         patentDTO.setPublicAccreditDate(DateUtils.formatDate(patent.getPublicAccreditDate(), DateUtils.YYYY_MM_DD));
+        patentDTO.setPublicAccreditNo(patent.getPublicAccreditNo());
         patentDTO.setFirstPublicDate(DateUtils.formatDate(patent.getFirstPublicDate(), DateUtils.YYYY_MM_DD));
         patentDTO.setFirstPublicDate(DateUtils.formatDate(patent.getFirstPublicDate(), DateUtils.YYYY_MM_DD));
         patentDTO.setSimpleStatus(systemDictList.stream().filter(systemDict -> systemDict.getType().equals(Constants.PATENT_SIMPLE_STATUS) && systemDict.getValue().equals(String.valueOf(patent.getSimpleStatus()))).findFirst().orElse(new SystemDict()).getLabel());
         patentDTO.setSimpleStatus(systemDictList.stream().filter(systemDict -> systemDict.getType().equals(Constants.PATENT_SIMPLE_STATUS) && systemDict.getValue().equals(String.valueOf(patent.getSimpleStatus()))).findFirst().orElse(new SystemDict()).getLabel());
         patentDTO.setSimpleStatusInt(patent.getSimpleStatus());
         patentDTO.setSimpleStatusInt(patent.getSimpleStatus());

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

@@ -104,6 +104,7 @@ public class PatentSimpleFamilyService extends ServiceImpl<PatentSimpleFamilyMap
     }
     }
 
 
     public void updateData(List<String> familyNo, String patentNo, Integer patentId, Integer type) {
     public void updateData(List<String> familyNo, String patentNo, Integer patentId, Integer type) {
+        familyNo = new ArrayList<>(familyNo);
         //0.合并专利号
         //0.合并专利号
         if (!familyNo.contains(patentNo)) {
         if (!familyNo.contains(patentNo)) {
             familyNo.add(patentNo);
             familyNo.add(patentNo);

+ 68 - 23
PAS/src/main/java/cn/cslg/pas/service/TaskService.java

@@ -11,6 +11,8 @@ import cn.cslg.pas.common.utils.*;
 import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils;
 import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils;
 
 
 import cn.cslg.pas.domain.Personnel;
 import cn.cslg.pas.domain.Personnel;
+import cn.cslg.pas.domain.Project;
+import cn.cslg.pas.domain.Report;
 import cn.cslg.pas.domain.Task;
 import cn.cslg.pas.domain.Task;
 import cn.cslg.pas.domain.asso.TaskCondition;
 import cn.cslg.pas.domain.asso.TaskCondition;
 import cn.cslg.pas.mapper.TaskMapper;
 import cn.cslg.pas.mapper.TaskMapper;
@@ -61,6 +63,8 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
     private final ExcutePatentDataEpo excutePatentDataEpo;
     private final ExcutePatentDataEpo excutePatentDataEpo;
     private final ExcutePatentDataStar excutePatentDataStar;
     private final ExcutePatentDataStar excutePatentDataStar;
     private final TaskConditionService taskConditionService;
     private final TaskConditionService taskConditionService;
+    private final ProjectService projectService;
+    private final ReportService reportService;
     private final JobService jobService;
     private final JobService jobService;
     private final TaskMapper taskMapper;
     private final TaskMapper taskMapper;
 
 
@@ -157,7 +161,7 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
         task.setPramJson(json);
         task.setPramJson(json);
         //任务类型1(0普通任务 1定时任务)
         //任务类型1(0普通任务 1定时任务)
         task.setTaskType(0);
         task.setTaskType(0);
-
+        task.setAsCompare(projectImportPatentVO.getAsCompare());
         //数据入任务表
         //数据入任务表
         task.insert();
         task.insert();
         return task.getId();
         return task.getId();
@@ -187,7 +191,7 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
         }
         }
         //专利总数量
         //专利总数量
         task.setTotal(total);
         task.setTotal(total);
-        //任务类型 (1Excel导入 2导出 3欧专局导入 4专利之星导入)
+        //任务类型 (1Excel导入 2导出 3欧专局导入 4专利之星导入 5专利号导入
         task.setType(taskAddNewDTO.getTaskType2());
         task.setType(taskAddNewDTO.getTaskType2());
         //导入导出字段数量
         //导入导出字段数量
         task.setFieldNum(0);
         task.setFieldNum(0);
@@ -206,7 +210,8 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
         task.setPramJson(pramJson);
         task.setPramJson(pramJson);
         //任务类型1(0普通任务 1定时任务)
         //任务类型1(0普通任务 1定时任务)
         task.setTaskType(taskAddNewDTO.getTaskType());
         task.setTaskType(taskAddNewDTO.getTaskType());
-
+        //是否直接作为对比数据
+        task.setAsCompare(taskAddNewDTO.getAsCompare());
         //数据入任务表
         //数据入任务表
         log.info("任务表新增数据");
         log.info("任务表新增数据");
         task.insert();
         task.insert();
@@ -278,10 +283,9 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
     public PageVO queryTasks(QueryTaskDTO queryTaskDTO) throws IOException {
     public PageVO queryTasks(QueryTaskDTO queryTaskDTO) throws IOException {
         log.info("开始处理【查询任务】的业务,参数为:{}", queryTaskDTO);
         log.info("开始处理【查询任务】的业务,参数为:{}", queryTaskDTO);
 
 
-        //专题库id和报告id都没有时,根据当前登陆人id查询
-        if (queryTaskDTO.getProjectId() == null && queryTaskDTO.getReportId() == null) {
-            queryTaskDTO.setCreateId(loginUtils.getId());
-        }
+        //装载创建人id
+        queryTaskDTO.setCreateId(loginUtils.getId());
+
         //根据创建人名称模糊查询
         //根据创建人名称模糊查询
         if (queryTaskDTO.getCreateName() != null && !queryTaskDTO.getCreateName().equals("")) {
         if (queryTaskDTO.getCreateName() != null && !queryTaskDTO.getCreateName().equals("")) {
             String res = outInterfaceService.getPersonIdByNamePCS(queryTaskDTO.getCreateName());
             String res = outInterfaceService.getPersonIdByNamePCS(queryTaskDTO.getCreateName());
@@ -304,11 +308,11 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
 
 
         //装载创建人名称、装载任务名称
         //装载创建人名称、装载任务名称
         if (tasks.size() > 0) {
         if (tasks.size() > 0) {
+            //装载创建人名称
             List<Integer> createPersonIds = tasks.stream().map(QueryTaskVO::getCreateBy).collect(Collectors.toList());
             List<Integer> createPersonIds = tasks.stream().map(QueryTaskVO::getCreateBy).collect(Collectors.toList());
             String res = outInterfaceService.getPersonnelByIdsFromPCS(createPersonIds);
             String res = outInterfaceService.getPersonnelByIdsFromPCS(createPersonIds);
             com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSONObject.parseObject(res);
             com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSONObject.parseObject(res);
             List<Personnel> personnels = com.alibaba.fastjson.JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
             List<Personnel> personnels = com.alibaba.fastjson.JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
-            //遍历装载创建人名称
             for (QueryTaskVO task : tasks) {
             for (QueryTaskVO task : tasks) {
                 for (Personnel personnel : personnels) {
                 for (Personnel personnel : personnels) {
                     if (personnel.getId().equals(task.getCreateBy())) {
                     if (personnel.getId().equals(task.getCreateBy())) {
@@ -317,13 +321,54 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
                     }
                     }
                 }
                 }
             }
             }
-            //遍历装载任务名称(检索式+创建时间+创建人名称)
+
+            //装载任务名称(专利号/检索式 导入到 某某 专题库/报告中)
+            if (queryTaskDTO.getProjectId() != null) {  //若当前查询是查询所有导入专题库的任务,则装载专题库名称
+                List<Integer> projectIds = tasks.stream().map(QueryTaskVO::getProjectId).collect(Collectors.toList());
+                List<Project> projects = projectService.list(new LambdaQueryWrapper<Project>().in(Project::getId, projectIds));
+                tasks.forEach(task -> {
+                    projects.forEach(project -> {
+                        if (task.getProjectId().equals(project.getId())) {
+                            task.setProjectName(project.getName());
+                        }
+                    });
+                });
+            } else if (queryTaskDTO.getReportId() != null) {  //若当前查询是查询所有导入报告的任务,则装载报告名称
+                List<Integer> reportIds = tasks.stream().map(QueryTaskVO::getReportId).collect(Collectors.toList());
+                String res2 = outInterfaceService.getReportsFromRMS(reportIds);
+                JSONObject jsonObject2 = JSONObject.parseObject(res2);
+                List<Report> reports = JSON.parseArray(jsonObject2.getString("data"), Report.class);
+                tasks.forEach(task -> {
+                    reports.forEach(report -> {
+                        if (task.getReportId().equals(report.getId())) {
+                            task.setReportName(report.getName());
+                        }
+                    });
+                });
+            }
+
             for (QueryTaskVO task : tasks) {
             for (QueryTaskVO task : tasks) {
-                if (task.getType().equals(3) || task.getType().equals(4)) {
-                    String conditions = task.getConditions();
-                    conditions = conditions.substring(conditions.indexOf("(") + 1, conditions.lastIndexOf(")"));
-                    String createTime = new SimpleDateFormat("yyyyMMdd").format(task.getCreateTime());
-                    String taskName = createTime + " - 检索式:" + conditions + " - " + task.getCreateName();
+                String taskName = "";
+                if (task.getType().equals(5)) {  //若是专利号导入任务
+                    if (task.getProjectName() != null) {
+                        taskName = "专利号导入到专题库【" + task.getProjectName() + "】中 - " + task.getCreateName();
+                    } else if (task.getReportName() != null) {
+                        taskName = "专利号导入到报告【" + task.getReportName() + "】中 - " + task.getCreateName();
+                    }
+                    task.setTaskName(taskName);
+                } else if (task.getType().equals(3) || task.getType().equals(4)) {  //若是检索式导入(欧专局或专利之星)
+                    if (task.getProjectName() != null) {
+                        taskName = "检索式导入到专题库【" + task.getProjectName() + "】中 - " + task.getCreateName();
+                    } else if (task.getReportName() != null) {
+                        taskName = "检索式导入到报告【" + task.getReportName() + "】中 - " + task.getCreateName();
+                    }
+                    task.setTaskName(taskName);
+                } else if (task.getType().equals(2)) {  //若是导出
+                    if (task.getProjectName() != null) {
+                        taskName = "从专题库【" + task.getProjectName() + "】导出 - " + task.getCreateName();
+                    } else if (task.getReportName() != null) {
+                        taskName = "从报告【" + task.getReportName() + "】导出 - " + task.getCreateName();
+                    }
                     task.setTaskName(taskName);
                     task.setTaskName(taskName);
                 }
                 }
             }
             }
@@ -409,6 +454,7 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
         Task updateTask = new Task();
         Task updateTask = new Task();
         updateTask.setId(task.getId());
         updateTask.setId(task.getId());
         updateTask.setStatus(5);
         updateTask.setStatus(5);
+        updateTask.setEndTime(DateUtils.getDateTime());
         log.info("os_task表修改任务状态为取消");
         log.info("os_task表修改任务状态为取消");
         this.updateById(updateTask);
         this.updateById(updateTask);
 
 
@@ -487,7 +533,7 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
      * 暂停任务
      * 暂停任务
      *
      *
      * @param taskId 任务id
      * @param taskId 任务id
-     * @return
+     * @return 返回任务状态4,已暂停
      */
      */
     @Override
     @Override
     public Integer pauseTask(Integer taskId) throws InterruptedException {
     public Integer pauseTask(Integer taskId) throws InterruptedException {
@@ -503,7 +549,7 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
 
 
         //检查任务是否处于进行中状态,若不是则提示用户 "暂停失败,当前任务不处于进行中状态,请尝试刷新页面"
         //检查任务是否处于进行中状态,若不是则提示用户 "暂停失败,当前任务不处于进行中状态,请尝试刷新页面"
         if (!task.getStatus().equals(1)) {
         if (!task.getStatus().equals(1)) {
-            ThrowException.throwXiaoShiException("暂停失败,当前任务未进行,请尝试刷新页面");
+            ThrowException.throwXiaoShiException("暂停失败,当前任务不在进行中,请尝试刷新页面");
         }
         }
 
 
         //任务表将任务状态修改为4暂停
         //任务表将任务状态修改为4暂停
@@ -516,24 +562,23 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> implements ITaskS
             ThrowException.throwXiaoShiException("暂停失败,服务器忙请稍后再试");
             ThrowException.throwXiaoShiException("暂停失败,服务器忙请稍后再试");
         }
         }
 
 
-        //将生产者生产专利中的公共任务状态改为暂停
-        if (task.getType() == 1) {
+        //将检索生产专利时的公共任务状态改为暂停(若还在检索生产,则会结束)
+        if (task.getType() == 1) {  //Excel导入
             excutePatentDataExcel.setTaskStatus(taskId, 4);
             excutePatentDataExcel.setTaskStatus(taskId, 4);
-        } else if (task.getType() == 3) {
+        } else if (task.getType() == 3) {  //欧专局
             excutePatentDataEpo.setTaskStatus(taskId, 4);
             excutePatentDataEpo.setTaskStatus(taskId, 4);
-        } else if (task.getType() == 4) {
+        } else if (task.getType() == 4) {  //专利之星
             excutePatentDataStar.setTaskStatus(taskId, 4);
             excutePatentDataStar.setTaskStatus(taskId, 4);
         }
         }
 
 
-        //若是网站导入任务,则还要将专利各部分装载线程队列中该任务的专利清空
+        //若是网站导入任务,则还要将专利各部分装载线程队列中该任务元素清空
         if (task.getType().equals(3) || task.getType().equals(4)) {
         if (task.getType().equals(3) || task.getType().equals(4)) {
             //等上半秒(上述代码虽然使得生产暂停,但是生产暂停前正在存入生产队列的过程中,等2秒使得这些放入消费者队列后再清空消费者)
             //等上半秒(上述代码虽然使得生产暂停,但是生产暂停前正在存入生产队列的过程中,等2秒使得这些放入消费者队列后再清空消费者)
-            Thread.sleep(500);
             pantentQueueService.setQueueRemoveTasks(taskId);
             pantentQueueService.setQueueRemoveTasks(taskId);
         }
         }
 
 
         //等上一秒(上述代码虽然使得生产暂停,但是生产暂停前已生产的专利正在存入消费者队列的过程中,等2秒使得这些放入消费者队列后再清空消费者)
         //等上一秒(上述代码虽然使得生产暂停,但是生产暂停前已生产的专利正在存入消费者队列的过程中,等2秒使得这些放入消费者队列后再清空消费者)
-        Thread.sleep(1000);
+        Thread.sleep(1500);
         //将消费者的专利队列中所有该任务的专利剔除
         //将消费者的专利队列中所有该任务的专利剔除
         pantentQueueService.consumerQueueRemoveTasks(taskId);
         pantentQueueService.consumerQueueRemoveTasks(taskId);
 
 

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

@@ -378,7 +378,7 @@ public class UploadPatentBatchService {
             //用专利号查询该条数据是否存在
             //用专利号查询该条数据是否存在
             Patent patent = patentService.getByPatentNo(uploadParamsVO.getPatent().getPatentNo());
             Patent patent = patentService.getByPatentNo(uploadParamsVO.getPatent().getPatentNo());
             //如果不存在就新增一条
             //如果不存在就新增一条
-            if (patent == null) {
+            if (patent == null || patent.getId() == null) {
                 uploadParamsVO.getPatent().insert();
                 uploadParamsVO.getPatent().insert();
             } else {
             } else {
                 uploadParamsVO.getPatent().setId(patent.getId());
                 uploadParamsVO.getPatent().setId(patent.getId());

+ 11 - 0
PAS/src/main/java/cn/cslg/pas/service/WebLoginConfigService.java

@@ -69,4 +69,15 @@ public class WebLoginConfigService extends ServiceImpl<WebLoginConfigMapper, Web
         return this.removeByIds(ids);
         return this.removeByIds(ids);
     }
     }
 
 
+    public WebLoginConfig getConfig(Integer webId,Integer webGroup) {
+        List<WebLoginConfig> configs = this.list(new LambdaQueryWrapper<WebLoginConfig>().eq(WebLoginConfig::getWebId, webId).eq(WebLoginConfig::getWebGroup,webGroup));
+        WebLoginConfig config;
+        if (configs.size() > 0) {
+            config = configs.get(0);
+        } else {
+            config = null;
+        }
+        return config;
+    }
+
 }
 }

+ 262 - 105
PAS/src/main/java/cn/cslg/pas/service/getPatentStarPart/GetPatentStarPartService.java

@@ -7,18 +7,23 @@ import cn.cslg.pas.common.model.vo.KeyValueVO;
 import cn.cslg.pas.common.model.vo.PageVO;
 import cn.cslg.pas.common.model.vo.PageVO;
 import cn.cslg.pas.common.model.vo.UploadParamsVO;
 import cn.cslg.pas.common.model.vo.UploadParamsVO;
 import cn.cslg.pas.common.model.vo.outApi.StarPatentVO;
 import cn.cslg.pas.common.model.vo.outApi.StarPatentVO;
-import cn.cslg.pas.common.utils.ThrowException;
 import cn.cslg.pas.domain.*;
 import cn.cslg.pas.domain.*;
 import cn.cslg.pas.service.outApi.PatentStarApiService;
 import cn.cslg.pas.service.outApi.PatentStarApiService;
 import cn.cslg.pas.service.upLoadPatent.ExcutePatentDataStar;
 import cn.cslg.pas.service.upLoadPatent.ExcutePatentDataStar;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.sql.SQLException;
 import java.util.*;
 import java.util.*;
+import java.util.stream.Collectors;
 
 
 /**
 /**
  * 获取专利之星专利某部分(如权要、说明书等一项)业务层
  * 获取专利之星专利某部分(如权要、说明书等一项)业务层
@@ -39,7 +44,7 @@ public class GetPatentStarPartService {
      * @param getPatentStarPartDTO 前端传输DTO对象
      * @param getPatentStarPartDTO 前端传输DTO对象
      * @return 返回装载着指定专利项的对象
      * @return 返回装载着指定专利项的对象
      */
      */
-    public PatentDTO getPatentPart(GetPatentStarPartDTO getPatentStarPartDTO) throws IOException {
+    public PatentDTO getPatentPart(GetPatentStarPartDTO getPatentStarPartDTO) throws IOException, SQLException {
         log.info("开始处理【根据专利号或申请号获取专利指定部分项】的业务,参数为:{}", getPatentStarPartDTO);
         log.info("开始处理【根据专利号或申请号获取专利指定部分项】的业务,参数为:{}", getPatentStarPartDTO);
 
 
         Integer patentCell = getPatentStarPartDTO.getPatentCell();
         Integer patentCell = getPatentStarPartDTO.getPatentCell();
@@ -47,11 +52,11 @@ public class GetPatentStarPartService {
         String patentNo = getPatentStarPartDTO.getPatentNo();
         String patentNo = getPatentStarPartDTO.getPatentNo();
         PatentDTO patentDTO;
         PatentDTO patentDTO;
         if (patentCell == 1) {
         if (patentCell == 1) {
-            patentDTO = getParentRight(appNo);  //拿权要
+            patentDTO = getParentRight(appNo, patentNo);  //拿权要
         } else if (patentCell == 2) {
         } else if (patentCell == 2) {
-            patentDTO = getInstructionText(appNo);  //拿说明书文本
+            patentDTO = getInstructionText(appNo, patentNo);  //拿说明书文本
         } else if (patentCell == 3) {
         } else if (patentCell == 3) {
-            patentDTO = getInstructionPDF(patentNo);  //拿说明书pdf
+            patentDTO = getInstructionPDF(appNo, patentNo);  //拿说明书pdf
         } else if (patentCell == 4) {
         } else if (patentCell == 4) {
             patentDTO = getPatentImage(appNo);  //拿摘要附图
             patentDTO = getPatentImage(appNo);  //拿摘要附图
         } else if (patentCell == 5) {
         } else if (patentCell == 5) {
@@ -71,12 +76,13 @@ public class GetPatentStarPartService {
      * @param appNo 申请号
      * @param appNo 申请号
      * @return 返回装载着权要的对象
      * @return 返回装载着权要的对象
      */
      */
-    public PatentDTO getParentRight(String appNo) {
+    public PatentDTO getParentRight(String appNo, String patentNo) throws IOException {
         StarPatentVO starPatentVO = new StarPatentVO()
         StarPatentVO starPatentVO = new StarPatentVO()
+                .setPublicNo(patentNo)
                 .setApplicationNo(appNo);
                 .setApplicationNo(appNo);
         UploadParamsVO uploadParamsVO = new UploadParamsVO();
         UploadParamsVO uploadParamsVO = new UploadParamsVO();
         //调用"获得中国专利全文文本"接口,处理xml格式权要
         //调用"获得中国专利全文文本"接口,处理xml格式权要
-        excutePatentDataStar.setPatentClaim(starPatentVO, uploadParamsVO);
+        excutePatentDataStar.setPatentClaim(starPatentVO, uploadParamsVO, null);
 
 
         PatentDTO patentDTO = new PatentDTO();
         PatentDTO patentDTO = new PatentDTO();
         ArrayList<PatentRight> patentRights = new ArrayList<>();
         ArrayList<PatentRight> patentRights = new ArrayList<>();
@@ -92,12 +98,13 @@ public class GetPatentStarPartService {
      * @param appNo 申请号
      * @param appNo 申请号
      * @return 返回装载着说明书文本的对象
      * @return 返回装载着说明书文本的对象
      */
      */
-    public PatentDTO getInstructionText(String appNo) {
+    public PatentDTO getInstructionText(String appNo, String patentNo) throws IOException {
         StarPatentVO starPatentVO = new StarPatentVO()
         StarPatentVO starPatentVO = new StarPatentVO()
+                .setPublicNo(patentNo)
                 .setApplicationNo(appNo);
                 .setApplicationNo(appNo);
         UploadParamsVO uploadParamsVO = new UploadParamsVO();
         UploadParamsVO uploadParamsVO = new UploadParamsVO();
         //调用"获得中国专利全文文本"接口,处理xml格式说明书文本
         //调用"获得中国专利全文文本"接口,处理xml格式说明书文本
-        excutePatentDataStar.setPatentInstructionText(starPatentVO, uploadParamsVO);
+        excutePatentDataStar.setPatentInstructionText(starPatentVO, uploadParamsVO, null);
 
 
         PatentDTO patentDTO = new PatentDTO();
         PatentDTO patentDTO = new PatentDTO();
         patentDTO.setInstruction(uploadParamsVO.getPatentInstructionText());
         patentDTO.setInstruction(uploadParamsVO.getPatentInstructionText());
@@ -111,15 +118,79 @@ public class GetPatentStarPartService {
      * @param patentNo 专利号(公开号)
      * @param patentNo 专利号(公开号)
      * @return 返回装载着说明书pdf的对象
      * @return 返回装载着说明书pdf的对象
      */
      */
-    public PatentDTO getInstructionPDF(String patentNo) {
-        //调用"获得世界专利pdf"接口,获得pdf的url地址
-        String pdfUrl = patentStarApiService.getEnPdfApi(patentNo);
+    public PatentDTO getInstructionPDF(String appNo, String patentNo) throws IOException, SQLException {
+        String applicationNo = appNo + "";
+        if (appNo.contains(".")) {
+            appNo = appNo.substring(0, appNo.lastIndexOf("."));
+        }
 
 
-        PatentDTO patentDTO = new PatentDTO();
         ArrayList<PatentInstruction> patentInstructions = new ArrayList<>();
         ArrayList<PatentInstruction> patentInstructions = new ArrayList<>();
-        PatentInstruction patentInstruction = new PatentInstruction();
-        patentInstruction.setUrl(pdfUrl);
-        patentInstructions.add(patentInstruction);
+        PatentDTO patentDTO = new PatentDTO();
+
+        String pdfUrl = "", pdfUrl1 = "", pdfUrl2 = "";
+        if (patentNo.contains("CN")) {
+            //调用"获得中国专利pdf"接口,获得公开和授权中的1个或2个url
+            String pdfUrlStr = patentStarApiService.getCnPdfApi(appNo);
+
+            //若没有取到说明书pdf,则将当前申请号和备注信息存入问题记录表,并返回空对象
+            if (pdfUrlStr.equals("")) {
+                excutePatentDataStar.recordQuestionPatent(applicationNo, null, 4);
+                return new PatentDTO();
+            }
+
+            if (pdfUrlStr.contains("|http")) {  //若两个都有
+                String[] pdfUrlArr = pdfUrlStr.split("\\|http");
+                pdfUrl1 = pdfUrlArr[0].substring(pdfUrlArr[0].indexOf("http"), pdfUrlArr[0].indexOf("?"));
+                pdfUrlArr[1] = "http" + pdfUrlArr[1];
+                pdfUrl2 = pdfUrlArr[1].substring(pdfUrlArr[1].indexOf("http"), pdfUrlArr[1].indexOf("?"));
+
+                PatentInstruction patentInstruction = new PatentInstruction();
+                PatentInstruction patentInstruction2 = new PatentInstruction();
+                patentInstruction.setUrl(pdfUrl1);
+                patentInstruction2.setUrl(pdfUrl2);
+                patentInstruction.setPictureStringData(urlToBytes(pdfUrl1));
+                patentInstruction2.setPictureStringData(urlToBytes(pdfUrl2));
+                if (pdfUrl1.contains("0A_CN_0.pdf")) {
+                    patentInstruction.setType(1);
+                    patentInstruction2.setType(2);
+                } else {
+                    patentInstruction.setType(2);
+                    patentInstruction2.setType(1);
+                }
+                patentInstructions.add(patentInstruction);
+                patentInstructions.add(patentInstruction2);
+
+            } else {  //若只有一个
+                pdfUrl1 = pdfUrlStr.substring(pdfUrlStr.indexOf("http"), pdfUrlStr.indexOf("?"));
+                PatentInstruction patentInstruction = new PatentInstruction();
+                patentInstruction.setUrl(pdfUrl1);
+                patentInstruction.setPictureStringData(urlToBytes(pdfUrl1));
+                if (pdfUrl1.contains("0A_CN_0.pdf")) {
+                    patentInstruction.setType(1);
+                } else {
+                    patentInstruction.setType(2);
+                }
+                patentInstructions.add(patentInstruction);
+            }
+
+        } else {
+            //根据专利号调用"获得世界专利pdf"接口,获得pdf的url地址
+            pdfUrl = patentStarApiService.getEnPdfApi(patentNo);
+
+            //若没有取到说明书pdf,则将当前申请号和备注信息存入问题记录表,并返回空对象
+            if (pdfUrl.equals("") || pdfUrl.equals("{}")) {
+                excutePatentDataStar.recordQuestionPatent(applicationNo, null, 4);
+                return new PatentDTO();
+            }
+
+            PatentInstruction patentInstruction = new PatentInstruction();
+            patentInstruction.setUrl(pdfUrl);
+            patentInstruction.setPictureStringData(urlToBytes(pdfUrl));
+            patentInstruction.setType(1);
+            patentInstructions.add(patentInstruction);
+
+        }
+
         patentDTO.setPdf(patentInstructions);
         patentDTO.setPdf(patentInstructions);
 
 
         return patentDTO;
         return patentDTO;
@@ -136,6 +207,7 @@ public class GetPatentStarPartService {
         if (appNo.contains(".")) {
         if (appNo.contains(".")) {
             appNo = appNo.substring(0, appNo.lastIndexOf("."));
             appNo = appNo.substring(0, appNo.lastIndexOf("."));
         }
         }
+
         String pictureUrl = patentStarApiService.getPictureApi(appNo);
         String pictureUrl = patentStarApiService.getPictureApi(appNo);
 
 
         PatentDTO patentDTO = new PatentDTO();
         PatentDTO patentDTO = new PatentDTO();
@@ -162,116 +234,201 @@ public class GetPatentStarPartService {
 
 
         PatentDTO patentDTO = new PatentDTO();
         PatentDTO patentDTO = new PatentDTO();
         PageVO pageVO = new PageVO()
         PageVO pageVO = new PageVO()
-                .setCurrent(current)
-                .setSize(size);
+                .setCurrent(current)  //装载当前页
+                .setSize(size);  //装载每页条数
+
+        try {
+            //1.从同族接口获取同族号单
+            String familyPatentNoStr = patentStarApiService.getFamilyByPubNoApi(patentNo);
+            //若接口返回"no data"即没有同族号,则返回空集合同族信息
+            if (familyPatentNoStr.equals("no data")) {
+                pageVO.setRecords(new ArrayList<>())
+                        .setTotal(0);
+                patentDTO.setFamilyPatentResult(pageVO);
+                return patentDTO;
+            }
 
 
-        //以下 ↓装载的是调用"获得同族专利"接口返回的专利相关数据
-        String familyPatentNoStr = patentStarApiService.getFamilyByPubNoApi(patentNo);
-        //若没有同族号,则返回空集合(表示该公开号暂无同族)
-        if (familyPatentNoStr.equals("no data")) {
-            pageVO.setRecords(new ArrayList<>())
-                    .setTotal(0);
-            patentDTO.setFamilyPatentResult(pageVO);
-            return patentDTO;
-        }
+            FamilyPatentNo familyPatentNo = JSON.parseObject(familyPatentNoStr, FamilyPatentNo.class);
+            List<String> familyPatentNos = Arrays.asList(familyPatentNo.getFamilyinfo().split(";"));
+            //装载总条数
+            pageVO.setTotal(familyPatentNos.size());
+
+            //2.根据分页条件截取需要位置的条数
+            List<String> needShowFamilyPatentNos = pageBySubList(familyPatentNos, current, size);
 
 
-        FamilyPatentNo familyPatentNo = JSON.parseObject(familyPatentNoStr, FamilyPatentNo.class);
-        //familyPNStr:以分号;拼接的多个同族公开号字符串
-        String familyPNStr = familyPatentNo.getFamilyinfo();
-        List<String> familyPatentNos = Arrays.asList(familyPNStr.split(";"));
+            //3.拼接成检索式
+            List<String> cNfamilyPatentNos = needShowFamilyPatentNos.stream().filter(item -> item.contains("CN")).collect(Collectors.toList());
+            List<String> wDfamilyPatentNos = needShowFamilyPatentNos.stream().filter(item -> !item.contains("CN")).collect(Collectors.toList());
 
 
-        //防止下标越界的判断(即判断所需当前页是否有数据)
-        if ((current - 1) * size >= familyPatentNos.size()) {
+            String cNconditions = "", wDconditions = "";
+            if (cNfamilyPatentNos.size() > 0) {
+                cNconditions = "PN=(" + StringUtils.join(cNfamilyPatentNos, " OR ") + ")";
+            }
+            if (wDfamilyPatentNos.size() > 0) {
+                wDconditions = "PN=(" + StringUtils.join(wDfamilyPatentNos, " OR ") + ")";
+            }
+
+            //根据专利的国家类型调用并使用对应的库(中国/世界库),返回这些同族号专利的著录相关数据(标题、申请人、权利人、摘要附图)
+            List<StarPatentVO> cNpatents = new ArrayList<>();
+            List<StarPatentVO> wDpatents = new ArrayList<>();
+            if (!cNconditions.equals("")) {
+                PatentStarListDto patentStarListDto = new PatentStarListDto()
+                        .setCurrentQuery(cNconditions)
+                        .setOrderBy("ID")
+                        .setOrderByType("DESC")
+                        .setPageNum(1)
+                        .setRowCount(size)
+                        .setDBType("CN");
+                Map<String, Object> resultMap = patentStarApiService.patentStarSearchApi(patentStarListDto);
+                if (resultMap == null || (Integer) resultMap.get("total") == 0) {
+                    for (String cNfamilyPatentNo : cNfamilyPatentNos) {
+                        cNpatents.add(new StarPatentVO().setPatentNo(cNfamilyPatentNo));
+                    }
+                } else {
+                    cNpatents = (List<StarPatentVO>) resultMap.get("records");
+                }
+            }
+            if (!wDconditions.equals("")) {
+                PatentStarListDto patentStarListDto = new PatentStarListDto()
+                        .setCurrentQuery(wDconditions)
+                        .setOrderBy("ID")
+                        .setOrderByType("DESC")
+                        .setPageNum(1)
+                        .setRowCount(size)
+                        .setDBType("WD");
+                Map<String, Object> resultMap = patentStarApiService.patentStarSearchApi(patentStarListDto);
+                if (resultMap == null || (Integer) resultMap.get("total") == 0) {
+                    for (String wDfamilyPatentNo : wDfamilyPatentNos) {
+                        wDpatents.add(new StarPatentVO().setPatentNo(wDfamilyPatentNo));
+                    }
+                } else {
+                    wDpatents = (List<StarPatentVO>) resultMap.get("records");
+                }
+            }
+
+            //将中国和外国专利数据合并
+            ArrayList<StarPatentVO> patents = new ArrayList<>();
+            patents.addAll(cNpatents);
+            patents.addAll(wDpatents);
+
+            List<PatentSimpleFamilyLink> records = new ArrayList<>();
+            for (StarPatentVO starPatent : patents) {
+                PatentSimpleFamilyLink patentSimpleFamilyLink = new PatentSimpleFamilyLink();
+                patentSimpleFamilyLink.setPatentNo(starPatent.getPatentNo());  //装载专利号
+                patentSimpleFamilyLink.setPublicNo(starPatent.getPublicNo());  //装载公开号
+                patentSimpleFamilyLink.setApplicationNo(starPatent.getApplicationNo());  //装载申请号
+                patentSimpleFamilyLink.setPublicDate(starPatent.getPublicDate());  //装载公开日
+                patentSimpleFamilyLink.setPublicAccreditDate(starPatent.getPublicAccreditDate());  //装载公告日
+                patentSimpleFamilyLink.setName(starPatent.getName());  //装载标题
+                //装载申请人和权利人
+                ArrayList<PatentApplicant> patentApplicants = new ArrayList<>();
+                //装载申请人
+                if (starPatent.getApplicantStr() != null && !starPatent.getApplicantStr().equals("")) {
+                    String[] patentApplicantOriginalNames = starPatent.getApplicantStr().split(";");
+                    for (String patentApplicantOriginalName : patentApplicantOriginalNames) {
+                        PatentApplicant patentApplicant = new PatentApplicant();
+                        patentApplicant.setName(patentApplicantOriginalName);
+                        patentApplicant.setDataType(2);
+                        patentApplicants.add(patentApplicant);  //装载申请人
+                    }
+                }
+                //装载权利人
+                if (starPatent.getCurrentApplicantStr() != null && !starPatent.getCurrentApplicantStr().equals("")) {
+                    String[] patentApplicantCurrentNames = (starPatent.getCurrentApplicantStr().split(";"));
+                    for (String patentApplicantCurrentName : patentApplicantCurrentNames) {
+                        PatentApplicant patentApplicant = new PatentApplicant();
+                        patentApplicant.setName(patentApplicantCurrentName);
+                        patentApplicant.setDataType(1);
+                        patentApplicants.add(patentApplicant);  //装载权利人
+                    }
+                }
+                patentSimpleFamilyLink.setApplicant(patentApplicants);
+                records.add(patentSimpleFamilyLink);
+            }
+
+            pageVO.setRecords(records);  //装载结果集
+            patentDTO.setFamilyPatentResult(pageVO);
+
+        } catch (Exception e) {
             pageVO.setRecords(new ArrayList<>())
             pageVO.setRecords(new ArrayList<>())
-                    .setTotal(familyPatentNos.size());
+                    .setTotal(0);
             patentDTO.setFamilyPatentResult(pageVO);
             patentDTO.setFamilyPatentResult(pageVO);
             return patentDTO;
             return patentDTO;
         }
         }
 
 
-        //根据分页信息,取分页区间内的同族号
-        familyPatentNos = pageBySubList(familyPatentNos, current, size);
-        //集合转成字符串
-        String conditions = "(PN=(" + StringUtils.join(familyPatentNos, " OR ") + "))";
-
-        //调用一般接口返回这些同族号专利的著录相关数据(标题、申请人、权利人、摘要附图)
-        PatentStarListDto patentStarListDto = new PatentStarListDto()
-                .setCurrentQuery(conditions)
-                .setOrderBy("ID")
-                .setOrderByType("DESC")
-                .setPageNum(current)
-                .setRowCount(size)
-                .setDBType("WD");
-        Map<String, Object> resultMap = patentStarApiService.patentStarSearchApi(patentStarListDto);
-        if (resultMap == null || (Integer) resultMap.get("total") == 0) {
-            ThrowException.throwXiaoShiException("发生未知错误,一般接口未检索出专利");
-        }
-
-        List<StarPatentVO> patents = (List<StarPatentVO>) resultMap.get("records");
-        List<PatentSimpleFamilyLink> records = new ArrayList<>();
-        for (StarPatentVO starPatent : patents) {
-            PatentSimpleFamilyLink patentSimpleFamilyLink = new PatentSimpleFamilyLink();
-            patentSimpleFamilyLink.setAbstractPath(starPatent.getAbstractPath());  //装载摘要附图
-            patentSimpleFamilyLink.setPatentNo(starPatent.getPatentNo());  //装载公开号
-            patentSimpleFamilyLink.setName(starPatent.getName());  //装载标题
-            //装载申请人和权利人
-            ArrayList<PatentApplicant> patentApplicants = new ArrayList<>();
-            List<String> applicantNames = Arrays.asList(starPatent.getApplicantStr().split(";"));
-            for (String applicantName : applicantNames) {
-                PatentApplicant patentApplicant = new PatentApplicant();
-                patentApplicant.setName(applicantName);
-                patentApplicant.setDataType(1);
-                patentApplicants.add(patentApplicant);  //装载申请人
-                patentApplicant.setDataType(2);
-                patentApplicants.add(patentApplicant);  //装载权利人
-            }
-            patentSimpleFamilyLink.setApplicant(patentApplicants);
-            records.add(patentSimpleFamilyLink);
-        }
-        pageVO.setRecords(records)
-                .setTotal(familyPatentNos.size());
-        patentDTO.setFamilyPatentResult(pageVO);
         return patentDTO;
         return patentDTO;
     }
     }
 
 
     public PatentDTO getAffair(String appNo) throws IOException {
     public PatentDTO getAffair(String appNo) throws IOException {
+        PatentDTO patentDTO = new PatentDTO();
+
         if (appNo.contains(".")) {
         if (appNo.contains(".")) {
             appNo = appNo.substring(0, appNo.lastIndexOf("."));
             appNo = appNo.substring(0, appNo.lastIndexOf("."));
         }
         }
         //以下 ↓装载的是调用"获得中国专利法律状态"接口返回的专利相关数据
         //以下 ↓装载的是调用"获得中国专利法律状态"接口返回的专利相关数据
-        String cnLegalApiStr = patentStarApiService.getCnLegalApi(appNo);
-        List<ChinaLeagalStatus> chinaLeagalStatuses = JSON.parseArray(cnLegalApiStr, ChinaLeagalStatus.class);
-        ArrayList<KeyValueVO> lst = new ArrayList<>();
-        HashMap<Integer, String> nameMap = new HashMap<>();
-        HashMap<Integer, String> contentMap = new HashMap<>();
-        nameMap.put(0, "发生日期");
-        nameMap.put(1, "法律状态");
-        nameMap.put(2, "详细法律状态");
-        nameMap.put(3, "详细信息");
-        for (ChinaLeagalStatus chinaLeagalStatus : chinaLeagalStatuses) {
-            contentMap.put(0, chinaLeagalStatus.getLegalDate());
-            contentMap.put(1, chinaLeagalStatus.getLegalStatus());
-            contentMap.put(2, chinaLeagalStatus.getLegalStatusInfo());
-            contentMap.put(3, chinaLeagalStatus.getDETAIL());
-            ArrayList<KeyValueVO.InpadocData> inpadocDatas = new ArrayList<>();
-            for (int i = 0; i < 4; i++) {
-                KeyValueVO.InpadocData inpadocData = new KeyValueVO.InpadocData();
-                inpadocData.setName(nameMap.get(i));
-                inpadocData.setContent(contentMap.get(i));
-                inpadocDatas.add(inpadocData);
+        try {
+            String cnLegalApiStr = patentStarApiService.getCnLegalApi(appNo);
+            if (!cnLegalApiStr.equals("")) {
+                List<ChinaLeagalStatus> chinaLeagalStatuses = JSON.parseArray(cnLegalApiStr, ChinaLeagalStatus.class);
+                if (chinaLeagalStatuses != null && chinaLeagalStatuses.size() > 0) {
+                    ArrayList<KeyValueVO> lst = new ArrayList<>();
+                    HashMap<Integer, String> nameMap = new HashMap<>();
+                    HashMap<Integer, String> contentMap = new HashMap<>();
+                    nameMap.put(0, "发生日期");
+                    nameMap.put(1, "法律状态");
+                    nameMap.put(2, "详细法律状态");
+                    nameMap.put(3, "详细信息");
+                    for (ChinaLeagalStatus chinaLeagalStatus : chinaLeagalStatuses) {
+                        contentMap.put(0, chinaLeagalStatus.getLegalDate());
+                        contentMap.put(1, chinaLeagalStatus.getLegalStatus());
+                        contentMap.put(2, chinaLeagalStatus.getLegalStatusInfo());
+                        contentMap.put(3, chinaLeagalStatus.getDETAIL());
+                        ArrayList<KeyValueVO.InpadocData> inpadocDatas = new ArrayList<>();
+                        for (int i = 0; i < 4; i++) {
+                            KeyValueVO.InpadocData inpadocData = new KeyValueVO.InpadocData();
+                            inpadocData.setName(nameMap.get(i));
+                            inpadocData.setContent(contentMap.get(i));
+                            inpadocDatas.add(inpadocData);
+                        }
+                        KeyValueVO keyValueVO = new KeyValueVO();
+                        keyValueVO.setInpadocData(inpadocDatas);
+                        lst.add(keyValueVO);
+                    }
+                    ArrayList<PatentAffair> patentAffairs = new ArrayList<>();
+                    PatentAffair patentAffair = new PatentAffair();
+                    patentAffair.setInpadoc(lst);
+                    patentAffairs.add(patentAffair);
+                    patentDTO.setAffair(patentAffairs);
+                }
             }
             }
-            KeyValueVO keyValueVO = new KeyValueVO();
-            keyValueVO.setInpadocData(inpadocDatas);
-            lst.add(keyValueVO);
+        } catch (Exception e) {
+            return patentDTO;
         }
         }
-        PatentDTO patentDTO = new PatentDTO();
-        ArrayList<PatentAffair> patentAffairs = new ArrayList<>();
-        PatentAffair patentAffair = new PatentAffair();
-        patentAffair.setInpadoc(lst);
-        patentAffairs.add(patentAffair);
-        patentDTO.setAffair(patentAffairs);
+
         return patentDTO;
         return patentDTO;
     }
     }
 
 
+    public String urlToBytes(String pdfUrl) throws IOException {
+        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+        URL url = new URL(pdfUrl);  //想要读取的url地址
+        InputStream in = url.openStream();
+        int bytesRead;
+        byte[] buffer = new byte[8192];
+
+        //读取url地址文件
+        while ((bytesRead = in.read(buffer)) != -1) {
+            outputStream.write(buffer, 0, bytesRead);
+        }
+
+        //关闭释放流
+        in.close();
+
+        byte[] bytes = outputStream.toByteArray();
+        //BASE64Encoder encoder = new BASE64Encoder();
+        //String data = encoder.encode(bytes);
+        String data = Base64.encodeBase64String(bytes);
+        return data;
+    }
 
 
     /**
     /**
      * 根据分页信息,取同族号集合中分页区间内的同族号
      * 根据分页信息,取同族号集合中分页区间内的同族号

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

@@ -234,7 +234,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
         Integer size = productQueryPageDTO.getSize();
         Integer size = productQueryPageDTO.getSize();
         String groupBy = productQueryPageDTO.getGroupBy();
         String groupBy = productQueryPageDTO.getGroupBy();
         String orderBy = productQueryPageDTO.getOrderBy();
         String orderBy = productQueryPageDTO.getOrderBy();
-        if (orderBy != null) {
+        if (orderBy != null && !orderBy.equals("")) {
             String regex = "[A-Z]+";
             String regex = "[A-Z]+";
             Pattern pattern = Pattern.compile(regex);
             Pattern pattern = Pattern.compile(regex);
             Matcher matcher = pattern.matcher(orderBy);
             Matcher matcher = pattern.matcher(orderBy);

+ 239 - 81
PAS/src/main/java/cn/cslg/pas/service/outApi/PatentStarApiService.java

@@ -1,24 +1,30 @@
 package cn.cslg.pas.service.outApi;
 package cn.cslg.pas.service.outApi;
 
 
+import cn.cslg.pas.common.config.XDns;
 import cn.cslg.pas.common.model.PersonnelVO;
 import cn.cslg.pas.common.model.PersonnelVO;
 import cn.cslg.pas.common.model.outApi.PatentStarDto;
 import cn.cslg.pas.common.model.outApi.PatentStarDto;
 import cn.cslg.pas.common.model.outApi.PatentStarListDto;
 import cn.cslg.pas.common.model.outApi.PatentStarListDto;
 import cn.cslg.pas.common.model.vo.outApi.StarPatentVO;
 import cn.cslg.pas.common.model.vo.outApi.StarPatentVO;
 import cn.cslg.pas.common.utils.CacheUtils;
 import cn.cslg.pas.common.utils.CacheUtils;
+import cn.cslg.pas.common.utils.DateUtils2;
 import cn.cslg.pas.common.utils.FormatUtil;
 import cn.cslg.pas.common.utils.FormatUtil;
 import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils;
 import cn.cslg.pas.common.utils.SecurityUtils.LoginUtils;
 import cn.cslg.pas.common.utils.ThrowException;
 import cn.cslg.pas.common.utils.ThrowException;
 import cn.cslg.pas.domain.*;
 import cn.cslg.pas.domain.*;
+import cn.cslg.pas.service.WebLoginConfigService;
 import cn.cslg.pas.service.upLoadPatent.RetrieveRecordService;
 import cn.cslg.pas.service.upLoadPatent.RetrieveRecordService;
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
-import io.swagger.v3.oas.models.security.SecurityScheme;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import okhttp3.FormBody;
 import okhttp3.FormBody;
 import okhttp3.OkHttpClient;
 import okhttp3.OkHttpClient;
 import okhttp3.Request;
 import okhttp3.Request;
 import okhttp3.Response;
 import okhttp3.Response;
+import org.joda.time.DateTime;
+import org.joda.time.format.DateTimeFormat;
+import org.joda.time.format.DateTimeFormatter;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
@@ -42,12 +48,26 @@ public class PatentStarApiService {
     private final RetrieveRecordService retrieveRecordService;
     private final RetrieveRecordService retrieveRecordService;
     private final CacheUtils cacheUtils;
     private final CacheUtils cacheUtils;
     private final LoginUtils loginUtils;
     private final LoginUtils loginUtils;
+    private final WebLoginConfigService webLoginConfigService;
 
 
     public static String formatValue(String value) {
     public static String formatValue(String value) {
         return value.replace("~", ">");
         return value.replace("~", ">");
     }
     }
 
 
     public static String formQuery(String query) {
     public static String formQuery(String query) {
+        String regexSim = "\\'.*?\\'";
+        Pattern patternSim = Pattern.compile(regexSim);
+        Matcher matcherSim = patternSim.matcher(query);
+        Map<String, String> map = new LinkedHashMap<>();
+        Integer i = 1;
+        while (matcherSim.find()) {
+            String aa = matcherSim.group();
+            map.put("$" + i, matcherSim.group());
+            query = query.replaceFirst(matcherSim.group(), "\\$" + i);
+            i++;
+            System.out.println(query);
+        }
+        // 统一改成大写
         query = query.toUpperCase();
         query = query.toUpperCase();
         query = "(" + query + ")";
         query = "(" + query + ")";
         query = query
         query = query
@@ -55,11 +75,15 @@ public class PatentStarApiService {
                 .replace(" OR ", "+")
                 .replace(" OR ", "+")
                 .replace(" NOT ", "-");
                 .replace(" NOT ", "-");
 
 
+        for (String key : map.keySet()) {
+            query = query.replace(key, map.get(key));
+
+        }
         //记录偏移量
         //记录偏移量
         int t = 0;
         int t = 0;
         StringBuilder query2 = new StringBuilder(query);
         StringBuilder query2 = new StringBuilder(query);
         //匹配形如ab=(cd OR ef);
         //匹配形如ab=(cd OR ef);
-        String regexOrg = "([^=^\\*^\\+^\\(^\\)^\\-]+=\\([^=^\\)]+\\))+?";
+        String regexOrg = "([^=^\\*^\\+^\\(^\\)^\\-]+=[\\s]*\\([^=^\\)]+\\))+?";
         Pattern patternOrg = Pattern.compile(regexOrg);
         Pattern patternOrg = Pattern.compile(regexOrg);
         Matcher matcherOrg = patternOrg.matcher(query);
         Matcher matcherOrg = patternOrg.matcher(query);
         while (matcherOrg.find()) {
         while (matcherOrg.find()) {
@@ -70,7 +94,7 @@ public class PatentStarApiService {
             query2.delete(matcherOrg.start() + t, matcherOrg.start() + b.length() + 1 + t);
             query2.delete(matcherOrg.start() + t, matcherOrg.start() + b.length() + 1 + t);
             t = t - b.length() - 1;
             t = t - b.length() - 1;
             String c = bc[1];
             String c = bc[1];
-            String regexOrg1 = "([^\\+^\\*^\\-^\\(^\\)])+";
+            String regexOrg1 = "(?<=[\\(\\)\\+\\-=\\*])[^\\+^\\*^\\-^\\(^\\)]+?(?=[\\(\\+\\-=\\)\\*])";
             Pattern patternOrg1 = Pattern.compile(regexOrg1);
             Pattern patternOrg1 = Pattern.compile(regexOrg1);
             Matcher matcherOrg1 = patternOrg1.matcher(c);
             Matcher matcherOrg1 = patternOrg1.matcher(c);
             while (matcherOrg1.find()) {
             while (matcherOrg1.find()) {
@@ -93,14 +117,17 @@ public class PatentStarApiService {
         Map<Integer, Integer> map = new LinkedHashMap<>();
         Map<Integer, Integer> map = new LinkedHashMap<>();
         while (matcher.find()) {
         while (matcher.find()) {
             String a = matcher.group();
             String a = matcher.group();
-            String regex2 = "[^\\(^\\)^\\+^-^=^*]";
-            Pattern pattern2 = Pattern.compile(regex2);
-            Matcher matcher2 = pattern2.matcher(a);
-            Integer start = matcher.start();
-            if (matcher2.find()) {
-                start += matcher2.start();
+            String tme = a.replace(" ", "");
+            if (!tme.equals("")) {
+                String regex2 = "[^\\(^\\)^\\+^-^=^*]";
+                Pattern pattern2 = Pattern.compile(regex2);
+                Matcher matcher2 = pattern2.matcher(a);
+                Integer start = matcher.start();
+                if (matcher2.find()) {
+                    start += matcher2.start();
+                }
+                map.put(start, matcher.end());
             }
             }
-            map.put(start, matcher.end());
         }
         }
         if (map.size() == 0) {
         if (map.size() == 0) {
             return "";
             return "";
@@ -131,35 +158,63 @@ public class PatentStarApiService {
     public void loadStarPatentVOS(List<StarPatentVO> starPatentVOS, JSONObject Data) {
     public void loadStarPatentVOS(List<StarPatentVO> starPatentVOS, JSONObject Data) {
         String aa = Data.toString();
         String aa = Data.toString();
         starPatentVOS.forEach(item -> {
         starPatentVOS.forEach(item -> {
+            //专利类型
+            Integer patentType = item.getPatentType();
+            if (patentType != null) {
+                if (patentType.equals(2) || patentType.equals(9)) {
+                    item.setType("实用新型");
+                } else if (patentType.equals(1) || patentType.equals(8)) {
+                    item.setType("发明");
+                } else if (patentType.equals(3)) {
+                    item.setType("外观设计");
+                }
+            }
+
             //如果有公开号,则将公开号作为专利号
             //如果有公开号,则将公开号作为专利号
-            if (item.getPublicNo() != null && !item.getPublicNo().equals("")) {
+            if (item.getApplicationNo() != null && !item.getApplicationNo().equals("") && item.getApplicationNo().contains("CN")) {
+                item.setPatentNo(item.getApplicationNo());
+            } else if (item.getPublicNo() != null && !item.getPublicNo().equals("")) {
                 item.setPatentNo(item.getPublicNo());
                 item.setPatentNo(item.getPublicNo());
                 //如果没有公开号,但是有公告号,则将公告号作为公开号和专利号
                 //如果没有公开号,但是有公告号,则将公告号作为公开号和专利号
-            } else if (item.getAnnounceNo() != null && !item.getAnnounceNo().equals("")) {
-                item.setPublicNo(item.getAnnounceNo());
-                item.setPatentNo(item.getAnnounceNo());
+            }
+            if (item.getPublicAccreditNo() != null && !item.getPublicAccreditNo().equals("")) {
+                if (item.getPublicNo() == null || item.getPublicNo().equals("")) {
+                    item.setPublicNo(item.getPublicAccreditNo());
+                }
+                if (item.getPatentNo() == null) {
+                    item.setPatentNo(item.getPublicAccreditNo());
+                }
             } else {
             } else {
                 System.out.println("");
                 System.out.println("");
 
 
             }
             }
-            //陈宇 ↓ 如果没有公开日就将公告日作为公开日
+
+            //如果没有公开日就将公告日作为公开日
             if (item.getPublicDate() == null || item.getPublicDate().equals("")) {
             if (item.getPublicDate() == null || item.getPublicDate().equals("")) {
                 item.setPublicDate(item.getPublicAccreditDate());
                 item.setPublicDate(item.getPublicAccreditDate());
             }
             }
             item.setApplicant(new ArrayList<>());
             item.setApplicant(new ArrayList<>());
             item.setAgent(new ArrayList<>());
             item.setAgent(new ArrayList<>());
             item.setIpcList(Arrays.asList(item.getIpcListStr().split(";")));
             item.setIpcList(Arrays.asList(item.getIpcListStr().split(";")));
+            if (item.getApplicationAddress() == null) {
+                item.setApplicationAddress("");
+            }
+
+            List<String> applicationAddress = Arrays.asList(item.getApplicationAddress().split(";"));
             List<String> applicants = Arrays.asList(item.getApplicantStr().split(";"));
             List<String> applicants = Arrays.asList(item.getApplicantStr().split(";"));
             //装载申请人
             //装载申请人
-            applicants.forEach(
-                    tem -> {
-                        PatentApplicant patentApplicant = new PatentApplicant();
-                        patentApplicant.setType(2);
-                        patentApplicant.setDataType(2);
-                        patentApplicant.setName(tem);
-                        item.getApplicant().add(patentApplicant);
-                    }
-            );
+            for (int i = 0; i < applicants.size(); i++) {
+                PatentApplicant patentApplicant = new PatentApplicant();
+                patentApplicant.setType(2);
+                patentApplicant.setDataType(2);
+                patentApplicant.setName(applicants.get(i));
+                if (applicationAddress.size() > i) {
+                    patentApplicant.setAddressStr(applicationAddress.get(i));
+                }
+                item.getApplicant().add(patentApplicant);
+            }
+
+            //装载权利人
             if (item.getCurrentApplicantStr() != null && !item.getCurrentApplicantStr().equals("")) {
             if (item.getCurrentApplicantStr() != null && !item.getCurrentApplicantStr().equals("")) {
                 List<String> cApplicants = Arrays.asList(item.getCurrentApplicantStr().split(";"));
                 List<String> cApplicants = Arrays.asList(item.getCurrentApplicantStr().split(";"));
                 cApplicants.forEach(
                 cApplicants.forEach(
@@ -172,12 +227,19 @@ public class PatentStarApiService {
                         }
                         }
                 );
                 );
             }
             }
+
+            //优先权
+            if (item.getPriorityNo() != null && !item.getPriorityNo().equals("")) {
+
+            }
+
             //代理机构
             //代理机构
             if (item.getAgencyStr() != null && !item.getAgencyStr().equals("")) {
             if (item.getAgencyStr() != null && !item.getAgencyStr().equals("")) {
                 PatentAgency patentAgency = new PatentAgency();
                 PatentAgency patentAgency = new PatentAgency();
                 patentAgency.setName(item.getAgencyStr().split(" ")[0]);
                 patentAgency.setName(item.getAgencyStr().split(" ")[0]);
                 item.setAgency(patentAgency);
                 item.setAgency(patentAgency);
             }
             }
+
             //发明人
             //发明人
             if (item.getInventorStr() != null && !item.getInventorStr().equals("")) {
             if (item.getInventorStr() != null && !item.getInventorStr().equals("")) {
                 item.setInventor(new ArrayList<>());
                 item.setInventor(new ArrayList<>());
@@ -191,6 +253,7 @@ public class PatentStarApiService {
                         }
                         }
                 );
                 );
             }
             }
+
             //代理人
             //代理人
             if (item.getAgentStr() != null && !item.getAgentStr().equals("")) {
             if (item.getAgentStr() != null && !item.getAgentStr().equals("")) {
                 List<String> agent = Arrays.asList(item.getAgentStr().split(";"));
                 List<String> agent = Arrays.asList(item.getAgentStr().split(";"));
@@ -202,9 +265,14 @@ public class PatentStarApiService {
                         }
                         }
                 );
                 );
             }
             }
+            //TODO 此处不调用取附图接口,(遍历调接口效率太低)  提出者:罗总
             //附图
             //附图
-            String apN = item.getApplicationNo().replace(".", "");
-            item.setAbstractPath(this.getPictureApi(apN.substring(2)));
+//            if (item.getApplicationNo() != null && item.getApplicationNo() != "") {
+//                String apN = item.getApplicationNo().replace(".", "");
+//
+//                //String path = this.getPictureApi(apN.substring(2));
+//                //item.setAbstractPath(path);
+//            }
             if (item.getLG() != null) {
             if (item.getLG() != null) {
                 switch (item.getLG()) {
                 switch (item.getLG()) {
                     case 1:
                     case 1:
@@ -223,7 +291,6 @@ public class PatentStarApiService {
     }
     }
 
 
     public Map<String, Object> patentStarSearchLocal(PatentStarListDto patentStarListDto) throws IOException {
     public Map<String, Object> patentStarSearchLocal(PatentStarListDto patentStarListDto) throws IOException {
-
         RetrieveRecord retrieveRecord = new RetrieveRecord();
         RetrieveRecord retrieveRecord = new RetrieveRecord();
         retrieveRecord.setConditions(patentStarListDto.getCurrentQuery());
         retrieveRecord.setConditions(patentStarListDto.getCurrentQuery());
         if (patentStarListDto.getRetrieveRecordId() != null) {
         if (patentStarListDto.getRetrieveRecordId() != null) {
@@ -257,28 +324,39 @@ public class PatentStarApiService {
 
 
     public Map<String, Object> patentStarSearchApi(PatentStarListDto patentStarListDto) throws IOException {
     public Map<String, Object> patentStarSearchApi(PatentStarListDto patentStarListDto) throws IOException {
         try {
         try {
-            String formQuery = patentStarListDto.getCurrentQuery();
-            patentStarListDto.setCurrentQuery(PatentStarApiService.formatQuery(formQuery));
+            if (patentStarListDto.getFormed() == null || patentStarListDto.getFormed() == false) {
+                String formQuery = patentStarListDto.getCurrentQuery();
+                patentStarListDto.setCurrentQuery(PatentStarApiService.formatQuery(formQuery));
+                if (patentStarListDto.getDBType().equals("WD")) {
+                    StringBuilder stringBuilder = new StringBuilder(patentStarListDto.getCurrentQuery());
+                    stringBuilder.insert(patentStarListDto.getCurrentQuery().length() - 1, "-CN/GJ");
+                    patentStarListDto.setCurrentQuery(stringBuilder.toString());
 
 
+                }
+            }
         } catch (Exception e) {
         } catch (Exception e) {
             return null;
             return null;
         }
         }
+        JSONObject configObject = this.getConfigObject(4, 1);
+        String appId = configObject.getString("appId");
+        String appKey = configObject.getString("appKey");
         PatentStarDto patentStarDto = new PatentStarDto();
         PatentStarDto patentStarDto = new PatentStarDto();
         BeanUtils.copyProperties(patentStarListDto, patentStarDto);
         BeanUtils.copyProperties(patentStarListDto, patentStarDto);
         String json = JSONObject.toJSONString(patentStarDto);
         String json = JSONObject.toJSONString(patentStarDto);
         String url = "http://s.patentstar.com.cn/SearchAPI/PatentSearch/ResultGet";
         String url = "http://s.patentstar.com.cn/SearchAPI/PatentSearch/ResultGet";
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
-        String Sign = "FNYJD7902206FFB741E163BE6536C3689D55" + currentTimeMillis.toString();
+        String Sign = appKey + currentTimeMillis.toString();
         String signMd5 = FormatUtil.MD5(Sign);
         String signMd5 = FormatUtil.MD5(Sign);
         // 创建一个OkHttpClient对象
         // 创建一个OkHttpClient对象
         OkHttpClient okHttpClient = new OkHttpClient.Builder()
         OkHttpClient okHttpClient = new OkHttpClient.Builder()
                 .connectTimeout(60, TimeUnit.SECONDS)
                 .connectTimeout(60, TimeUnit.SECONDS)
                 .writeTimeout(60, TimeUnit.SECONDS)
                 .writeTimeout(60, TimeUnit.SECONDS)
                 .readTimeout(60, TimeUnit.SECONDS)
                 .readTimeout(60, TimeUnit.SECONDS)
+                .dns(new XDns(100000))
                 .build();
                 .build();
         // 创建一个RequestBody(参数1:数据类型 参数2传递的json串)
         // 创建一个RequestBody(参数1:数据类型 参数2传递的json串)
         FormBody.Builder builder = new FormBody.Builder();
         FormBody.Builder builder = new FormBody.Builder();
-        builder.add("AppID", "K8FFB741E163BE6536");
+        builder.add("AppID", appId);
         builder.add("Stamp", currentTimeMillis.toString());
         builder.add("Stamp", currentTimeMillis.toString());
         builder.add("Sign", signMd5);
         builder.add("Sign", signMd5);
         builder.add("QueryJson", json);
         builder.add("QueryJson", json);
@@ -313,6 +391,61 @@ public class PatentStarApiService {
         return null;
         return null;
     }
     }
 
 
+    public List<PatentStarListDto> getSplitedConditions(PatentStarListDto patentStarListDto, int patentNum) throws IOException {
+        DateTime nowDate = new DateTime();
+        DateTime date = DateUtils2.formStrToDateTime("1900-01-01");
+        //超过1万的列表
+        List<PatentStarListDto> patentStarListDtos = new ArrayList<>();
+        //返回的列表
+        List<PatentStarListDto> reDtos = new ArrayList<>();
+        patentStarListDto.setStartTime(date);
+        patentStarListDto.setEndTime(nowDate);
+        String formQuery = patentStarListDto.getCurrentQuery();
+        patentStarListDto.setOrginCondition(PatentStarApiService.formatQuery(formQuery));
+        patentStarListDtos.add(patentStarListDto);
+        while (patentStarListDtos.size() > 0) {
+            PatentStarListDto dto = patentStarListDtos.get(0);
+            patentStarListDtos.remove(dto);
+            Map<String, Object> map1 = this.patentStarSearchApi(dto);
+            Integer total1 = Integer.parseInt(map1.get("total").toString());
+            dto.setTotal(total1);
+            patentStarListDto.setFormed(true);
+            if (total1 > patentNum) {
+                DateTime startTime1 = dto.getStartTime();
+                DateTime endTime1 = dto.getEndTime();
+                List<DateTime> dateTimes = DateUtils2.formStrToDateTime(startTime1, endTime1);
+                PatentStarListDto dto1 = new PatentStarListDto();
+                BeanUtils.copyProperties(dto, dto1);
+                dto1.setStartTime(dateTimes.get(0));
+                dto1.setEndTime(dateTimes.get(1));
+                this.setConditions(dto1);
+                PatentStarListDto dto2 = new PatentStarListDto();
+                BeanUtils.copyProperties(dto, dto2);
+                dto2.setStartTime(dateTimes.get(2));
+                dto2.setEndTime(dateTimes.get(3));
+                this.setConditions(dto2);
+                patentStarListDtos.add(dto1);
+                patentStarListDtos.add(dto2);
+            } else if (total1 != 0) {
+                reDtos.add(dto);
+            }
+
+        }
+
+        return reDtos;
+    }
+
+    public void setConditions(PatentStarListDto patentStarListDto) {
+        DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyyMMdd");
+        String startStr = formatter.print(patentStarListDto.getStartTime());
+        String endStr = formatter.print(patentStarListDto.getEndTime());
+        String cond = "*(" + startStr + ">" + endStr + "/" + "AD)";
+        Integer len = patentStarListDto.getOrginCondition().length();
+        StringBuilder stringBuilder = new StringBuilder(patentStarListDto.getOrginCondition());
+        stringBuilder.insert(len - 1, cond);
+        patentStarListDto.setCurrentQuery(stringBuilder.toString());
+    }
+
     /**
     /**
      * @param appNo
      * @param appNo
      * @return
      * @return
@@ -322,16 +455,18 @@ public class PatentStarApiService {
      */
      */
     public String getCnBibApi(String appNo) {
     public String getCnBibApi(String appNo) {
         String url = "https://api.patentstar.com.cn/api/Patent/CnBibo/" + appNo;
         String url = "https://api.patentstar.com.cn/api/Patent/CnBibo/" + appNo;
-        String appId = "2000041";
-        String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
+        JSONObject configObject = this.getConfigObject(4, 2);
+        String appId = configObject.getString("appId");
+        String appKey = configObject.getString("appKey");
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
-        String Sign = appId + appkey + currentTimeMillis.toString();
+        String Sign = appId + appKey + currentTimeMillis.toString();
         String signMd5 = FormatUtil.MD5(Sign);
         String signMd5 = FormatUtil.MD5(Sign);
         // 创建一个OkHttpClient对象
         // 创建一个OkHttpClient对象
         OkHttpClient okHttpClient = new OkHttpClient.Builder()
         OkHttpClient okHttpClient = new OkHttpClient.Builder()
                 .connectTimeout(60, TimeUnit.SECONDS)
                 .connectTimeout(60, TimeUnit.SECONDS)
                 .writeTimeout(60, TimeUnit.SECONDS)
                 .writeTimeout(60, TimeUnit.SECONDS)
                 .readTimeout(60, TimeUnit.SECONDS)
                 .readTimeout(60, TimeUnit.SECONDS)
+                .dns(new XDns(100000))
                 .build();
                 .build();
         // 创建一个请求对象
         // 创建一个请求对象
         Request request = new Request.Builder().url(url)
         Request request = new Request.Builder().url(url)
@@ -344,7 +479,6 @@ public class PatentStarApiService {
             Response response = okHttpClient.newCall(request).execute();
             Response response = okHttpClient.newCall(request).execute();
             // 判断请求是否成功
             // 判断请求是否成功
             if (response.isSuccessful()) {
             if (response.isSuccessful()) {
-                response.body().toString();
                 // 打印服务端返回结果
                 // 打印服务端返回结果
                 return Objects.requireNonNull(response.body()).string();
                 return Objects.requireNonNull(response.body()).string();
             }
             }
@@ -364,20 +498,22 @@ public class PatentStarApiService {
      */
      */
     public String getPictureApi(String appNo) {
     public String getPictureApi(String appNo) {
         String url = "https://api.patentstar.com.cn/api/Patent/CnMainImage/" + appNo;
         String url = "https://api.patentstar.com.cn/api/Patent/CnMainImage/" + appNo;
-        String appId = "2000041";
-        String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
+        JSONObject configObject = this.getConfigObject(4, 2);
+        String appId = configObject.getString("appId");
+        String appKey = configObject.getString("appKey");
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
-        String Sign = appId + appkey + currentTimeMillis.toString();
+        String Sign = appId + appKey + currentTimeMillis.toString();
         String signMd5 = FormatUtil.MD5(Sign);
         String signMd5 = FormatUtil.MD5(Sign);
         // 创建一个OkHttpClient对象
         // 创建一个OkHttpClient对象
         OkHttpClient okHttpClient = new OkHttpClient.Builder()
         OkHttpClient okHttpClient = new OkHttpClient.Builder()
                 .connectTimeout(60, TimeUnit.SECONDS)
                 .connectTimeout(60, TimeUnit.SECONDS)
                 .writeTimeout(60, TimeUnit.SECONDS)
                 .writeTimeout(60, TimeUnit.SECONDS)
                 .readTimeout(60, TimeUnit.SECONDS)
                 .readTimeout(60, TimeUnit.SECONDS)
+                .dns(new XDns(100000))
                 .build();
                 .build();
         // 创建一个请求对象
         // 创建一个请求对象
         Request request = new Request.Builder().url(url)
         Request request = new Request.Builder().url(url)
-                .addHeader("_appid", "2000041")
+                .addHeader("_appid", appId)
                 .addHeader("_timestamp", currentTimeMillis.toString())
                 .addHeader("_timestamp", currentTimeMillis.toString())
                 .addHeader("_sign", signMd5)
                 .addHeader("_sign", signMd5)
                 .get().build();
                 .get().build();
@@ -386,12 +522,12 @@ public class PatentStarApiService {
             Response response = okHttpClient.newCall(request).execute();
             Response response = okHttpClient.newCall(request).execute();
             // 判断请求是否成功
             // 判断请求是否成功
             if (response.isSuccessful()) {
             if (response.isSuccessful()) {
-                response.body().toString();
                 // 打印服务端返回结果
                 // 打印服务端返回结果
                 return Objects.requireNonNull(response.body()).string();
                 return Objects.requireNonNull(response.body()).string();
             }
             }
         } catch (IOException e) {
         } catch (IOException e) {
             e.printStackTrace();
             e.printStackTrace();
+            return null;
         }
         }
         return "{}";
         return "{}";
     }
     }
@@ -406,20 +542,22 @@ public class PatentStarApiService {
     public String getWGPictureApi(String appNo) throws IOException {
     public String getWGPictureApi(String appNo) throws IOException {
 
 
         String url = "https://api.patentstar.com.cn/api/Patent/CnWGImage/" + appNo;
         String url = "https://api.patentstar.com.cn/api/Patent/CnWGImage/" + appNo;
-        String appId = "2000041";
-        String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
+        JSONObject configObject = this.getConfigObject(4, 2);
+        String appId = configObject.getString("appId");
+        String appKey = configObject.getString("appKey");
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
-        String Sign = appId + appkey + currentTimeMillis.toString();
+        String Sign = appId + appKey + currentTimeMillis.toString();
         String signMd5 = FormatUtil.MD5(Sign);
         String signMd5 = FormatUtil.MD5(Sign);
         // 创建一个OkHttpClient对象
         // 创建一个OkHttpClient对象
         OkHttpClient okHttpClient = new OkHttpClient.Builder()
         OkHttpClient okHttpClient = new OkHttpClient.Builder()
                 .connectTimeout(60, TimeUnit.SECONDS)
                 .connectTimeout(60, TimeUnit.SECONDS)
                 .writeTimeout(60, TimeUnit.SECONDS)
                 .writeTimeout(60, TimeUnit.SECONDS)
                 .readTimeout(60, TimeUnit.SECONDS)
                 .readTimeout(60, TimeUnit.SECONDS)
+                .dns(new XDns(100000))
                 .build();
                 .build();
         // 创建一个请求对象
         // 创建一个请求对象
         Request request = new Request.Builder().url(url)
         Request request = new Request.Builder().url(url)
-                .addHeader("_appid", "2000041")
+                .addHeader("_appid", appId)
                 .addHeader("_timestamp", currentTimeMillis.toString())
                 .addHeader("_timestamp", currentTimeMillis.toString())
                 .addHeader("_sign", signMd5)
                 .addHeader("_sign", signMd5)
                 .get().build();
                 .get().build();
@@ -428,7 +566,6 @@ public class PatentStarApiService {
             Response response = okHttpClient.newCall(request).execute();
             Response response = okHttpClient.newCall(request).execute();
             // 判断请求是否成功
             // 判断请求是否成功
             if (response.isSuccessful()) {
             if (response.isSuccessful()) {
-                response.body().toString();
                 // 打印服务端返回结果
                 // 打印服务端返回结果
                 return Objects.requireNonNull(response.body()).string();
                 return Objects.requireNonNull(response.body()).string();
             }
             }
@@ -447,20 +584,22 @@ public class PatentStarApiService {
      */
      */
     public String getCnLegalApi(String appNo) {
     public String getCnLegalApi(String appNo) {
         String url = "https://api.patentstar.com.cn/api/Patent/CnLegal/" + appNo;
         String url = "https://api.patentstar.com.cn/api/Patent/CnLegal/" + appNo;
-        String appId = "2000041";
-        String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
+        JSONObject configObject = this.getConfigObject(4, 2);
+        String appId = configObject.getString("appId");
+        String appKey = configObject.getString("appKey");
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
-        String Sign = appId + appkey + currentTimeMillis.toString();
+        String Sign = appId + appKey + currentTimeMillis.toString();
         String signMd5 = FormatUtil.MD5(Sign);
         String signMd5 = FormatUtil.MD5(Sign);
         // 创建一个OkHttpClient对象
         // 创建一个OkHttpClient对象
         OkHttpClient okHttpClient = new OkHttpClient.Builder()
         OkHttpClient okHttpClient = new OkHttpClient.Builder()
                 .connectTimeout(60, TimeUnit.SECONDS)
                 .connectTimeout(60, TimeUnit.SECONDS)
                 .writeTimeout(60, TimeUnit.SECONDS)
                 .writeTimeout(60, TimeUnit.SECONDS)
                 .readTimeout(60, TimeUnit.SECONDS)
                 .readTimeout(60, TimeUnit.SECONDS)
+                .dns(new XDns(100000))
                 .build();
                 .build();
         // 创建一个请求对象
         // 创建一个请求对象
         Request request = new Request.Builder().url(url)
         Request request = new Request.Builder().url(url)
-                .addHeader("_appid", "2000041")
+                .addHeader("_appid", appId)
                 .addHeader("_timestamp", currentTimeMillis.toString())
                 .addHeader("_timestamp", currentTimeMillis.toString())
                 .addHeader("_sign", signMd5)
                 .addHeader("_sign", signMd5)
                 .get().build();
                 .get().build();
@@ -469,7 +608,6 @@ public class PatentStarApiService {
             Response response = okHttpClient.newCall(request).execute();
             Response response = okHttpClient.newCall(request).execute();
             // 判断请求是否成功
             // 判断请求是否成功
             if (response.isSuccessful()) {
             if (response.isSuccessful()) {
-                response.body().toString();
                 // 打印服务端返回结果
                 // 打印服务端返回结果
                 return Objects.requireNonNull(response.body()).string();
                 return Objects.requireNonNull(response.body()).string();
             }
             }
@@ -488,20 +626,22 @@ public class PatentStarApiService {
      */
      */
     public String getCnPdfApi(String appNo) throws IOException {
     public String getCnPdfApi(String appNo) throws IOException {
         String url = "https://api.patentstar.com.cn/api/Patent/CnPdf/" + appNo;
         String url = "https://api.patentstar.com.cn/api/Patent/CnPdf/" + appNo;
-        String appId = "2000041";
-        String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
+        JSONObject configObject = this.getConfigObject(4, 2);
+        String appId = configObject.getString("appId");
+        String appKey = configObject.getString("appKey");
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
-        String Sign = appId + appkey + currentTimeMillis.toString();
+        String Sign = appId + appKey + currentTimeMillis.toString();
         String signMd5 = FormatUtil.MD5(Sign);
         String signMd5 = FormatUtil.MD5(Sign);
         // 创建一个OkHttpClient对象
         // 创建一个OkHttpClient对象
         OkHttpClient okHttpClient = new OkHttpClient.Builder()
         OkHttpClient okHttpClient = new OkHttpClient.Builder()
                 .connectTimeout(60, TimeUnit.SECONDS)
                 .connectTimeout(60, TimeUnit.SECONDS)
                 .writeTimeout(60, TimeUnit.SECONDS)
                 .writeTimeout(60, TimeUnit.SECONDS)
                 .readTimeout(60, TimeUnit.SECONDS)
                 .readTimeout(60, TimeUnit.SECONDS)
+                .dns(new XDns(100000))
                 .build();
                 .build();
         // 创建一个请求对象
         // 创建一个请求对象
         Request request = new Request.Builder().url(url)
         Request request = new Request.Builder().url(url)
-                .addHeader("_appid", "2000041")
+                .addHeader("_appid", appId)
                 .addHeader("_timestamp", currentTimeMillis.toString())
                 .addHeader("_timestamp", currentTimeMillis.toString())
                 .addHeader("_sign", signMd5)
                 .addHeader("_sign", signMd5)
                 .get().build();
                 .get().build();
@@ -510,7 +650,6 @@ public class PatentStarApiService {
             Response response = okHttpClient.newCall(request).execute();
             Response response = okHttpClient.newCall(request).execute();
             // 判断请求是否成功
             // 判断请求是否成功
             if (response.isSuccessful()) {
             if (response.isSuccessful()) {
-                response.body().toString();
                 // 打印服务端返回结果
                 // 打印服务端返回结果
                 return Objects.requireNonNull(response.body()).string();
                 return Objects.requireNonNull(response.body()).string();
             }
             }
@@ -530,20 +669,22 @@ public class PatentStarApiService {
 
 
     public String getCnFullXmlApi(String appNo) throws IOException {
     public String getCnFullXmlApi(String appNo) throws IOException {
         String url = "https://api.patentstar.com.cn/api/Patent/CnFullXml/" + appNo;
         String url = "https://api.patentstar.com.cn/api/Patent/CnFullXml/" + appNo;
-        String appId = "2000041";
-        String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
+        JSONObject configObject = this.getConfigObject(4, 2);
+        String appId = configObject.getString("appId");
+        String appKey = configObject.getString("appKey");
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
-        String Sign = appId + appkey + currentTimeMillis.toString();
+        String Sign = appId + appKey + currentTimeMillis.toString();
         String signMd5 = FormatUtil.MD5(Sign);
         String signMd5 = FormatUtil.MD5(Sign);
         // 创建一个OkHttpClient对象
         // 创建一个OkHttpClient对象
         OkHttpClient okHttpClient = new OkHttpClient.Builder()
         OkHttpClient okHttpClient = new OkHttpClient.Builder()
                 .connectTimeout(60, TimeUnit.SECONDS)
                 .connectTimeout(60, TimeUnit.SECONDS)
                 .writeTimeout(60, TimeUnit.SECONDS)
                 .writeTimeout(60, TimeUnit.SECONDS)
                 .readTimeout(60, TimeUnit.SECONDS)
                 .readTimeout(60, TimeUnit.SECONDS)
+                .dns(new XDns(100000))
                 .build();
                 .build();
         // 创建一个请求对象
         // 创建一个请求对象
         Request request = new Request.Builder().url(url)
         Request request = new Request.Builder().url(url)
-                .addHeader("_appid", "2000041")
+                .addHeader("_appid", appId)
                 .addHeader("_timestamp", currentTimeMillis.toString())
                 .addHeader("_timestamp", currentTimeMillis.toString())
                 .addHeader("_sign", signMd5)
                 .addHeader("_sign", signMd5)
                 .get().build();
                 .get().build();
@@ -552,7 +693,6 @@ public class PatentStarApiService {
             Response response = okHttpClient.newCall(request).execute();
             Response response = okHttpClient.newCall(request).execute();
             // 判断请求是否成功
             // 判断请求是否成功
             if (response.isSuccessful()) {
             if (response.isSuccessful()) {
-                response.body().toString();
                 // 打印服务端返回结果
                 // 打印服务端返回结果
                 return Objects.requireNonNull(response.body()).string();
                 return Objects.requireNonNull(response.body()).string();
             }
             }
@@ -571,20 +711,24 @@ public class PatentStarApiService {
      */
      */
     public String getEnPdfApi(String patentNo) {
     public String getEnPdfApi(String patentNo) {
         String url = "  https://api.patentstar.com.cn/api/Patent/EnPdf/" + patentNo;
         String url = "  https://api.patentstar.com.cn/api/Patent/EnPdf/" + patentNo;
-        String appId = "2000041";
-        String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
+        JSONObject configObject = this.getConfigObject(4, 2);
+        String appId = configObject.getString("appId");
+        String appKey = configObject.getString("appKey");
+//        String appId = "1000046";
+//        String appkey = "6AE6D4DC6AF94F26862501EDEE9E27A2";
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
-        String Sign = appId + appkey + currentTimeMillis.toString();
+        String Sign = appId + appKey + currentTimeMillis.toString();
         String signMd5 = FormatUtil.MD5(Sign);
         String signMd5 = FormatUtil.MD5(Sign);
         // 创建一个OkHttpClient对象
         // 创建一个OkHttpClient对象
         OkHttpClient okHttpClient = new OkHttpClient.Builder()
         OkHttpClient okHttpClient = new OkHttpClient.Builder()
                 .connectTimeout(60, TimeUnit.SECONDS)
                 .connectTimeout(60, TimeUnit.SECONDS)
                 .writeTimeout(60, TimeUnit.SECONDS)
                 .writeTimeout(60, TimeUnit.SECONDS)
                 .readTimeout(60, TimeUnit.SECONDS)
                 .readTimeout(60, TimeUnit.SECONDS)
+                .dns(new XDns(100000))
                 .build();
                 .build();
         // 创建一个请求对象
         // 创建一个请求对象
         Request request = new Request.Builder().url(url)
         Request request = new Request.Builder().url(url)
-                .addHeader("_appid", "2000041")
+                .addHeader("_appid", appId)
                 .addHeader("_timestamp", currentTimeMillis.toString())
                 .addHeader("_timestamp", currentTimeMillis.toString())
                 .addHeader("_sign", signMd5)
                 .addHeader("_sign", signMd5)
                 .get().build();
                 .get().build();
@@ -593,7 +737,6 @@ public class PatentStarApiService {
             Response response = okHttpClient.newCall(request).execute();
             Response response = okHttpClient.newCall(request).execute();
             // 判断请求是否成功
             // 判断请求是否成功
             if (response.isSuccessful()) {
             if (response.isSuccessful()) {
-                response.body().toString();
                 // 打印服务端返回结果
                 // 打印服务端返回结果
                 return Objects.requireNonNull(response.body()).string();
                 return Objects.requireNonNull(response.body()).string();
             }
             }
@@ -611,21 +754,23 @@ public class PatentStarApiService {
      * 从专利之星获取世界专利著录信息
      * 从专利之星获取世界专利著录信息
      */
      */
     public String getENBibApi(String patentNo) {
     public String getENBibApi(String patentNo) {
-        String url = "https://api.patentstar.com.cn/api/Patent/ENBib/" + patentNo;
-        String appId = "2000041";
-        String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
+        String url = "https://api.patentstar.com.cn/api/Patent/EnBib/" + patentNo;
+        JSONObject configObject = this.getConfigObject(4, 2);
+        String appId = configObject.getString("appId");
+        String appKey = configObject.getString("appKey");
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
-        String Sign = appId + appkey + currentTimeMillis.toString();
+        String Sign = appId + appKey + currentTimeMillis.toString();
         String signMd5 = FormatUtil.MD5(Sign);
         String signMd5 = FormatUtil.MD5(Sign);
         // 创建一个OkHttpClient对象
         // 创建一个OkHttpClient对象
         OkHttpClient okHttpClient = new OkHttpClient.Builder()
         OkHttpClient okHttpClient = new OkHttpClient.Builder()
                 .connectTimeout(60, TimeUnit.SECONDS)
                 .connectTimeout(60, TimeUnit.SECONDS)
                 .writeTimeout(60, TimeUnit.SECONDS)
                 .writeTimeout(60, TimeUnit.SECONDS)
                 .readTimeout(60, TimeUnit.SECONDS)
                 .readTimeout(60, TimeUnit.SECONDS)
+                .dns(new XDns(100000))
                 .build();
                 .build();
         // 创建一个请求对象
         // 创建一个请求对象
         Request request = new Request.Builder().url(url)
         Request request = new Request.Builder().url(url)
-                .addHeader("_appid", "2000041")
+                .addHeader("_appid", appId)
                 .addHeader("_timestamp", currentTimeMillis.toString())
                 .addHeader("_timestamp", currentTimeMillis.toString())
                 .addHeader("_sign", signMd5)
                 .addHeader("_sign", signMd5)
                 .get().build();
                 .get().build();
@@ -634,7 +779,6 @@ public class PatentStarApiService {
             Response response = okHttpClient.newCall(request).execute();
             Response response = okHttpClient.newCall(request).execute();
             // 判断请求是否成功
             // 判断请求是否成功
             if (response.isSuccessful()) {
             if (response.isSuccessful()) {
-                response.body().toString();
                 // 打印服务端返回结果
                 // 打印服务端返回结果
                 return Objects.requireNonNull(response.body()).string();
                 return Objects.requireNonNull(response.body()).string();
             }
             }
@@ -653,20 +797,22 @@ public class PatentStarApiService {
      */
      */
     public String getFamilyByPubNoApi(String patentNo) {
     public String getFamilyByPubNoApi(String patentNo) {
         String url = "https://api.patentstar.com.cn/api/Patent/FamilyByPubNo/" + patentNo;
         String url = "https://api.patentstar.com.cn/api/Patent/FamilyByPubNo/" + patentNo;
-        String appId = "2000041";
-        String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
+        JSONObject configObject = this.getConfigObject(4, 2);
+        String appId = configObject.getString("appId");
+        String appKey = configObject.getString("appKey");
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
-        String Sign = appId + appkey + currentTimeMillis.toString();
+        String Sign = appId + appKey + currentTimeMillis.toString();
         String signMd5 = FormatUtil.MD5(Sign);
         String signMd5 = FormatUtil.MD5(Sign);
         // 创建一个OkHttpClient对象
         // 创建一个OkHttpClient对象
         OkHttpClient okHttpClient = new OkHttpClient.Builder()
         OkHttpClient okHttpClient = new OkHttpClient.Builder()
                 .connectTimeout(60, TimeUnit.SECONDS)
                 .connectTimeout(60, TimeUnit.SECONDS)
                 .writeTimeout(60, TimeUnit.SECONDS)
                 .writeTimeout(60, TimeUnit.SECONDS)
                 .readTimeout(60, TimeUnit.SECONDS)
                 .readTimeout(60, TimeUnit.SECONDS)
+                .dns(new XDns(100000))
                 .build();
                 .build();
         // 创建一个请求对象
         // 创建一个请求对象
         Request request = new Request.Builder().url(url)
         Request request = new Request.Builder().url(url)
-                .addHeader("_appid", "2000041")
+                .addHeader("_appid", appId)
                 .addHeader("_timestamp", currentTimeMillis.toString())
                 .addHeader("_timestamp", currentTimeMillis.toString())
                 .addHeader("_sign", signMd5)
                 .addHeader("_sign", signMd5)
                 .get().build();
                 .get().build();
@@ -675,7 +821,6 @@ public class PatentStarApiService {
             Response response = okHttpClient.newCall(request).execute();
             Response response = okHttpClient.newCall(request).execute();
             // 判断请求是否成功
             // 判断请求是否成功
             if (response.isSuccessful()) {
             if (response.isSuccessful()) {
-                response.body().toString();
                 // 打印服务端返回结果
                 // 打印服务端返回结果
                 return Objects.requireNonNull(response.body()).string();
                 return Objects.requireNonNull(response.body()).string();
             }
             }
@@ -694,20 +839,22 @@ public class PatentStarApiService {
      */
      */
     public String getCitedNumByPubNoApi(String patentNo) throws IOException {
     public String getCitedNumByPubNoApi(String patentNo) throws IOException {
         String url = "https://api.patentstar.com.cn/api/Patent/CitedNumByPubNo/" + patentNo;
         String url = "https://api.patentstar.com.cn/api/Patent/CitedNumByPubNo/" + patentNo;
-        String appId = "2000041";
-        String appkey = "F0E183D5F02C48E391F5FADF1B646F54";
+        JSONObject configObject = this.getConfigObject(4, 2);
+        String appId = configObject.getString("appId");
+        String appKey = configObject.getString("appKey");
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
         Long currentTimeMillis = System.currentTimeMillis() / 1000;
-        String Sign = appId + appkey + currentTimeMillis.toString();
+        String Sign = appId + appKey + currentTimeMillis.toString();
         String signMd5 = FormatUtil.MD5(Sign);
         String signMd5 = FormatUtil.MD5(Sign);
         // 创建一个OkHttpClient对象
         // 创建一个OkHttpClient对象
         OkHttpClient okHttpClient = new OkHttpClient.Builder()
         OkHttpClient okHttpClient = new OkHttpClient.Builder()
                 .connectTimeout(60, TimeUnit.SECONDS)
                 .connectTimeout(60, TimeUnit.SECONDS)
                 .writeTimeout(60, TimeUnit.SECONDS)
                 .writeTimeout(60, TimeUnit.SECONDS)
                 .readTimeout(60, TimeUnit.SECONDS)
                 .readTimeout(60, TimeUnit.SECONDS)
+                .dns(new XDns(100000))
                 .build();
                 .build();
         // 创建一个请求对象
         // 创建一个请求对象
         Request request = new Request.Builder().url(url)
         Request request = new Request.Builder().url(url)
-                .addHeader("_appid", "2000041")
+                .addHeader("_appid", appId)
                 .addHeader("_timestamp", currentTimeMillis.toString())
                 .addHeader("_timestamp", currentTimeMillis.toString())
                 .addHeader("_sign", signMd5)
                 .addHeader("_sign", signMd5)
                 .get().build();
                 .get().build();
@@ -716,7 +863,6 @@ public class PatentStarApiService {
             Response response = okHttpClient.newCall(request).execute();
             Response response = okHttpClient.newCall(request).execute();
             // 判断请求是否成功
             // 判断请求是否成功
             if (response.isSuccessful()) {
             if (response.isSuccessful()) {
-                response.body().toString();
                 // 打印服务端返回结果
                 // 打印服务端返回结果
                 return Objects.requireNonNull(response.body()).string();
                 return Objects.requireNonNull(response.body()).string();
             }
             }
@@ -726,4 +872,16 @@ public class PatentStarApiService {
         return "{}";
         return "{}";
     }
     }
 
 
+
+    public JSONObject getConfigObject(Integer webId, Integer webGroup) {
+
+        WebLoginConfig webLoginConfig = webLoginConfigService.getConfig(webId, webGroup);
+        if (webLoginConfig == null) {
+            return null;
+        }
+        String config = webLoginConfig.getWebConfig();
+        JSONObject jsonObject = JSONObject.parseObject(config);
+        return jsonObject;
+    }
+
 }
 }

+ 4 - 0
PAS/src/main/java/cn/cslg/pas/service/upLoadPatent/ExcutePatentDataExcel.java

@@ -61,6 +61,10 @@ public class ExcutePatentDataExcel implements IExcutePatentData {
                 PatentData patentData = ReadExcelUtils.readExcelOneRow(filePath, sheet, i + 1);
                 PatentData patentData = ReadExcelUtils.readExcelOneRow(filePath, sheet, i + 1);
                 //调用装载数据类(根据数据源配置文件对象和专利源数据生成专利数据)
                 //调用装载数据类(根据数据源配置文件对象和专利源数据生成专利数据)
                 UploadParamsVO uploadParamsVO = excuteDataToVOService.fileToPatentVO(patentData, jsonData);
                 UploadParamsVO uploadParamsVO = excuteDataToVOService.fileToPatentVO(patentData, jsonData);
+                //如果是中国专利,就将申请号作为专利号
+                if (uploadParamsVO.getPatent().getPatentNo().contains("CN")) {
+                    uploadParamsVO.getPatent().setPatentNo(uploadParamsVO.getPatent().getApplicationNo());  //将申请号设为专利号patentNo
+                }
 
 
                 //专利丢入消费者队列,并唤醒消费者线程
                 //专利丢入消费者队列,并唤醒消费者线程
                 pantentQueueService.patentToQueue(task, uploadParamsVO);
                 pantentQueueService.patentToQueue(task, uploadParamsVO);

File diff suppressed because it is too large
+ 739 - 278
PAS/src/main/java/cn/cslg/pas/service/upLoadPatent/ExcutePatentDataStar.java


+ 1 - 0
PAS/src/main/java/cn/cslg/pas/service/upLoadPatent/MessageService.java

@@ -35,6 +35,7 @@ public class MessageService {
                 .setTaskId(task.getId())
                 .setTaskId(task.getId())
                 .setTaskStatus(task.getStatus())
                 .setTaskStatus(task.getStatus())
                 .setProjectId(task.getProjectId())
                 .setProjectId(task.getProjectId())
+                .setReportId(task.getReportId())
                 .setComplete(flag)
                 .setComplete(flag)
                 .setIndex(i)
                 .setIndex(i)
                 .setTaskType(task.getType())
                 .setTaskType(task.getType())

+ 79 - 41
PAS/src/main/java/cn/cslg/pas/service/upLoadPatent/PantentQueueService.java

@@ -4,10 +4,8 @@ import cn.cslg.pas.common.model.vo.ProjectImportPatentVO;
 import cn.cslg.pas.common.model.vo.UploadParamsVO;
 import cn.cslg.pas.common.model.vo.UploadParamsVO;
 import cn.cslg.pas.common.utils.DateUtils;
 import cn.cslg.pas.common.utils.DateUtils;
 import cn.cslg.pas.common.utils.JsonUtils;
 import cn.cslg.pas.common.utils.JsonUtils;
-import cn.cslg.pas.domain.PQueueData;
-import cn.cslg.pas.domain.QuestionRecord;
-import cn.cslg.pas.domain.QueueData;
-import cn.cslg.pas.domain.Task;
+import cn.cslg.pas.common.utils.StringUtils;
+import cn.cslg.pas.domain.*;
 import cn.cslg.pas.domain.asso.TaskCondition;
 import cn.cslg.pas.domain.asso.TaskCondition;
 import cn.cslg.pas.mapper.QuestionRecordMapper;
 import cn.cslg.pas.mapper.QuestionRecordMapper;
 import cn.cslg.pas.service.OutInterfaceService;
 import cn.cslg.pas.service.OutInterfaceService;
@@ -15,6 +13,7 @@ import cn.cslg.pas.service.PatentInstructionService;
 import cn.cslg.pas.service.TaskService;
 import cn.cslg.pas.service.TaskService;
 import cn.cslg.pas.service.UploadPatentBatchService;
 import cn.cslg.pas.service.UploadPatentBatchService;
 import cn.cslg.pas.service.asso.TaskConditionService;
 import cn.cslg.pas.service.asso.TaskConditionService;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.context.annotation.Lazy;
@@ -104,10 +103,10 @@ public class PantentQueueService {
                     }
                     }
 
 
                     //若是网站导入任务,则将网站导入相关信息存入task对象中(方便生产与消费时使用)
                     //若是网站导入任务,则将网站导入相关信息存入task对象中(方便生产与消费时使用)
-                    if (task.getType().equals(3) || task.getType().equals(4)) {
+                    if (task.getType().equals(3) || task.getType().equals(4) || task.getType().equals(5)) {
                         TaskCondition taskCondition = taskConditionService.getById(task.getTaskConditionId());
                         TaskCondition taskCondition = taskConditionService.getById(task.getTaskConditionId());
                         List<String> configCells = Arrays.asList(taskCondition.getConfigCells().split(","));
                         List<String> configCells = Arrays.asList(taskCondition.getConfigCells().split(","));
-                        task.setConfigCellsNum(configCells.size());  //将下载字段数量存入task对象中(为了在后面发送进度时可以根据下载字段的数量来对应消费者数量,从而确定是否完成了一个专利的下载)
+                        task.setConfigCellsNum(configCells.size());
                         task.setConfigCells(configCells);
                         task.setConfigCells(configCells);
                         task.setOrderBy(taskCondition.getOrderBy());
                         task.setOrderBy(taskCondition.getOrderBy());
                         task.setOrderByType(taskCondition.getOrderByType());
                         task.setOrderByType(taskCondition.getOrderByType());
@@ -121,6 +120,8 @@ public class PantentQueueService {
                             task.setIsDeletePatentNos(Arrays.asList(taskCondition.getIsDeletePatentNos().split(",")));
                             task.setIsDeletePatentNos(Arrays.asList(taskCondition.getIsDeletePatentNos().split(",")));
                         }
                         }
                         task.setConditions(taskCondition.getConditions());
                         task.setConditions(taskCondition.getConditions());
+                        task.setContinueLastInformation(taskCondition.getContinueLastInformation());
+                        task.setIsAddType(taskCondition.getIsAddType());
                     }
                     }
 
 
                     //TODO 调用工厂方法,工厂方法会根据任务类型创建并返回对应的生产专利方法的对象
                     //TODO 调用工厂方法,工厂方法会根据任务类型创建并返回对应的生产专利方法的对象
@@ -158,7 +159,7 @@ public class PantentQueueService {
                             .setUploadParamsVO(pQueueData.getUploadParamsVO());
                             .setUploadParamsVO(pQueueData.getUploadParamsVO());
 
 
                     //专利之星
                     //专利之星
-                    if (task.getType() == 4) {
+                    if (task.getType() == 4 || task.getType().equals(5)) {
                         excutePatentDataStar.setPatentZhuLu(pQueueData.getStarPatent(), pQueueData.getUploadParamsVO());
                         excutePatentDataStar.setPatentZhuLu(pQueueData.getStarPatent(), pQueueData.getUploadParamsVO());
                     }
                     }
 
 
@@ -202,18 +203,21 @@ public class PantentQueueService {
                             .setUploadParamsVO(pQueueData.getUploadParamsVO());
                             .setUploadParamsVO(pQueueData.getUploadParamsVO());
 
 
                     //专利之星
                     //专利之星
-                    if (task.getType() == 4) {
-                        excutePatentDataStar.setPatentClaim(pQueueData.getStarPatent(), pQueueData.getUploadParamsVO());
+                    Boolean canSendMessage = true;
+                    if (task.getType() == 4 || task.getType().equals(5)) {
+                        canSendMessage = excutePatentDataStar.setPatentClaim(pQueueData.getStarPatent(), pQueueData.getUploadParamsVO(), pQueueData);
                     }
                     }
 
 
                     queueData.setUploadParamsVO(pQueueData.getUploadParamsVO());
                     queueData.setUploadParamsVO(pQueueData.getUploadParamsVO());
 
 
-                    //装载完成,将其丢入权要消费者队列,并唤醒权要消费者线程
-                    patentRightQueueList.add(queueData);
-                    if (patentRightLock.tryLock()) {
-                        //patentRightLock.lock();
-                        patentRightCondition.signalAll();
-                        patentRightLock.unlock();
+                    if (canSendMessage) {
+                        //装载完成,将其丢入权要消费者队列,并唤醒权要消费者线程
+                        patentRightQueueList.add(queueData);
+                        if (patentRightLock.tryLock()) {
+                            //patentRightLock.lock();
+                            patentRightCondition.signalAll();
+                            patentRightLock.unlock();
+                        }
                     }
                     }
 
 
                 } else {
                 } else {
@@ -247,8 +251,8 @@ public class PantentQueueService {
                             .setUploadParamsVO(pQueueData.getUploadParamsVO());
                             .setUploadParamsVO(pQueueData.getUploadParamsVO());
 
 
                     //专利之星
                     //专利之星
-                    if (task.getType() == 4) {
-                        excutePatentDataStar.setPatentInstructionText(pQueueData.getStarPatent(), pQueueData.getUploadParamsVO());
+                    if (task.getType() == 4 || task.getType().equals(5)) {
+                        excutePatentDataStar.setPatentInstructionText(pQueueData.getStarPatent(), pQueueData.getUploadParamsVO(), pQueueData);
                     }
                     }
 
 
                     queueData.setUploadParamsVO(pQueueData.getUploadParamsVO());
                     queueData.setUploadParamsVO(pQueueData.getUploadParamsVO());
@@ -292,8 +296,8 @@ public class PantentQueueService {
                             .setUploadParamsVO(pQueueData.getUploadParamsVO());
                             .setUploadParamsVO(pQueueData.getUploadParamsVO());
 
 
                     //专利之星
                     //专利之星
-                    if (task.getType() == 4) {
-                        excutePatentDataStar.setPatentInstructionPDF(pQueueData.getStarPatent(), pQueueData.getUploadParamsVO());
+                    if (task.getType() == 4 || task.getType().equals(5)) {
+                        excutePatentDataStar.setPatentInstructionPDF(pQueueData.getStarPatent(), pQueueData.getUploadParamsVO(), task);
                     }
                     }
 
 
                     queueData.setUploadParamsVO(pQueueData.getUploadParamsVO());
                     queueData.setUploadParamsVO(pQueueData.getUploadParamsVO());
@@ -337,7 +341,7 @@ public class PantentQueueService {
                             .setUploadParamsVO(pQueueData.getUploadParamsVO());
                             .setUploadParamsVO(pQueueData.getUploadParamsVO());
 
 
                     //专利之星
                     //专利之星
-                    if (task.getType() == 4) {
+                    if (task.getType() == 4 || task.getType().equals(5)) {
                         excutePatentDataStar.setPatentPicture(pQueueData.getStarPatent(), pQueueData.getUploadParamsVO());
                         excutePatentDataStar.setPatentPicture(pQueueData.getStarPatent(), pQueueData.getUploadParamsVO());
                     }
                     }
 
 
@@ -384,7 +388,12 @@ public class PantentQueueService {
                         uploadPatentToDBService.uploadAssoThemaPat(queueData.getUploadParamsVO(), queueData.getTask().getProjectId());
                         uploadPatentToDBService.uploadAssoThemaPat(queueData.getUploadParamsVO(), queueData.getTask().getProjectId());
                     } else if (queueData.getTask().getReportId() != null && !queueData.getTask().getReportId().equals(0)) {
                     } else if (queueData.getTask().getReportId() != null && !queueData.getTask().getReportId().equals(0)) {
                         //与报告关联入库(调用报告系统接口)
                         //与报告关联入库(调用报告系统接口)
-                        outInterfaceService.importAssoReportPatentNo(queueData.getTask().getReportId(), queueData.getUploadParamsVO().getPatent().getPatentNo(), queueData.getUploadParamsVO().getPatent().getName());
+                        ImportTaskPatent importTaskPatent = new ImportTaskPatent();
+                        importTaskPatent.setImportTaskId(queueData.getTask().getId());
+                        importTaskPatent.setPatentNo(queueData.getUploadParamsVO().getPatent().getPatentNo());
+                        importTaskPatent.setReportId(queueData.getTask().getReportId());
+                        importTaskPatent.insert();
+                     outInterfaceService.importAssoReportPatentNo(queueData.getTask().getReportId(), queueData.getUploadParamsVO().getPatent().getPatentNo(), queueData.getUploadParamsVO().getPatent().getName(),queueData.getTask().getAsCompare());
                     }
                     }
                     if (queueData.getTask().getPramJson() != null && !queueData.getTask().getPramJson().equals("")) {
                     if (queueData.getTask().getPramJson() != null && !queueData.getTask().getPramJson().equals("")) {
                         ProjectImportPatentVO projectImportPatentVO = JsonUtils.jsonToPojo(queueData.getTask().getPramJson(), ProjectImportPatentVO.class);
                         ProjectImportPatentVO projectImportPatentVO = JsonUtils.jsonToPojo(queueData.getTask().getPramJson(), ProjectImportPatentVO.class);
@@ -393,7 +402,6 @@ public class PantentQueueService {
                         //文件夹与专利关联入库
                         //文件夹与专利关联入库
                         uploadPatentToDBService.uploadAssoPorPat(queueData.getUploadParamsVO(), projectImportPatentVO);
                         uploadPatentToDBService.uploadAssoPorPat(queueData.getUploadParamsVO(), projectImportPatentVO);
                     }
                     }
-
                     sendMessage(queueData);
                     sendMessage(queueData);
                 } else {
                 } else {
                     patentZhuluLock.lock();
                     patentZhuluLock.lock();
@@ -478,8 +486,13 @@ public class PantentQueueService {
             try {
             try {
                 if (patentInstructionPDFQueueList.size() > 0) {
                 if (patentInstructionPDFQueueList.size() > 0) {
                     queueData = patentInstructionPDFQueueList.remove(0);
                     queueData = patentInstructionPDFQueueList.remove(0);
-                    //说明书pdf入库
-                    patentInstructionService.edit(queueData.getUploadParamsVO().getPatent().getPatentNo(), queueData.getUploadParamsVO().getFileDTO());
+                    if (queueData.getUploadParamsVO().getPdf1FileDTO() != null && queueData.getUploadParamsVO().getPdf2FileDTO() == null) {  //若只有公开文档pdf
+                        patentInstructionService.edit(queueData.getUploadParamsVO().getPatent().getPatentNo(), queueData.getUploadParamsVO().getPdf1FileDTO());
+                    } else if (queueData.getUploadParamsVO().getPdf1FileDTO() == null && queueData.getUploadParamsVO().getPdf2FileDTO() != null) {  //若只有授权文档pdf
+                        patentInstructionService.edit2(queueData.getUploadParamsVO().getPatent().getPatentNo(), queueData.getUploadParamsVO().getPdf2FileDTO());
+                    } else if (queueData.getUploadParamsVO().getPdf1FileDTO() != null && queueData.getUploadParamsVO().getPdf2FileDTO() != null) {  //若同时有公开和授权两个文档pdf
+                        patentInstructionService.edit12(queueData.getUploadParamsVO().getPatent().getPatentNo(), queueData.getUploadParamsVO().getPdf1FileDTO(), queueData.getUploadParamsVO().getPdf2FileDTO());
+                    }
 
 
                     sendMessage(queueData);
                     sendMessage(queueData);
                 } else {
                 } else {
@@ -558,7 +571,6 @@ public class PantentQueueService {
             } else if (num != null && num < needNum) {
             } else if (num != null && num < needNum) {
                 patentIdMap.put(currentPatent, ++num);
                 patentIdMap.put(currentPatent, ++num);
             } else {  //表示当前这个任务这个专利的消费者全都消费结束
             } else {  //表示当前这个任务这个专利的消费者全都消费结束
-
                 //若任务状态是等待中(即该任务的第一个专利消费完时), 将状态置为进行中
                 //若任务状态是等待中(即该任务的第一个专利消费完时), 将状态置为进行中
                 if (task.getStatus() == 0) {
                 if (task.getStatus() == 0) {
                     task.setStatus(1);
                     task.setStatus(1);
@@ -566,23 +578,47 @@ public class PantentQueueService {
                     taskService.updateById(task);
                     taskService.updateById(task);
                 }
                 }
                 patentIdMap.remove(currentPatent);
                 patentIdMap.remove(currentPatent);
-
                 //任务表更新 完成条数+1
                 //任务表更新 完成条数+1
                 task.setSuccessNum(task.getSuccessNum() + 1);
                 task.setSuccessNum(task.getSuccessNum() + 1);
+                //根据专利号查询专利是否有导入失败记录
+                String patentNo = queueData.getUploadParamsVO().getPatent().getPatentNo();
+                LambdaQueryWrapper<QuestionRecord> wrapper = new LambdaQueryWrapper<>();
+                wrapper.eq(QuestionRecord::getTaskId, task.getId())
+                        .eq(QuestionRecord::getPatentNo, patentNo);
+                List<QuestionRecord> questionRecords = questionRecordService.list(wrapper);
+                if (questionRecords.size() > 0) {
+                    task.setDefaultNum(task.getDefaultNum() + 1);
+                }
                 Task updateTask = new Task();
                 Task updateTask = new Task();
                 updateTask.setId(task.getId());
                 updateTask.setId(task.getId());
-                updateTask.setDefaultNum(questionRecordMapper.selectDefaultNum(task.getId()));
-                updateTask.setTrueSuccessNum(task.getSuccessNum() - task.getDefaultNum());
                 updateTask.setSuccessNum(task.getSuccessNum());
                 updateTask.setSuccessNum(task.getSuccessNum());
+                updateTask.setDefaultNum(task.getDefaultNum());
+                updateTask.setTrueSuccessNum(task.getSuccessNum() - updateTask.getDefaultNum());
                 taskService.updateById(updateTask);
                 taskService.updateById(updateTask);
 
 
-                long percentage = (long) Math.floor((task.getSuccessNum() + 0D) / total * 100D);
+                //任务条件表更新isAddPatentNos
+                if (task.getIsAddPatentNos() != null && task.getIsAddPatentNos().size() > 0) {
+                    ArrayList<String> updateIsAddPatentNos = new ArrayList<>(task.getIsAddPatentNos());
+                    updateIsAddPatentNos.removeIf(item -> item.equals(queueData.getUploadParamsVO().getPatent().getPatentNo()));
+                    updateIsAddPatentNos.removeIf(item -> item.equals(queueData.getUploadParamsVO().getPatent().getApplicationNo()));
+
+                    TaskCondition taskCondition = new TaskCondition()
+                            .setId(task.getTaskConditionId())
+                            .setIsAddPatentNos(StringUtils.join(updateIsAddPatentNos, ","));
+                    taskConditionService.updateById(taskCondition);
+
+                    task.setIsAddPatentNos(updateIsAddPatentNos);
 
 
+                }
+
+                long percentage = (long) Math.floor((task.getSuccessNum() + 0D) / total * 100D);
                 //当全部完成时
                 //当全部完成时
                 if (task.getSuccessNum().equals(total)) {
                 if (task.getSuccessNum().equals(total)) {
                     percentage = 100L;
                     percentage = 100L;
                     //任务表更新最终数据
                     //任务表更新最终数据
-                    task.setDefaultNum(questionRecordMapper.selectDefaultNum(task.getId()));
+                    if (questionRecords.size() > 0) {
+                        updateTask.setDefaultNum(task.getDefaultNum() + 1);
+                    }
                     task.setTrueSuccessNum(task.getSuccessNum() - task.getDefaultNum());
                     task.setTrueSuccessNum(task.getSuccessNum() - task.getDefaultNum());
                     task.setStatus(2);
                     task.setStatus(2);
                     task.setEndTime(DateUtils.getDateTime());
                     task.setEndTime(DateUtils.getDateTime());
@@ -596,7 +632,6 @@ public class PantentQueueService {
         }
         }
     }
     }
 
 
-
     /**
     /**
      * 数据丢入著录项目生产队列并唤醒装载著录项目线程
      * 数据丢入著录项目生产队列并唤醒装载著录项目线程
      *
      *
@@ -735,7 +770,7 @@ public class PantentQueueService {
      * @param taskId 任务id
      * @param taskId 任务id
      */
      */
     public void setQueueRemoveTasks(Integer taskId) {
     public void setQueueRemoveTasks(Integer taskId) {
-        //任务暂停时清除生产者队列中已有的该任务的所有专利
+        //任务暂停时清除生产者队列中该任务元素
         this.setPatentZhuluQueueList.removeIf(pQueueData -> pQueueData.getTask().getId().equals(taskId));
         this.setPatentZhuluQueueList.removeIf(pQueueData -> pQueueData.getTask().getId().equals(taskId));
         this.setPatentRightQueueList.removeIf(pQueueData -> pQueueData.getTask().getId().equals(taskId));
         this.setPatentRightQueueList.removeIf(pQueueData -> pQueueData.getTask().getId().equals(taskId));
         this.setPatentInstructionTextQueueList.removeIf(pQueueData -> pQueueData.getTask().getId().equals(taskId));
         this.setPatentInstructionTextQueueList.removeIf(pQueueData -> pQueueData.getTask().getId().equals(taskId));
@@ -756,14 +791,15 @@ public class PantentQueueService {
         this.patentInstructionPDFQueueList.removeIf(queueData -> queueData.getTask().getId().equals(taskId));
         this.patentInstructionPDFQueueList.removeIf(queueData -> queueData.getTask().getId().equals(taskId));
         this.patentImageQueueList.removeIf(queueData -> queueData.getTask().getId().equals(taskId));
         this.patentImageQueueList.removeIf(queueData -> queueData.getTask().getId().equals(taskId));
         //任务暂停时清除 patentIdMap(任务id + "|" + 专利id,拼接而成的专利的数量标识(作为辨别某一任务的某一专利消费完成的消费者数量))中该任务的专利数量标识
         //任务暂停时清除 patentIdMap(任务id + "|" + 专利id,拼接而成的专利的数量标识(作为辨别某一任务的某一专利消费完成的消费者数量))中该任务的专利数量标识
-        Iterator<String> iterator = this.patentIdMap.keySet().iterator();
-        while (iterator.hasNext()) {
-            String key = iterator.next();
-            if (key.contains(taskId + "")) {
-                iterator.remove();
-                this.patentIdMap.remove(key);
-            }
-        }
+//        Iterator<String> iterator = this.patentIdMap.keySet().iterator();
+        this.patentIdMap.keySet().removeIf(item -> item.contains(taskId + "|"));
+//        while (iterator.hasNext()) {
+//            String key = iterator.next();
+//            if (key.contains(taskId + "|")) {
+//                iterator.remove();
+//                this.patentIdMap.remove(key);
+//            }
+//        }
 
 
     }
     }
 
 
@@ -793,6 +829,8 @@ public class PantentQueueService {
                 return excutePatentDataEpo;
                 return excutePatentDataEpo;
             case 4:  //专利之星网站导入
             case 4:  //专利之星网站导入
                 return excutePatentDataStar;
                 return excutePatentDataStar;
+            case 5:  //专利号导入(也是专利之星方式)
+                return excutePatentDataStar;
             default:
             default:
                 return null;
                 return null;
         }
         }
@@ -807,7 +845,7 @@ public class PantentQueueService {
      */
      */
     public void saveQuestionRecord(QueueData queueData, Integer cell) {
     public void saveQuestionRecord(QueueData queueData, Integer cell) {
         QuestionRecord questionRecord = new QuestionRecord()
         QuestionRecord questionRecord = new QuestionRecord()
-                .setPatentNo(queueData.getUploadParamsVO().getPatent().getPatentNo())
+                .setPatentNo(queueData.getUploadParamsVO().getPatent().getApplicationNo())
                 .setTaskId(queueData.getTask().getId())
                 .setTaskId(queueData.getTask().getId())
                 .setCell(cell);
                 .setCell(cell);
         questionRecordService.save(questionRecord);
         questionRecordService.save(questionRecord);

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

@@ -52,7 +52,7 @@ public class UploadPatentToDBService {
     public void uploadPatentImage2(UploadParamsVO uploadParamsVO) throws IOException {
     public void uploadPatentImage2(UploadParamsVO uploadParamsVO) throws IOException {
         //摘要附图数据装配及入库(摘要附图表"os_patent_img")
         //摘要附图数据装配及入库(摘要附图表"os_patent_img")
         if (uploadParamsVO.getPatent() != null) {
         if (uploadParamsVO.getPatent() != null) {
-            if (uploadParamsVO.getPatent().getId() != null && uploadParamsVO.getFileDTO() != null) {
+            if (uploadParamsVO.getPatent().getId() != null && uploadParamsVO.getPictureFileDTO() != null) {
                 uploadParamsVO.getPatent().setAbstractPath(patentImageService.updatePatentImage2(uploadParamsVO));
                 uploadParamsVO.getPatent().setAbstractPath(patentImageService.updatePatentImage2(uploadParamsVO));
                 //专利表"os_patent"更新数据(更新摘要附图路径)
                 //专利表"os_patent"更新数据(更新摘要附图路径)
                 patentService.updateById(uploadParamsVO.getPatent());
                 patentService.updateById(uploadParamsVO.getPatent());

+ 71 - 85
PAS/src/main/java/cn/cslg/pas/service/upLoadPatent/UploadTaskService.java

@@ -67,57 +67,6 @@ public class UploadTaskService {
     }
     }
 
 
     /**
     /**
-     * 新增Epo网站导入任务
-     *
-     * @param taskAddNewDTO 前台参数(检索信息conditions、专题库id、下载字段configCells等)
-     */
-    public TaskCondition addEpoTask(TaskAddNewDTO taskAddNewDTO) throws IOException {
-        Integer webId = taskAddNewDTO.getConfigId();
-        PersonnelVO personnelVO = cacheUtils.getLoginUserPersonnel(loginUtils.getId());
-        //根据网站id获得配置
-        WebLoginConfig webLoginConfig = webLoginConfigService.getLoginConfig(webId, personnelVO.getTenantId());
-        if (webLoginConfig == null) {
-            ThrowException.throwXiaoShiException("未配置网站登录信息");
-        }
-
-        //检查任务合法性(检查当前检索式能否检索出专利)
-        //根据检索式conditions检索一件专利著录信息
-        SerachBiblioData serachBiblioData = excutePatentDataEpo.getSerachBiblioData(taskAddNewDTO.getConditions(), 1, 1);
-        if (serachBiblioData == null || serachBiblioData.getTotals() == 0) {
-            ThrowException.throwXiaoShiException("根据检索信息未检索到相关专利,请尝试更换检索信息");
-        }
-        //任务与任务条件关联表新增数据
-        TaskCondition taskCondition = new TaskCondition();
-        taskCondition
-                .setTaskType(taskAddNewDTO.getTaskType())
-                .setConditions(taskAddNewDTO.getConditions())
-                .setCrons(taskAddNewDTO.getCrons())
-                .setConfigId(taskAddNewDTO.getConfigId())
-                .setTaskName(taskAddNewDTO.getTaskName())
-                .setTotal(serachBiblioData.getTotals());
-        List<String> cells = taskAddNewDTO.getConfigCells();
-        if (cells == null) {
-            taskCondition.setConfigCells("");
-        } else {
-            taskCondition.setConfigCells(String.join(",", cells));
-        }
-        taskConditionService.save(taskCondition);
-
-        //任务表新增任务
-        Integer taskId = taskService.addTask3(taskAddNewDTO, serachBiblioData.getTotals(), taskCondition);
-
-        //任务与任务条件关联表更新数据
-        taskCondition.setTaskId(taskId);
-        taskConditionService.updateById(taskCondition);
-
-        //任务存入生产者任务队列并唤醒生产者线程
-        pantentQueueService.taskQueueListAddTask(Arrays.asList(taskId));
-        pantentQueueService.awakeTasktch();
-
-        return taskCondition;
-    }
-
-    /**
      * 新增专利之星导入任务
      * 新增专利之星导入任务
      *
      *
      * @param taskAddNewDTO 前台参数(检索信息conditions、专题库id、下载字段configCells等)
      * @param taskAddNewDTO 前台参数(检索信息conditions、专题库id、下载字段configCells等)
@@ -125,30 +74,21 @@ public class UploadTaskService {
     public TaskCondition addPatentStarTask(TaskAddNewDTO taskAddNewDTO) throws IOException {
     public TaskCondition addPatentStarTask(TaskAddNewDTO taskAddNewDTO) throws IOException {
         log.info("开始处理【新增专利之星下载接口导入专利】的业务,参数为:{}", taskAddNewDTO);
         log.info("开始处理【新增专利之星下载接口导入专利】的业务,参数为:{}", taskAddNewDTO);
 
 
-        //检查任务合法性1(检查要导入的专题库或报告是否存在)
+        //检查任务合法性1(检查是否有下载字段)
+        List<String> cells = taskAddNewDTO.getConfigCells();
+        if (cells == null || cells.size() == 0) {
+            ThrowException.throwXiaoShiException("请选择至少一个需要下载的字段");
+        }
+
+        //检查任务合法性2(检查专题库是否存在)
         if (taskAddNewDTO.getProjectId() != null) {
         if (taskAddNewDTO.getProjectId() != null) {
             Project project = projectService.getById(taskAddNewDTO.getProjectId());
             Project project = projectService.getById(taskAddNewDTO.getProjectId());
             if (project == null) {
             if (project == null) {
                 ThrowException.throwXiaoShiException("该专题库已不存在,请尝试刷新页面");
                 ThrowException.throwXiaoShiException("该专题库已不存在,请尝试刷新页面");
             }
             }
         }
         }
-        //TODO 检查报告是否被删除
-//        if (taskAddNewDTO.getReportId() != null) {
-//            Report report = reportService.getById(taskAddNewDTO.getReportId());
-//            if (report == null) {
-//                ThrowException.throwXiaoShiException("该报告已不存在,请尝试刷新页面");
-//            }
-//        }
-
-        //检查任务合法性2(根据网站配置id和登陆人所属租户id,看是否有网站导入任务的权限)
-        Integer webId = taskAddNewDTO.getConfigId();
-        PersonnelVO personnelVO = cacheUtils.getLoginUserPersonnel(loginUtils.getId());  //获取登陆人信息
-        WebLoginConfig webLoginConfig = webLoginConfigService.getLoginConfig(webId, personnelVO.getTenantId());  //根据网站id获得配置
-        if (webLoginConfig == null) {
-            ThrowException.throwXiaoShiException("未配置网站登录信息");
-        }
 
 
-        //检查任务合法性3(根据检索式信息调用一般检索接口,看是否能检索出专利)
+        //检查任务合法性3(根据检索式进行一次检索看是否能检索出专利)
         PatentStarListDto patentStarListDto = new PatentStarListDto()
         PatentStarListDto patentStarListDto = new PatentStarListDto()
                 .setCurrentQuery(taskAddNewDTO.getConditions())
                 .setCurrentQuery(taskAddNewDTO.getConditions())
                 .setOrderBy(taskAddNewDTO.getOrderBy())
                 .setOrderBy(taskAddNewDTO.getOrderBy())
@@ -158,11 +98,10 @@ public class UploadTaskService {
                 .setDBType(taskAddNewDTO.getDBType());
                 .setDBType(taskAddNewDTO.getDBType());
         Map<String, Object> resultMap = patentStarApiService.patentStarSearchApi(patentStarListDto);
         Map<String, Object> resultMap = patentStarApiService.patentStarSearchApi(patentStarListDto);
         if (resultMap == null || (Integer) resultMap.get("total") == 0) {
         if (resultMap == null || (Integer) resultMap.get("total") == 0) {
-            ThrowException.throwXiaoShiException("未检索到相关专利");
+            ThrowException.throwXiaoShiException("该检索信息未检索出相关专利");
         }
         }
 
 
-
-        //获取专利总数量
+        //计算要下载的专利总数量
         Integer total;
         Integer total;
         if (taskAddNewDTO.getEndNumber() > 0) {
         if (taskAddNewDTO.getEndNumber() > 0) {
             total = taskAddNewDTO.getEndNumber() - taskAddNewDTO.getStartNumber() + 1;
             total = taskAddNewDTO.getEndNumber() - taskAddNewDTO.getStartNumber() + 1;
@@ -176,7 +115,7 @@ public class UploadTaskService {
             total = taskAddNewDTO.getIsAddPatentNos().size();
             total = taskAddNewDTO.getIsAddPatentNos().size();
         }
         }
 
 
-        //新增任务与任务条件关联表("asso_osTask_qrtzTask")数据
+        //任务条件表("task_condition")新增数据
         TaskCondition taskCondition = new TaskCondition();
         TaskCondition taskCondition = new TaskCondition();
         taskCondition
         taskCondition
                 .setTaskType(taskAddNewDTO.getTaskType())
                 .setTaskType(taskAddNewDTO.getTaskType())
@@ -190,30 +129,77 @@ public class UploadTaskService {
                 .setOrderByType(taskAddNewDTO.getOrderByType())
                 .setOrderByType(taskAddNewDTO.getOrderByType())
                 .setDBType(taskAddNewDTO.getDBType())
                 .setDBType(taskAddNewDTO.getDBType())
                 .setStartNumber(taskAddNewDTO.getStartNumber())
                 .setStartNumber(taskAddNewDTO.getStartNumber())
-                .setEndNumber(taskAddNewDTO.getEndNumber());
+                .setEndNumber(taskAddNewDTO.getEndNumber())
+                .setIsAddType(taskAddNewDTO.getIsAddType())
+                .setConfigCells(String.join(",", cells));
         if (taskAddNewDTO.getIsAddPatentNos() != null && taskAddNewDTO.getIsAddPatentNos().size() > 0) {
         if (taskAddNewDTO.getIsAddPatentNos() != null && taskAddNewDTO.getIsAddPatentNos().size() > 0) {
             taskCondition.setIsAddPatentNos(StringUtils.join(taskAddNewDTO.getIsAddPatentNos(), ","));
             taskCondition.setIsAddPatentNos(StringUtils.join(taskAddNewDTO.getIsAddPatentNos(), ","));
         }
         }
         if (taskAddNewDTO.getIsDeletePatentNos() != null && taskAddNewDTO.getIsDeletePatentNos().size() > 0) {
         if (taskAddNewDTO.getIsDeletePatentNos() != null && taskAddNewDTO.getIsDeletePatentNos().size() > 0) {
             taskCondition.setIsDeletePatentNos(StringUtils.join(taskAddNewDTO.getIsDeletePatentNos(), ","));
             taskCondition.setIsDeletePatentNos(StringUtils.join(taskAddNewDTO.getIsDeletePatentNos(), ","));
         }
         }
+        log.info("任务条件表新增数据");
+        taskConditionService.save(taskCondition);
+
+        //任务表新增任务
+        Integer taskId = taskService.addTask3(taskAddNewDTO, total, taskCondition);
+
+        //任务条件表(task_condition)更新数据(普通任务)
+        if (taskAddNewDTO.getTaskType().equals(0)) {
+            taskCondition.setTaskId(taskId);
+            taskConditionService.updateById(taskCondition);
+        }
+
+        //任务存入生产者任务队列并唤醒生产者线程
+        pantentQueueService.taskQueueListAddTask(Arrays.asList(taskId));
+        pantentQueueService.awakeTasktch();
+
+        return taskCondition;
+    }
+
+    /**
+     * 新增Epo网站导入任务
+     *
+     * @param taskAddNewDTO 前台参数(检索信息conditions、专题库id、下载字段configCells等)
+     */
+    public TaskCondition addEpoTask(TaskAddNewDTO taskAddNewDTO) throws IOException {
+        Integer webId = taskAddNewDTO.getConfigId();
+        PersonnelVO personnelVO = cacheUtils.getLoginUserPersonnel(loginUtils.getId());
+        //根据网站id获得配置
+        WebLoginConfig webLoginConfig = webLoginConfigService.getLoginConfig(webId, personnelVO.getTenantId());
+        if (webLoginConfig == null) {
+            ThrowException.throwXiaoShiException("未配置网站登录信息");
+        }
+
+        //检查任务合法性(检查当前检索式能否检索出专利)
+        //根据检索式conditions检索一件专利著录信息
+        SerachBiblioData serachBiblioData = excutePatentDataEpo.getSerachBiblioData(taskAddNewDTO.getConditions(), 1, 1);
+        if (serachBiblioData == null || serachBiblioData.getTotals() == 0) {
+            ThrowException.throwXiaoShiException("根据检索信息未检索到相关专利,请尝试更换检索信息");
+        }
+        //任务与任务条件关联表新增数据
+        TaskCondition taskCondition = new TaskCondition();
+        taskCondition
+                .setTaskType(taskAddNewDTO.getTaskType())
+                .setConditions(taskAddNewDTO.getConditions())
+                .setCrons(taskAddNewDTO.getCrons())
+                .setConfigId(taskAddNewDTO.getConfigId())
+                .setTaskName(taskAddNewDTO.getTaskName())
+                .setTotal(serachBiblioData.getTotals());
         List<String> cells = taskAddNewDTO.getConfigCells();
         List<String> cells = taskAddNewDTO.getConfigCells();
         if (cells == null) {
         if (cells == null) {
             taskCondition.setConfigCells("");
             taskCondition.setConfigCells("");
         } else {
         } else {
             taskCondition.setConfigCells(String.join(",", cells));
             taskCondition.setConfigCells(String.join(",", cells));
         }
         }
-        log.info("任务与任务条件关联表(asso_osTask_qrtzTask)新增数据");
         taskConditionService.save(taskCondition);
         taskConditionService.save(taskCondition);
 
 
         //任务表新增任务
         //任务表新增任务
-        Integer taskId = taskService.addTask3(taskAddNewDTO, total, taskCondition);
+        Integer taskId = taskService.addTask3(taskAddNewDTO, serachBiblioData.getTotals(), taskCondition);
 
 
-        //任务与任务条件关联表(asso_osTask_qrtzTask)更新数据(普通任务)
-        if (taskAddNewDTO.getTaskType().equals(0)) {
-            taskCondition.setTaskId(taskId);
-            taskConditionService.updateById(taskCondition);
-        }
+        //任务与任务条件关联表更新数据
+        taskCondition.setTaskId(taskId);
+        taskConditionService.updateById(taskCondition);
 
 
         //任务存入生产者任务队列并唤醒生产者线程
         //任务存入生产者任务队列并唤醒生产者线程
         pantentQueueService.taskQueueListAddTask(Arrays.asList(taskId));
         pantentQueueService.taskQueueListAddTask(Arrays.asList(taskId));
@@ -238,7 +224,6 @@ public class UploadTaskService {
         if (condition == null) {
         if (condition == null) {
             ThrowException.throwXiaoShiException("尝试导入的专利号在本系统中均已存在");
             ThrowException.throwXiaoShiException("尝试导入的专利号在本系统中均已存在");
         }
         }
-
         taskAddNewDTO
         taskAddNewDTO
                 .setProjectId(taskAddNewDTO.getProjectId())
                 .setProjectId(taskAddNewDTO.getProjectId())
                 .setReportId(taskAddNewDTO.getReportId())
                 .setReportId(taskAddNewDTO.getReportId())
@@ -246,18 +231,19 @@ public class UploadTaskService {
                 .setEndNumber(0)
                 .setEndNumber(0)
                 .setIsAddPatentNos(Arrays.asList(isAddPatentNosStr.split("[,|,]")))
                 .setIsAddPatentNos(Arrays.asList(isAddPatentNosStr.split("[,|,]")))
                 .setDBType("CN")
                 .setDBType("CN")
-                .setOrderBy("ID")
+                .setOrderBy("AD")
                 .setOrderByType("DESC")
                 .setOrderByType("DESC")
                 .setConfigCells(Arrays.asList("1", "2", "3", "4", "6"))
                 .setConfigCells(Arrays.asList("1", "2", "3", "4", "6"))
                 .setConfigId(2)
                 .setConfigId(2)
                 .setTaskName("多个专利号导入方式任务")
                 .setTaskName("多个专利号导入方式任务")
                 .setTaskType(0)
                 .setTaskType(0)
-                .setTaskType2(4);
+                .setTaskType2(5)
+                .setIsAddType(2);
 
 
         //根据下载的网站类型新增任务
         //根据下载的网站类型新增任务
         if (taskAddNewDTO.getTaskType2().equals(3)) {
         if (taskAddNewDTO.getTaskType2().equals(3)) {
             this.addEpoTask(taskAddNewDTO);
             this.addEpoTask(taskAddNewDTO);
-        } else if (taskAddNewDTO.getTaskType2().equals(4)) {
+        } else if (taskAddNewDTO.getTaskType2().equals(4) || taskAddNewDTO.getTaskType2().equals(5)) {
             this.addPatentStarTask(taskAddNewDTO);
             this.addPatentStarTask(taskAddNewDTO);
         }
         }
 
 
@@ -283,7 +269,7 @@ public class UploadTaskService {
         }
         }
         //将本系统不包含的专利拼接成条件
         //将本系统不包含的专利拼接成条件
         String patentNoCondition = StringUtils.join(patentNos, " OR ");
         String patentNoCondition = StringUtils.join(patentNos, " OR ");
-        String conditions = "PN=(" + patentNoCondition + ") OR GN=(" + patentNoCondition + ")";
+        String conditions = "AN=(" + patentNoCondition + ") OR PN=(" + patentNoCondition + ") OR GN=(" + patentNoCondition + ")";
         return conditions;
         return conditions;
     }
     }
 
 

+ 6 - 0
PAS/src/main/resources/application-prodNetIn.yml

@@ -24,3 +24,9 @@ spring:
       web-stat-filter:
       web-stat-filter:
         exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
         exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
 authorUrl: http://localhost:8871
 authorUrl: http://localhost:8871
+
+PCSUrl: http://localhost:8871
+#OPSUrl: http://192.168.1.24:5001
+OPSUrl: http://139.224.24.90:5001
+PASUrl: http://localhost:8877
+RMSUrl: http://localhost:8872

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

@@ -23,4 +23,10 @@ spring:
         login-password: Cslg2022+
         login-password: Cslg2022+
       web-stat-filter:
       web-stat-filter:
         exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
         exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
-authorUrl: http://localhost:8871
+authorUrl: http://localhost:8871
+
+PCSUrl: http://localhost:8871
+#OPSUrl: http://192.168.1.24:5001
+OPSUrl: http://139.224.24.90:5001
+PASUrl: http://localhost:8877
+RMSUrl: http://localhost:8872

+ 8 - 21
PAS/src/main/resources/mapper/PatentMapper.xml

@@ -51,7 +51,7 @@
         a.publicno as public_no, a.publicdate as public_date, a.simple_family, a.inpadoc_family, a.applicationno as
         a.publicno as public_no, a.publicdate as public_date, a.simple_family, a.inpadoc_family, a.applicationno as
         application_no, a.appdate as application_date,
         application_no, a.appdate as application_date,
         a.`status` as simple_status, a.type, a.publictodate as public_accredit_date, a.fpublicdate as first_public_date,
         a.`status` as simple_status, a.type, a.publictodate as public_accredit_date, a.fpublicdate as first_public_date,
-        a.prioritydate as priority_date,
+        a.prioritydate as priority_date, a.publictono as public_accredit_no,
         b.look as `read`, a.agencyid as agency_id, a.num2 as right_num, a.quoteno as quote_num, a.quotedno as
         b.look as `read`, a.agencyid as agency_id, a.num2 as right_num, a.quoteno as quote_num, a.quotedno as
         quoted_num,
         quoted_num,
         a.patsnap_family as patSnapFamily, a.patsnapfamilynum as patSnapFamilyNum
         a.patsnap_family as patSnapFamily, a.patsnapfamilynum as patSnapFamilyNum
@@ -1406,7 +1406,7 @@
         </if>
         </if>
         <where>
         <where>
             <choose>
             <choose>
-                <when test="params.projectId != null or (params.patentNos != null and params.patentNos.size()!=0) or (params.importTaskId != null and params.importTaskId.size()!=0)">
+                <when test="params.projectId != null or (params.patentNos != null and params.patentNos.size()!=0) or params.reportId!=null ">
                     <if test="params.projectId != null">
                     <if test="params.projectId != null">
                         and ( a.id in (select pid from os_thematic_pid where zid = #{params.projectId})
                         and ( a.id in (select pid from os_thematic_pid where zid = #{params.projectId})
                         <if test="params.patentNos != null and params.patentNos.size()!=0">
                         <if test="params.patentNos != null and params.patentNos.size()!=0">
@@ -1416,16 +1416,11 @@
                                 #{item}
                                 #{item}
                             </foreach>
                             </foreach>
                         </if>
                         </if>
-                        <if test="params.importTaskId != null and params.importTaskId.size()!=0">
+                        <if test="params.reportId != null">
                             or patentno in
                             or patentno in
-                            ( select PATENT_NO from ASSO_IMPORTTASK_PATENT where IMPORTTASK_ID in
-                            <foreach item="item" collection="params.importTaskId" index="index" open="(" separator=","
-                                     close=") ">
-                                #{item}
-                            </foreach>
+                            ( select PATENT_NO from ASSO_IMPORTTASK_PATENT where REPORT_ID =#{params.reportId}
                             )
                             )
                         </if>
                         </if>
-                        )
                     </if>
                     </if>
                     <if test="params.projectId == null and params.patentNos != null and params.patentNos.size()!=0">
                     <if test="params.projectId == null and params.patentNos != null and params.patentNos.size()!=0">
                         (patentno in
                         (patentno in
@@ -1433,24 +1428,16 @@
                                  close=")">
                                  close=")">
                             #{item}
                             #{item}
                         </foreach>
                         </foreach>
-                        <if test="params.importTaskId != null and params.importTaskId.size()!=0">
+                        <if test="params.reportId != null">
                             or patentno in
                             or patentno in
-                            ( select PATENT_NO from ASSO_IMPORTTASK_PATENT where IMPORTTASK_ID in
-                            <foreach item="item" collection="params.importTaskId" index="index" open="(" separator=","
-                                     close=") ">
-                                #{item}
-                            </foreach>
+                            ( select PATENT_NO from ASSO_IMPORTTASK_PATENT where REPORT_ID =#{params.reportId}
                             )
                             )
                         </if>
                         </if>
                         )
                         )
                     </if>
                     </if>
-                    <if test="params.projectId == null and (params.patentNos == null or params.patentNos.size()==0) and params.importTaskId != null and params.importTaskId.size()!=0">
+                    <if test="params.projectId == null and (params.patentNos == null or params.patentNos.size()==0) and params.reportId != null">
                         patentno in
                         patentno in
-                        ( select PATENT_NO from ASSO_IMPORTTASK_PATENT where IMPORTTASK_ID in
-                        <foreach item="item" collection="params.importTaskId" index="index" open="(" separator=","
-                                 close=") ">
-                            #{item}
-                        </foreach>
+                        ( select PATENT_NO from ASSO_IMPORTTASK_PATENT where REPORT_ID =#{params.reportId}
                         )
                         )
                     </if>
                     </if>
                     <if test="params.notInPatentNos != null and params.notInPatentNos.size!=0">
                     <if test="params.notInPatentNos != null and params.notInPatentNos.size!=0">

+ 14 - 4
PAS/src/main/resources/mapper/TaskMapper.xml

@@ -45,24 +45,30 @@
         tas.success_num tas_success_num,
         tas.success_num tas_success_num,
         tas.true_success_num tas_true_success_num, tas.default_num tas_default_num, tas.pram_json tas_pram_json,
         tas.true_success_num tas_true_success_num, tas.default_num tas_default_num, tas.pram_json tas_pram_json,
         tas.task_condition_id tas_task_condition_id, tas.create_time tas_create_time,
         tas.task_condition_id tas_task_condition_id, tas.create_time tas_create_time,
-        tas.task_type tas_task_type,
+        tas.task_type tas_task_type, tas.downexcel tas_downexcel,
         con.id, con.task_id, con.task_type, con.task_type2, con.conditions,
         con.id, con.task_id, con.task_type, con.task_type2, con.conditions,
         con.crons, con.config_cells, con.config_id, con.task_name, con.total,
         con.crons, con.config_cells, con.config_id, con.task_name, con.total,
         con.orderby, con.orderby_type, con.db_type, con.start_number, con.end_number,
         con.orderby, con.orderby_type, con.db_type, con.start_number, con.end_number,
-        con.isadd_patentnos, con.isdelete_patentnos
+        con.isadd_patentnos, con.isdelete_patentnos, con.isadd_type
         from os_task tas
         from os_task tas
         left join os_task tas2 on tas.task_condition_id = tas2.task_condition_id and tas.ctime &lt; tas2.ctime
         left join os_task tas2 on tas.task_condition_id = tas2.task_condition_id and tas.ctime &lt; tas2.ctime
         left join task_condition con on tas.task_condition_id = con.id
         left join task_condition con on tas.task_condition_id = con.id
         <where>
         <where>
-            <if test="projectId != null">
+            <if test="projectId != null and projectId != 0">
                 and tas.tid = #{projectId}
                 and tas.tid = #{projectId}
             </if>
             </if>
-            <if test="reportId != null">
+            <if test="reportId != null and reportId != 0">
                 and tas.report_id = #{reportId}
                 and tas.report_id = #{reportId}
             </if>
             </if>
             <if test="projectId == null and reportId == null">
             <if test="projectId == null and reportId == null">
                 and tas.uid = #{createId}
                 and tas.uid = #{createId}
             </if>
             </if>
+            <if test="projectId == 0 and reportId == null">
+                and tas.tid != 0
+            </if>
+            <if test="reportId == 0 and projectId == null">
+                and tas.report_id is not null
+            </if>
             <if test="personIds != null and personIds.size > 0">
             <if test="personIds != null and personIds.size > 0">
                 and tas.uid in
                 and tas.uid in
                 <foreach collection="personIds" item="n" separator="," open="(" close=")">
                 <foreach collection="personIds" item="n" separator="," open="(" close=")">
@@ -117,6 +123,7 @@
         <result column="tas_old_name" property="taskName"/>
         <result column="tas_old_name" property="taskName"/>
         <result column="tas_task_type" property="taskType"/>
         <result column="tas_task_type" property="taskType"/>
         <result column="tas_endtime" property="modifiedTime"/>
         <result column="tas_endtime" property="modifiedTime"/>
+        <result column="tas_downexcel" property="url"/>
         <result column="conditions" property="conditions"/>
         <result column="conditions" property="conditions"/>
         <result column="crons" property="crons"/>
         <result column="crons" property="crons"/>
         <result column="config_cells" property="configCells"/>
         <result column="config_cells" property="configCells"/>
@@ -127,7 +134,10 @@
         <result column="end_number" property="endNumber"/>
         <result column="end_number" property="endNumber"/>
         <result column="isadd_patentnos" property="isAddPatentNos"/>
         <result column="isadd_patentnos" property="isAddPatentNos"/>
         <result column="isdelete_patentnos" property="isDeletePatentNos"/>
         <result column="isdelete_patentnos" property="isDeletePatentNos"/>
+        <result column="isadd_type" property="isAddType"/>
     </resultMap>
     </resultMap>
+
+
     <select id="queryTask" resultMap="queryTasksMap">
     <select id="queryTask" resultMap="queryTasksMap">
         select tas.*
         select tas.*
         from os_task tas
         from os_task tas