Browse Source

Merge branch 'dev' into test

# Conflicts:
#	RMS/src/main/java/cn/cslg/report/service/business/TaskService.java
#	RMS/target/classes/cn/cslg/report/service/business/ReportDocumentService.class
#	RMS/target/classes/cn/cslg/report/service/business/TaskService.class
lwhhszx 2 years ago
parent
commit
88dfafc66d
100 changed files with 2606 additions and 539 deletions
  1. 88 20
      .idea/workspace.xml
  2. 1 1
      RMS/pom.xml
  3. 1 1
      RMS/src/main/java/cn/cslg/report/common/config/InnerInterceptor/LizzMybatisIntercepts.java
  4. 18 0
      RMS/src/main/java/cn/cslg/report/common/config/WebMvcConfig.java
  5. 1 0
      RMS/src/main/java/cn/cslg/report/common/model/PASPatentVO.java
  6. 29 0
      RMS/src/main/java/cn/cslg/report/common/model/dto/AvoidDesignDirectionDTO.java
  7. 45 0
      RMS/src/main/java/cn/cslg/report/common/model/dto/AvoidDesignLittleDirectionDTO.java
  8. 85 0
      RMS/src/main/java/cn/cslg/report/common/model/dto/AvoidFeaturesDTO.java
  9. 18 0
      RMS/src/main/java/cn/cslg/report/common/model/dto/CompareOrderDTO.java
  10. 1 3
      RMS/src/main/java/cn/cslg/report/common/model/dto/ProductDTO.java
  11. 45 0
      RMS/src/main/java/cn/cslg/report/common/model/vo/AvoidDesignRightVO.java
  12. 27 0
      RMS/src/main/java/cn/cslg/report/common/model/vo/AvoidDesignWholeVO.java
  13. 85 0
      RMS/src/main/java/cn/cslg/report/common/model/vo/AvoidFeaturesVO.java
  14. 1 0
      RMS/src/main/java/cn/cslg/report/common/model/vo/CompareScenariosVO.java
  15. 10 1
      RMS/src/main/java/cn/cslg/report/common/model/vo/PatentRightVo.java
  16. 13 0
      RMS/src/main/java/cn/cslg/report/common/model/vo/PatentVO.java
  17. 4 0
      RMS/src/main/java/cn/cslg/report/common/model/vo/PersonnelVO.java
  18. 1 1
      RMS/src/main/java/cn/cslg/report/common/model/vo/ProductIncludeFilesVO.java
  19. 6 0
      RMS/src/main/java/cn/cslg/report/common/model/vo/ReportVO.java
  20. 1 1
      RMS/src/main/java/cn/cslg/report/common/model/vo/SyneryVO.java
  21. 13 10
      RMS/src/main/java/cn/cslg/report/common/model/vo/TaskReportVO.java
  22. 49 0
      RMS/src/main/java/cn/cslg/report/common/model/vo/TaskSourceVO.java
  23. 5 1
      RMS/src/main/java/cn/cslg/report/common/model/vo/TaskVO.java
  24. 3 0
      RMS/src/main/java/cn/cslg/report/common/model/vo/queryVo/QueryCMVO.java
  25. 10 0
      RMS/src/main/java/cn/cslg/report/common/utils/DataUtils.java
  26. 1 1
      RMS/src/main/java/cn/cslg/report/common/utils/Response.java
  27. 51 0
      RMS/src/main/java/cn/cslg/report/controller/AvoidDesignDirectionController.java
  28. 12 3
      RMS/src/main/java/cn/cslg/report/controller/CompareFilesController.java
  29. 1 0
      RMS/src/main/java/cn/cslg/report/controller/CompareMessageController.java
  30. 1 0
      RMS/src/main/java/cn/cslg/report/controller/CompareRecordsController.java
  31. 16 3
      RMS/src/main/java/cn/cslg/report/controller/CompareScenariosController.java
  32. 12 7
      RMS/src/main/java/cn/cslg/report/controller/ProductController.java
  33. 6 0
      RMS/src/main/java/cn/cslg/report/controller/TaskController.java
  34. 2 0
      RMS/src/main/java/cn/cslg/report/controller/TempleController.java
  35. 34 0
      RMS/src/main/java/cn/cslg/report/entity/AssoAvoidDesignWholeLittleDirection.java
  36. 1 5
      RMS/src/main/java/cn/cslg/report/entity/AssoProductFile.java
  37. 38 0
      RMS/src/main/java/cn/cslg/report/entity/AvoidDesignLittleDirection.java
  38. 30 0
      RMS/src/main/java/cn/cslg/report/entity/AvoidDesignWholeDirection.java
  39. 89 0
      RMS/src/main/java/cn/cslg/report/entity/AvoidFeatures.java
  40. 2 0
      RMS/src/main/java/cn/cslg/report/entity/CompareFiles.java
  41. 4 2
      RMS/src/main/java/cn/cslg/report/entity/Report.java
  42. 15 0
      RMS/src/main/java/cn/cslg/report/exception/XiaoShiException.java
  43. 32 0
      RMS/src/main/java/cn/cslg/report/mapper/AssoAvoidDesignWholeLittleDirectionMapper.java
  44. 2 2
      RMS/src/main/java/cn/cslg/report/mapper/AssoProductFileMapper.java
  45. 2 0
      RMS/src/main/java/cn/cslg/report/mapper/AssoTaskPersonelMapper.java
  46. 50 0
      RMS/src/main/java/cn/cslg/report/mapper/AvoidDesignLittleDirectionMapper.java
  47. 38 0
      RMS/src/main/java/cn/cslg/report/mapper/AvoidDesignWholeDirectionMapper.java
  48. 41 0
      RMS/src/main/java/cn/cslg/report/mapper/AvoidFeatureMapper.java
  49. 1 1
      RMS/src/main/java/cn/cslg/report/mapper/CompareMessageMapper.java
  50. 10 0
      RMS/src/main/java/cn/cslg/report/mapper/ImportTaskMapper.java
  51. 12 4
      RMS/src/main/java/cn/cslg/report/mapper/ProductMapper.java
  52. 11 0
      RMS/src/main/java/cn/cslg/report/service/BaseService.java
  53. 38 0
      RMS/src/main/java/cn/cslg/report/service/IAvoidDesignDirectionService.java
  54. 2 2
      RMS/src/main/java/cn/cslg/report/service/IProductService.java
  55. 33 5
      RMS/src/main/java/cn/cslg/report/service/OutInterfaceService.java
  56. 14 13
      RMS/src/main/java/cn/cslg/report/service/business/AssoReportFileService.java
  57. 162 55
      RMS/src/main/java/cn/cslg/report/service/business/CompareFilesService.java
  58. 8 8
      RMS/src/main/java/cn/cslg/report/service/business/CompareMessageService.java
  59. 6 1
      RMS/src/main/java/cn/cslg/report/service/business/CompareRecordsService.java
  60. 27 12
      RMS/src/main/java/cn/cslg/report/service/business/CompareScenariosService.java
  61. 86 77
      RMS/src/main/java/cn/cslg/report/service/business/FeatureService.java
  62. 20 3
      RMS/src/main/java/cn/cslg/report/service/business/ImportTaskService.java
  63. 159 40
      RMS/src/main/java/cn/cslg/report/service/business/ReportDocumentService.java
  64. 7 0
      RMS/src/main/java/cn/cslg/report/service/business/ReportFieldPatentLinkService.java
  65. 68 58
      RMS/src/main/java/cn/cslg/report/service/business/ReportService.java
  66. 328 119
      RMS/src/main/java/cn/cslg/report/service/business/TaskService.java
  67. 0 1
      RMS/src/main/java/cn/cslg/report/service/business/TemplateService.java
  68. 5 2
      RMS/src/main/java/cn/cslg/report/service/impl/AssoProductFileServiceImpl.java
  69. 218 0
      RMS/src/main/java/cn/cslg/report/service/impl/AvoidDesignDirectionServiceImpl.java
  70. 55 15
      RMS/src/main/java/cn/cslg/report/service/impl/ProductServiceImpl.java
  71. 14 9
      RMS/src/main/resources/application-dev.yml
  72. 48 0
      RMS/src/main/resources/application-prod2.0.yml
  73. 4 5
      RMS/src/main/resources/application.yml
  74. 25 0
      RMS/src/main/resources/mapper/AssoAvoidDesignWholeLittleDirectionMapper.xml
  75. 11 2
      RMS/src/main/resources/mapper/AssoTaskPersonelMapper.xml
  76. 78 0
      RMS/src/main/resources/mapper/AvoidDesignLittleDirectionMapper.xml
  77. 29 0
      RMS/src/main/resources/mapper/AvoidDesignWholeDirectionMapper.xml
  78. 27 0
      RMS/src/main/resources/mapper/AvoidFeatureMapper.xml
  79. 6 5
      RMS/src/main/resources/mapper/CompareMessageMapper.xml
  80. 14 9
      RMS/src/main/resources/mapper/ProductMapper.xml
  81. 36 28
      RMS/src/main/resources/mapper/TaskMapper.xml
  82. 3 1
      RMS/target/classes/application-dev.yml
  83. 1 2
      RMS/target/classes/application.yml
  84. BIN
      RMS/target/classes/cn/cslg/report/common/model/dto/AvoidDesignDirectionDTO.class
  85. BIN
      RMS/target/classes/cn/cslg/report/common/model/dto/AvoidDesignLittleDirectionDTO.class
  86. BIN
      RMS/target/classes/cn/cslg/report/common/model/dto/AvoidFeaturesDTO.class
  87. BIN
      RMS/target/classes/cn/cslg/report/common/model/dto/ProductIncludeFilesDTO.class
  88. BIN
      RMS/target/classes/cn/cslg/report/common/model/vo/AvoidDesignRightVO.class
  89. BIN
      RMS/target/classes/cn/cslg/report/common/model/vo/AvoidDesignWholeVO.class
  90. BIN
      RMS/target/classes/cn/cslg/report/common/model/vo/AvoidFeaturesVO.class
  91. BIN
      RMS/target/classes/cn/cslg/report/common/model/vo/CompareScenariosVO.class
  92. BIN
      RMS/target/classes/cn/cslg/report/common/model/vo/PatentRightVo.class
  93. BIN
      RMS/target/classes/cn/cslg/report/common/model/vo/PatentVO.class
  94. BIN
      RMS/target/classes/cn/cslg/report/common/model/vo/ProductIncludeFilesVO.class
  95. BIN
      RMS/target/classes/cn/cslg/report/common/model/vo/ReportVO.class
  96. BIN
      RMS/target/classes/cn/cslg/report/common/model/vo/TaskReportVO.class
  97. BIN
      RMS/target/classes/cn/cslg/report/common/model/vo/TaskVO$personPatents.class
  98. BIN
      RMS/target/classes/cn/cslg/report/common/model/vo/TaskVO.class
  99. BIN
      RMS/target/classes/cn/cslg/report/common/utils/DataUtils.class
  100. 0 0
      RMS/target/classes/cn/cslg/report/controller/AvoidDesignDirectionController.class

+ 88 - 20
.idea/workspace.xml

@@ -5,33 +5,34 @@
   </component>
   <component name="ChangeListManager">
     <list default="true" id="e7cd156b-23fc-410f-9ecc-be34a2e87174" name="Default Changelist" comment="12chenyi">
+      <change afterPath="$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/common/config/WebMvcConfig.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/common/model/vo/TaskVO.java" beforeDir="false" afterPath="$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/common/model/vo/TaskVO.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/service/business/AssoTaskPersonelService.java" beforeDir="false" afterPath="$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/service/business/AssoTaskPersonelService.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/common/config/WebSocketConfig.java" beforeDir="false" afterPath="$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/common/config/WebSocketConfig.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/common/model/vo/PatentVO.java" beforeDir="false" afterPath="$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/common/model/vo/PatentVO.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/controller/CompareController.java" beforeDir="false" afterPath="$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/controller/CompareController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/service/OutInterfaceService.java" beforeDir="false" afterPath="$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/service/OutInterfaceService.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/service/business/CompareFilesService.java" beforeDir="false" afterPath="$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/service/business/CompareFilesService.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/service/business/CompareScenariosService.java" beforeDir="false" afterPath="$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/service/business/CompareScenariosService.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/service/business/FeatureService.java" beforeDir="false" afterPath="$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/service/business/FeatureService.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/service/business/ImportTaskService.java" beforeDir="false" afterPath="$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/service/business/ImportTaskService.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/service/business/ReportDocumentService.java" beforeDir="false" afterPath="$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/service/business/ReportDocumentService.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/service/business/ReportReferencesService.java" beforeDir="false" afterPath="$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/service/business/ReportReferencesService.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/service/business/TaskService.java" beforeDir="false" afterPath="$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/service/business/TaskService.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/service/business/asso/SyneryCCService.java" beforeDir="false" afterPath="$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/service/business/asso/SyneryCCService.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/service/business/asso/SyneryCodeService.java" beforeDir="false" afterPath="$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/service/business/asso/SyneryCodeService.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/RMS/target/classes/cn/cslg/report/common/model/vo/TaskVO$personPatents.class" beforeDir="false" afterPath="$PROJECT_DIR$/RMS/target/classes/cn/cslg/report/common/model/vo/TaskVO$personPatents.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/RMS/target/classes/cn/cslg/report/common/model/vo/TaskVO.class" beforeDir="false" afterPath="$PROJECT_DIR$/RMS/target/classes/cn/cslg/report/common/model/vo/TaskVO.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/RMS/target/classes/cn/cslg/report/service/OutInterfaceService.class" beforeDir="false" afterPath="$PROJECT_DIR$/RMS/target/classes/cn/cslg/report/service/OutInterfaceService.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/RMS/src/main/resources/mapper/AssoTaskPersonelMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/RMS/src/main/resources/mapper/AssoTaskPersonelMapper.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/RMS/target/classes/cn/cslg/report/common/config/WebSocketConfig.class" beforeDir="false" afterPath="$PROJECT_DIR$/RMS/target/classes/cn/cslg/report/common/config/WebSocketConfig.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/RMS/target/classes/cn/cslg/report/common/model/vo/PatentVO.class" beforeDir="false" afterPath="$PROJECT_DIR$/RMS/target/classes/cn/cslg/report/common/model/vo/PatentVO.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/RMS/target/classes/cn/cslg/report/controller/AvoidDesignDirectionController.class" beforeDir="false" afterPath="$PROJECT_DIR$/RMS/target/classes/cn/cslg/report/controller/AvoidDesignDirectionController.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/RMS/target/classes/cn/cslg/report/mapper/CompareMessageMapper.class" beforeDir="false" afterPath="$PROJECT_DIR$/RMS/target/classes/cn/cslg/report/mapper/CompareMessageMapper.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/RMS/target/classes/cn/cslg/report/service/IAvoidDesignDirectionService.class" beforeDir="false" afterPath="$PROJECT_DIR$/RMS/target/classes/cn/cslg/report/service/IAvoidDesignDirectionService.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/RMS/target/classes/cn/cslg/report/service/business/CompareFilesService.class" beforeDir="false" afterPath="$PROJECT_DIR$/RMS/target/classes/cn/cslg/report/service/business/CompareFilesService.class" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/RMS/target/classes/cn/cslg/report/service/business/CompareMessageService.class" beforeDir="false" afterPath="$PROJECT_DIR$/RMS/target/classes/cn/cslg/report/service/business/CompareMessageService.class" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/RMS/target/classes/cn/cslg/report/service/business/FeatureService.class" beforeDir="false" afterPath="$PROJECT_DIR$/RMS/target/classes/cn/cslg/report/service/business/FeatureService.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/RMS/target/classes/cn/cslg/report/service/business/ImportTaskService.class" beforeDir="false" afterPath="$PROJECT_DIR$/RMS/target/classes/cn/cslg/report/service/business/ImportTaskService.class" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/RMS/target/classes/cn/cslg/report/service/business/ReportDocumentService.class" beforeDir="false" afterPath="$PROJECT_DIR$/RMS/target/classes/cn/cslg/report/service/business/ReportDocumentService.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/RMS/target/classes/cn/cslg/report/service/business/ReportReferencesService.class" beforeDir="false" afterPath="$PROJECT_DIR$/RMS/target/classes/cn/cslg/report/service/business/ReportReferencesService.class" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/RMS/target/classes/cn/cslg/report/service/business/ReportService.class" beforeDir="false" afterPath="$PROJECT_DIR$/RMS/target/classes/cn/cslg/report/service/business/ReportService.class" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/RMS/target/classes/cn/cslg/report/service/business/TaskService.class" beforeDir="false" afterPath="$PROJECT_DIR$/RMS/target/classes/cn/cslg/report/service/business/TaskService.class" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/RMS/target/classes/mapper/TaskMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/RMS/target/classes/mapper/TaskMapper.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/logs/rms/rms-debug.2022-12-14.0.log" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/logs/rms/rms-debug.2022-12-15.0.log" beforeDir="false" />
-      <change beforePath="$PROJECT_DIR$/logs/rms/rms-debug.2022-12-16.0.log" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/RMS/target/classes/cn/cslg/report/service/impl/AvoidDesignDirectionServiceImpl.class" beforeDir="false" afterPath="$PROJECT_DIR$/RMS/target/classes/cn/cslg/report/service/impl/AvoidDesignDirectionServiceImpl.class" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/RMS/target/classes/mapper/AssoTaskPersonelMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/RMS/target/classes/mapper/AssoTaskPersonelMapper.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/RMS/target/classes/mapper/CompareMessageMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/RMS/target/classes/mapper/CompareMessageMapper.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/logs/rms/rms-debug.log" beforeDir="false" afterPath="$PROJECT_DIR$/logs/rms/rms-debug.log" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/logs/rms/rms-error.log" beforeDir="false" afterPath="$PROJECT_DIR$/logs/rms/rms-error.log" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/logs/rms/rms-info.log" beforeDir="false" afterPath="$PROJECT_DIR$/logs/rms/rms-info.log" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -41,8 +42,8 @@
   <component name="FileTemplateManagerImpl">
     <option name="RECENT_TEMPLATES">
       <list>
-        <option value="Class" />
         <option value="Interface" />
+        <option value="Class" />
       </list>
     </option>
   </component>
@@ -54,13 +55,33 @@
     </option>
     <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
   </component>
+  <component name="GitSEFilterConfiguration">
+    <file-type-list>
+      <filtered-out-file-type name="LOCAL_BRANCH" />
+      <filtered-out-file-type name="REMOTE_BRANCH" />
+      <filtered-out-file-type name="TAG" />
+      <filtered-out-file-type name="COMMIT_BY_MESSAGE" />
+    </file-type-list>
+  </component>
+  <component name="HighlightingSettingsPerFile">
+    <setting file="file://$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/service/business/AssoTaskPersonelService.java" root0="FORCE_HIGHLIGHTING" />
+    <setting file="file://$PROJECT_DIR$/RMS/src/main/resources/application.yml" root0="FORCE_HIGHLIGHTING" />
+    <setting file="file://$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/controller/BaseController.java" root0="FORCE_HIGHLIGHTING" />
+    <setting file="file://$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/common/config/InnerInterceptor/LizzMybatisIntercepts.java" root0="FORCE_HIGHLIGHTING" />
+    <setting file="file://$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/service/business/ReportService.java" root0="FORCE_HIGHLIGHTING" />
+    <setting file="file://$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/common/utils/auth/TreeUtils.java" root0="FORCE_HIGHLIGHTING" />
+    <setting file="file://$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/service/BaseService.java" root0="FORCE_HIGHLIGHTING" />
+    <setting file="file://$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/common/model/vo/PersonnelVO.java" root0="FORCE_HIGHLIGHTING" />
+    <setting file="file://$PROJECT_DIR$/RMS/src/main/resources/application-dev.yml" root0="FORCE_HIGHLIGHTING" />
+    <setting file="file://$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/service/OutInterfaceService.java" root0="FORCE_HIGHLIGHTING" />
+  </component>
   <component name="ProjectId" id="2JADGkpubIwxnMp31DlLxSpGoB3" />
   <component name="ProjectLevelVcsManager">
     <ConfirmationsSetting value="1" id="Add" />
+    <ConfirmationsSetting value="2" id="Remove" />
   </component>
   <component name="ProjectViewState">
     <option name="hideEmptyMiddlePackages" value="true" />
-    <option name="showExcludedFiles" value="false" />
     <option name="showLibraryContents" value="true" />
   </component>
   <component name="PropertiesComponent">
@@ -94,11 +115,23 @@
       <recent name="E:\IDEAProject\RMS_Backend\RMS\src\main\resources\mapper" />
     </key>
     <key name="CopyClassDialog.RECENTS_KEY">
+      <recent name="cn.cslg.report.common.model.dto" />
       <recent name="cn.cslg.report.pojo.vo" />
       <recent name="cn.cslg.report.common.config" />
     </key>
   </component>
   <component name="RunManager">
+    <configuration default="true" type="ArquillianJUnit" factoryName="" nameIsGenerated="true">
+      <option name="arquillianRunConfiguration">
+        <value>
+          <option name="containerStateName" value="" />
+        </value>
+      </option>
+      <option name="TEST_OBJECT" value="class" />
+      <method v="2">
+        <option name="Make" enabled="true" />
+      </method>
+    </configuration>
     <configuration name="Application" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot">
       <module name="RMS" />
       <option name="SPRING_BOOT_MAIN_CLASS" value="cn.cslg.report.Application" />
@@ -124,6 +157,9 @@
       <workItem from="1673400625616" duration="625000" />
       <workItem from="1673486700261" duration="13352000" />
       <workItem from="1673573452163" duration="5664000" />
+      <workItem from="1675647264099" duration="26450000" />
+      <workItem from="1675732443639" duration="22610000" />
+      <workItem from="1675819315507" duration="11585000" />
     </task>
     <task id="LOCAL-00001" summary="12.20 陈宇">
       <created>1671533439152</created>
@@ -195,7 +231,21 @@
       <option name="project" value="LOCAL" />
       <updated>1673573541746</updated>
     </task>
-    <option name="localTasksCounter" value="11" />
+    <task id="LOCAL-00011" summary=" 2/6 lrj">
+      <created>1675667280728</created>
+      <option name="number" value="00011" />
+      <option name="presentableId" value="LOCAL-00011" />
+      <option name="project" value="LOCAL" />
+      <updated>1675667280728</updated>
+    </task>
+    <task id="LOCAL-00012" summary="2/6 lrj">
+      <created>1675672469033</created>
+      <option name="number" value="00012" />
+      <option name="presentableId" value="LOCAL-00012" />
+      <option name="project" value="LOCAL" />
+      <updated>1675672469033</updated>
+    </task>
+    <option name="localTasksCounter" value="13" />
     <servers />
   </component>
   <component name="TypeScriptGeneratedFilesManager">
@@ -217,6 +267,24 @@
     <MESSAGE value="12.20 陈宇" />
     <MESSAGE value="12.20 chenyi" />
     <MESSAGE value="12chenyi" />
-    <option name="LAST_COMMIT_MESSAGE" value="12chenyi" />
+    <MESSAGE value=" 2/6 lrj" />
+    <MESSAGE value="2/6 lrj" />
+    <option name="LAST_COMMIT_MESSAGE" value="2/6 lrj" />
+  </component>
+  <component name="XDebuggerManager">
+    <breakpoint-manager>
+      <breakpoints>
+        <line-breakpoint enabled="true" type="java-line">
+          <url>file://$PROJECT_DIR$/RMS/src/main/java/cn/cslg/report/service/business/TaskService.java</url>
+          <line>788</line>
+          <option name="timeStamp" value="20" />
+        </line-breakpoint>
+      </breakpoints>
+    </breakpoint-manager>
+    <pin-to-top-manager>
+      <pinned-members>
+        <PinnedItemInfo parentTag="cn.cslg.report.common.model.vo.SplitVO" memberName="ReportId" />
+      </pinned-members>
+    </pin-to-top-manager>
   </component>
 </project>

+ 1 - 1
RMS/pom.xml

@@ -167,7 +167,7 @@
     </dependencies>
 
     <build>
-        <finalName>RMS_TEST</finalName>
+        <finalName>RMS_PROD</finalName>
         <plugins>
             <plugin>
                 <groupId>org.springframework.boot</groupId>

+ 1 - 1
RMS/src/main/java/cn/cslg/report/common/config/InnerInterceptor/LizzMybatisIntercepts.java

@@ -76,7 +76,7 @@ public class LizzMybatisIntercepts implements InnerInterceptor {
                 //处理请求返回
                 JSONArray jsonArray = JSONArray.parseArray(resBody);
                 //当返回结果不为[0]或[-1]进行sql拦截操作
-                if (!(jsonArray.get(0).equals("0") || jsonArray.get(0).equals("-1"))) {
+                if (jsonArray.size()!=0&&!(jsonArray.get(0).equals("0") || jsonArray.get(0).equals("-1"))) {
                     StringBuilder sqls = new StringBuilder();
                     // 查询字典数据
                     //设定formdata类型参数

+ 18 - 0
RMS/src/main/java/cn/cslg/report/common/config/WebMvcConfig.java

@@ -0,0 +1,18 @@
+package cn.cslg.report.common.config;
+
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+    public class WebMvcConfig  implements WebMvcConfigurer {
+        @Override
+        public void addResourceHandlers(ResourceHandlerRegistry registry) {
+            // /images/**是静态映射, file:/root/images/是文件在服务器的路径
+            registry.addResourceHandler("/**")
+                    .addResourceLocations("file:D:/RMS/RMS/target/file/");
+        }
+    }
+
+

+ 1 - 0
RMS/src/main/java/cn/cslg/report/common/model/PASPatentVO.java

@@ -91,6 +91,7 @@ public class PASPatentVO extends BaseVO {
     private List<Integer> importTaskId;
     private List<String> patentNos;
     private List<String> notInPatentNos;
+    private Integer reportId;
     @Data
     public static class Sort {
         private String order;

+ 29 - 0
RMS/src/main/java/cn/cslg/report/common/model/dto/AvoidDesignDirectionDTO.java

@@ -0,0 +1,29 @@
+package cn.cslg.report.common.model.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 回避设计方案前端传输DTO类
+ *
+ * @Author chenyu
+ * @Data 2023/2/2
+ */
+@Data
+public class AvoidDesignDirectionDTO implements Serializable {
+    /**
+     * 报告id
+     */
+    private Integer reportId;
+    /**
+     * 拆分好的权要特征解释和回避设计方向littleDirection等数据的对象的集合
+     */
+    private List<AvoidDesignLittleDirectionDTO> avoidDesignLittleDirectionDTOs;
+    /**
+     * 回避设计总体方向
+     */
+    private String wholeDirection;
+
+}

+ 45 - 0
RMS/src/main/java/cn/cslg/report/common/model/dto/AvoidDesignLittleDirectionDTO.java

@@ -0,0 +1,45 @@
+package cn.cslg.report.common.model.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 回避设计方向前端传输DTO类
+ *
+ * @Author chenyu
+ * @Data 2023/2/2
+ */
+@Data
+public class AvoidDesignLittleDirectionDTO implements Serializable {
+    /**
+     * 权要ID
+     */
+    private Integer rightId;
+    /**
+     * 权要名
+     */
+    private String RightName;
+    /**
+     * 权要原文
+     */
+    private String content;
+    /**
+     * 权要翻译
+     */
+    private String contentOut;
+    /**
+     * 权要拆分特征
+     */
+    List<AvoidFeaturesDTO> features;
+    /**
+     * 报告id
+     */
+    private Integer reportId;
+    /**
+     * 专利号
+     */
+    private String signPatentNo;
+
+}

+ 85 - 0
RMS/src/main/java/cn/cslg/report/common/model/dto/AvoidFeaturesDTO.java

@@ -0,0 +1,85 @@
+package cn.cslg.report.common.model.dto;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+/**
+ * 拆分保存特征的前端传输DTO类
+ */
+@Data
+@Accessors(chain = true)
+public class AvoidFeaturesDTO {
+    /**
+     * 专利号
+     */
+    private String signPatentNo;
+    /**
+     * 特征翻译
+     */
+    private String contentOut;
+    /**
+     * 特征
+     */
+    private String content;
+    /**
+     * 权要ID
+     */
+    private Integer rightId;
+
+    /**
+     * 特征拆分人ID
+     */
+    private Integer partnerId;
+    /**
+     * 是否最终
+     */
+    private Integer isFinal;
+    /**
+     * 所属报告
+     */
+    private Integer reportId;
+    /**
+     * 解释
+     */
+    private String explainText;
+    /**
+     * 拆分类型
+     */
+    private Integer splitBy;
+
+    /**
+     * 拆分方式
+     */
+    private Integer splitType;
+    /**
+     * 权要名
+     */
+    private String rightName;
+    /**
+     * 权要类型 1主权要 0附属权要
+     */
+    private Integer rightType;
+    /**
+     * 特征排序
+     */
+    private Integer featuresOrder;
+    /**
+     * 任务id
+     */
+    private Integer taskId;
+    /**
+     * 特征拆分人IDs
+     */
+    private List<Integer> partnerIds;
+    /**
+     * 回避设计方向
+     */
+    private String littleDirection;
+    /**
+     * 回避设计总体方向
+     */
+    private String wholeDirection;
+
+}

+ 18 - 0
RMS/src/main/java/cn/cslg/report/common/model/dto/CompareOrderDTO.java

@@ -0,0 +1,18 @@
+package cn.cslg.report.common.model.dto;
+
+import cn.cslg.report.common.utils.CacheUtils;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class CompareOrderDTO {
+    private Integer report;
+    private List<orders> orders;
+    @Data
+    public static class orders{
+        private String patentNO;
+        private Integer order;
+    }
+
+}

+ 1 - 3
RMS/src/main/java/cn/cslg/report/common/model/dto/ProductDTO.java

@@ -1,15 +1,13 @@
 package cn.cslg.report.common.model.dto;
 
-import cn.cslg.report.common.model.vo.ReportFileStandardVO;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
 import java.io.Serializable;
 import java.util.Date;
-import java.util.List;
 
 /**
- * 产品的前端传输DTO类
+ * 新增产品的前端传输DTO类
  *
  * @Author chenyu
  * @Data 2022/12/20

+ 45 - 0
RMS/src/main/java/cn/cslg/report/common/model/vo/AvoidDesignRightVO.java

@@ -0,0 +1,45 @@
+package cn.cslg.report.common.model.vo;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 回避设计方案当前权要的所有的特征和特征对应的回避设计方向
+ *
+ * @Author chenyu
+ * @Data 2023/2/7
+ */
+@Accessors(chain = true)
+@Data
+public class AvoidDesignRightVO implements Serializable {
+    /**
+     * 专利ID
+     */
+    private Integer patentId;
+    /**
+     * 内容
+     */
+    private String contentOut;
+
+    /**
+     * 内容
+     */
+    private String content;
+
+    /**
+     * 类型
+     */
+    private Integer type;
+
+    private Integer sort;
+
+    private String rightName;
+    /**
+     * 回避设计方案当前权要的所有的特征和特征对应的回避设计方向
+     */
+    private List<AvoidFeaturesVO> features;
+
+}

+ 27 - 0
RMS/src/main/java/cn/cslg/report/common/model/vo/AvoidDesignWholeVO.java

@@ -0,0 +1,27 @@
+package cn.cslg.report.common.model.vo;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 回避设计方案查询VO类
+ *
+ * @Author chenyu
+ * @Data 2023/2/7
+ */
+@Accessors(chain = true)
+@Data
+public class AvoidDesignWholeVO implements Serializable {
+    /**
+     * 回避设计总体方向
+     */
+    private String wholeDirection;
+    /**
+     * 回避设计所有权要
+     */
+    private List<AvoidDesignRightVO> rights;
+
+}

+ 85 - 0
RMS/src/main/java/cn/cslg/report/common/model/vo/AvoidFeaturesVO.java

@@ -0,0 +1,85 @@
+package cn.cslg.report.common.model.vo;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+/**
+ * 拆分保存特征的前端传输DTO类
+ */
+@Data
+@Accessors(chain = true)
+public class AvoidFeaturesVO {
+    /**
+     * 特征id
+     */
+    private Integer id;
+    /**
+     * 专利号
+     */
+    private String signPatentNo;
+    /**
+     * 特征翻译
+     */
+    private String contentOut;
+    /**
+     * 特征
+     */
+    private String content;
+    /**
+     * 权要ID
+     */
+    private Integer rightId;
+
+    /**
+     * 特征拆分人ID
+     */
+    private Integer partnerId;
+    /**
+     * 是否最终
+     */
+    private Integer isFinal;
+    /**
+     * 所属报告
+     */
+    private Integer reportId;
+    /**
+     * 解释
+     */
+    private String explainText;
+    /**
+     * 拆分类型
+     */
+    private Integer splitBy;
+
+    /**
+     * 拆分方式
+     */
+    private Integer splitType;
+    /**
+     * 权要名
+     */
+    private String rightName;
+    /**
+     * 权要类型 1主权要 0附属权要
+     */
+    private Integer rightType;
+    /**
+     * 特征排序
+     */
+    private Integer featuresOrder;
+    /**
+     * 任务id
+     */
+    private Integer taskId;
+    /**
+     * 特征拆分人IDs
+     */
+    private List<Integer> partnerIds;
+    /**
+     * 回避设计方向
+     */
+    private String littleDirection;
+
+}

+ 1 - 0
RMS/src/main/java/cn/cslg/report/common/model/vo/CompareScenariosVO.java

@@ -10,6 +10,7 @@ import java.util.List;
 @Data
 @Accessors(chain = true)
 public class CompareScenariosVO {
+    private Integer id;
 
     private Integer rightId;
 

+ 10 - 1
RMS/src/main/java/cn/cslg/report/common/model/vo/PatentRightVo.java

@@ -16,7 +16,9 @@ import java.util.List;
 @Data
 @Accessors(chain = true)
 public class PatentRightVo {
-
+    /**
+     * 权要名
+     */
     private String RightName;
     /**
      * 专利号
@@ -59,4 +61,11 @@ public class PatentRightVo {
      *
      */
     private List<CompareMessageVO> compareMessageVOS;
+
+
+
+
+
+
+
 }

+ 13 - 0
RMS/src/main/java/cn/cslg/report/common/model/vo/PatentVO.java

@@ -46,6 +46,10 @@ public class PatentVO extends BaseVO {
     private List<SourceVO> filedOptions;
     @Schema(description = "专题库自定义选项列表")
     private List<SourceVO> PasOptions;
+    @Schema(description = "未处理任务类型列表")
+    private List<Integer> notAssignTypes;
+    @Schema(description = "任务过滤条件列表")
+    private List<taskSource> taskSources;
     //专题库ID
     private Integer projectId;
     //RMS导入ID
@@ -80,4 +84,13 @@ public class PatentVO extends BaseVO {
     @Schema(description = "标题")
     private String patentName;
 
+    private String orderType;
+
+    private String orderItem;
+    @Data
+    public  static class taskSource{
+        private  List<Integer> taskIds;
+        private Integer personId;
+        private Integer state;
+    }
 }

+ 4 - 0
RMS/src/main/java/cn/cslg/report/common/model/vo/PersonnelVO.java

@@ -132,6 +132,10 @@ public class PersonnelVO extends BaseVO {
      */
     private List<Integer> notInPersonIds;
     /**
+     * 租户类型
+     */
+    private String tenantType;
+    /**
      * 部门职位绑定关系
      */
     @Data

+ 1 - 1
RMS/src/main/java/cn/cslg/report/common/model/vo/ProductIncludeFilesVO.java

@@ -8,7 +8,7 @@ import java.util.Date;
 import java.util.List;
 
 /**
- * 产品关联产品附件的标准查询VO类
+ * 产品产品附件的标准查询VO类
  *
  * @Author chenyu
  * @Data 2022/12/20

+ 6 - 0
RMS/src/main/java/cn/cslg/report/common/model/vo/ReportVO.java

@@ -126,6 +126,12 @@ public class ReportVO extends BaseVO {
     @Schema(description = "选中人员")
     private List<Integer> PersonnelIds;
 
+    @Schema(description = "排序字段")
+    private String OrderBy;
+
+    @Schema(description = "是否逆序 0:升序,1:降序")
+    private Integer orderDesc;
+
     @Schema(description = "选中人员")
     private List<Integer> scenarioList;
 }

+ 1 - 1
RMS/src/main/java/cn/cslg/report/common/model/vo/SyneryVO.java

@@ -79,7 +79,7 @@ public class SyneryVO extends BaseVO {
     @Schema(description = "对比结果")
     private Integer compareResult;
     @Schema(description = "专利号")
-    private String patentNo;
+    private List<String> patentNos;
 
     /**
      * 备注

+ 13 - 10
RMS/src/main/java/cn/cslg/report/common/model/vo/TaskReportVO.java

@@ -20,16 +20,18 @@ import java.util.List;
  */
 @Data
 @Accessors(chain = true)
-@Schema(description="任务VO",required = true)
+@Schema(description = "任务VO", required = true)
 public class TaskReportVO extends BaseVO {
     private Integer id;
     private String createName;
     private Integer createID;
-   private Integer  reportType;
+    private Integer reportType;
     @Schema(description = "报告信息")
     private Report report;
     @Schema(description = "报告Id")
     private Integer reportId;
+    @Schema(description = "报告名称")
+    private String reportName;
     @Schema(description = "参与人Id列表")
     private List<Integer> personIds;
 
@@ -42,18 +44,18 @@ public class TaskReportVO extends BaseVO {
     @Schema(description = "任务类型 0开卷审核任务")
     private Integer type;
 
-    @Schema(description = "处理人ID",required = true)
+    @Schema(description = "处理人ID", required = true)
     private Integer handlePersonId;
 
 
-   @Schema(description = "处理人姓名",required = true)
-   private String handlePersonName;
+    @Schema(description = "处理人姓名", required = true)
+    private String handlePersonName;
 
 
- @Schema(description = "创建任务时间")
- @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
- private Date createTime;
+    @Schema(description = "创建任务时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
     @Schema(description = "任务结束时间")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@@ -75,7 +77,8 @@ public class TaskReportVO extends BaseVO {
 
     @Schema(description = "登录人在任务中的身份 0创建人 1处理人")
     private Integer roleInTask;
-
+    @Schema(description = "标的专利号")
+    private String signPatentNo;
     /**
      * 结果
      */

+ 49 - 0
RMS/src/main/java/cn/cslg/report/common/model/vo/TaskSourceVO.java

@@ -0,0 +1,49 @@
+package cn.cslg.report.common.model.vo;
+
+
+import cn.cslg.report.common.model.BaseVO;
+import cn.cslg.report.entity.Personnel;
+import cn.cslg.report.entity.Report;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author lrj
+ * @date 2022-11-9
+ * @description 任务VO类
+ */
+@Data
+@Accessors(chain = true)
+@Schema(description="任务过滤条件VO",required = true)
+public class TaskSourceVO extends BaseVO {
+    @Schema(description = "任务类型")
+    private String taskType;
+
+    @Schema(description = "人员列表")
+    private List<personDate> personDates ;
+    @Schema(description = "未分配数量")
+    private Integer notAssignNum;
+
+    @Data
+    public static class personDate{
+        @Schema(description = "人员Id")
+        private Integer personId;
+        @Schema(description = "任务ID")
+        private List<Integer> taskIds;
+        @Schema(description = "人员名称")
+        private String personName;
+        @Schema(description = "已完成数量")
+        private Integer doneNum;
+        @Schema(description = "已完成数量")
+        private Integer notDoneNum;
+        @Schema(description = "已完成")
+        private List<String> done;
+        @Schema(description = "未完成")
+        private List<String> notDone;
+    }
+
+}

+ 5 - 1
RMS/src/main/java/cn/cslg/report/common/model/vo/TaskVO.java

@@ -21,8 +21,10 @@ import java.util.List;
 @Accessors(chain = true)
 @Schema(description="任务VO",required = true)
 public class TaskVO extends BaseVO {
+    @Schema(description = "创建人姓名")
     private String createName;
-
+    @Schema(description = "处理人姓名")
+    private String handlePersonName;
     @Schema(description = "报告信息")
     private Report report;
     @Schema(description = "报告Id")
@@ -49,6 +51,7 @@ public class TaskVO extends BaseVO {
      * 结束时间
      */
     @Schema(description = "任务结束时间")
+
     private Date endTime;
 
     @Schema(description = "任务状态 0未完成 1已完成")
@@ -66,6 +69,7 @@ public class TaskVO extends BaseVO {
     private List<Integer> taskStatuses;
 
     private List<Integer> ids;
+    private List<Integer> handleIds;
     @Schema(description = "人员专题号对象")
     @Data
     public static class personPatents{

+ 3 - 0
RMS/src/main/java/cn/cslg/report/common/model/vo/queryVo/QueryCMVO.java

@@ -24,4 +24,7 @@ public class QueryCMVO extends BaseVO {
     private Integer compareResult;
     @Schema(description = "专利号")
     private String patentNo;
+    @Schema(description = "标题")
+    private String title;
+
 }

+ 10 - 0
RMS/src/main/java/cn/cslg/report/common/utils/DataUtils.java

@@ -193,5 +193,15 @@ public class DataUtils {
         return shortBuffer.toString();
     }
 
+    public static <T> List<T> objToList(Object obj, Class<T> cla){
+        List<T> list = new ArrayList<T>();
+        if (obj instanceof ArrayList<?>) {
+            for (Object o : (List<?>) obj) {
+                list.add(cla.cast(o));
+            }
+            return list;
+        }
+        return null;
+    }
 
 }

+ 1 - 1
RMS/src/main/java/cn/cslg/report/common/utils/Response.java

@@ -52,7 +52,7 @@ public class Response {
         return JsonUtils.objectToJson(response);
     }
 
-    public static String error(Object data,String message) {
+    public static String error(Object data, String message) {
         Response response = new Response();
         response.setCode(ResponseEnum.ERROR.getCode());
         response.setData(data);

+ 51 - 0
RMS/src/main/java/cn/cslg/report/controller/AvoidDesignDirectionController.java

@@ -0,0 +1,51 @@
+package cn.cslg.report.controller;
+
+import cn.cslg.report.common.core.base.Constants;
+import cn.cslg.report.common.model.dto.AvoidDesignDirectionDTO;
+import cn.cslg.report.common.model.vo.AvoidDesignWholeVO;
+import cn.cslg.report.common.utils.Response;
+import cn.cslg.report.exception.XiaoShiException;
+import cn.cslg.report.service.IAvoidDesignDirectionService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+
+/**
+ * 回避设计方案的Controller层
+ *
+ * @Author chenyu
+ * @Data 2023/2/2
+ */
+@Tag(name = "回避设计方案")
+@Slf4j
+@RequiredArgsConstructor
+@RestController
+@RequestMapping(Constants.REPORT_API + "/avoidDesignDirections")
+public class AvoidDesignDirectionController {
+    private final IAvoidDesignDirectionService avoidDesignDirectionService;
+
+    @Operation(summary = "新增回避设计方案")
+    @PostMapping("/addAvoidDesignDirection")
+    public String addAvoidDesignDirection(@RequestBody AvoidDesignDirectionDTO avoidDesignDirectionDTO) {
+        log.info("开始处理【新增回避设计方案】的请求,参数为:{}", avoidDesignDirectionDTO);
+        try {
+            avoidDesignDirectionService.addAvoidDesignDirection(avoidDesignDirectionDTO);
+        } catch (XiaoShiException e) {
+            return Response.error(e.getMessage());
+        }
+        return Response.success(1);
+    }
+
+    @Operation(summary = "查询回避设计方案")
+    @GetMapping("/getAvoidDesignDirection")
+    public String getAvoidDesignDirection(Integer reportId) throws IOException {
+        log.info("开始处理【查询回避设计方案】的请求,参数为:{}", reportId);
+        AvoidDesignWholeVO queryResult = avoidDesignDirectionService.getAvoidDesignDirection(reportId);
+        return Response.success(queryResult);
+    }
+
+}

+ 12 - 3
RMS/src/main/java/cn/cslg/report/controller/CompareFilesController.java

@@ -2,6 +2,7 @@ package cn.cslg.report.controller;
 
 import cn.cslg.report.common.core.base.Constants;
 
+import cn.cslg.report.common.model.dto.CompareOrderDTO;
 import cn.cslg.report.common.model.vo.PatentIndexSettingVO;
 
 import cn.cslg.report.common.utils.Response;
@@ -46,9 +47,17 @@ public class CompareFilesController {
         return Response.success();
     }
 
-
-
-
+@PostMapping("/order/add")
+@Operation(summary = "给对比专利添加顺序")
+public String addOrder(@RequestBody CompareOrderDTO compareOrderDTO) throws IOException {
+    compareFilesService.addOrder(compareOrderDTO);
+    return Response.success();
+}
+    @GetMapping("/order/query")
+    @Operation(summary = "查找顺序列表")
+    public String getOrder(Integer reportId) throws IOException {
+        return Response.success(compareFilesService.getOrder(reportId));
+    }
 
 
 }

+ 1 - 0
RMS/src/main/java/cn/cslg/report/controller/CompareMessageController.java

@@ -63,6 +63,7 @@ public class CompareMessageController {
     public String querySynery(Integer taskId,String patentNo) throws IOException {
         return Response.success(compareMessageService.querySynery(taskId,patentNo));
     }
+
     @PostMapping("addSynery")
     @Operation(summary = "添加协同对比记录")
     public String addSynery(@RequestBody AddSyneryVo addSyneryVo) throws IOException {

+ 1 - 0
RMS/src/main/java/cn/cslg/report/controller/CompareRecordsController.java

@@ -2,6 +2,7 @@ package cn.cslg.report.controller;
 
 import cn.cslg.report.common.core.base.Constants;
 
+import cn.cslg.report.common.utils.Response;
 import cn.cslg.report.entity.CompareRecords;
 import cn.cslg.report.entity.InvalidRecord;
 import cn.cslg.report.service.business.CompareRecordsService;

+ 16 - 3
RMS/src/main/java/cn/cslg/report/controller/CompareScenariosController.java

@@ -2,6 +2,7 @@ package cn.cslg.report.controller;
 
 import cn.cslg.report.common.core.base.Constants;
 import cn.cslg.report.common.model.vo.CompareScenariosVO;
+import cn.cslg.report.common.utils.Response;
 import cn.cslg.report.service.business.CompareScenariosService;
 
 import io.swagger.v3.oas.annotations.Operation;
@@ -11,6 +12,7 @@ import org.springframework.context.annotation.Lazy;
 import org.springframework.web.bind.annotation.*;
 
 import java.io.IOException;
+import java.util.List;
 
 
 @Tag(name = "对比方案")
@@ -22,14 +24,25 @@ public class CompareScenariosController {
 
     @PostMapping("/addCompareScenarios")
     @Operation(summary = "增加对比方案")
-    public String add(@RequestBody CompareScenariosVO compareScenariosVO) throws IOException{
+    public String add(@RequestBody CompareScenariosVO compareScenariosVO) throws IOException {
         return compareScenariosService.add(compareScenariosVO);
     }
+
     @GetMapping("/select")
     @Operation(summary = "查询对比方案")
-    public String select(int reportID)throws IOException{
+    public String select(int reportID) throws IOException {
         return compareScenariosService.select(reportID);
     }
 
+    @PostMapping(value = "/delete", produces = "application/json")
+    @Operation(summary = "删除对比方案")
+    public String delete(@RequestBody List<Integer> scenIds) throws IOException {
+        Boolean flag = compareScenariosService.deleteById(scenIds);
+        if (flag) {
+            return Response.success("删除成功");
+        } else {
+            return Response.error("删除失败");
+        }
 
-}
+    }
+}

+ 12 - 7
RMS/src/main/java/cn/cslg/report/controller/ProductController.java

@@ -5,6 +5,7 @@ import cn.cslg.report.common.model.dto.ProductDTO;
 import cn.cslg.report.common.model.dto.ProductIncludeFilesDTO;
 import cn.cslg.report.common.model.vo.ProductIncludeFilesVO;
 import cn.cslg.report.common.utils.Response;
+import cn.cslg.report.exception.XiaoShiException;
 import cn.cslg.report.service.IProductService;
 import com.alibaba.fastjson.JSONObject;
 import io.swagger.v3.oas.annotations.Operation;
@@ -31,19 +32,23 @@ import java.util.List;
 @RequestMapping(Constants.REPORT_API + "/product")
 @RequiredArgsConstructor
 public class ProductController {
-    private final IProductService productService;  //装配产品的Service层接口和实现类
+    private final IProductService productService;  //产品的Service层装配
 
     @Operation(summary = "新增产品")
     @PostMapping("/addProduct")
     public String addProduct(String jsons, List<MultipartFile> files) {
-        log.info("开始处理【新增产品】的请求,参数为:{}, {}", jsons, files);
-        if (jsons != null) {
-            ProductDTO productDTO = JSONObject.parseObject(jsons, ProductDTO.class);
+        log.info("开始处理【新增产品】的请求,参数为产品信息:{}, 产品附件:{}", jsons, files);
+
+        if (jsons == null) {
+            return Response.error("前端未传参数");
+        }
+        ProductDTO productDTO = JSONObject.parseObject(jsons, ProductDTO.class);
+        try {
             productService.addProduct(productDTO, files);
-            return Response.success("产品新增成功");
-        } else {
-            return Response.error("产品相关信息不能为空");
+        } catch (XiaoShiException e) {
+            return Response.error(e.getMessage());
         }
+        return Response.success("新增产品完成");
     }
 
     @Operation(summary = "修改产品")

+ 6 - 0
RMS/src/main/java/cn/cslg/report/controller/TaskController.java

@@ -148,4 +148,10 @@ public class TaskController {
     public String addSyneryTask(@RequestBody SyneryVO syneryVO) throws ParseException, IOException {
         return taskService.addSyneryTask(syneryVO);
     }
+
+    @RequestMapping(value = "/getTaskSources", method = RequestMethod.GET)
+    @Operation(summary = "获得任务过滤条件列表")
+    public String getTaskSources(Integer reportId) throws  IOException {
+        return Response.success(taskService.getTaskSources(reportId));
+    }
 }

+ 2 - 0
RMS/src/main/java/cn/cslg/report/controller/TempleController.java

@@ -11,6 +11,8 @@ import org.springframework.context.annotation.Lazy;
 import org.springframework.web.bind.annotation.*;
 
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
 
 @Tag(name = "报告模板")
 @RestController

+ 34 - 0
RMS/src/main/java/cn/cslg/report/entity/AssoAvoidDesignWholeLittleDirection.java

@@ -0,0 +1,34 @@
+package cn.cslg.report.entity;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 回避设计总体方向和方向关联表实体类
+ *
+ * @Author chenyu
+ * @Data 2023/2/2
+ */
+@Accessors(chain = true)
+@Data
+public class AssoAvoidDesignWholeLittleDirection implements Serializable {
+    /**
+     * ID
+     */
+    private Integer id;
+    /**
+     * 报告id
+     */
+    private Integer reportId;
+    /**
+     * 回避设计总体方向ID
+     */
+    private Integer avoidDesignWholeDirectionId;
+    /**
+     * 回避设计方向ID
+     */
+    private Integer avoidDesignLittleDirectionId;
+
+}

+ 1 - 5
RMS/src/main/java/cn/cslg/report/entity/AssoProductFile.java

@@ -6,7 +6,7 @@ import lombok.experimental.Accessors;
 import java.io.Serializable;
 
 /**
- * 产品文件关联表的实体类
+ * 产品文件关联表的实体类
  *
  * @Author chenyu
  * @Data 2022/12/20
@@ -15,10 +15,6 @@ import java.io.Serializable;
 @Data
 public class AssoProductFile implements Serializable {
     /**
-     * ID
-     */
-    private Integer id;
-    /**
      * 产品ID
      */
     private Integer productId;

+ 38 - 0
RMS/src/main/java/cn/cslg/report/entity/AvoidDesignLittleDirection.java

@@ -0,0 +1,38 @@
+package cn.cslg.report.entity;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 回避设计方向表实体类
+ *
+ * @Author chenyu
+ * @Data 2023/2/2
+ */
+@Accessors(chain = true)
+@Data
+public class AvoidDesignLittleDirection implements Serializable {
+    /**
+     * ID
+     */
+    private Integer id;
+    /**
+     * 报告ID
+     */
+    private Integer reportId;
+    /**
+     * 特征ID
+     */
+    private Integer featureId;
+    /**
+     * 回避设计方向
+     */
+    private String littleDirection;
+    /**
+     * 权要ID
+     */
+    private Integer rightId;
+
+}

+ 30 - 0
RMS/src/main/java/cn/cslg/report/entity/AvoidDesignWholeDirection.java

@@ -0,0 +1,30 @@
+package cn.cslg.report.entity;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 回避设计总体方向表实体类
+ *
+ * @Author chenyu
+ * @Data 2023/2/2
+ */
+@Accessors(chain = true)
+@Data
+public class AvoidDesignWholeDirection implements Serializable {
+    /**
+     * ID
+     */
+    private Integer id;
+    /**
+     * 报告ID
+     */
+    private Integer reportId;
+    /**
+     * 回避设计总体方向
+     */
+    private String wholeDirection;
+
+}

+ 89 - 0
RMS/src/main/java/cn/cslg/report/entity/AvoidFeatures.java

@@ -0,0 +1,89 @@
+package cn.cslg.report.entity;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+/**
+ * 拆分保存特征的前端传输DTO类
+ */
+@Data
+@Accessors(chain = true)
+public class AvoidFeatures {
+    /**
+     * 特征id
+     */
+    private Integer id;
+    /**
+     * 专利号
+     */
+    private String signPatentNo;
+    /**
+     * 特征翻译
+     */
+    private String contentOut;
+    /**
+     * 特征
+     */
+    private String content;
+    /**
+     * 权要ID
+     */
+    private Integer rightId;
+
+    /**
+     * 特征拆分人ID
+     */
+    private Integer partnerId;
+    /**
+     * 是否最终
+     */
+    private Integer isFinal;
+    /**
+     * 所属报告
+     */
+    private Integer reportId;
+    /**
+     * 解释
+     */
+    private String explainText;
+    /**
+     * 拆分类型
+     */
+    private Integer splitBy;
+
+    /**
+     * 拆分方式
+     */
+    private Integer splitType;
+    /**
+     * 权要名
+     */
+    private String rightName;
+    /**
+     * 权要类型 1主权要 0附属权要
+     */
+    private Integer rightType;
+    /**
+     * 特征排序
+     */
+    private Integer featuresOrder;
+    /**
+     * 任务id
+     */
+    private Integer taskId;
+    /**
+     * 特征拆分人IDs
+     */
+    private List<Integer> partnerIds;
+    /**
+     * 回避设计方向
+     */
+    private String littleDirection;
+    /**
+     * 回避设计总体方向
+     */
+    private String wholeDirection;
+
+}

+ 2 - 0
RMS/src/main/java/cn/cslg/report/entity/CompareFiles.java

@@ -38,5 +38,7 @@ public class CompareFiles extends BaseEntity<CompareFiles> {
     @TableField(value = "STATE")
     private Integer state;
 
+    @TableField(value = "SYS_ORDER")
+    private Integer SysOrder;
 
 }

+ 4 - 2
RMS/src/main/java/cn/cslg/report/entity/Report.java

@@ -4,8 +4,7 @@ import cn.cslg.report.common.model.BaseEntity;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
+import lombok.*;
 import lombok.experimental.Accessors;
 
 import java.util.Date;
@@ -16,6 +15,9 @@ import java.util.List;
 @EqualsAndHashCode(callSuper = true)
 @TableName(value = "REPORT")
 @Schema(description="报告",required = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder(toBuilder = true)
 public class Report extends BaseEntity<Report> {
     /**
      * 标的专利/产品号

+ 15 - 0
RMS/src/main/java/cn/cslg/report/exception/XiaoShiException.java

@@ -0,0 +1,15 @@
+package cn.cslg.report.exception;
+
+/**
+ * 整个项目通用异常类
+ *
+ * @Author chenyu
+ * @Data 2023/2/1
+ */
+public class XiaoShiException extends RuntimeException {
+
+    public XiaoShiException(String message) {
+        super(message);
+    }
+
+}

+ 32 - 0
RMS/src/main/java/cn/cslg/report/mapper/AssoAvoidDesignWholeLittleDirectionMapper.java

@@ -0,0 +1,32 @@
+package cn.cslg.report.mapper;
+
+import cn.cslg.report.entity.AssoAvoidDesignWholeLittleDirection;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * 回避设计总体方向和方向关联表的Mapper层接口
+ *
+ * @Author chenyu
+ * @Data 2023/2/2
+ */
+@Repository
+public interface AssoAvoidDesignWholeLittleDirectionMapper {
+    /**
+     * 批量插入回避设计总体方向和方向关联表数据
+     *
+     * @param assoAvoidDesignWholeLittleDirections 回避设计总体方向和方向数据对象集合
+     * @return 返回受影响的行数
+     */
+    int insertBatch(List<AssoAvoidDesignWholeLittleDirection> assoAvoidDesignWholeLittleDirections);
+
+    /**
+     * 根据报告id删除回避设计总体方向和方向关联表数据
+     *
+     * @param reportId 报告id
+     * @return 返回受影响的行数
+     */
+    int deleteByReportId(Integer reportId);
+
+}

+ 2 - 2
RMS/src/main/java/cn/cslg/report/mapper/AssoProductFileMapper.java

@@ -14,9 +14,9 @@ import java.util.List;
 @Repository
 public interface AssoProductFileMapper {
     /**
-     * 批量插入产品文件关联表数据
+     * 批量插入数据
      *
-     * @param assoProductFiles 产品文件关联数据对象集合
+     * @param assoProductFiles 数据对象集合
      * @return 返回受影响的行数
      */
     int insertBatch(List<AssoProductFile> assoProductFiles);

+ 2 - 0
RMS/src/main/java/cn/cslg/report/mapper/AssoTaskPersonelMapper.java

@@ -1,5 +1,6 @@
 package cn.cslg.report.mapper;
 
+import cn.cslg.report.common.model.vo.PatentVO;
 import cn.cslg.report.entity.asso.AssoTaskPatentSplit;
 import cn.cslg.report.entity.asso.AssoTaskPersonel;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -13,4 +14,5 @@ public interface AssoTaskPersonelMapper extends BaseMapper<AssoTaskPersonel> {
 
   public List<String> getPatentNumber(@Param("personelId")int personelId ,@Param("state")int  state,@Param("taskId")int taskId);
   public AssoTaskPatentSplit getSplitMessage(@Param("patentNo")String patentNo , @Param("taskId") Integer taskId);
+  public List<String> getPatents(@Param("params") List<PatentVO.taskSource> params);
 }

+ 50 - 0
RMS/src/main/java/cn/cslg/report/mapper/AvoidDesignLittleDirectionMapper.java

@@ -0,0 +1,50 @@
+package cn.cslg.report.mapper;
+
+import cn.cslg.report.common.model.vo.AvoidFeaturesVO;
+import cn.cslg.report.entity.AvoidDesignLittleDirection;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * 回避设计方向表的Mapper层接口
+ *
+ * @Author chenyu
+ * @Data 2023/2/2
+ */
+@Repository
+public interface AvoidDesignLittleDirectionMapper {
+    /**
+     * 批量插入回避设计方向表数据
+     *
+     * @param avoidDesignLittleDirections 回避设计方向数据对象集合
+     * @return 返回受影响的行数
+     */
+    int insertBatch(List<AvoidDesignLittleDirection> avoidDesignLittleDirections);
+
+    /**
+     * 根据报告id删除回避设计方向表数据
+     *
+     * @param reportId 报告id
+     * @return 返回受影响的行数
+     */
+    int deleteByReportId(Integer reportId);
+
+    /**
+     * 根据报告id查询专利号(查报告表)
+     *
+     * @param reportId 报告id
+     * @return 返回查询到的专利号集合
+     */
+    String selectSignPatentNoByReportId(Integer reportId);
+
+    /**
+     * 根据权要id和报告id关联查询特征和回避设计方向数据
+     *
+     * @param rightId  权要id
+     * @param reportId 报告id
+     * @return 返回查询到的特征集合
+     */
+    List<AvoidFeaturesVO> selectWholeByRightIdAndReportId(Integer rightId, Integer reportId);
+
+}

+ 38 - 0
RMS/src/main/java/cn/cslg/report/mapper/AvoidDesignWholeDirectionMapper.java

@@ -0,0 +1,38 @@
+package cn.cslg.report.mapper;
+
+import cn.cslg.report.entity.AvoidDesignWholeDirection;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 回避设计总体方向表的Mapper层接口
+ *
+ * @Author chenyu
+ * @Data 2023/2/2
+ */
+@Repository
+public interface AvoidDesignWholeDirectionMapper {
+    /**
+     * 插入回避设计总体方向表数据
+     *
+     * @param avoidDesignWholeDirection 回避设计总体方向数据对象
+     * @return 返回受影响的行数
+     */
+    int insert(AvoidDesignWholeDirection avoidDesignWholeDirection);
+
+    /**
+     * 根据报告id删除回避设计总体方向表数据
+     *
+     * @param reportId 报告id
+     * @return 返回受影响的行数
+     */
+    int deleteByReportId(Integer reportId);
+
+    /**
+     * 根据报告id查询回避设计总体方向
+     *
+     * @param reportId 报告id
+     * @return 返回查询到的数据
+     */
+    String selectWholeDirectionByReportId(Integer reportId);
+
+}

+ 41 - 0
RMS/src/main/java/cn/cslg/report/mapper/AvoidFeatureMapper.java

@@ -0,0 +1,41 @@
+package cn.cslg.report.mapper;
+
+import cn.cslg.report.common.model.dto.AvoidFeaturesDTO;
+import cn.cslg.report.entity.AvoidFeatures;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * 特征表的Mapper层接口(回避设计方案用)
+ *
+ * @Author chenyu
+ * @Data 2023/2/3
+ */
+@Repository
+public interface AvoidFeatureMapper {
+    /**
+     * 批量插入特征数据
+     *
+     * @param features 特征数据
+     * @return 返回受影响的行数
+     */
+    int insertBatch(List<AvoidFeatures> features);
+
+    /**
+     * 根据报告id删除权要特征
+     *
+     * @param reportId 报告id
+     * @return 返回受影响的行数
+     */
+    int deleteByReportId(Integer reportId);
+
+    /**
+     * 根据报告id查询专利号
+     *
+     * @param reportId 报告id
+     * @return 返回查询到的数据
+     */
+    String selectSignPatentNoByReportId(Integer reportId);
+
+}

+ 1 - 1
RMS/src/main/java/cn/cslg/report/mapper/CompareMessageMapper.java

@@ -15,6 +15,6 @@ import java.util.List;
 @Mapper
 public interface CompareMessageMapper extends BaseMapper<CompareMessage> {
     List<CompareMessageVO> getCompareMessage(@Param("taskId") Integer taskId,@Param("patentNo") String patentNo);
-   IPage<String> getComparedMessage(Page<String> page,@Param("params") QueryCMVO queryCMVO);
+   List<String> getComparedMessage(@Param("params") QueryCMVO queryCMVO);
     List<String> getComparedMessageAll(@Param("params") QueryCMVO queryCMVO);
 }

+ 10 - 0
RMS/src/main/java/cn/cslg/report/mapper/ImportTaskMapper.java

@@ -3,9 +3,19 @@ package cn.cslg.report.mapper;
 import cn.cslg.report.entity.ImportTask;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Delete;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.Date;
+import java.util.List;
 
 @Mapper
 @SuppressWarnings({"all"})
 public interface ImportTaskMapper extends BaseMapper<ImportTask> {
+    @Delete("delete * from IMPORT_TASK where FINISH_TIME<=#{date}")
+    void dele(@Param("date") Date date );
+    @Select("select * from  IMPORT_TASK where FINISH_TIME<=#{date}")
+    List<ImportTask> find(@Param("date")Date date);
 }

+ 12 - 4
RMS/src/main/java/cn/cslg/report/mapper/ProductMapper.java

@@ -13,7 +13,7 @@ import org.springframework.stereotype.Repository;
 @Repository
 public interface ProductMapper {
     /**
-     * 插入产品表数据
+     * 插入数据
      *
      * @param product 产品数据对象
      * @return 返回受影响的行数
@@ -21,7 +21,7 @@ public interface ProductMapper {
     int insert(Product product);
 
     /**
-     * 根据id修改产品表数据
+     * 根据id修改数据
      *
      * @param product 产品数据对象
      * @return 返回受影响的行数
@@ -29,7 +29,15 @@ public interface ProductMapper {
     int update(Product product);
 
     /**
-     * 根据报告reportId关联查询产品和产品附件数据(产品表、产品文件关联表、报告系统文件表)
+     * 根据报告reportId统计数量
+     *
+     * @param reportId 报告id
+     * @return 返回统计到的数量
+     */
+    int countByReportId(Integer reportId);
+
+    /**
+     * 根据报告reportId关联产品表、产品文件关联表、报告系统文件表查询产品和产品附件数据
      *
      * @param reportId 报告id
      * @return 返回查询到的数据
@@ -37,7 +45,7 @@ public interface ProductMapper {
     ProductIncludeFilesVO getWholeByReportId(Integer reportId);
 
     /**
-     * 根据报告reportId删除产品表数据
+     * 根据报告reportId删除数据
      *
      * @param reportId 报告id
      * @return 返回受影响的行数

+ 11 - 0
RMS/src/main/java/cn/cslg/report/service/BaseService.java

@@ -1,6 +1,7 @@
 package cn.cslg.report.service;
 
 import cn.cslg.report.common.core.base.Constants;
+import cn.cslg.report.common.core.exception.PermissionException;
 import cn.cslg.report.common.model.dto.TaskWebSocketDTO;
 import cn.cslg.report.common.model.dto.UploadFileDTO;
 import cn.cslg.report.common.model.vo.LoginVO;
@@ -313,6 +314,13 @@ public class BaseService {
                     taskParams.setIndex((int) rowIndex);
                     try {
                     String res =     outInterfaceService.importPatents(taskParams);
+                    JSONObject jsonObject =JSONObject.parseObject(res);
+                    if(jsonObject.get("code").toString().equals("0")){
+                        importTask.setState(3);
+                        importTask.updateById();
+                        WebSocketServer.sendInfo(Response.error("部分数据上传成功" + "\n" + "成功条数:" + i + "失败条数:" + (total-i)),taskParams.getUserId());
+                        throw new PermissionException("上传失败");
+                    }
                         if((int) rowIndex==taskParams.getTotal())
                         {
                             importTask.setState(1);
@@ -322,6 +330,7 @@ public class BaseService {
                             importTask.setFinishTime(formatter.parse(formatter.format(date)));
                             importTask.updateById();
                         }
+
                         //通过WebSocket 在每一次循环结束后 向前端发送完成进度
                         WebSocketServer.sendInfo(Response.websocket(new TaskWebSocketDTO()
                                 .setTaskId(taskParams.getTaskId())
@@ -337,6 +346,8 @@ public class BaseService {
                         importTask.setState(3);
                         importTask.updateById();
                         e.printStackTrace();
+                        WebSocketServer.sendInfo(Response.error("部分数据上传成功" + "\n" + "成功条数:" + i + "失败条数:" + (total-i)),taskParams.getUserId());
+                        return;
                     }
                 }
                 }

+ 38 - 0
RMS/src/main/java/cn/cslg/report/service/IAvoidDesignDirectionService.java

@@ -0,0 +1,38 @@
+package cn.cslg.report.service;
+
+import cn.cslg.report.common.model.dto.AvoidDesignDirectionDTO;
+import cn.cslg.report.common.model.vo.AvoidDesignWholeVO;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 回避设计方向的Service层接口
+ *
+ * @Author chenyu
+ * @Data 2023/2/2
+ */
+public interface IAvoidDesignDirectionService {
+    /**
+     * 新增回避设计方案
+     *
+     * @param avoidDesignDirectionDTO 回避设计方案数据对象
+     */
+    @Transactional
+    void addAvoidDesignDirection(AvoidDesignDirectionDTO avoidDesignDirectionDTO);
+
+    /**
+     * 查询回避设计方案
+     *
+     * @param reportId 报告id
+     * @return 返回查询到的数据
+     */
+    AvoidDesignWholeVO getAvoidDesignDirection(Integer reportId);
+
+    /**
+     * 删除回避设计方案
+     *
+     * @param reportId 报告id
+     */
+    void deleteAvoidDesignDirection(Integer reportId);
+
+
+}

+ 2 - 2
RMS/src/main/java/cn/cslg/report/service/IProductService.java

@@ -19,8 +19,8 @@ public interface IProductService {
     /**
      * 新增产品
      *
-     * @param productDTO 产品数据前端传输DTO对象
-     * @param files      附件
+     * @param productDTO 新增产品的前端传输DTO类对象
+     * @param files      产品附件
      */
     @Transactional
     void addProduct(ProductDTO productDTO, List<MultipartFile> files);

+ 33 - 5
RMS/src/main/java/cn/cslg/report/service/OutInterfaceService.java

@@ -53,7 +53,11 @@ public class OutInterfaceService {
      * @description 接口来源:PCS
      */
     public String getVerifyCodeFromPCS() throws IOException {
-        OkHttpClient okHttpClient = new OkHttpClient();
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .pingInterval(400, TimeUnit.SECONDS) // 设置 PING 帧发送间隔
+                .connectTimeout(300, TimeUnit.SECONDS)//设置连接超时时间
+                .readTimeout(300, TimeUnit.SECONDS)//设置读取超时时间
+                .build();
         Request request = new Request.Builder()
                 .url(PCSUrl + "/permission/api/admin/verifyCode")
                 .get()
@@ -221,7 +225,11 @@ public class OutInterfaceService {
 
         String param = new Gson().toJson(ids);
         RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), param);
-        OkHttpClient okHttpClient = new OkHttpClient();
+        OkHttpClient okHttpClient =new OkHttpClient.Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .build();
         Request request = new Request.Builder()
                 .url(PCSUrl + "/permission/api/system/getPersonnelByIds")
                 .post(requestBody)
@@ -286,7 +294,11 @@ public class OutInterfaceService {
     }
 
     public String getDeparts(List<Integer> ids) throws IOException {
-        OkHttpClient okHttpClient = new OkHttpClient();
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .build();
         String param = new Gson().toJson(ids);
         RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), param);
         Request request = new Request.Builder()
@@ -320,7 +332,11 @@ public class OutInterfaceService {
         dicts.add(Constants.ENTERPRISE_APPLICATION_SCENARIO);
         String param = new Gson().toJson(dicts);
         RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), param);
-        OkHttpClient okHttpClient = new OkHttpClient();
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .build();
         Request request = new Request.Builder()
                 .url(PASUrl + "/api/v2/system/dict")
                 .post(requestBody)
@@ -361,9 +377,15 @@ public class OutInterfaceService {
         map.put("numberUpc",patentVO.getNumberUpc());
         map.put("startNumber", patentVO.getStartNumber());
         map.put("endNumber", patentVO.getEndNumber());
+        map.put("orderType",patentVO.getOrderType());
+        map.put("orderItem",patentVO.getOrderItem());
         JSONObject json = new JSONObject(map);
         RequestBody requestBody = RequestBody.create(JSON, String.valueOf(json));
-        OkHttpClient okHttpClient = new OkHttpClient();
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .build();
         Request request = new Request.Builder()
                 .url(PASUrl + "/api/v2/system/patentList")
                 .post(requestBody)
@@ -526,8 +548,14 @@ public class OutInterfaceService {
 
     public String getPatentListFromPAS(PASPatentVO params) throws IOException {
         OkHttpClient okHttpClient = new OkHttpClient();
+        Report report =reportService.getById(params.getReportId());
+        params.setProjectId(report.getProjectId());
+        LambdaQueryWrapper<ImportTask> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ImportTask::getReportId, params.getReportId());
         String param = new Gson().toJson(params);
         RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), param);
+        List<ImportTask> importTasks = importTaskService.list(queryWrapper);
+        List<Integer> taskIds = importTasks.stream().map(ImportTask::getId).collect(Collectors.toList());
         Request request = new Request.Builder()
                 .url(PASUrl + "/api/v2/patent/list")
 //                .addHeader("Cookie", LoginUtils.getToken())

+ 14 - 13
RMS/src/main/java/cn/cslg/report/service/business/AssoReportFileService.java

@@ -28,10 +28,10 @@ public class AssoReportFileService extends ServiceImpl<AssoReportFileMapper, Ass
     private final ReportFileService reportFileService;
 
     /**
-     * @function 上传报告报告与文件关联表 对应实体AssoReportFile 0代表上传文件为附件
      * @param reportId 报告id
-     * @param fileIds 文件id
+     * @param fileIds  文件id
      * @return
+     * @function 上传报告报告与文件关联表 对应实体AssoReportFile 0代表上传文件为附件
      */
     public String addAsso(Integer reportId, List<Integer> fileIds) {
         List<AssoReportFile> assoReportFiles = new ArrayList<>();
@@ -42,17 +42,18 @@ public class AssoReportFileService extends ServiceImpl<AssoReportFileMapper, Ass
             assoReportFile.setFileType(0);
             assoReportFiles.add(assoReportFile);
         });
-           this.saveBatch(assoReportFiles);
+        this.saveBatch(assoReportFiles);
         return Response.success();
     }
+
     /**
-     * @function 上传报告报告与文件关联表 对应实体AssoReportFile 1代表上传最终报告
      * @param reportId 报告id
-     * @param fileIds 文件id
+     * @param fileIds  文件id
      * @return
+     * @function 上传报告报告与文件关联表 对应实体AssoReportFile 1代表上传最终报告
      */
 
-    public String add(Integer reportId, List<Integer> fileIds){
+    public String add(Integer reportId, List<Integer> fileIds) {
         List<AssoReportFile> assoReportFiles = new ArrayList<>();
         fileIds.forEach(item -> {
             AssoReportFile assoReportFile = new AssoReportFile();
@@ -67,18 +68,18 @@ public class AssoReportFileService extends ServiceImpl<AssoReportFileMapper, Ass
 
 
     /**
-     * @function 根据报告id 查询上传报告报告与文件关联表
      * @param reportIds 报告id
      * @return 查询上传报告报告与文件关联表 对应实体AssoReportFile
+     * @function 根据报告id 查询上传报告报告与文件关联表
      */
-    public List<AssoReportFile> queryFileByReportId(List<Integer> reportIds){
-        if(reportIds.size()==0){
-            List<AssoReportFile> files=new ArrayList<>();
+    public List<AssoReportFile> queryFileByReportId(List<Integer> reportIds) {
+        if (reportIds.size() == 0) {
+            List<AssoReportFile> files = new ArrayList<>();
             return files;
         }
-        LambdaQueryWrapper<AssoReportFile> wrapper =new LambdaQueryWrapper<>();
-        wrapper.in(AssoReportFile::getReportId,reportIds);
-        List<AssoReportFile> assoReportFiles =this.list(wrapper);
+        LambdaQueryWrapper<AssoReportFile> wrapper = new LambdaQueryWrapper<>();
+        wrapper.in(AssoReportFile::getReportId, reportIds);
+        List<AssoReportFile> assoReportFiles = this.list(wrapper);
         return assoReportFiles;
     }
 

+ 162 - 55
RMS/src/main/java/cn/cslg/report/service/business/CompareFilesService.java

@@ -1,4 +1,6 @@
 package cn.cslg.report.service.business;
+
+import cn.cslg.report.common.model.dto.CompareOrderDTO;
 import cn.cslg.report.common.model.dto.CustomFieldLabelDTO;
 
 import cn.cslg.report.common.model.vo.CompareFilesVO;
@@ -8,22 +10,29 @@ import cn.cslg.report.common.model.vo.PatentVO;
 import cn.cslg.report.common.utils.JsonUtils;
 import cn.cslg.report.common.utils.Response;
 import cn.cslg.report.entity.*;
+import cn.cslg.report.entity.asso.AssoRecordsFeature;
 import cn.cslg.report.entity.asso.AssoTaskPersonel;
 import cn.cslg.report.mapper.CompareFilesMapper;
 import cn.cslg.report.service.OutInterfaceService;
+import cn.hutool.core.lang.func.Func;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import io.swagger.v3.oas.models.security.SecurityScheme;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+
 import java.io.IOException;
 import java.util.*;
+import java.util.function.Function;
 import java.util.stream.Collectors;
+
 @SuppressWarnings({"all"})
 @Service
 @Slf4j
@@ -37,29 +46,30 @@ public class CompareFilesService extends ServiceImpl<CompareFilesMapper, Compare
     private final ReportFieldOptionService reportFieldOptionService;
     private final AssoComapareFielService assoComapareFielService;
     private final ReportFieldPatentLinkService reportFieldPatentLinkService;
-    private final  TaskService taskService;
+    private final TaskService taskService;
     private final AssoTaskPersonelService assoTaskPersonelService;
+    private final CompareRecordsService compareRecordsService;
 
     /**
-     * @function 添加对比文件
      * @param compareFilesVO
      * @return 是否添加成功
      * @throws IOException
+     * @function 添加对比文件
      */
     @Transactional(rollbackFor = Exception.class)
     public String addCompareFile(CompareFilesVO compareFilesVO) throws IOException {
         //查询标的专利信息
         Report report = reportService.getById(compareFilesVO.getReportId());
         //根据标的专利号获得专利信息
-        String res1 = outInterfaceService.getPatentFromPAS( report.getSignPatentNo());
+        String res1 = outInterfaceService.getPatentFromPAS(report.getSignPatentNo());
         JSONObject res1Object = JSONObject.parseObject(res1);
         JSONObject patentNoJSON = JSONObject.parseObject(res1Object.get("data").toString());
-            //获得引用专利号
-            String quote =patentNoJSON.get("quote").toString().replace(" ","");
-            List<String> quotes = Arrays.asList(quote.split("\\|"));
-            //获得同族专利号
-        List<String> familyPatentNos =new ArrayList<>();
-        if(patentNoJSON.containsKey("family")) {
+        //获得引用专利号
+        String quote = patentNoJSON.get("quote").toString().replace(" ", "");
+        List<String> quotes = Arrays.asList(quote.split("\\|"));
+        //获得同族专利号
+        List<String> familyPatentNos = new ArrayList<>();
+        if (patentNoJSON.containsKey("family")) {
             String familyJson = patentNoJSON.get("family").toString();
             familyPatentNos = JsonUtils.jsonToList(JsonUtils.objectToJson(familyJson), String.class);
         }
@@ -85,20 +95,24 @@ public class CompareFilesService extends ServiceImpl<CompareFilesMapper, Compare
         patentNos.addAll(compareFilesVO.getIsAdd());
         //获取对比文件对比表的专利号
         patentNos.removeAll(patentNoList);
-        for(int i=0;i<patentNos.size();i++){
+        List<String> flags =new ArrayList<>();
+        for (int i = 0; i < patentNos.size(); i++) {
             CompareFiles compareFiles1 = new CompareFiles();
-            //根据专利号和报告id造对象
-            compareFiles1.setPatentNo(patentNos.get(i));
-            compareFiles1.setReportId(compareFilesVO.getReportId());
-            //区分对比文件的类型
-            if (familyPatentNos != null&&quotes.size() != 0 && quotes.contains(patentNos.get(i))) {
-                compareFiles1.setRemark("引");
-            }
-            if (familyPatentNos != null&&familyPatentNos.size() != 0  && familyPatentNos.contains(patentNos.get(i))) {
-                compareFiles1.setRemark("同");
+            if(!flags.contains(patentNos.get(i))){
+                //根据专利号和报告id造对象
+                compareFiles1.setPatentNo(patentNos.get(i));
+                compareFiles1.setReportId(compareFilesVO.getReportId());
+                //区分对比文件的类型
+                if (familyPatentNos != null && quotes.size() != 0 && quotes.contains(patentNos.get(i))) {
+                    compareFiles1.setRemark("引");
+                }
+                if (familyPatentNos != null && familyPatentNos.size() != 0 && familyPatentNos.contains(patentNos.get(i))) {
+                    compareFiles1.setRemark("同");
+                }
+                compareFiles.add(compareFiles1);
+                flags.add(patentNos.get(i));
             }
 
-            compareFiles.add(compareFiles1);
         }
         // 批量添加
         this.saveBatch(compareFiles);
@@ -106,7 +120,6 @@ public class CompareFilesService extends ServiceImpl<CompareFilesMapper, Compare
     }
 
     /**
-     *
      * @param compareFilesVO
      * @return
      * @throws IOException
@@ -129,7 +142,7 @@ public class CompareFilesService extends ServiceImpl<CompareFilesMapper, Compare
         patentNos.removeAll(compareFilesVO.getIsDelete());
         //添加新的
         patentNos.addAll(compareFilesVO.getIsAdd());
-        for(int i=0;i<patentNos.size();i++){
+        for (int i = 0; i < patentNos.size(); i++) {
             CompareFiles compareFiles1 = new CompareFiles();
             //根据专利号和报告id造对象
             compareFiles1.setPatentNo(patentNos.get(i));
@@ -140,11 +153,12 @@ public class CompareFilesService extends ServiceImpl<CompareFilesMapper, Compare
         this.saveBatch(compareFiles);
         return Response.success();
     }
+
     /**
-     * @function 根据PatentVO里的条件(分页)模糊查询标的专利号和数量
      * @param patentVO
      * @return 标的专利号和数量 map
      * @throws IOException
+     * @function 根据PatentVO里的条件(分页)模糊查询标的专利号和数量
      */
     public String getCompareFile(PatentVO patentVO) throws IOException {
         LambdaQueryWrapper<CompareFiles> queryWrapper = new LambdaQueryWrapper<>();
@@ -165,7 +179,7 @@ public class CompareFilesService extends ServiceImpl<CompareFilesMapper, Compare
             wrapper1.select(Report::getSignPatentNo);
             wrapper1.eq(Report::getId, patentVO.getReportId());
             //获取标的专利号
-            if(reportService.list(wrapper1).size()==0){
+            if (reportService.list(wrapper1).size() == 0) {
                 return "";
             }
             patentVO.setNotInPatentNos(patentNos);
@@ -192,31 +206,91 @@ public class CompareFilesService extends ServiceImpl<CompareFilesMapper, Compare
     }
 
     /**
-     * @function 根据PatentVO里的条件模糊查询获得已经确定的对比专利详情
      * @param patentVO
      * @return
      * @throws IOException
+     * @function 根据PatentVO里的条件模糊查询获得已经确定的对比专利详情
      */
     //
     public String getSureCompareFile(PatentVO patentVO) throws IOException {
-        List<String> patentNos= new ArrayList<>();
+        List<String> patentNos = new ArrayList<>();
         LambdaQueryWrapper<CompareFiles> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(CompareFiles::getReportId, patentVO.getReportId());
+
+if(patentVO.getOrderItem()!=null&&patentVO.getOrderType()!=null&&patentVO.getOrderItem().equals("SysOrder")&&patentVO.getOrderType().equals("desc"))
+{
+    queryWrapper .last("ORDER BY IF(isnull(SYS_ORDER),0,1), SYS_ORDER DESC");
+}
+else if(patentVO.getOrderItem()!=null&&patentVO.getOrderItem().equals("SysOrder")){
+    queryWrapper .last("ORDER BY IF(isnull(SYS_ORDER),1,0), SYS_ORDER ASC");
+}
         List<CompareFiles> compareFiles = this.list(queryWrapper);
-      List<String>  AllpatentNos = compareFiles.stream().map(CompareFiles::getPatentNo).collect(Collectors.toList());
+        List<String> AllpatentNos = compareFiles.stream().map(CompareFiles::getPatentNo).collect(Collectors.toList());
         //无查询条件
-        if (patentVO.getFiledOptions() == null||patentVO.getFiledOptions().size() == 0) {
-            patentNos=AllpatentNos;
+        if (patentVO.getFiledOptions() == null || patentVO.getFiledOptions().size() == 0) {
+            patentNos = new ArrayList<>(AllpatentNos);
         }
         //有查询条件时,自定义字段的专利号和任务的专利号取交集
         else {
-          patentNos = reportFieldService.getPatentNo1(patentVO.getFiledOptions(),patentVO.getReportId(),patentVO.getTaskId(),patentVO.getTaskStatus());
-            patentVO.setPatentNos(patentNos);
+            patentNos = reportFieldService.getPatentNo1(patentVO.getFiledOptions(), patentVO.getReportId(), patentVO.getTaskId(), patentVO.getTaskStatus());
+        }
+        //如果有任务过滤条件
+        List<String> patentNosTask = new ArrayList<>();
+        if (patentVO.getTaskSources() != null && patentVO.getTaskSources().size() != 0) {
+            patentNosTask = assoTaskPersonelService.getBaseMapper().getPatents(patentVO.getTaskSources());
+        }
+        List<String> allPatentsCopy = new ArrayList<>();
+        if (patentVO.getNotAssignTypes() != null && patentVO.getNotAssignTypes().size() != 0) {
+            for(Integer types :patentVO.getNotAssignTypes()) {
+                LambdaQueryWrapper<Task> wrapper = new LambdaQueryWrapper<>();
+                wrapper.select(Task::getId)
+                        .eq(Task::getType, types)
+                        .eq(Task::getReportId, patentVO.getReportId());
+
+                Function<Object, Integer> f = (o -> Integer.parseInt(o.toString()));
+                List<Integer> taskIds = taskService.listObjs(wrapper, f);
+                List<String> PatentsCopy = new ArrayList<>(AllpatentNos);
+                if (taskIds.size() != 0) {
+                    LambdaQueryWrapper<AssoTaskPersonel> assoWrapper = new LambdaQueryWrapper<>();
+                    assoWrapper.in(AssoTaskPersonel::getTaskId,taskIds);
+                    List<AssoTaskPersonel> assoTaskPersonels = assoTaskPersonelService.list(assoWrapper);
+                    List<String> tem = assoTaskPersonels.stream().map(AssoTaskPersonel::getPatentNo).collect(Collectors.toList());
+                    PatentsCopy.removeAll(tem);
+                }
+                allPatentsCopy.addAll(PatentsCopy);
+            }
+        }
+        if ((patentVO.getTaskSources() != null && patentVO.getTaskSources().size() != 0) || (patentVO.getNotAssignTypes() != null && patentVO.getNotAssignTypes().size() != 0)) {
+            patentNosTask.addAll(allPatentsCopy);
+            patentNos = new ArrayList<>(CollectionUtils.intersection(patentNosTask, patentNos));
+        }
+        if (patentVO.getOrderItem()!=null&&patentVO.getOrderItem().equals("SysOrder")) {
+            List<String> noCopy = new ArrayList<>();
+            for (CompareFiles item : compareFiles) {
+                if (patentNos.contains(item.getPatentNo()))
+                {  noCopy.add(item.getPatentNo());}
+            }
+            patentNos = noCopy;
         }
         patentVO.setPatentNos(patentNos);
         //详情见outInterfaceService.getPatentFromPAS 接口
         String res = outInterfaceService.getPatentFromPAS(patentVO, 1);
-        return res;
+        JSONObject jsonObject = JSONObject.parseObject(res);
+        JSONObject jsonObject1 = JSONObject.parseObject(jsonObject.get("data").toString());
+        List<JSONObject> jsonObjects = JSONArray.parseArray(jsonObject1.get("records").toString(), JSONObject.class);
+        List<JSONObject> jsonObjects2 = new ArrayList<>();
+        for (JSONObject jsonObject2 : jsonObjects) {
+            for(CompareFiles com:compareFiles){
+                if(jsonObject2.get("publicNo").toString().equals(com.getPatentNo()))
+                {
+                    jsonObject2.put("SysOrder",com.getSysOrder());
+                }
+            }
+            jsonObjects2.add(jsonObject2);
+        }
+        jsonObject1.put("records", jsonObjects2);
+        jsonObject.put("data", jsonObject1);
+        return jsonObject.toString();
     }
 
     public String getCompareNos(Integer reportId) throws IOException {
@@ -228,10 +302,10 @@ public class CompareFilesService extends ServiceImpl<CompareFilesMapper, Compare
     }
 
     /**
-     * @function  删除单个对比专利
      * @param compareFilesVO
      * @return 是否删除成功
      * @throws IOException
+     * @function 删除单个对比专利
      */
 
     public String deletePatentNo(CompareFilesVO compareFilesVO) throws IOException {
@@ -256,37 +330,35 @@ public class CompareFilesService extends ServiceImpl<CompareFilesMapper, Compare
         //根据专利号删除
         if (patentNos.size() != 0) {
             LambdaQueryWrapper<CompareFiles> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-
             lambdaQueryWrapper.in(CompareFiles::getPatentNo, patentNos);
             this.remove(lambdaQueryWrapper);
         }
         return Response.success();
     }
-
     /**
-     * @function 根据id删除对比文件
      * @param id
      * @return
      * @throws IOException
+     * @function 根据id删除对比文件
      */
-    public String deleByReportId(int id)throws IOException{
+    public String deleByReportId(int id) throws IOException {
         CompareFiles compareFiles = new CompareFiles();
         compareFiles.deleteById(id);
         return Response.success();
     }
 
     /**
-     *  @function 根据报告id 和专利号查询对比文件
-     * @param reportId 报告的id
+     * @param reportId  报告的id
      * @param patentNos 专利号
      * @return 专利号的集合
      * @throws IOException
+     * @function 根据报告id 和专利号查询对比文件
      */
-    public List<CustomFieldLabelDTO> setAll(Integer reportId, String patentNos) throws IOException{
+    public List<CustomFieldLabelDTO> setAll(Integer reportId, String patentNos) throws IOException {
         List<CustomFieldLabelDTO> dataList = new ArrayList<>();
         //根据报告id找到对比文件
         List<ReportField> reportFields = reportFieldService.selectAll(reportId);
-        for(ReportField reportField:reportFields) {
+        for (ReportField reportField : reportFields) {
             PatentIndexSettingVO params = new PatentIndexSettingVO();
             CustomFieldLabelDTO data = new CustomFieldLabelDTO();
             params.setPatentNo(patentNos);
@@ -304,18 +376,17 @@ public class CompareFilesService extends ServiceImpl<CompareFilesMapper, Compare
         return dataList;
 
 
-
     }
 
     /**
-     * @function 修改 reportFieldPatentLink
      * @param params
      * @throws IOException
+     * @function 修改 reportFieldPatentLink
      */
     @Transactional(rollbackFor = Exception.class)
-    public void getPatentIndexSetting(PatentIndexSettingVO params)throws IOException {
-        if(params.getTaskID()!=null) {
-            Task task =taskService.getById(params.getTaskID());
+    public void getPatentIndexSetting(PatentIndexSettingVO params) throws IOException {
+        if (params.getTaskID() != null) {
+            Task task = taskService.getById(params.getTaskID());
             params.setReportId(task.getReportId());
             reportFieldPatentLinkService.updatePatentIndexSetting(params);
             LambdaQueryWrapper<AssoTaskPersonel> queryWrapper = new LambdaQueryWrapper<>();
@@ -324,16 +395,15 @@ public class CompareFilesService extends ServiceImpl<CompareFilesMapper, Compare
             AssoTaskPersonel assoTaskPersonel = assoTaskPersonelService.list(queryWrapper).get(0);
             assoTaskPersonel.setState(1);
             assoTaskPersonel.updateById();
-        }
-        else {
+        } else {
             reportFieldPatentLinkService.updatePatentIndexSetting(params);
         }
     }
 
     /**
-     *  @function 根据报告id查询对比文件
      * @param reportId 报告的id
      * @return
+     * @function 根据报告id查询对比文件
      */
 
 
@@ -345,7 +415,7 @@ public class CompareFilesService extends ServiceImpl<CompareFilesMapper, Compare
         List<AssoTaskPersonel> assoTaskPersonels = assoTaskPersonelService.list(queryWrapper);
         LambdaQueryWrapper<CompareFiles> queryWrapper1 = new LambdaQueryWrapper<>();
         //根据报告id查询对比文件的详情
-        queryWrapper1.eq(CompareFiles::getReportId,reportId);
+        queryWrapper1.eq(CompareFiles::getReportId, reportId);
         List<CompareFiles> compareFiles = this.list(queryWrapper1);
         Map<String, Object> reMap = new HashMap<>();
         reMap.put("all", compareFiles.size());
@@ -357,22 +427,59 @@ public class CompareFilesService extends ServiceImpl<CompareFilesMapper, Compare
 
         List<AssoTaskPersonel> assoRead = assoTaskPersonels.stream().filter(item -> item.getState().equals(1)).collect(Collectors.toList());
         reMap.put("all", compareFiles.size());
-        reMap.put("noRead",compareFiles.size()- assoRead.size());
+        reMap.put("noRead", compareFiles.size() - assoRead.size());
         reMap.put("read", assoRead.size());
         return reMap;
     }
+
     /**
      * function : 在删除报告的时候删除对比文件
-     *
      */
     @Transactional(rollbackFor = Exception.class)
-    public String delete(Integer id){
+    public String delete(Integer id) {
         LambdaQueryWrapper<CompareFiles> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(CompareFiles::getReportId,id);
+        queryWrapper.eq(CompareFiles::getReportId, id);
         remove(queryWrapper);
         return Response.success();
     }
 
+    public Integer addOrder(CompareOrderDTO compareOrderDTO) {
+        //根据报告ID 和专利号 查询对比文件
+        LambdaQueryWrapper<CompareFiles> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(CompareFiles::getReportId, compareOrderDTO.getReport());
+        List<CompareFiles> compareFiles = this.list(wrapper);
+        //如果未查到则返回-1
+        if (compareFiles.size() == 0) {
+            return -1;
+        }
+        // 判断该顺序是否被使用过
+        compareFiles.forEach(item -> {
+            compareOrderDTO.getOrders().forEach(
+                    item2 -> {
+                        if (item2.getPatentNO().equals(item.getPatentNo())) {
+                            item.setSysOrder(item2.getOrder());
+                        }
+                    }
+            );
+        });
+        this.saveOrUpdateBatch(compareFiles);
+        return 1;
+    }
 
-
+    public List<Integer> getOrder(Integer reportId) {
+        List<Integer> orders = new ArrayList<>();
+        int i = 1;
+        LambdaQueryWrapper<CompareRecords> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(CompareRecords::getReportId, reportId);
+        List<CompareRecords> list = new ArrayList<>();
+        List<CompareRecords> compareRecords = compareRecordsService.list(wrapper);
+        List<String> headerPatentNos = new ArrayList<>();
+        for (CompareRecords records : compareRecords) {
+            if (!headerPatentNos.contains(records.getPatentNo())) {
+                orders.add(i);
+                i++;
+            }
+        }
+        return orders;
+    }
 }

+ 8 - 8
RMS/src/main/java/cn/cslg/report/service/business/CompareMessageService.java

@@ -199,13 +199,11 @@ public class CompareMessageService extends ServiceImpl<CompareMessageMapper, Com
         map.put("splitType", map1.get("splitType"));
         return map;
     }
-
-
     public IPage<JSONObject> queryComparedMessage(QueryCMVO queryCMVO) throws IOException {
-        IPage<String> patentNos = this.baseMapper.getComparedMessage(new Page<>(queryCMVO.getCurrent(), queryCMVO.getSize()), queryCMVO);
+        List<String> patentNos = this.baseMapper.getComparedMessage(queryCMVO);
 
         IPage<JSONObject> ipage = new Page<JSONObject>();
-        if (patentNos.getRecords().size() == 0) {
+        if (patentNos.size() == 0) {
             ipage.setRecords(new ArrayList<>());
             ipage.setSize(0);
             ipage.setCurrent(queryCMVO.getCurrent());
@@ -216,15 +214,17 @@ public class CompareMessageService extends ServiceImpl<CompareMessageMapper, Com
         PatentVO patentVO = new PatentVO();
         patentVO.setSize(100);
         patentVO.setCurrent(1);
-        patentVO.setPatentNos(patentNos.getRecords());
+        patentVO.setPatentNos(patentNos);
+        patentVO.setPatentNo(queryCMVO.getPatentNo());
+        patentVO.setPatentName(queryCMVO.getTitle());
         String res = outInterfaceService.getPatentFromPAS(patentVO, 1);
         JSONObject jsonObject = JSONObject.parseObject(res);
         JSONObject resData = JSONObject.parseObject(jsonObject.getString("data"));
         List<JSONObject> list = JSONArray.parseArray(resData.getString("records"), JSONObject.class);
         ipage.setRecords(list);
-        ipage.setTotal(patentNos.getTotal());
-        ipage.setSize(patentNos.getSize());
-        ipage.setCurrent(patentNos.getTotal());
+        ipage.setTotal(Integer.parseInt(resData.getString("total")));
+        ipage.setSize(Integer.parseInt(resData.getString("size")));
+        ipage.setCurrent(Integer.parseInt(resData.getString("current")));
         return ipage;
     }
 

+ 6 - 1
RMS/src/main/java/cn/cslg/report/service/business/CompareRecordsService.java

@@ -119,7 +119,6 @@ public class CompareRecordsService extends ServiceImpl<CompareRecordsMapper, Com
      * @return 对比文件 对应实体:compareFiles 对比记录 对应实体:compareRecord
      * @throws IOException
      */
-
     public String getCompareRecords(CompareRecords compareRecord) throws IOException {
         //根据报告id查询对比文件
         LambdaQueryWrapper<CompareRecords> wrapper = new LambdaQueryWrapper<>();
@@ -208,6 +207,12 @@ public class CompareRecordsService extends ServiceImpl<CompareRecordsMapper, Com
         return Response.success();
     }
 
+    /**
+     * 获得排序列表
+     * @param reportId
+     * @return
+     */
+
 
 
 }

+ 27 - 12
RMS/src/main/java/cn/cslg/report/service/business/CompareScenariosService.java

@@ -76,7 +76,6 @@ public class CompareScenariosService extends ServiceImpl<CompareScenariosMapper,
         }
        return Response.success();
     }
-
     /**
      * @function:根据报告id查询对比方案
      * @param reportID
@@ -89,6 +88,10 @@ public class CompareScenariosService extends ServiceImpl<CompareScenariosMapper,
         LambdaQueryWrapper<CompareScenarios> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(CompareScenarios::getReportId, reportID);
         List<CompareScenarios> CompareScenarios = this.list(wrapper);
+        //根据报告ID和权要id获得特征
+        LambdaQueryWrapper<Features> featuresWrapper =new LambdaQueryWrapper<>();
+        featuresWrapper.eq(Features::getReportId,reportID);
+        List<Features> allFeatures =featureService.list(featuresWrapper);
         //遍历对比方案
         for (CompareScenarios a:CompareScenarios){
             CompareScenariosVO compareScenariosVO=new CompareScenariosVO();
@@ -97,12 +100,17 @@ public class CompareScenariosService extends ServiceImpl<CompareScenariosMapper,
             compareScenariosVO.setReportId(a.getReportId());
             compareScenariosVO.setSignPatentNo(  a.getSignPatentNo());
             compareScenariosVO.setRight(a.getRightName());
+            compareScenariosVO.setId(a.getId());
+            //获得对比方案的特征列表
+            List<Features> featuresLists =allFeatures.stream().filter(item->item.getRightId().equals(a.getRightId())).collect(Collectors.toList());
+
             //根据对比方案ID获得所有对比方案和对比记录关联信息
             List<AssoScenarIOS> select = assoScenarIOSService.select(a.getId());
             //获得Id不为0的对比记录和特征关联Id
             List<Integer> featureRecordIds = select.stream().filter(item->item.getFeatureRecordID()!=0).map(AssoScenarIOS::getFeatureRecordID).collect(Collectors.toList());
             //根据关联Id获得特征Id和对比记录ID
             List<AssoRecordsFeature> assoRecordsFeatures =new ArrayList<>();
+            List<AssoRecordsFeature> assoRecordsFeatures1 =new ArrayList<>();
             if(featureRecordIds.size()!=0) {
                 LambdaQueryWrapper<AssoRecordsFeature> wrapper1 = new LambdaQueryWrapper<>();
                 wrapper1.in(AssoRecordsFeature::getId, featureRecordIds);
@@ -120,17 +128,15 @@ public class CompareScenariosService extends ServiceImpl<CompareScenariosMapper,
             LambdaQueryWrapper<CompareRecords> wrapper3 =new LambdaQueryWrapper<>();
             wrapper3.in(CompareRecords::getId,recordId);
             List<CompareRecords> compareRecords =compareRecordsService.list(wrapper3);
-            assoRecordsFeatures.forEach(
-                 item->{
-                     //过滤特征
-                  Features features1 =features.stream().filter(tem->tem.getId().equals(item.getFeatureId())).findFirst().orElse(new Features());
-                    //筛选对比文件
-                  CompareRecords compareRecords1 =compareRecords.stream().filter(tem->tem.getId().equals(item.getRecordsId())).findFirst().orElse(new CompareRecords());
-                     item.setCompareRecords(compareRecords1);
-                     item.setFeatures(features1);
-                 }
 
-            );
+            for(Features item : featuresLists) {
+                AssoRecordsFeature assoRecordsFeature = assoRecordsFeatures.stream().filter(te->te.getFeatureId().equals(item.getId())).findFirst().orElse(new AssoRecordsFeature());
+                //筛选对比文件
+                CompareRecords compareRecords1 = compareRecords.stream().filter(tem -> tem.getId().equals(assoRecordsFeature.getRecordsId())).findFirst().orElse(new CompareRecords());
+                    assoRecordsFeature.setCompareRecords(compareRecords1);
+                    assoRecordsFeature.setFeatures(item);
+                    assoRecordsFeatures1.add(assoRecordsFeature);
+            }
             }
             //过滤拿到特征id
            List<Integer> featuresIds =select.stream().filter(item->item.getFeatureRecordID().equals(0)).map(AssoScenarIOS::getFeaturesID).collect(Collectors.toList());
@@ -143,7 +149,7 @@ public class CompareScenariosService extends ServiceImpl<CompareScenariosMapper,
             }
             compareScenariosVO.setFeaturesList(featuresList);
             compareScenariosVO.setFeaturesIDList(featuresIds);
-            compareScenariosVO.setAssoRecordsFeatures(assoRecordsFeatures);
+            compareScenariosVO.setAssoRecordsFeatures(assoRecordsFeatures1);
          list.add(compareScenariosVO);
         }
         return Response.success(list);
@@ -161,6 +167,15 @@ public class CompareScenariosService extends ServiceImpl<CompareScenariosMapper,
          queryWrapper.eq(CompareScenarios::getReportId,reportId);
         return  this.remove(queryWrapper);
     }
+    public Boolean deleteById(List<Integer> scenIds)throws IOException{
+        List<CompareScenariosVO> list=new ArrayList<>();
+        //根据报告ID查询对比方案
+        LambdaQueryWrapper<AssoScenarIOS> wrapper = new LambdaQueryWrapper<>();
+        wrapper.in(AssoScenarIOS::getScenariosID, scenIds);
+  assoScenarIOSService.remove(wrapper);
+  Boolean flag =this.removeByIds(scenIds);
+        return flag;
 
+    }
 
 }

+ 86 - 77
RMS/src/main/java/cn/cslg/report/service/business/FeatureService.java

@@ -46,7 +46,7 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
     private final AssoTaskPersonelService assoTaskPersonelService;
     private final AssoTaskPatentSplitService assoTaskPatentSplitService;
     private final TaskService taskService;
-    private final  CompareMessageService compareMessageService;
+    private final CompareMessageService compareMessageService;
 
     /**
      * @param patentRights(专利权利要求)
@@ -59,7 +59,7 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
         for (int i = 0; i < patentRights.size(); i++) {
             String str = patentRights.get(i).getContent();
             str = str.replace(" ", "");
-            str = str.replace("\r","");
+            str = str.replace("\r", "");
             Pattern p = Pattern.compile("^[0-9]+(\\.||'、').*");
             Matcher m = p.matcher(str);
             if (m.matches()) {
@@ -67,15 +67,16 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
             } else {
                 if (retList.size() != 0) {
                     retList.get(retList.size() - 1).setContent(retList.get(retList.size() - 1).getContent() + patentRights.get(i).getContent());
-                    if(patentRights.get(i).getContentOut()!=null){
-                    retList.get(retList.size() - 1).setContentOut(retList.get(retList.size() - 1).getContentOut() + patentRights.get(i).getContentOut());}
+                    if (patentRights.get(i).getContentOut() != null) {
+                        retList.get(retList.size() - 1).setContentOut(retList.get(retList.size() - 1).getContentOut() + patentRights.get(i).getContentOut());
+                    }
                 }
 
             }
 
         }
 
-        return retList;
+        return patentRights;
     }
 
     /**
@@ -87,13 +88,13 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
      * @throws IOException
      * @function 从PAS系统上获得权要并拆分
      */
-    @Transactional(rollbackFor = Exception.class,timeout = 10)
+    @Transactional(rollbackFor = Exception.class, timeout = 10)
     public String splitPatentRight(SplitVO splitVO) throws IOException {
-        String patentNo =splitVO.getPatentNo();
-        Integer reportId =splitVO.getReportId();
-        Integer splitType =splitVO.getSplitType();
-        Integer splitBy =splitVO.getSplitBy();
-        Integer taskId =splitVO.getTaskId();
+        String patentNo = splitVO.getPatentNo();
+        Integer reportId = splitVO.getReportId();
+        Integer splitType = splitVO.getSplitType();
+        Integer splitBy = splitVO.getSplitBy();
+        Integer taskId = splitVO.getTaskId();
         Integer flag = 0;
         if (splitBy == null) {
             splitBy = 0;
@@ -101,46 +102,43 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
         if (splitType == null) {
             splitType = 0;
         }
-       PersonnelVO personnelVO = cacheUtils.getLoginUser(StpUtil.getLoginIdAsInt());
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(StpUtil.getLoginIdAsInt());
         //如果是FTO报告则 将拆分信息存入
-        if(taskId!=null){
+        if (taskId != null) {
             //根据taskId获得报告ID
-        Task task = taskService.getById(taskId);
-            reportId =task.getReportId();
-                //根据taskId 和专利号找到关联Id
-                LambdaQueryWrapper<AssoTaskPersonel> queryWrapper1 =new LambdaQueryWrapper<>();
-                queryWrapper1.eq(AssoTaskPersonel::getTaskId,taskId)
-                        .eq(AssoTaskPersonel::getPatentNo,patentNo);
-                List<AssoTaskPersonel> assoTaskPersonels= assoTaskPersonelService.list(queryWrapper1);
-                if(assoTaskPersonels!=null&&assoTaskPersonels.size()!=0){
-                    //关联ID
-                    Integer assoId =assoTaskPersonels.get(0).getId();
-                    //根据关联ID 查询任务专利关联信息
-                    LambdaQueryWrapper<AssoTaskPatentSplit> queryWrapper =new LambdaQueryWrapper<>();
-                    queryWrapper.eq(AssoTaskPatentSplit::getTaskPatentId,assoId);
+            Task task = taskService.getById(taskId);
+            reportId = task.getReportId();
+            //根据taskId 和专利号找到关联Id
+            LambdaQueryWrapper<AssoTaskPersonel> queryWrapper1 = new LambdaQueryWrapper<>();
+            queryWrapper1.eq(AssoTaskPersonel::getTaskId, taskId)
+                    .eq(AssoTaskPersonel::getPatentNo, patentNo);
+            List<AssoTaskPersonel> assoTaskPersonels = assoTaskPersonelService.list(queryWrapper1);
+            if (assoTaskPersonels != null && assoTaskPersonels.size() != 0) {
+                //关联ID
+                Integer assoId = assoTaskPersonels.get(0).getId();
+                //根据关联ID 查询任务专利关联信息
+                LambdaQueryWrapper<AssoTaskPatentSplit> queryWrapper = new LambdaQueryWrapper<>();
+                queryWrapper.eq(AssoTaskPatentSplit::getTaskPatentId, assoId);
                 List<AssoTaskPatentSplit> assoTaskPatentSplits = assoTaskPatentSplitService.list(queryWrapper);
-                    AssoTaskPatentSplit assoTaskPatentSplit =new AssoTaskPatentSplit();
-                    //如果没查到关联信息代表第一次拆分,新建一条
-                if(assoTaskPatentSplits==null||assoTaskPatentSplits.size()==0){
+                AssoTaskPatentSplit assoTaskPatentSplit = new AssoTaskPatentSplit();
+                //如果没查到关联信息代表第一次拆分,新建一条
+                if (assoTaskPatentSplits == null || assoTaskPatentSplits.size() == 0) {
                     assoTaskPatentSplit.setTaskPatentId(assoId);
                     assoTaskPatentSplit.setSplitBy(splitBy);
                     assoTaskPatentSplit.setSplitType(splitType);
                     assoTaskPatentSplit.insert();
-                    flag =1;
-                }
-                else{
+                    flag = 1;
+                } else {
                     assoTaskPatentSplit = assoTaskPatentSplits.get(0);
-                    if(assoTaskPatentSplit.getSplitBy() != splitBy || assoTaskPatentSplit.getSplitType() != splitType)
-                    {
+                    if (assoTaskPatentSplit.getSplitBy() != splitBy || assoTaskPatentSplit.getSplitType() != splitType) {
                         assoTaskPatentSplit.setSplitBy(splitBy);
                         assoTaskPatentSplit.setSplitType(splitType);
                         assoTaskPatentSplit.updateById();
-                        flag=1;
+                        flag = 1;
                     }
                 }
-                }
-        }
-        else {
+            }
+        } else {
             //根据报告ID查询报告
             LambdaQueryWrapper<Report> queryWrapper = new LambdaQueryWrapper();
             queryWrapper.eq(Report::getId, reportId);
@@ -207,10 +205,10 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
         wrapper.eq(Features::getReportId, reportId)
                 .eq(Features::getSignPatentNo, patentNo);
         wrapper.and(QueryWrapper -> QueryWrapper.ne(Features::getSplitBy, a).or().ne(Features::getSplitType, b));
-        if(taskId!=null){
-            List<Features> features =this.list(wrapper);
-            List<Integer> Ids =features.stream().map(Features::getId).collect(Collectors.toList());
-            if(Ids.size()!=0) {
+        if (taskId != null) {
+            List<Features> features = this.list(wrapper);
+            List<Integer> Ids = features.stream().map(Features::getId).collect(Collectors.toList());
+            if (Ids.size() != 0) {
                 LambdaQueryWrapper<CompareMessage> queryWrapper = new LambdaQueryWrapper<>();
                 queryWrapper.in(CompareMessage::getFeatureId, Ids);
                 compareMessageService.remove(queryWrapper);
@@ -224,7 +222,7 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
             List<Features> featuresList = new ArrayList<>();
 
             int rightId = patentRights.get(i).getSort();
-            String name = "权要" + (patentRights.get(i).getSort()+1);
+            String name = "权要" + (patentRights.get(i).getSort() + 1);
             //对需要拆解的权要进行拆解
             if (featureFromDb != null && featureFromDb.size() != 0) {
                 featuresList = featureFromDb.stream().filter(item -> item.getRightId().equals(rightId) && item.getSplitBy().equals(a) && item.getPartnerId().equals(personnelVO.getId()) && item.getSplitType().equals(b)).collect(Collectors.toList());
@@ -257,7 +255,7 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
                     features.setFeaturesOrder(order);
                     features.setRightType(patentRights.get(i).getType());
                     features.setSplitType(splitType);
-                    if(taskId!=null){
+                    if (taskId != null) {
                         features.setTaskId(taskId);
                     }
                     featuresList.add(features);
@@ -281,7 +279,7 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
         Map<String, Object> map = new HashMap<String, Object>();
         map.put("patentRightVos", patentRightVos);
         map.put("splitBy", splitBy);
-        map.put("splitType",splitType);
+        map.put("splitType", splitType);
         return Response.success(map);
     }
 
@@ -316,7 +314,7 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
         Features featureTO = new Features();
         featureTO.setReportId(reportId);
         featureTO.setSignPatentNo(patentNo);
-        featureTO.setPartnerIds(Arrays.asList(report.getPersonId(),report.getCreatePersonId()));
+        featureTO.setPartnerIds(Arrays.asList(report.getPersonId(), report.getCreatePersonId()));
 
         //查询数据库里是否有查询记录
         List<Features> featureFromDb = this.queryFeatures(featureTO);
@@ -327,11 +325,11 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
             //对需要拆解的权要进行拆解
             if (featureFromDb != null && featureFromDb.size() != 0) {
                 int rightId = patentRights.get(i).getSort();
-                featuresList = featureFromDb.stream().filter(item -> item.getRightId().equals(rightId) && (item.getPartnerId().equals(report.getPersonId())||item.getPartnerId().equals(report.getCreatePersonId()))).collect(Collectors.toList());
+                featuresList = featureFromDb.stream().filter(item -> item.getRightId().equals(rightId) && (item.getPartnerId().equals(report.getPersonId()) || item.getPartnerId().equals(report.getCreatePersonId()))).collect(Collectors.toList());
             }
             //装载到对象PatentRightVo
             PatentRightVo patentRightVo = new PatentRightVo();
-            String name = "权要" + (patentRights.get(i).getSort()+1);
+            String name = "权要" + (patentRights.get(i).getSort() + 1);
             patentRightVo.setPatentId(patentRights.get(i).getPatentId());
             patentRightVo.setFeatures(featuresList);
             patentRightVo.setContent(patentRights.get(i).getContent());
@@ -362,7 +360,17 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
         for (int i = 0; i < flags.size(); i++) {
             List<String> tem = new ArrayList<>();
             for (int t = 0; t < sectences.size(); t++) {
-                tem.addAll(Arrays.asList(sectences.get(t).split(flags.get(i))));
+                List<String> attrs = Arrays.asList(sectences.get(t).split(flags.get(i)));
+                for (int v = 0; v < attrs.size(); v++) {
+                    if (v < attrs.size() - 1) {
+                        attrs.set(v, attrs.get(v) + flags.get(i));
+                    }
+                    if (attrs.get(v).equals("其特征在于" + flags.get(i))) {
+                        tem.set(tem.size() - 1,tem.get(tem.size() - 1)+attrs.get(v));
+                    } else {
+                        tem.add(attrs.get(v));
+                    }
+                }
             }
             sectences = tem;
 
@@ -396,7 +404,7 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
         if (features.getSplitType() != null) {
             lambdaQueryWrapper.eq(Features::getSplitType, features.getSplitType());
         }
-        if(features.getPartnerIds()!=null&&features.getPartnerIds().size()>0){
+        if (features.getPartnerIds() != null && features.getPartnerIds().size() > 0) {
             lambdaQueryWrapper.in(Features::getPartnerId, features.getPartnerIds());
 
         }
@@ -446,7 +454,7 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
     }
 
 
-    public List<Map<String,Object>> querySimFeaturePatent(PatentVO patentVO) throws IOException {
+    public List<Map<String, Object>> querySimFeaturePatent(PatentVO patentVO) throws IOException {
         //获得当前用户信息
         PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
         //根据报告Id,拆分人Id,标的专利号获得特征。
@@ -457,61 +465,62 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Features> {
         LambdaQueryWrapper<Report> lambdaQueryWrapper = new LambdaQueryWrapper<>();
         lambdaQueryWrapper.eq(Report::getId, patentVO.getReportId());
         Report report = reportService.list(lambdaQueryWrapper).get(0);
-       String signPatentNo = report.getSignPatentNo();
+        String signPatentNo = report.getSignPatentNo();
         //获得特征内容
         List<String> contents = features.stream().map(Features::getContent).collect(Collectors.toList());
-        List<Features> featuresList = featureMapper.getSignPatentNo(contents,signPatentNo);
+        List<Features> featuresList = featureMapper.getSignPatentNo(contents, signPatentNo);
         if (featuresList.size() == 0) {
-            return new ArrayList<Map<String,Object>>();
+            return new ArrayList<Map<String, Object>>();
         }
         //根据特征Id 查询 对比记录特征关联信息
-        List<Integer> featureIds =featuresList.stream().map(Features::getId).collect(Collectors.toList());
-        List<AssoRecordsFeature> assoRecordsFeatures =new ArrayList<>();
-        List<CompareRecords> compareRecords  =new ArrayList<>();
-        if(featureIds!=null&featureIds.size()>0) {
+        List<Integer> featureIds = featuresList.stream().map(Features::getId).collect(Collectors.toList());
+        List<AssoRecordsFeature> assoRecordsFeatures = new ArrayList<>();
+        List<CompareRecords> compareRecords = new ArrayList<>();
+        if (featureIds != null & featureIds.size() > 0) {
             LambdaQueryWrapper<AssoRecordsFeature> queryWrapper1 = new LambdaQueryWrapper<>();
             queryWrapper1.in(AssoRecordsFeature::getFeatureId, featureIds);
             assoRecordsFeatures = assoRecordsFeatureService.list(queryWrapper1);
             // 根据关联信息获得对比记录ID
-            List<Integer> recordsId =assoRecordsFeatures.stream().map(AssoRecordsFeature::getRecordsId).collect(Collectors.toList());
+            List<Integer> recordsId = assoRecordsFeatures.stream().map(AssoRecordsFeature::getRecordsId).collect(Collectors.toList());
             //根据对比记录ID获得对比记录信息
-            LambdaQueryWrapper<CompareRecords> queryWrapper2 =new LambdaQueryWrapper<>();
-            queryWrapper2.in(CompareRecords::getId,recordsId);
-            compareRecords =compareRecordsService.list(queryWrapper2);
+            LambdaQueryWrapper<CompareRecords> queryWrapper2 = new LambdaQueryWrapper<>();
+            queryWrapper2.in(CompareRecords::getId, recordsId);
+            compareRecords = compareRecordsService.list(queryWrapper2);
         }
         //装载信息
-         List<Map<String,Object>> mapList =new ArrayList<Map<String,Object>>();
+        List<Map<String, Object>> mapList = new ArrayList<Map<String, Object>>();
         //装载特征对应划出的话
-        while (featuresList.size()>0) {
-            Map<String,Object> map =new HashMap<>();
-            List<Map<String,Object>> temMapList =new ArrayList<>();
-            Features features1 =featuresList.get(0);
+        while (featuresList.size() > 0) {
+            Map<String, Object> map = new HashMap<>();
+            List<Map<String, Object>> temMapList = new ArrayList<>();
+            Features features1 = featuresList.get(0);
             Map<String, Object> Map = new HashMap<>();
             List<Integer> recordIds = assoRecordsFeatures.stream().filter(item -> item.getFeatureId().equals(featuresList.get(0).getId())).map(AssoRecordsFeature::getRecordsId).collect(Collectors.toList());
             List<CompareRecords> PartRecords = compareRecords.stream().filter(item -> recordIds.contains(item.getId())).collect(Collectors.toList());
-            if(PartRecords!=null&&PartRecords.size()>0){
+            if (PartRecords != null && PartRecords.size() > 0) {
                 Map.put("feature", featuresList.get(0));
                 Map.put("CompareRecords", PartRecords);
                 temMapList.add(Map);
             }
             featuresList.remove(features1);
-            map.put("signPatentNo",features1.getSignPatentNo());
+            map.put("signPatentNo", features1.getSignPatentNo());
             for (Features tem : featuresList) {
-                if(tem.getSignPatentNo().equals(features1.getSignPatentNo())){
+                if (tem.getSignPatentNo().equals(features1.getSignPatentNo())) {
                     Map<String, Object> temMap = new HashMap<>();
                     List<Integer> recordId = assoRecordsFeatures.stream().filter(item -> item.getFeatureId().equals(tem.getId())).map(AssoRecordsFeature::getRecordsId).collect(Collectors.toList());
                     List<CompareRecords> PartRecord = compareRecords.stream().filter(item -> recordIds.contains(item.getId())).collect(Collectors.toList());
-                    if(PartRecords!=null&&PartRecords.size()>0){
-                    temMap.put("feature", tem);
-                    temMap.put("CompareRecords", PartRecords);
-                    temMapList.add(temMap);
+                    if (PartRecords != null && PartRecords.size() > 0) {
+                        temMap.put("feature", tem);
+                        temMap.put("CompareRecords", PartRecords);
+                        temMapList.add(temMap);
                     }
                     features.remove(tem);
                 }
             }
-            if(temMapList.size()!=0){
-            map.put("features",temMapList);
-            mapList.add(map);}
+            if (temMapList.size() != 0) {
+                map.put("features", temMapList);
+                mapList.add(map);
+            }
         }
 
 

+ 20 - 3
RMS/src/main/java/cn/cslg/report/service/business/ImportTaskService.java

@@ -15,6 +15,11 @@ import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
 
 /**
  * @author 李仁杰
@@ -29,14 +34,12 @@ public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask>
      * @param importTask
      * @return importTask(导入任务)
      */
+    private final ImportTaskMapper mapper;
     public String reImportTask(ImportTask importTask) {
         LambdaQueryWrapper<ImportTask> queryWrapper = new LambdaQueryWrapper<>();
         if (importTask.getReportId() != null) {
             queryWrapper.eq(ImportTask::getReportId, importTask.getReportId());
         }
-        if (importTask.getState() != null) {
-            queryWrapper.eq(ImportTask::getState, importTask.getState());
-        }
         queryWrapper.orderByDesc(ImportTask::getCreateDate);
         if (importTask.getCurrent() != null && importTask.getSize() != null) {
             IPage<ImportTask> importTaskIPage = this.page(new Page<>(importTask.getCurrent(), importTask.getSize()), queryWrapper);
@@ -66,4 +69,18 @@ public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask>
 
     }
 
+    /**
+     * @function :根据时间去获取文件的路径并且删除文件
+     * @param date
+     * @return
+     */
+    public List<String> findPath(Date date){
+        List<String> stringList=new ArrayList<>();
+        List<ImportTask> importTasks = mapper.find(date);
+        stringList =importTasks.stream().map(ImportTask::getFilePath).collect(Collectors.toList());
+        mapper.dele(date);
+        return stringList;
+    }
+
+
 }

+ 159 - 40
RMS/src/main/java/cn/cslg/report/service/business/ReportDocumentService.java

@@ -63,9 +63,11 @@ public class ReportDocumentService extends ServiceImpl<ReportDocumentMapper, Rep
     private final TemplateConfigService templateConfigService;
     private final ReportFieldPatentLinkService reportFieldPatentLinkService;
     private final CompareMessageService compareMessageService;
-    @Value("${fileURL}")
-    private String fileURL;
-
+    private final CompareFilesService compareFilesService;
+    @Value("${RMSFile}")
+    private String rmsFile;
+    @Value("${PASFile}")
+    private String pasFile;
     public String reportDocument(ReportDocument reportDocument) {
 
         return Response.success();
@@ -147,6 +149,8 @@ public class ReportDocumentService extends ServiceImpl<ReportDocumentMapper, Rep
      * @description 装载稳定和无效模板信息
      */
     private XWPFTemplate getstabilityTemplate(Report report, String filePath) throws IOException {
+        //装载标的专利信息
+        Map<String,Object> signPatent = this.signPantentMess(report.getSignPatentNo());
         //根据报告Id获得报告信息
         // 根据拆分人(报告的创建人)Id和报告ID获得所有特征
         LambdaQueryWrapper<Features> allFeaturesWrapper = new LambdaQueryWrapper<>();
@@ -201,14 +205,27 @@ public class ReportDocumentService extends ServiceImpl<ReportDocumentMapper, Rep
         List<String> PatentNos = compareRecords.stream().map(CompareRecords::getPatentNo).collect(Collectors.toList());
         PatentVO patentVO = new PatentVO();
         patentVO.setPatentNos(PatentNos);
+        //根据专利号查询专利的排序
+        LambdaQueryWrapper<CompareFiles> comWrapper =new LambdaQueryWrapper<>();
+        comWrapper
+                .eq(CompareFiles::getReportId,report.getId())
+                .last("ORDER BY IF(isnull(SYS_ORDER),1,0), SYS_ORDER ASC");;
+        List<CompareFiles> compareFiles =compareFilesService.list(comWrapper);
+        //专利号别名的map
+        Map<String, Object> OtherName = new HashMap<>();
+        int flag=1;
+        for(CompareFiles item:compareFiles)
+        { Integer order = item.getSysOrder()==null?flag:item.getSysOrder();
+                OtherName.put(item.getPatentNo(),order);
+        flag++;
+        }
+
         //根据专利号查询专利详细信息
         String resBody = outInterfaceService.getPatentDTOListForRMS(patentVO);
         JSONObject jsonObject = JSONObject.parseObject(resBody);
         List<JSONObject> patentDTOS = JSON.parseArray(jsonObject.get("data").toString(), JSONObject.class);
         //存放专利信息的map集合
         List<Map<String, Object>> patentListMaps = new ArrayList<>();
-        //专利号别名的map
-        Map<String, Object> OtherName = new HashMap<>();
         //填充专利数据到patentListMap
         for (int i = 0; i < patentDTOS.size(); i++) {
             JSONObject item = patentDTOS.get(i);
@@ -238,24 +255,27 @@ public class ReportDocumentService extends ServiceImpl<ReportDocumentMapper, Rep
                 feaListContent.forEach(te -> disclosures.append("(" + te + ")"));
                 disclosures.append("\n");
             }
+          int order=Integer.parseInt(OtherName.get(item.get("publicNo")).toString());
+
             patentListMap.put("name", item.get("name"));
-            patentListMap.put("fileName", "D" + (i + 1));
+            patentListMap.put("fileName", "D" + order);
             patentListMap.put("publicDate", item.get("publicDate"));
             patentListMap.put("publicNo", item.get("publicNo"));
             patentListMap.put("SSIM", "");
             patentListMap.put("applicant", applicants);
             patentListMap.put("patentNo", item.get("publicNo"));
             patentListMap.put("abstractStr", item.get("abstractStr"));
-            patentListMap.put("compareFileName", "对比文件" + (i + 1));
+            patentListMap.put("compareFileName", "对比文件" + (order ));
             patentListMap.put("applicationDate", item.get("applicationDate"));
-            patentListMap.put("abstractPath", fileURL + item.get("abstractPath"));
+            patentListMap.put("abstractPath", pasFile + item.get("abstractPath"));
             patentListMap.put("disclosures", disclosures);
+            patentListMap.put("order",order);
             patentListMaps.add(patentListMap);
-            //给出现的专利添加别名
-            OtherName.put(item.get("publicNo").toString(), ("D" + (i + 1)));
+
         }
+
         //存放对比方案信息的map集合
-        List<Map<String, Object>> scenariosMaps = new ArrayList<>();
+        List<Map<String, Object>> scenariosMaps = new ArrayList<>(compareFiles.size());
         //存放所有对比方案所有不重复的rightId
         List<Integer> rightIds = new ArrayList<>();
         for (int i = 0; i < compareScenarios.size(); i++) {
@@ -291,7 +311,7 @@ public class ReportDocumentService extends ServiceImpl<ReportDocumentMapper, Rep
             }
             //存放对比方案每一个特征记录
             List<Map<String, Object>> maps = new ArrayList<>();
-            partFeatures.forEach(tem -> {
+            allRightFeatures.forEach(tem -> {
 
                List<AssoRecordsFeature>  assoRecordsFeatures2 = assoRecordsFeatures1.stream().filter(item -> item.getFeatureId().equals(tem.getId())).collect(Collectors.toList());
                if(comFetIds.contains(tem.getId())){
@@ -301,34 +321,61 @@ public class ReportDocumentService extends ServiceImpl<ReportDocumentMapper, Rep
                    map.put("compareContent", "");
                    maps.add(map);
                }
-               for(AssoRecordsFeature assoRecordsFeature :assoRecordsFeatures2){
+               else if(assoRecordsFeatures2.size()!=0) {
                    Map<String, Object> map = new LinkedHashMap<>();
                    map.put("featureContent", tem.getContent());
-                   map.put("compareResult", assoRecordsFeature.getComResult() != null ? assoRecordsFeature.getComResult() : "不公开");
-                   CompareRecords record = records.stream().filter(item -> item.getId().equals(assoRecordsFeature.getRecordsId())).findFirst().orElse(new CompareRecords());
-                   String compareContent = "";
-                   //获取对比内容
-                   String content = record.getContent() != null ? record.getContent() : "";
-                   //获得对比专利号
-                   String patentNo = record.getPatentNo() != null ? record.getPatentNo() : "";
-                   if (OtherName.containsKey(patentNo)) {
-                       patentNo = OtherName.get(patentNo).toString()+":";
+                   List<Map<String,Object>>  temMap1=new ArrayList<>();
+                   AssoRecordsFeature assoRecordsFeature =assoRecordsFeatures2.get(0);
+                       CompareRecords record = records.stream().filter(item -> item.getId().equals(assoRecordsFeature.getRecordsId())).findFirst().orElse(new CompareRecords());
+                       String compareContent = "";
+                       //获取对比内容
+                       String content = record.getContent() != null ? record.getContent() : "";
+                       //获得对比专利号
+                       String patentNo = record.getPatentNo() != null ? record.getPatentNo() : "";
+                       if (OtherName.containsKey(patentNo)) {
+                           patentNo ="D"+ OtherName.get(patentNo).toString() + ":";
+                       } else if (!patentNo.equals("")) {
+                           patentNo += ":";
+                       }
+                       //获得解析过程
+                       String paresingProcess = record.getParesingProcess() != null ? "(" + record.getParesingProcess() + ")" : "";
+                       compareContent = patentNo + content + paresingProcess;
+                       //获取对比专利号
+                   if(maps.size()>0) {
+                       Map<String, Object> lastMap = maps.get(maps.size() - 1);
+                       if (lastMap.get("compareContent").toString().equals(compareContent)) {
+                           lastMap.put("featureContent", lastMap.get("featureContent") + tem.getContent());
+                       }
+                       else{
+                           map.put("compareResult", assoRecordsFeature.getComResult() != null ? assoRecordsFeature.getComResult() : "不公开");
+                           map.put("compareContent", compareContent);
+                           map.put("figure", fileUtils.getSystemPath() + record.getFilePath());
+                           if (record.getFields() == null && record.getPosition() == null) {
+                               map.put("position", "");
+                           } else {
+                               map.put("position", "\r" + "(" + record.getFields() + "[" + record.getPosition() + "]" + ")");
+                           }
+                           maps.add(map);
+                       }
                    }
-                   else if(!patentNo.equals("")){
-                       patentNo+=":";
+                   else{
+                       map.put("compareResult", assoRecordsFeature.getComResult() != null ? assoRecordsFeature.getComResult() : "不公开");
+                       map.put("compareContent", compareContent);
+                       map.put("figure", fileUtils.getSystemPath() + record.getFilePath());
+                       if (record.getFields() == null && record.getPosition() == null) {
+                           map.put("position", "");
+                       } else {
+                           map.put("position", "\r" + "(" + record.getFields() + "[" + record.getPosition() + "]" + ")");
+                       }
+                       maps.add(map);
                    }
 
-                   //获得解析过程
-                   String paresingProcess = record.getParesingProcess() != null ? "(" + record.getParesingProcess() + ")" : "";
-                   compareContent = patentNo + content + paresingProcess;
-                   //获取对比专利号
-                   map.put("compareContent", compareContent);
-                   map.put("figure", fileUtils.getSystemPath() + record.getFilePath());
-                   if (record.getFields() == null && record.getPosition() == null) {
-                       map.put("position", "");
-                   } else {
-                       map.put("position", "\r" + "(" + record.getFields() + "[" + record.getPosition() + "]" + ")");
-                   }
+               }
+               else{
+                   Map<String, Object> map = new LinkedHashMap<>();
+                   map.put("featureContent", tem.getContent());
+                   map.put("compareResult","未公开");
+                   map.put("compareContent", "");
                    maps.add(map);
                }
 
@@ -351,7 +398,7 @@ public class ReportDocumentService extends ServiceImpl<ReportDocumentMapper, Rep
                         List<Integer> temFIds = finalAsso.stream().filter(tm -> temRecordIds.contains(tm.getRecordsId())).map(AssoRecordsFeature::getFeatureId).collect(Collectors.toList());
                         String tmName = item;
                         if (OtherName.containsKey(item)) {
-                            tmName = OtherName.get(item).toString();
+                            tmName = "D"+OtherName.get(item).toString();
                         }
                         if (temFIds.size() == allRightFeatures.size()) {
                             noveltyFiles.add(tmName);
@@ -365,7 +412,7 @@ public class ReportDocumentService extends ServiceImpl<ReportDocumentMapper, Rep
                     item -> {
                         String tmName = item.getPatentNo();
                         if (OtherName.containsKey(tmName)) {
-                            tmName = OtherName.get(tmName).toString();
+                            tmName = "D"+OtherName.get(tmName).toString();
                         }
                         if (!creativeFiles.contains(tmName)) {
                             creativeFiles.add(tmName);
@@ -427,14 +474,20 @@ public class ReportDocumentService extends ServiceImpl<ReportDocumentMapper, Rep
         String date = DateUtils.formatDate(new Date(), DateUtils.YYYY_MM_DD);
         String[] ds = date.split("-");
         map.put("sys", new SystemMO(ds[0], ds[1], ds[2], "", "reportName"));
+        if(patentListMaps.size()>1){
+            patentListMaps=this.sortMap(patentListMaps);
+        }
         map.put("patentList", patentListMaps);
         map.put("combinations", allRightScenarios);
         map.put("allResults", resultMaps);
+        map.put("signPatent",signPatent);
+        map.put("pantentNo",report.getSignPatentNo());
+        map.put("rights",signPatent.get("rights"));
         // 为表格的显示绑定行循环
         LoopRowTableRenderPolicy policy = new LoopRowTableRenderPolicy();
         HtmlRenderPolicy htmlRenderPolicy = new HtmlRenderPolicy();
         // 将bz设置为行循环绑定的数据源的key,即key是bz的value会在模板中的{{bz}}处进行解析
-        Configure configure = Configure.builder().bind("patentList", policy).bind("fileDetails", policy).bind("allResults", policy).bind("remark", htmlRenderPolicy).build();
+        Configure configure = Configure.builder().bind("patentList", policy).bind("fileDetails", policy).bind("allResults", policy).bind("signPatent.rights",policy).bind("remark", htmlRenderPolicy).build();
         // 读取模板、数据并渲染
         XWPFTemplate template = XWPFTemplate.compile(filePath, configure).render(map);
         return template;
@@ -585,7 +638,7 @@ public class ReportDocumentService extends ServiceImpl<ReportDocumentMapper, Rep
             List<JSONObject> patentDTOS = JSON.parseArray(jsonObject.get("data").toString(), JSONObject.class);
         //装载单个专利的信息
         Map<String, Object> patentMap = new HashMap<>();
-            for (JSONObject patent : patentDTOS) {
+          JSONObject patent = patentDTOS.get(0);
                 List<JSONObject> applicantJSONs = JSON.parseArray(patent.get("applicant").toString(), JSONObject.class);
                 StringBuilder applicants = new StringBuilder();
                 StringBuilder rightPerson = new StringBuilder();
@@ -625,6 +678,7 @@ public class ReportDocumentService extends ServiceImpl<ReportDocumentMapper, Rep
                 patentMap.put("applicant", applicants);
                 patentMap.put("rightPerson", rightPerson);
                 patentMap.put("affair", affair);
+                patentMap.put("name", patent.get("name"));
                 //图示
                 patentMap.put("abstractPath", "http://139.224.24.90:8081" + patent.get("abstractPath"));
                 //获得专利对比记录的信息
@@ -634,12 +688,12 @@ public class ReportDocumentService extends ServiceImpl<ReportDocumentMapper, Rep
                 patentMap.put("cM", compareMessageVOS);
                 patentMap.put("rightNum", temMap.get("right"));
                 patentMap.put("mainRightNum", temMap.get("mainRight"));
-            }
         Map<String, Object> map = new HashMap<>();
         String date = DateUtils.formatDate(new Date(), DateUtils.YYYY_MM_DD);
         String[] ds = date.split("-");
         map.put("sys", new SystemMO(ds[0], ds[1], ds[2], "", "reportName"));
         map.put("patentMap", patentMap);
+        map.put("",patentNo);
         // 为表格的显示绑定行循环
         LoopRowTableRenderPolicy policy = new LoopRowTableRenderPolicy();
         HtmlRenderPolicy htmlRenderPolicy = new HtmlRenderPolicy();
@@ -659,6 +713,71 @@ public class ReportDocumentService extends ServiceImpl<ReportDocumentMapper, Rep
         return Response.success();
     }
 
+    public Map<String,Object> signPantentMess(String patentNo) throws IOException {
+        PatentVO patentVO = new PatentVO();
+        patentVO.setPatentNos(Arrays.asList(patentNo));
+        //根据专利号查询专利详细信息
+        String resBody = outInterfaceService.getPatentDTOListForRMS(patentVO);
+        JSONObject jsonObject = JSONObject.parseObject(resBody);
+        List<JSONObject> patentDTOS = JSON.parseArray(jsonObject.get("data").toString(), JSONObject.class);
+        //装载单个专利的信息
+        Map<String, Object> patentMap = new HashMap<>();
+        JSONObject patent = patentDTOS.get(0);
+        List<JSONObject> applicantJSONs = JSON.parseArray(patent.get("applicant").toString(), JSONObject.class);
+        StringBuilder applicants = new StringBuilder();
+        StringBuilder rightPerson = new StringBuilder();
+        applicantJSONs.forEach(tem -> {
+            if (Integer.parseInt(tem.get("dataType").toString()) == 1) {
+                applicants.append(tem.get("name") + "\r");
+            } else {
+                rightPerson.append(tem.get("name") + "\r");
+            }
+        });
+        //申请日
+        patentMap.put("applicationDate", patent.get("applicationDate"));
+
+        //公开日
+        patentMap.put("publicDate", patent.get("publicDate"));
+        //公开号
+        patentMap.put("publicNo",patent.get("publicNo"));
+        //专利号
+        patentMap.put("patentNo", patent.get("patentNo"));
+        //专利权人
+        patentMap.put("rightPerson", rightPerson);
+        //图示
+        patentMap.put("abstractPath", pasFile + patent.get("abstractPath"));
+        patentMap.put("name", patent.get("name"));
+        //查询专利权要
+        String resBody2 = outInterfaceService.getPatentRightFromPAS(patentNo);
+        JSONObject jsonObject2 = JSONObject.parseObject(resBody2);
+        //解析jason获得标的专利的权要
+        List<PatentRight> patentRightsOrgin = JSON.parseArray(jsonObject2.getString("data"), PatentRight.class);
+        List<Map<String,Object>> rights =new ArrayList<>();
+        patentRightsOrgin.forEach(item->{
+            Map<String,Object> temMap =new HashMap<>();
+            temMap.put("rightName","权"+item.getSort());
+            temMap.put("content",item.getContent());
+            rights.add(temMap);
+        });
+        patentMap.put("rights",rights);
+        return  patentMap;
+    }
+ public List<Map<String,Object>> sortMap(List<Map<String,Object>> maps){
+
+     for(int i=0;i<maps.size()-1;i++) {
+         for (int j = 0; j < maps.size() - i - 1; j++) {
+             Integer order1 = Integer.parseInt(maps.get(j).get("order").toString());
+             Integer order2 =Integer.parseInt(maps.get(j+1).get("order").toString());
+             if (order1 > order2) {
+                 Map<String,Object> temp = maps.get(j);
+                 maps.set(j,maps.get(j+1));
+                 maps.set(j+1,temp);
+             }
+
+         }
+     }
+     return maps;
+ }
 
 }
 

+ 7 - 0
RMS/src/main/java/cn/cslg/report/service/business/ReportFieldPatentLinkService.java

@@ -394,5 +394,12 @@ return  patentNos;
 
 }
 
+    /**
+     *
+     * @param reportId 报告ID
+     * @param pantentNO 专利号
+     * @return
+     */
+
 
 }

+ 68 - 58
RMS/src/main/java/cn/cslg/report/service/business/ReportService.java

@@ -14,6 +14,7 @@ import cn.cslg.report.entity.Report;
 import cn.cslg.report.entity.ReportFiles;
 import cn.cslg.report.entity.asso.AssoReportFile;
 import cn.cslg.report.mapper.ReportMapper;
+import cn.cslg.report.service.IAvoidDesignDirectionService;
 import cn.cslg.report.service.IProductService;
 import cn.cslg.report.service.OutInterfaceService;
 import com.alibaba.fastjson.JSON;
@@ -59,11 +60,12 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
     private final FeatureService featureService;
     private final CompareScenariosService compareScenariosService;
     private final IProductService productService;
+    private final IAvoidDesignDirectionService avoidDesignDirectionService;
     private final CompareFilesService compareFilesService;
     private final CompareMessageService compareMessageService;
     private final ImportTaskService importTaskService;
     private final InvalidRecordService invalidRecordService;
-    private  final ReportDocumentService reportDocumentService;
+    private final ReportDocumentService reportDocumentService;
     private final ReportReferencesService reportReferencesService;
 
     /**
@@ -83,13 +85,16 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
             }
             PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
             report.setCreatePersonId(personnelVO.getId());
+            //如果报告类型是4(侵权分析报告)则将状态设为2(处理中)
+            if (report.getType().equals(4)) {
+                report.setStatus(2);
+            }
             boolean addFlag = this.save(report);
 
             if (files != null && files.size() != 0) {
                 //将文档上传并返回文件入库的Id
                 List<Integer> fileIds = reportFileService.uploadFiles(files);
                 assoReportFileService.addAsso(report.getId(), fileIds);
-
             }
             //如果报告生成成功,给报告添加默认自定义字段
             if (addFlag) {
@@ -111,13 +116,13 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
         }
     }
 
-//    @Transactional(rollbackFor = Exception.class)
+    //    @Transactional(rollbackFor = Exception.class)
     //查询报告
     public String queryReport(ReportVO reportVO) throws IOException {
-        Integer id =loginUtils.getId();
-         List<Integer> departIds =outInterfaceService.getDutyDepartsFromPCS(id);
+        Integer id = loginUtils.getId();
+        List<Integer> departIds = outInterfaceService.getDutyDepartsFromPCS(id);
         LambdaQueryWrapper<Report> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.ne(Report::getId,0);
+        queryWrapper.ne(Report::getId, 0);
         if (reportVO.getName() != null) {
             queryWrapper.like(Report::getName, reportVO.getName());
         }
@@ -134,14 +139,15 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
             List<Report> reports = this.page(new Page<>(reportVO.getCurrent(), reportVO.getSize()), queryWrapper).getRecords();
             reports = this.reportData(reports);
             SecurityUtils.startDataScope("/pcs/report/query");
-            long count = this.count(queryWrapper);
+            Long count = this.count(queryWrapper);
             return Response.success(reports, DataUtils.setPageColumn(reportVO.getSize(), reportVO.getCurrent(), Math.toIntExact(count)));
-        }
-        else {
-            queryWrapper.orderByDesc(Report::getId);
+        } else {
+            SecurityUtils.startDataScope("/pcs/report/query");
             List<Report> reports = this.list(queryWrapper);
+            SecurityUtils.startDataScope("/pcs/report/query");
+            long count = this.count(queryWrapper);
             reports = this.reportData(reports);
-            return Response.success(reports);
+            return Response.success(reports, DataUtils.setPageColumn(0, 0, Math.toIntExact(count)));
         }
     }
 
@@ -180,52 +186,55 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
         //解析jason获得标的专利的权要
         List<Personnel> personnels = JSON.parseArray(jsonObject1.getString("data"), Personnel.class);
         //根据部门Id 获得部门信息
-        List<Map<String, Object>> mapDeparts =new ArrayList<>();
-        if(departIds.size()!=0) {
+        List<Map<String, Object>> mapDeparts = new ArrayList<>();
+        if (departIds.size() != 0) {
             String res2 = outInterfaceService.getDeparts(departIds);
             mapDeparts = JSONObject.parseArray(res2);
         }
         //根据客户Id 获得客户信息
-        List<Map<String, Object>> mapClients =new ArrayList<>();
-        if(clientIds.size()!=0) {
+        List<Map<String, Object>> mapClients = new ArrayList<>();
+        if (clientIds.size() != 0) {
             String res3 = outInterfaceService.getClientNameFromPAS(clientIds);
-            mapClients =JSONObject.parseArray(res3);
+            mapClients = JSONObject.parseArray(res3);
         }
         //过滤报告
-        for(Report item :reports){
-                    //装载创建人名和负责人名
-                    List<Personnel> mapCre = personnels.stream().filter(tem -> tem.getId().equals(item.getCreatePersonId())).collect(Collectors.toList());
-                    List<Personnel> mapDuty = personnels.stream().filter(tem -> tem.getId().equals(item.getPersonId())).collect(Collectors.toList());
-                    if(mapDuty.size()!=0)
-                    item.setPersonName(mapDuty.get(0).getPersonnelName());
-                    if(mapCre.size()!=0)
-                    item.setCreatePersonName(mapCre.get(0).getPersonnelName());
-                    //装载部门名
-                    List<Map<String, Object>> mapDeaprt = mapDeparts.stream().filter(tem -> tem.get("departId").toString().equals(item.getDepartmentId().toString())).collect(Collectors.toList());
-                     if(mapDeaprt.size()!=0){
-                         item.setDepartmentName(mapDeaprt.get(0).get("departName").toString());
-                     }
-                     //装载客户
-                    List<Map<String, Object>> mapClient = mapClients.stream().filter(tem -> tem.get("clientId").toString().equals(item.getClientId().toString())).collect(Collectors.toList());
-                    if(mapClient.size()!=0){
-                        item.setClientName(mapClient.get(0).get("clientName").toString());
-                    }
-                    //装载报告应用场景
-                    if (StringUtils.isNotEmpty(item.getScenarioId())) {
-                        item.setScenarioList(StringUtils.changeStringToString(item.getScenarioId(), ","));
-                        item.setScenarioNames(list.stream().filter(systemDict -> systemDict.getType().equals(Constants.ENTERPRISE_APPLICATION_SCENARIO) && item.getScenarioList().contains(systemDict.getValue())).map(SystemDictVO::getLabel).collect(Collectors.toList()));
-                        item.setScenarioId(null);
-                    }
-                    //装载报告文件
-                    List<AssoReportFile> partReportFiles = assoReportFiles.stream().filter(tem -> tem.getReportId().equals(item.getId())).collect(Collectors.toList());
-                    if (partReportFiles.size() == 0) {
-                        item.setReportFiles(null);
-                    } else {
-                        List<Integer> partFileIds = partReportFiles.stream().map(AssoReportFile::getFileId).collect(Collectors.toList());
-                        List<ReportFiles> partFiles = temList.stream().filter(tem -> partFileIds.contains(tem.getId())).collect(Collectors.toList());
-                        item.setReportFiles(partFiles);
-                    }
-                }
+        for (Report item : reports) {
+            //装载创建人名和负责人名
+            List<Personnel> mapCre = personnels.stream().filter(tem -> tem.getId().equals(item.getCreatePersonId())).collect(Collectors.toList());
+            List<Personnel> mapDuty = personnels.stream().filter(tem -> tem.getId().equals(item.getPersonId())).collect(Collectors.toList());
+            if (mapDuty.size() != 0)
+                item.setPersonName(mapDuty.get(0).getPersonnelName());
+            if (mapCre.size() != 0)
+                item.setCreatePersonName(mapCre.get(0).getPersonnelName());
+            //装载部门名
+            List<Map<String, Object>> mapDeaprt = mapDeparts.stream().filter(tem -> tem.get("departId").toString().equals(item.getDepartmentId().toString())).collect(Collectors.toList());
+            if (mapDeaprt.size() != 0) {
+                item.setDepartmentName(mapDeaprt.get(0).get("departName").toString());
+            }
+            if (item.getClientId() == null) {
+                item.setClientId(0);
+            }
+            //装载客户
+            List<Map<String, Object>> mapClient = mapClients.stream().filter(tem -> tem.get("clientId").toString().equals(item.getClientId().toString())).collect(Collectors.toList());
+            if (mapClient.size() != 0) {
+                item.setClientName(mapClient.get(0).get("clientName").toString());
+            }
+            //装载报告应用场景
+            if (StringUtils.isNotEmpty(item.getScenarioId())) {
+                item.setScenarioList(StringUtils.changeStringToString(item.getScenarioId(), ","));
+                item.setScenarioNames(list.stream().filter(systemDict -> systemDict.getType().equals(Constants.ENTERPRISE_APPLICATION_SCENARIO) && item.getScenarioList().contains(systemDict.getValue())).map(SystemDictVO::getLabel).collect(Collectors.toList()));
+                item.setScenarioId(null);
+            }
+            //装载报告文件
+            List<AssoReportFile> partReportFiles = assoReportFiles.stream().filter(tem -> tem.getReportId().equals(item.getId())).collect(Collectors.toList());
+            if (partReportFiles.size() == 0) {
+                item.setReportFiles(null);
+            } else {
+                List<Integer> partFileIds = partReportFiles.stream().map(AssoReportFile::getFileId).collect(Collectors.toList());
+                List<ReportFiles> partFiles = temList.stream().filter(tem -> partFileIds.contains(tem.getId())).collect(Collectors.toList());
+                item.setReportFiles(partFiles);
+            }
+        }
         return reports;
     }
 
@@ -285,8 +294,10 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
         compareScenariosService.deleteByReportId(id);
         //删除任务人员关联信息表
         assoTaskPersonelService.deleAssoTaskPersonel(id);
-        //陈宇 ↓ 删除和报告有关的产品表数据、删除和产品有关的产品文件关联表数据、删除和产品有关的报告系统文件表数据
+        //陈宇 ↓ 删除和报告有关的产品相关数据
         productService.deleteProduct(id);
+        //陈宇 ↓ 删除和报告有关的回避设计方案相关数据
+        avoidDesignDirectionService.deleteAvoidDesignDirection(id);
         //删除对比文件
         compareFilesService.delete(id);
         //导入删除导入任务
@@ -296,13 +307,12 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
         reportDocumentService.deleteByReportId(id);
         //删除报告参考资料
         reportReferencesService.deleteByReportId(id);
-       //删除对比信息
+        //删除对比信息
         compareMessageService.deleteByreportID(id);
 
 
-
-        Boolean dele =this.removeById(id);
-        if (dele ==true) {
+        Boolean dele = this.removeById(id);
+        if (dele == true) {
             return Response.success();
         }
         return Response.error("没有数据");
@@ -325,11 +335,12 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
 
     /**
      * 修改报告的状态
+     *
      * @param reportId 报告id
-     * @param status 状态
+     * @param status   状态
      */
     @Transactional
-    public void updateStatus(Integer reportId,Integer status){
+    public void updateStatus(Integer reportId, Integer status) {
         LambdaQueryWrapper<Report> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(Report::getId, reportId);
         Report report = this.list(wrapper).get(0);
@@ -339,5 +350,4 @@ public class ReportService extends ServiceImpl<ReportMapper, Report> {
     }
 
 
-
 }

+ 328 - 119
RMS/src/main/java/cn/cslg/report/service/business/TaskService.java

@@ -1,7 +1,6 @@
 package cn.cslg.report.service.business;
 
 
-
 import cn.cslg.report.common.model.dto.TaskTDO;
 import cn.cslg.report.common.model.vo.*;
 import cn.cslg.report.common.model.vo.queryVo.QueryCMVO;
@@ -24,18 +23,22 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import io.swagger.v3.oas.models.security.SecurityScheme;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import org.springframework.web.multipart.MultipartFile;
+
 import java.io.IOException;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.function.Function;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
@@ -57,7 +60,8 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
     public final CompareRecordsService compareRecordsService;
     public final CompareMessageService compareMessageService;
     public final SyneryCodeService syneryCodeService;
-
+    @Value("${PASUrl}")
+    private String url;
 
     /**
      * @param id(Task 任务id)
@@ -91,19 +95,19 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
             queryWrapper.eq(Task::getReportId, id);
             //拿到对象,根据对象判断任务类型
             List<Task> list = this.list(queryWrapper);
-            if(list.size()!=0){
-               for(Task task : list){
-                   if(task.getType().equals(1)){
-                       syneryCCService.deleteByTaskId(task.getId());
-                       syneryCodeService.deleteByTaskId(task.getId());
-
-                   }
-                   if(task.getType().equals(2)){
-                       //删除对比记录
-                       compareRecordsService.deleteByTaskId(task.getId());
-
-                   }
-               }
+            if (list.size() != 0) {
+                for (Task task : list) {
+                    if (task.getType().equals(1)) {
+                        syneryCCService.deleteByTaskId(task.getId());
+                        syneryCodeService.deleteByTaskId(task.getId());
+
+                    }
+                    if (task.getType().equals(2)) {
+                        //删除对比记录
+                        compareRecordsService.deleteByTaskId(task.getId());
+
+                    }
+                }
             }
 
             return this.remove(queryWrapper);
@@ -142,41 +146,45 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
      */
     public IPage<TaskReportVO> queryPageList(TaskVO taskVO) throws IOException {
         taskVO.setLoginId(StpUtil.getLoginIdAsInt());
-        if(taskVO.getRoleInTask()==0&&taskVO.getTaskStatus()==0){
-            taskVO.setTaskStatuses(Arrays.asList(0,2));
-        }
-        else if(taskVO.getRoleInTask()==0&&taskVO.getTaskStatus()==1)
-        {
+        if (taskVO.getRoleInTask() == 0 && taskVO.getTaskStatus() == 0) {
+            taskVO.setTaskStatuses(Arrays.asList(0, 2));
+        } else if (taskVO.getRoleInTask() == 0 && taskVO.getTaskStatus() == 1) {
             taskVO.setTaskStatuses(Arrays.asList(1));
-        }
-        else if(taskVO.getRoleInTask()==1&&taskVO.getTaskStatus()==0)
-        {
+        } else if (taskVO.getRoleInTask() == 1 && taskVO.getTaskStatus() == 0) {
             taskVO.setTaskStatuses(Arrays.asList(0));
-        }
-        else if(taskVO.getRoleInTask()==1&&taskVO.getTaskStatus()==1)
-        {
-            taskVO.setTaskStatuses(Arrays.asList(1,2));
+        } else if (taskVO.getRoleInTask() == 1 && taskVO.getTaskStatus() == 1) {
+            taskVO.setTaskStatuses(Arrays.asList(1, 2));
         }
         IPage<TaskReportVO> dataPage = new Page<>();
-        //当查询使用发起人名称时
-        if(taskVO.getCreateName()!=null&&taskVO.getCreateName()!=""){
-        String res =outInterfaceService.getPersonIdByNamePCS(taskVO.getCreateName());
-        List<Integer> createIds =  JSONArray.parseArray(res,Integer.class);
+        //当查询使用发起人名称时
+        if (taskVO.getCreateName() != null && taskVO.getCreateName() != "") {
+            String res = outInterfaceService.getPersonIdByNamePCS(taskVO.getCreateName());
+            List<Integer> createIds = JSONArray.parseArray(res, Integer.class);
             taskVO.setIds(createIds);
             //当未查询到时直接返回空页
-            if(createIds==null||createIds.size()==0){
-           taskVO.setIds(Arrays.asList(-1));
+            if (createIds == null || createIds.size() == 0) {
+                taskVO.setIds(Arrays.asList(-1));
+            }
+        }
+        //当查询使用处理人名称时
+        if (taskVO.getHandlePersonName() != null && taskVO.getHandlePersonName() != "") {
+            String res = outInterfaceService.getPersonIdByNamePCS(taskVO.getHandlePersonName());
+            List<Integer> handleIds = JSONArray.parseArray(res, Integer.class);
+            taskVO.setHandleIds(handleIds);
+            //当未查询到时直接返回空页
+            if (handleIds == null || handleIds.size() == 0) {
+                taskVO.setIds(Arrays.asList(-1));
             }
         }
         dataPage = baseMapper.queryTasks(new Page<>(taskVO.getCurrent(), taskVO.getSize()), taskVO);
-        List<TaskReportVO>  taskReportVOS =   dataPage.getRecords();
-        taskReportVOS =this.reTaskReportVOs(taskReportVOS);
+        List<TaskReportVO> taskReportVOS = dataPage.getRecords();
+        taskReportVOS = this.reTaskReportVOs(taskReportVOS);
         dataPage.setRecords(taskReportVOS);
         return dataPage;
     }
 
-   public List<TaskReportVO> reTaskReportVOs(List<TaskReportVO>  taskReportVOS) throws IOException {
-        if(taskReportVOS.size()!=0){
+    public List<TaskReportVO> reTaskReportVOs(List<TaskReportVO> taskReportVOS) throws IOException {
+        if (taskReportVOS.size() != 0) {
             //创建人Id
             List<Integer> createIds = taskReportVOS.stream().map(TaskReportVO::getCreateID).collect(Collectors.toList());
             //处理人Id
@@ -187,19 +195,20 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
             //解析jason获得标的专利的权要
             List<Personnel> personnels = JSON.parseArray(jsonObject1.getString("data"), Personnel.class);
 
-            for(TaskReportVO item :taskReportVOS){
+            for (TaskReportVO item : taskReportVOS) {
                 //装载创建人名和负责人名
                 List<Personnel> mapCre = personnels.stream().filter(tem -> tem.getId().equals(item.getCreateID())).collect(Collectors.toList());
                 List<Personnel> mapDuty = personnels.stream().filter(tem -> tem.getId().equals(item.getHandlePersonId())).collect(Collectors.toList());
-                if(mapCre.size()!=0)
+                if (mapCre.size() != 0)
                     item.setCreateName(mapCre.get(0).getPersonnelName());
-                if(mapDuty.size()!=0&&item.getHandlePersonName() !=null){
-                    item.setHandlePersonName(mapDuty.get(0).getPersonnelName());}
+                if (mapDuty.size() != 0) {
+                    item.setHandlePersonName(mapDuty.get(0).getPersonnelName());
+                }
 
             }
         }
         return taskReportVOS;
-   }
+    }
 
     /**
      * @function 获取对比任务
@@ -304,9 +313,6 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
         if (assignTaskVO.getPatentVO() != null) {
             patentVO = assignTaskVO.getPatentVO();
         }
-        if(1!=1){
-            return Response.error();
-        }
         LambdaQueryWrapper<Report> wrapper1 = new LambdaQueryWrapper<>();
         wrapper1.eq(Report::getId, assignTaskVO.getReportId());
         Report report = reportService.list(wrapper1).get(0);
@@ -342,21 +348,43 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
                 .eq(CompareFiles::getState, 0);
         List<CompareFiles> compareFiles = compareFilesService.list(wrapper);
         List<String> AllpatentNos = compareFiles.stream().map(CompareFiles::getPatentNo).collect(Collectors.toList());
+        List<String> patentNos1 = new ArrayList<>();
         //无查询条件
         if (patentVO == null || patentVO.getFiledOptions() == null || patentVO.getFiledOptions().size() == 0) {
-            patentVO.setPatentNos(AllpatentNos);
+            patentNos1 = AllpatentNos;
         }
         //有查询条件时,自定义字段的专利号和任务的专利号取交集
         else {
             List<String> temPatentNos = reportFieldService.getPatentNo1(patentVO.getFiledOptions(), patentVO.getReportId(), patentVO.getTaskId(), patentVO.getTaskStatus());
-            patentVO.setPatentNos(temPatentNos);
+            patentNos1 = temPatentNos;
+        }
+        //如果有任务过滤条件
+        List<String> patentNosTask = new ArrayList<>();
+        if (patentVO.getTaskSources() != null && patentVO.getTaskSources().size() != 0) {
+            patentNosTask = assoTaskPersonelService.getBaseMapper().getPatents(patentVO.getTaskSources());
+        }
+        List<String> allPatentsCopy = new ArrayList<>();
+        if (patentVO.getNotAssignTypes() != null && patentVO.getNotAssignTypes().size() != 0) {
+            for (Integer types : patentVO.getNotAssignTypes()) {
+                List<String> PatentsCopy = new ArrayList<>(AllpatentNos);
+                LambdaQueryWrapper<AssoTaskPersonel> assoWrapper = new LambdaQueryWrapper<>();
+                assoWrapper.eq(AssoTaskPersonel::getReportId, patentVO.getReportId())
+                        .eq(AssoTaskPersonel::getTaskType, types);
+                List<AssoTaskPersonel> assoTaskPersonels = assoTaskPersonelService.list(assoWrapper);
+                List<String> tem = assoTaskPersonels.stream().map(AssoTaskPersonel::getPatentNo).collect(Collectors.toList());
+                PatentsCopy.removeAll(tem);
+                allPatentsCopy.addAll(PatentsCopy);
+            }
+
         }
+        if ((patentVO.getTaskSources() != null && patentVO.getTaskSources().size() != 0) || (patentVO.getNotAssignTypes() != null && patentVO.getNotAssignTypes().size() != 0)) {
+            patentNosTask.addAll(allPatentsCopy);
+            patentNos1 = new ArrayList<>(CollectionUtils.intersection(patentNosTask, patentNos1));
+        }
+        patentVO.setPatentNos(patentNos1);
         String res = outInterfaceService.getConPantentNos(patentVO, 1);
         JSONObject jsonObject1 = JSONObject.parseObject(res);
         List<String> patentNos = JSONArray.parseArray(jsonObject1.get("data").toString(), String.class);
-        if (patentNos.size() > num) {
-            return Response.error("分配数量超过未分配总数");
-        }
         //待分配的专利号列表剔除分配信息中已经存在的专利号
         patentNos.removeAll(selectedNos);
         List<AssoTaskPersonel> assoTaskPersonels = new ArrayList<>();
@@ -381,6 +409,9 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
             task.setSignPatentNo(signPatentNO);
             //发送邮件
             if (task.insert()) {
+                if(task.getPersonEmail()==null){
+                    task.setPersonEmail("");
+                }
                 Map<String, Object> map = new HashMap<>();
                 map.put("title", "任务通知");
                 map.put("template", "mail/eTask.html");
@@ -576,7 +607,7 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
         simpleDateFormat.format(now);
         task.setFinishTime(now);
         // 当是协同任务
-        if(task.getType()==1&&task.getTaskStatus()==0) {
+        if (task.getType() == 1 && task.getTaskStatus() == 0) {
             task.setTaskStatus(2);
             Map<String, Object> map = new LinkedHashMap<>();
             map.put("title", "任务通知");
@@ -607,15 +638,14 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
                     mailUtils.sendEmailMessage(map);
                 }
             }
+        } else {
+            task.setTaskStatus(1);
         }
-            else {
-                    task.setTaskStatus(1);
-                }
-                //结果为已完成状态
-                task.setResult(1);
-                task.updateById();
-                return Response.success();
-            }
+        //结果为已完成状态
+        task.setResult(1);
+        task.updateById();
+        return Response.success();
+    }
 
     /**
      * @param taskVO
@@ -627,14 +657,41 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
 //        PersonnelVO personnelVO = cacheUtils.getLoginUser(StpUtil.getLoginIdAsInt());
         LambdaQueryWrapper<Task> lambdaQueryWrapper = new LambdaQueryWrapper<>();
         lambdaQueryWrapper.eq(Task::getReportId, taskVO.getReportId());
+        if (taskVO.getTaskName() != null) {
+            lambdaQueryWrapper.like(Task::getTaskName, taskVO.getTaskName());
+        }
+        if (taskVO.getType() != null) {
+            lambdaQueryWrapper.eq(Task::getType, taskVO.getType());
+        }//当查询使用处理人名称时
+        if (taskVO.getHandlePersonName() != null && taskVO.getHandlePersonName() != "") {
+            String res = outInterfaceService.getPersonIdByNamePCS(taskVO.getHandlePersonName());
+            List<Integer> handleIds = JSONArray.parseArray(res, Integer.class);
+            //当未查询到时直接返回空页
+            if (handleIds != null && handleIds.size() != 0) {
+                lambdaQueryWrapper.in(Task::getHandlePersonId, handleIds);
+            } else {
+                lambdaQueryWrapper.in(Task::getHandlePersonId, Arrays.asList(-1));
+            }
+
+        }
+
+
         List<Task> records = this.page(new Page<>(taskVO.getCurrent(), taskVO.getSize()), lambdaQueryWrapper).getRecords();
+        for (Task task : records) {
+            Integer createID = task.getCreateID();
+            Integer handlePersonId = task.getHandlePersonId();
+            PersonnelVO loginUser = cacheUtils.getLoginUser(createID);
+            task.setCreateName(loginUser.getName());
+            PersonnelVO loginUser1 = cacheUtils.getLoginUser(handlePersonId);
+            task.setHandlePersonName(loginUser1.getName());
+        }
         Long count = this.count(lambdaQueryWrapper);
         return Response.success(records, DataUtils.setPageColumn(taskVO.getSize(), taskVO.getCurrent(), Math.toIntExact(count)));
 
     }
 
-    public List<Task> reTasks(List<Task>  tasks) throws IOException {
-        if(tasks.size()!=0){
+    public List<Task> reTasks(List<Task> tasks) throws IOException {
+        if (tasks.size() != 0) {
             //创建人Id
             List<Integer> createIds = tasks.stream().map(Task::getCreateID).collect(Collectors.toList());
             //处理人Id
@@ -645,14 +702,15 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
             //解析jason获得标的专利的权要
             List<Personnel> personnels = JSON.parseArray(jsonObject1.getString("data"), Personnel.class);
 
-            for(Task item :tasks){
+            for (Task item : tasks) {
                 //装载创建人名和负责人名
                 List<Personnel> mapCre = personnels.stream().filter(tem -> tem.getId().equals(item.getCreateID())).collect(Collectors.toList());
                 List<Personnel> mapDuty = personnels.stream().filter(tem -> tem.getId().equals(item.getHandlePersonId())).collect(Collectors.toList());
-                if(mapCre.size()!=0)
+                if (mapCre.size() != 0)
                     item.setCreateName(mapCre.get(0).getPersonnelName());
-                if(mapDuty.size()!=0&&item.getHandlePersonName() ==null){
-                    item.setHandlePersonName(mapDuty.get(0).getPersonnelName());}
+                if (mapDuty.size() != 0 && item.getHandlePersonName() == null) {
+                    item.setHandlePersonName(mapDuty.get(0).getPersonnelName());
+                }
                 //装载部门名
 
             }
@@ -667,9 +725,9 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
      * @author :cj
      */
     @Transactional
-    public String read(Integer taskID, String patentNo,Integer reportId) {
+    public String read(Integer taskID, String patentNo, Integer reportId) {
 
-        if(taskID!=null) {
+        if (taskID != null) {
             LambdaQueryWrapper<AssoTaskPersonel> queryWrapper = new LambdaQueryWrapper<>();
             queryWrapper.eq(AssoTaskPersonel::getPatentNo, patentNo);
             queryWrapper.eq(AssoTaskPersonel::getTaskId, taskID);
@@ -680,31 +738,33 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
                 assoTaskPersonel.setState(1);
             }
             assoTaskPersonel.updateById();
-        }else {
-            LambdaQueryWrapper<CompareFiles> queryWrapper=new LambdaQueryWrapper<>();
-            queryWrapper.eq(CompareFiles::getReportId,reportId).eq(CompareFiles::getPatentNo,patentNo);
+        } else {
+            LambdaQueryWrapper<CompareFiles> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(CompareFiles::getReportId, reportId).eq(CompareFiles::getPatentNo, patentNo);
             CompareFiles compareFiles = compareFilesService.list(queryWrapper).get(0);
             compareFiles.setState(1);
             compareFiles.updateById();
 
 
-
         }
-            return Response.success();
+        return Response.success();
 
     }
 
-    public String look( Integer taskID, String patentNo,Integer reoportId) {
+    public String look(Integer taskID, String patentNo, Integer reoportId) {
         if (taskID != null) {
             LambdaQueryWrapper<AssoTaskPersonel> queryWrapper = new LambdaQueryWrapper<>();
             queryWrapper.eq(AssoTaskPersonel::getPatentNo, patentNo);
             queryWrapper.eq(AssoTaskPersonel::getTaskId, taskID);
-            AssoTaskPersonel assoTaskPersonel = assoTaskPersonelService.list(queryWrapper).get(0);
-            return Response.success(assoTaskPersonel.getState());
-        }
-        else {
+            List<AssoTaskPersonel> list = assoTaskPersonelService.list(queryWrapper);
+            if (list != null && list.size() != 0) {
+                AssoTaskPersonel assoTaskPersonel = list.get(0);
+                return Response.success(assoTaskPersonel.getState());
+            }
+            return Response.success();
+        } else {
             LambdaQueryWrapper<CompareFiles> queryWrapper = new LambdaQueryWrapper<>();
-            queryWrapper.eq(CompareFiles::getPatentNo,patentNo).eq(CompareFiles::getReportId,reoportId);
+            queryWrapper.eq(CompareFiles::getPatentNo, patentNo).eq(CompareFiles::getReportId, reoportId);
             List<CompareFiles> list = compareFilesService.list(queryWrapper);
             return Response.success(list.get(0).getState());
 
@@ -714,9 +774,9 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
     @Transactional(rollbackFor = Exception.class)
     public String addSyneryTask(SyneryVO syneryVO) throws ParseException, IOException {
         //任务保存部分
-        Report report =reportService.getById(syneryVO.getReportId());
+        Report report = reportService.getById(syneryVO.getReportId());
         PatentVO patentVO = new PatentVO();
-      List<Synery_CC> synery_ccs= syneryVO.getSyneryCCList();
+        List<Synery_CC> synery_ccs = syneryVO.getSyneryCCList();
         if (syneryVO.getPatentVO() != null) {
             patentVO = syneryVO.getPatentVO();
         }
@@ -728,13 +788,13 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
         task.setProgress(0.0);
         task.setEndTime(syneryVO.getEndTime());
         task.setRemark(syneryVO.getRemark());
-        if(syneryVO.getHandlePersonId() !=null){
+        if (syneryVO.getHandlePersonId() != null) {
             task.setHandlePersonId(syneryVO.getHandlePersonId());
-        }
-        else{
+        } else {
             task.setHandlePersonName(syneryVO.getPersonEmail());
         }
         task.setCreateID(loginUtils.getId());
+        PersonnelVO personnel = cacheUtils.getLoginUser(loginUtils.getId());
         task.insert();
 
 
@@ -743,40 +803,43 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
         queryCMVO.setCompareResult(syneryVO.getCompareResult());
         List<String> patentNos = new ArrayList<>();
         //无查询条件,单个专利
-        if( syneryVO.getPatentNo()!=null){
-          patentNos =Arrays.asList(syneryVO.getPatentNo());
+        if (syneryVO.getPatentNos() != null && syneryVO.getPatentNos().size() != 0) {
+            patentNos = syneryVO.getPatentNos();
         }
         //无查询条件并且是对比过的专利
-      else  if ((patentVO == null || patentVO.getFiledOptions() == null || patentVO.getFiledOptions().size() == 0)&&syneryVO.getIsAll()==0) {
+        else if ((patentVO == null || patentVO.getFiledOptions() == null || patentVO.getFiledOptions().size() == 0) && syneryVO.getIsAll() == 0) {
             List<String> AllpatentNos = compareMessageService.getBaseMapper().getComparedMessageAll(queryCMVO);
-            patentNos=AllpatentNos;
+            patentNos = AllpatentNos;
+            patentVO.setPatentNos(patentNos);
+            patentVO.setPatentName(syneryVO.getPatentVO().getPatentName());
         }
         //无查询条件并且是全部的专利
-      else if((patentVO == null || patentVO.getFiledOptions() == null || patentVO.getFiledOptions().size() == 0)&&syneryVO.getIsAll()==1){
+        else if ((patentVO == null || patentVO.getFiledOptions() == null || patentVO.getFiledOptions().size() == 0) && syneryVO.getIsAll() == 1) {
             LambdaQueryWrapper<CompareFiles> queryWrapper1 = new LambdaQueryWrapper<>();
             queryWrapper1.eq(CompareFiles::getReportId, syneryVO.getReportId());
             List<CompareFiles> compareFiles = compareFilesService.list(queryWrapper1);
-            List<String>  AllpatentNos = compareFiles.stream().map(CompareFiles::getPatentNo).collect(Collectors.toList());
-            patentNos=AllpatentNos;
+            List<String> AllpatentNos = compareFiles.stream().map(CompareFiles::getPatentNo).collect(Collectors.toList());
+            patentNos = AllpatentNos;
         }
         //有查询条件并且是对比过的专利
-        else if(patentVO != null && patentVO.getFiledOptions() != null && patentVO.getFiledOptions().size() != 0&&syneryVO.getIsAll()==0){
+        else if (patentVO != null && patentVO.getFiledOptions() != null && patentVO.getFiledOptions().size() != 0 && syneryVO.getIsAll() == 0) {
             List<String> AllpatentNos = compareMessageService.getBaseMapper().getComparedMessageAll(queryCMVO);
             List<String> temPatentNos = reportFieldService.getPatentNo1(patentVO.getFiledOptions(), syneryVO.getReportId(), task.getId(), patentVO.getTaskStatus());
             List<String> strings1 = new ArrayList<>(CollectionUtils.intersection(temPatentNos, AllpatentNos));
             patentVO.setPatentNos(temPatentNos);
+            patentVO.setPatentName(syneryVO.getPatentVO().getPatentName());
         }
         //有查询条件并且是全部的专利
-        else if(patentVO != null && patentVO.getFiledOptions() != null && patentVO.getFiledOptions().size() != 0&&syneryVO.getIsAll()==1){
+        else if (patentVO != null && patentVO.getFiledOptions() != null && patentVO.getFiledOptions().size() != 0 && syneryVO.getIsAll() == 1) {
             LambdaQueryWrapper<CompareFiles> queryWrapper1 = new LambdaQueryWrapper<>();
             queryWrapper1.eq(CompareFiles::getReportId, syneryVO.getReportId());
             List<CompareFiles> compareFiles = compareFilesService.list(queryWrapper1);
-            List<String>  AllpatentNos = compareFiles.stream().map(CompareFiles::getPatentNo).collect(Collectors.toList());
+            List<String> AllpatentNos = compareFiles.stream().map(CompareFiles::getPatentNo).collect(Collectors.toList());
             List<String> temPatentNos = reportFieldService.getPatentNo1(patentVO.getFiledOptions(), syneryVO.getReportId(), task.getId(), patentVO.getTaskStatus());
             List<String> strings1 = new ArrayList<>(CollectionUtils.intersection(temPatentNos, AllpatentNos));
             patentVO.setPatentNos(temPatentNos);
         }
-        if (patentVO!=null&&patentVO.getPatentNos()!=null&&patentVO.getPatentNos().size() != 0) {
+        if (patentVO != null && patentVO.getPatentNos() != null && patentVO.getPatentNos().size() != 0) {
             String res = outInterfaceService.getConPantentNos(patentVO, 1);
             JSONObject jsonObject1 = JSONObject.parseObject(res);
             patentNos = JSONArray.parseArray(jsonObject1.get("data").toString(), String.class);
@@ -791,53 +854,199 @@ public class TaskService extends ServiceImpl<TaskMapper, Task> {
         });
         // 分配信息入库
         assoTaskPersonelService.saveBatch(assoTaskPersonels);
-
-        if(synery_ccs!=null&&synery_ccs.size()!=0){
-            synery_ccs.forEach(item->{
-                item.setTaskId(task.getId());
-            });
-            syneryCCService.saveBatch(synery_ccs);
-        }
-         //发送邮件部分
-        String code =DataUtils.generateShortUuid();
-        SyneryCode syneryCode =new SyneryCode();
+        //发送邮件部分
+        String code = DataUtils.generateShortUuid();
+        SyneryCode syneryCode = new SyneryCode();
         syneryCode.setCode(code);
         syneryCode.setTaskId(task.getId());
         syneryCode.insert();
         Map<String, Object> map = new LinkedHashMap<>();
         map.put("title", "任务通知");
-        map.put("template", "mail/Synery.html");
-        if(syneryVO.getHandlePersonId()!=null) {
+        String name = "";
+        if (syneryVO.getHandlePersonId() != null) {
+            map.put("template", "mail/SyneryInside.html");
             String resBody = outInterfaceService.getPersonnelByIdsFromPCS(Arrays.asList(task.getHandlePersonId()));
             JSONObject jsonObject = JSONObject.parseObject(resBody);
             //解析jason获得标的专利的权要
             List<Personnel> personnels = JSON.parseArray(jsonObject.getString("data"), Personnel.class);
             map.put("value1", personnels.get(0).getPersonnelName());
+            name = personnels.get(0).getPersonnelName();
             map.put("email", personnels.get(0).getPersonnelEmail());
             map.put("img", "\\src\\main\\resources\\mail\\logo.png");
-            map.put("value2", syneryCode.getCode());
-            map.put("value3", "http://localhost:8086/Incomplete?taskId="+task.getId()+"&reportId="+task.getReportId()+"&type=1"+"&reportType="+report.getType());
+            map.put("value2", url + "/Incomplete?taskId=" + task.getId() + "&reportId=" + task.getReportId() + "&type=1" + "&reportType=" + report.getType());
             mailUtils.sendEmailMessage(map);
-        }
-      else{
-          String orgin = syneryVO.getPersonEmail();
+        } else {
+            map.put("template", "mail/Synery.html");
+            String orgin = syneryVO.getPersonEmail();
             String parStr = "\\<([^}]*)\\>";
             Pattern pattern = Pattern.compile(parStr);
             Matcher matcher = pattern.matcher(orgin);
-            if(matcher.find()) {
+            if (matcher.find()) {
                 String personName = orgin.substring(0, matcher.start());
-                String email =matcher.group(0);
-             email =   email.replace("<","");
-                email= email.replace(">","");
-                map.put("value1",personName);
-                map.put("email",email);
+                String email = matcher.group(0);
+                email = email.replace("<", "");
+                email = email.replace(">", "");
+                map.put("value1", personName);
+                name = personName;
+                map.put("email", email);
                 map.put("img", "\\src\\main\\resources\\mail\\logo.png");
                 map.put("value2", syneryCode.getCode());
-                map.put("value3", "http://localhost:8086/identificationCode");
+                map.put("value3", url + "/identificationCode");
                 mailUtils.sendEmailMessage(map);
             }
         }
-
+        if (synery_ccs != null && synery_ccs.size() != 0) {
+            map.put("template", "mail/SyneryTo.html");
+            for (Synery_CC item : synery_ccs) {
+                item.setTaskId(task.getId());
+                if (item.getCcId() != null) {
+                    String resBody = null;
+                    try {
+                        resBody = outInterfaceService.getPersonnelByIdsFromPCS(Arrays.asList(item.getCcId()));
+                    } catch (IOException e) {
+                        e.printStackTrace();
+                    }
+                    JSONObject jsonObject = JSONObject.parseObject(resBody);
+                    //解析jason获得标的专利的权要
+                    List<Personnel> personnels = JSON.parseArray(jsonObject.getString("data"), Personnel.class);
+                    map.put("value1", personnel.getName());
+                    map.put("email", personnels.get(0).getPersonnelEmail());
+                    map.put("img", "\\src\\main\\resources\\mail\\logo.png");
+                    map.put("value2", name);
+                    mailUtils.sendEmailMessage(map);
+                } else {
+                    String orgin = item.getCcEmail();
+                    String parStr = "\\<([^}]*)\\>";
+                    Pattern pattern = Pattern.compile(parStr);
+                    Matcher matcher = pattern.matcher(orgin);
+                    if (matcher.find()) {
+                        String personName = orgin.substring(0, matcher.start());
+                        String email = matcher.group(0);
+                        email = email.replace("<", "");
+                        email = email.replace(">", "");
+                        map.put("value1", personnel.getName());
+                        map.put("email", email);
+                        map.put("img", "\\src\\main\\resources\\mail\\logo.png");
+                        map.put("value2", name);
+                        mailUtils.sendEmailMessage(map);
+                    }
+                }
+            }
+            syneryCCService.saveBatch(synery_ccs);
+        }
         return Response.success();
     }
+
+    /**
+     * 获得任务过滤条件
+     *
+     * @param reportId
+     */
+    public List<TaskSourceVO> getTaskSources(Integer reportId) throws IOException {
+        List<TaskSourceVO> taskSourceVOS = new ArrayList<>();
+        //任务类型列表
+        List<Integer> types = Arrays.asList(2, 3);
+        TaskSourceVO assignVO = new TaskSourceVO();
+        assignVO.setTaskType("分配任务");
+        TaskSourceVO siftVO = new TaskSourceVO();
+        siftVO.setTaskType("初筛任务");
+        //任务类型标识
+        List<Integer> typeFlag = new ArrayList<>();
+        //根据报告id获得所有对比文件
+        LambdaQueryWrapper<CompareFiles> comWrapper = new LambdaQueryWrapper<>();
+        comWrapper.select(CompareFiles::getPatentNo)
+                .eq(CompareFiles::getReportId, reportId);
+        Function<Object, String> f = (o -> o.toString());
+        List<String> comPatentNos = compareFilesService.listObjs(comWrapper, f);
+        //根据报告id获得初筛任务和对比任务
+        LambdaQueryWrapper<Task> taskWrapper = new LambdaQueryWrapper<>();
+        taskWrapper.eq(Task::getReportId, reportId)
+                .in(Task::getType, types);
+        List<Task> tasks = this.list(taskWrapper);
+        //筛选出任务id
+        List<Integer> taskIds = tasks.stream().map(Task::getId).collect(Collectors.toList());
+        //根据任务id获得任务专利关联记录
+        LambdaQueryWrapper<AssoTaskPersonel> assoWrapper = new LambdaQueryWrapper<>();
+        assoWrapper.in(AssoTaskPersonel::getTaskId, taskIds);
+        List<AssoTaskPersonel> assoTaskPersonels = assoTaskPersonelService.list(assoWrapper);
+
+        for (Integer type : types) {
+            List<String> comPatentNosCopy = new ArrayList<>(comPatentNos);
+            TaskSourceVO vo = new TaskSourceVO();
+            if (type.equals(2)) {
+                vo.setTaskType("对比任务");
+            } else if (type.equals(3)) {
+                vo.setTaskType("初筛任务");
+            }
+            List<Integer> typeTaskIds = tasks.stream().filter(te -> te.getType().equals(type))
+                    .map(Task::getId).collect(Collectors.toList());
+            List<AssoTaskPersonel> partAsso = assoTaskPersonels.stream()
+                    .filter(te -> typeTaskIds.contains(te.getTaskId())).collect(Collectors.toList());
+            Map<Integer, TaskSourceVO.personDate> personMap = new LinkedHashMap<>();
+            for (AssoTaskPersonel item : partAsso) {
+                if (personMap.get(item.getPersonelId()) != null) {
+                    TaskSourceVO.personDate personDate = personMap.get(item.getPersonelId());
+                    //List<Integer> TaskIds = personDate.getTaskIds();
+                    List<Integer> list = personDate.getTaskIds();
+                    ArrayList<Integer> TaskIds = new ArrayList<>();
+                    TaskIds.addAll(list);
+                    List<String> done = new ArrayList<>(personDate.getDone());
+                    List<String> notDone = new ArrayList<>(personDate.getNotDone());
+                    if (!TaskIds.contains(item.getTaskId())) {
+                        TaskIds.add(item.getTaskId());
+                    }
+                    if (item.getState().equals(1) && !done.contains(item.getPatentNo())) {
+                        done.add(item.getPatentNo());
+                        personDate.setDone(done);
+                        personDate.setDoneNum(personDate.getDoneNum() + 1);
+                    }
+                    if (item.getState().equals(0) && !notDone.contains(item.getPatentNo())) {
+                        notDone.add(item.getPatentNo());
+                        personDate.setNotDone(notDone);
+                        personDate.setNotDoneNum(personDate.getNotDoneNum() + 1);
+                    }
+                } else {
+                    TaskSourceVO.personDate personDate = new TaskSourceVO.personDate();
+                    personDate.setTaskIds(Arrays.asList(item.getTaskId()));
+                    if (item.getState().equals(0)) {
+                        personDate.setNotDoneNum(1);
+                        personDate.setDoneNum(0);
+                        personDate.setNotDone(Arrays.asList(item.getPatentNo()));
+                        personDate.setDone(Arrays.asList());
+                    } else if (item.getState().equals(1)) {
+                        personDate.setDoneNum(1);
+                        personDate.setNotDoneNum(0);
+                        personDate.setDone(Arrays.asList(item.getPatentNo()));
+                        personDate.setNotDone(Arrays.asList());
+                    }
+                    personMap.put(item.getPersonelId(), personDate);
+                }
+                comPatentNosCopy.remove(item.getPatentNo());
+            }
+            List<TaskSourceVO.personDate> lists = new ArrayList<>();
+            //根据人员Id获得人员信息
+            String res1 = outInterfaceService.getPersonnelByIdsFromPCS(new ArrayList<>(personMap.keySet()));
+            JSONObject jsonObject1 = JSONObject.parseObject(res1);
+            //解析jason获得标的专利的权要
+            List<Personnel> personnels = JSON.parseArray(jsonObject1.getString("data"), Personnel.class);
+            for (Integer key : personMap.keySet()) {
+                TaskSourceVO.personDate tem = personMap.get(key);
+                tem.setPersonId(key);
+                Personnel personnel = personnels.stream().
+                        filter(te -> te.getId().equals(key)).findFirst().orElse(new Personnel());
+                tem.setPersonName(personnel.getPersonnelName());
+                lists.add(tem);
+            }
+            vo.setNotAssignNum(comPatentNosCopy.size());
+            vo.setPersonDates(lists);
+            taskSourceVOS.add(vo);
+        }
+
+
+        //获得初筛任务ID
+
+
+        return taskSourceVOS;
+
+    }
 }

+ 0 - 1
RMS/src/main/java/cn/cslg/report/service/business/TemplateService.java

@@ -29,5 +29,4 @@ public class TemplateService extends ServiceImpl<TemplateMapper, Template> {
 
      }
 
-
 }

+ 5 - 2
RMS/src/main/java/cn/cslg/report/service/impl/AssoProductFileServiceImpl.java

@@ -4,6 +4,7 @@ import cn.cslg.report.entity.AssoProductFile;
 import cn.cslg.report.mapper.AssoProductFileMapper;
 import cn.cslg.report.service.IAssoProductFileService;
 import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
@@ -15,16 +16,17 @@ import java.util.List;
  * @Author chenyu
  * @Data 2022/12/20
  */
+@Slf4j
 @Service
 @RequiredArgsConstructor
 public class AssoProductFileServiceImpl implements IAssoProductFileService {
-    private final AssoProductFileMapper assoProductFileMapper;
+    private final AssoProductFileMapper assoProductFileMapper;  //产品文件关联表的Mapper层装配
 
     /**
      * 新增产品文件关联数据
      *
      * @param productId 产品id
-     * @param fileIds   附件id
+     * @param fileIds   附件id集合
      */
     @Override
     public void addAsso(Integer productId, List<Integer> fileIds) {
@@ -36,6 +38,7 @@ public class AssoProductFileServiceImpl implements IAssoProductFileService {
                     .setFileUseType(0);
             list.add(assoProductFile);
         }
+        log.info("数据入产品文件关联表");
         assoProductFileMapper.insertBatch(list);
     }
 

+ 218 - 0
RMS/src/main/java/cn/cslg/report/service/impl/AvoidDesignDirectionServiceImpl.java

@@ -0,0 +1,218 @@
+package cn.cslg.report.service.impl;
+
+import cn.cslg.report.common.model.dto.AvoidDesignDirectionDTO;
+import cn.cslg.report.common.model.dto.AvoidDesignLittleDirectionDTO;
+import cn.cslg.report.common.model.dto.AvoidFeaturesDTO;
+import cn.cslg.report.common.model.vo.AvoidDesignRightVO;
+import cn.cslg.report.common.model.vo.AvoidDesignWholeVO;
+import cn.cslg.report.common.model.vo.AvoidFeaturesVO;
+import cn.cslg.report.entity.*;
+import cn.cslg.report.exception.XiaoShiException;
+import cn.cslg.report.mapper.AssoAvoidDesignWholeLittleDirectionMapper;
+import cn.cslg.report.mapper.AvoidDesignLittleDirectionMapper;
+import cn.cslg.report.mapper.AvoidDesignWholeDirectionMapper;
+import cn.cslg.report.mapper.AvoidFeatureMapper;
+import cn.cslg.report.service.IAvoidDesignDirectionService;
+import cn.cslg.report.service.OutInterfaceService;
+import cn.cslg.report.service.business.FeatureService;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 回避设计方案的Service层接口实现类
+ *
+ * @Author chenyu
+ * @Data 2023/2/2
+ */
+@RequiredArgsConstructor
+@Slf4j
+@Service
+public class AvoidDesignDirectionServiceImpl implements IAvoidDesignDirectionService {
+    private final AvoidDesignWholeDirectionMapper avoidDesignWholeDirectionMapper;  //回避设计总体方向表的Mapper层接口装配
+    private final AvoidDesignLittleDirectionMapper avoidDesignLittleDirectionMapper;  //回避设计方向表的Mapper层接口装配
+    private final AssoAvoidDesignWholeLittleDirectionMapper assoAvoidDesignWholeLittleDirectionMapper;  //回避设计总体方向和方向关联表的Mapper层接口装配
+    private final AvoidFeatureMapper avoidFeatureMapper;  //特征标的Mapper层接口装配
+    private final OutInterfaceService outInterfaceService;
+    private final FeatureService featureService;
+    //private final CacheUtils cacheUtils;
+    //private final LoginUtils loginUtils;
+
+    /**
+     * 新增回避设计方案
+     *
+     * @param avoidDesignDirectionDTO 回避设计方案数据对象
+     */
+    @Override
+    public void addAvoidDesignDirection(AvoidDesignDirectionDTO avoidDesignDirectionDTO) {
+        log.info("开始处理【新增回避设计方案】的业务,参数为:{}", avoidDesignDirectionDTO);
+
+        //1.从回避设计方案中取出报告reportId和回避设计总体方向wholeDirection,将它们插入回避设计总体方向表
+        Integer reportId = avoidDesignDirectionDTO.getReportId();
+        String wholeDirection = avoidDesignDirectionDTO.getWholeDirection();
+        //将获取到的报告reportId与回避设计总体方向wholeDirection数据赋值给回避设计总体方向表实体类后插入
+        AvoidDesignWholeDirection avoidDesignWholeDirection = new AvoidDesignWholeDirection()
+                .setReportId(reportId)
+                .setWholeDirection(wholeDirection);
+        //先根据报告id删除原有回避设计总体方向表数据
+        log.info("删除原有回避设计总体方向表数据");
+        avoidDesignWholeDirectionMapper.deleteByReportId(reportId);
+        //将数据插入回避设计总体方向表
+        log.info("新增数据插入回避设计总体方向表");
+        int rows = avoidDesignWholeDirectionMapper.insert(avoidDesignWholeDirection);
+        if (rows != 1) {
+            String message = "数据插入回避设计总体方向表失败,新增回避设计方案失败(数据已回滚),服务器忙请稍后再次尝试";
+            log.info("{}", message);
+            throw new XiaoShiException(message);
+        }
+
+        //2.从回避设计方案中取出权要特征解释等和回避设计方向littleDirection等数据的对象的集合avoidDesignLittleDirectionDTOs,处理后把数据分别插入各自表中
+        List<AvoidDesignLittleDirectionDTO> avoidDesignLittleDirectionDTOs = avoidDesignDirectionDTO.getAvoidDesignLittleDirectionDTOs();
+        //遍历集合取出每个权要的特征数据插入特征表,插入后取出每个特征的特征featureId和回避设计方向littleDirection存入回避设计方向表
+        List<AvoidFeatures> avoidFeatures = new ArrayList<>();
+        for (AvoidDesignLittleDirectionDTO avoidDesignLittleDirectionDTO : avoidDesignLittleDirectionDTOs) {
+            List<AvoidFeaturesDTO> featuresDTOS = avoidDesignLittleDirectionDTO.getFeatures();
+            //avoidFeatures.addAll(features);
+            for (AvoidFeaturesDTO featuresDTO : featuresDTOS) {
+                AvoidFeatures avoidFeature = new AvoidFeatures();
+                BeanUtils.copyProperties(featuresDTO, avoidFeature);
+                avoidFeatures.add(avoidFeature);
+            }
+        }
+
+        //先根据报告id删除原有特征表数据
+        log.info("删除原有特征表数据");
+        avoidFeatureMapper.deleteByReportId(reportId);
+        //遍历清空特征集合中前端传来的初始特征id
+        //for (AvoidFeatures avoidFeature : avoidFeatures) {
+        //    avoidFeature.setId(null);
+        //}
+        //批量插入特征数据,插入特征表后再遍历取出特征featureId和回避设计方向littleDirection,存入回避设计方向表实体类对象集合
+        log.info("新增数据插入特征表");
+        rows = avoidFeatureMapper.insertBatch(avoidFeatures);
+        if (rows != avoidFeatures.size()) {
+            String message = "数据插入特征表失败,新增回避设计方案失败(数据已回滚),服务器忙请稍后再次尝试";
+            log.info("{}", message);
+            throw new XiaoShiException(message);
+        }
+
+        List<AvoidDesignLittleDirection> avoidDesignLittleDirections = new ArrayList<>();
+        for (AvoidFeatures avoidFeature : avoidFeatures) {
+            Integer featureId = avoidFeature.getId();
+            Integer rightId = avoidFeature.getRightId();
+            String littleDirection = avoidFeature.getLittleDirection();
+            AvoidDesignLittleDirection avoidDesignLittleDirection = new AvoidDesignLittleDirection()
+                    .setReportId(reportId)
+                    .setFeatureId(featureId)
+                    .setRightId(rightId)
+                    .setLittleDirection(littleDirection);
+            avoidDesignLittleDirections.add(avoidDesignLittleDirection);
+        }
+        //先根据报告id删除原有回避设计方向表数据
+        log.info("删除原有回避设计方向表数据");
+        avoidDesignLittleDirectionMapper.deleteByReportId(reportId);
+        //将数据插入回避设计方向表
+        log.info("新增数据插入回避设计方向表");
+        rows = avoidDesignLittleDirectionMapper.insertBatch(avoidDesignLittleDirections);
+        if (rows != avoidDesignLittleDirections.size()) {
+            String message = "数据插入回避设计方向表失败,新增回避设计方案失败(数据已回滚),服务器忙请稍后再次尝试";
+            log.info("{}", message);
+            throw new XiaoShiException(message);
+        }
+
+        //3.以上回避设计总体方向等数据和回避设计方向等数据分别插入两张表后,再取出各自的id,将两个id(回避设计总体方向avoidDesignWholeDirectionId、回避设计方向avoidDesignLittleDirectionId)插入回避设计总体方向和回避设计方向关联表
+        Integer avoidDesignWholeDirectionId = avoidDesignWholeDirection.getId();
+        ArrayList<Integer> avoidDesignLittleDirectionIds = new ArrayList<>();
+        for (AvoidDesignLittleDirection avoidDesignLittleDirection : avoidDesignLittleDirections) {
+            Integer avoidDesignLittleDirectionId = avoidDesignLittleDirection.getId();
+            avoidDesignLittleDirectionIds.add(avoidDesignLittleDirectionId);
+        }
+        //将获取到的回避设计总体方向avoidDesignWholeDirectionId与回避设计方向avoidDesignLittleDirectionId赋值给新创建的回避设计总体方向和回避设计方向关联表实体类后插入
+        ArrayList<AssoAvoidDesignWholeLittleDirection> assoAvoidDesignWholeLittleDirections = new ArrayList<>();
+        for (Integer avoidDesignLittleDirectionId : avoidDesignLittleDirectionIds) {
+            AssoAvoidDesignWholeLittleDirection assoAvoidDesignWholeLittleDirection = new AssoAvoidDesignWholeLittleDirection()
+                    .setReportId(reportId)
+                    .setAvoidDesignWholeDirectionId(avoidDesignWholeDirectionId)
+                    .setAvoidDesignLittleDirectionId(avoidDesignLittleDirectionId);
+            assoAvoidDesignWholeLittleDirections.add(assoAvoidDesignWholeLittleDirection);
+        }
+        //先根据报告id删除原有回避设计总体方向和回避设计方向关联表数据
+        log.info("删除原有回避设计总体方向和回避设计方向关联表数据");
+        assoAvoidDesignWholeLittleDirectionMapper.deleteByReportId(reportId);
+        //将数据插入回避设计总体方向和回避设计方向关联表
+        log.info("新增数据插入回避设计总体方向和回避设计方向关联表");
+        rows = assoAvoidDesignWholeLittleDirectionMapper.insertBatch(assoAvoidDesignWholeLittleDirections);
+        if (rows != assoAvoidDesignWholeLittleDirections.size()) {
+            String message = "数据插入回避设计总体方向和回避设计方向关联表失败,新增回避设计方案失败(数据已回滚),服务器忙请稍后再次尝试";
+            log.info("{}", message);
+            throw new XiaoShiException(message);
+        }
+
+        log.info("新增回避设计方案完成");
+
+    }
+
+    @Override
+    public AvoidDesignWholeVO getAvoidDesignDirection(Integer reportId) {
+        log.info("开始处理【查询回避设计方案】的业务,参数为:{}", reportId);
+        String signPatentNo = avoidDesignLittleDirectionMapper.selectSignPatentNoByReportId(reportId);
+        //从pas获得权要信息
+        String resBody = null;
+        try {
+            resBody = outInterfaceService.getPatentRightFromPAS(signPatentNo);
+        } catch (IOException e) {
+            //e.printStackTrace();
+            log.info("根据专利号查询权要列表时发生IO异常");
+        }
+        JSONObject jsonObject = JSONObject.parseObject(resBody);
+        //解析jason获得标的专利的权要
+        List<PatentRight> patentRightsOrgin = JSON.parseArray(jsonObject.getString("data"), PatentRight.class);
+        //给权要进行格式更改
+        List<PatentRight> patentRights = featureService.FormatPatentRights(patentRightsOrgin);
+
+        ArrayList<AvoidDesignRightVO> rights = new ArrayList<>();
+        for (PatentRight patentRight : patentRights) {
+            Integer rightId = patentRight.getSort();
+            //根据当前权要id和报告id关联查询当前权要的所有特征和特征对应的回避设计方向
+            List<AvoidFeaturesVO> features = avoidDesignLittleDirectionMapper.selectWholeByRightIdAndReportId(rightId, reportId);
+            AvoidDesignRightVO right = new AvoidDesignRightVO()
+                    .setFeatures(features)
+                    .setSort(rightId)
+                    .setRightName(patentRight.getRightName())
+                    .setContent(patentRight.getContent())
+                    .setContentOut(patentRight.getContentOut())
+                    .setPatentId(patentRight.getPatentId())
+                    .setType(patentRight.getType());
+            rights.add(right);
+        }
+        AvoidDesignWholeVO avoidDesignWholeVO = new AvoidDesignWholeVO().setRights(rights);
+        String wholeDirection = avoidDesignWholeDirectionMapper.selectWholeDirectionByReportId(reportId);
+        avoidDesignWholeVO.setWholeDirection(wholeDirection);
+        return avoidDesignWholeVO;
+    }
+
+    @Override
+    public void deleteAvoidDesignDirection(Integer reportId) {
+        log.info("开始处理【删除回避设计方案】的业务,参数为:{}", reportId);
+        String wholeDirection = avoidDesignWholeDirectionMapper.selectWholeDirectionByReportId(reportId);
+        if (wholeDirection != null) {
+            avoidFeatureMapper.deleteByReportId(reportId);
+            avoidDesignWholeDirectionMapper.deleteByReportId(reportId);
+            avoidDesignLittleDirectionMapper.deleteByReportId(reportId);
+            assoAvoidDesignWholeLittleDirectionMapper.deleteByReportId(reportId);
+            log.info("删除回避设计方案完成");
+        } else {
+            log.info("删除回避设计方案失败,回避设计方案不存在");
+        }
+
+    }
+
+
+}

+ 55 - 15
RMS/src/main/java/cn/cslg/report/service/impl/ProductServiceImpl.java

@@ -7,7 +7,10 @@ import cn.cslg.report.common.model.vo.ProductIncludeFilesVO;
 import cn.cslg.report.common.model.vo.ReportFileStandardVO;
 import cn.cslg.report.common.utils.CacheUtils;
 import cn.cslg.report.common.utils.SecurityUtils.LoginUtils;
+import cn.cslg.report.entity.AssoProductFile;
 import cn.cslg.report.entity.Product;
+import cn.cslg.report.exception.XiaoShiException;
+import cn.cslg.report.mapper.AssoProductFileMapper;
 import cn.cslg.report.mapper.ProductMapper;
 import cn.cslg.report.service.IAssoProductFileService;
 import cn.cslg.report.service.IProductService;
@@ -31,39 +34,76 @@ import java.util.List;
 @Service
 @RequiredArgsConstructor
 public class ProductServiceImpl implements IProductService {
-    private final ProductMapper productMapper;  //产品的Mapper层接口
-    private final ReportFileService reportFileService;  //报告系统文件的Service层实现类
-    private final IAssoProductFileService assoProductFileService;  //产品文件关联的Service层实现类
+    private final ProductMapper productMapper;  //产品表的Mapper层装配
+    private final AssoProductFileMapper assoProductFileMapper;  //产品文件关联表的Mapper层装配
+    private final ReportFileService reportFileService;  //报告系统文件的Service层装配
+    private final IAssoProductFileService assoProductFileService;  //产品文件关联的Service层装配
     private final CacheUtils cacheUtils;
     private final LoginUtils loginUtils;
 
     /**
      * 新增产品
      *
-     * @param productDTO 产品数据前端传输DTO对象
-     * @param files      附件
+     * @param productDTO 新增产品的前端传输DTO类对象
+     * @param files      产品附件
      */
     @Override
     public void addProduct(ProductDTO productDTO, List<MultipartFile> files) {
-        log.info("开始处理【新增产品】的业务,参数为:{}, {}", productDTO, files);
-        //产品DTO类赋值给产品实体类
+        log.info("开始处理【新增产品】的业务,参数为产品信息:{}, 产品附件:{}", productDTO, files);
+
+        //DTO赋值给产品表实体类
         Product product = new Product();
         BeanUtils.copyProperties(productDTO, product);
-        //获取当前管理员的人员信息
+        //获取登陆人信息
         PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
-        //获取创建人id和创建人姓名并赋值给实体类
+        //登陆人id和姓名赋值给产品表实体类
         product.setCreatePersonId(personnelVO.getId())
                 .setCreatePersonName(personnelVO.getName());
 
-        //1.插入产品数据入产品表
-        productMapper.insert(product);
-        //2.插入产品附件数据入报告系统文件表并返回附件的ids
+        //检查当前报告是否已创建产品 (一个报告只能创建一个产品,根据报告id查询产品)
+        Integer reportId = product.getReportId();
+        log.info("检查当前报告是否已创建产品");
+        int count = productMapper.countByReportId(reportId);
+        if (count > 0) {
+            String message = "新增产品失败,当前报告产品已创建产品";
+            log.info("{}", message);
+            throw new XiaoShiException(message);
+        }
+
+        //1.数据入产品表
+        log.info("数据入产品表");
+        int rows = productMapper.insert(product);
+        if (rows != 1) {
+            String message = "新增产品失败,服务器忙请稍后再试";
+            log.info("{}", message);
+            throw new XiaoShiException(message);
+        }
+
+        //2.数据入报告系统文件表(并返回附件的id集合)
         if (files != null && files.size() != 0) {
+            log.info("数据入报告系统文件表");
             List<Integer> fileIds = reportFileService.uploadFiles(files);
-            //3.插入产品id和附件id入产品文件关联表
-            assoProductFileService.addAsso(product.getId(), fileIds);
+            //3.数据入产品文件关联表
+            Integer productId = product.getId();
+            //之前是直接调用产品文件关联的Service层业务:assoProductFileService.addAsso(productId, fileIds); 现在自己敲👇
+            ArrayList<AssoProductFile> assoProductFiles = new ArrayList<>();
+            for (Integer fileId : fileIds) {
+                AssoProductFile assoProductFile = new AssoProductFile()
+                        .setProductId(productId)
+                        .setFileId(fileId)
+                        .setFileUseType(0);
+                assoProductFiles.add(assoProductFile);
+            }
+            log.info("数据入产品文件关联表");
+            rows = assoProductFileMapper.insertBatch(assoProductFiles);
+            if (rows != fileIds.size()) {
+                String message = "新增产品失败,服务器忙请稍后再试";
+                log.info("{}", message);
+                throw new XiaoShiException(message);
+            }
         }
-        log.info("产品新增完成!");
+
+        log.info("新增产品完成");
 
     }
 

+ 14 - 9
RMS/src/main/resources/application-dev.yml

@@ -1,8 +1,8 @@
 spring:
   redis:
-    host: 47.101.137.223
+    host: 192.168.1.24
     port: 6379
-    database: 9
+    database: 3
     password: Xx0GWxdWQJxx6Swe
     lettuce:
       pool:
@@ -12,23 +12,23 @@ spring:
         max-wait: -1ms
     timeout: 2000ms
   datasource:
-    url: jdbc:mysql://47.101.137.223:3306/RMS_TEST?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
+    url: jdbc:mysql://192.168.1.24:3306/RMS_TEST?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
     driver-class-name: com.mysql.cj.jdbc.Driver
     username: root
-    password: TU5x6IeBi7rl
+    password: rrzTwWAYX8Gxh5JH
     dynamic:
       primary: rms
       datasource:
         pas:
-          url: jdbc:mysql://47.101.137.223:3306/pas?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
+          url: jdbc:mysql://192.168.1.24:3306/pas?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
           driver-class-name: com.mysql.cj.jdbc.Driver
           username: root
-          password: TU5x6IeBi7rl
+          password: rrzTwWAYX8Gxh5JH
         rms:
-          url: jdbc:mysql://47.101.137.223:3306/RMS_TEST?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
+          url: jdbc:mysql://192.168.1.24:3306/RMS_TEST?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
           driver-class-name: com.mysql.cj.jdbc.Driver
           username: root
-          password: TU5x6IeBi7rl
+          password: rrzTwWAYX8Gxh5JH
     type: com.alibaba.druid.pool.DruidDataSource
     druid:
       stat-view-servlet:
@@ -37,4 +37,9 @@ spring:
       web-stat-filter:
         exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
 queueName: mail.queue
-fileURL:  http://139.224.24.90:8082
+RMSFile:  http://192.168.1.24:8011
+PASFile: http://192.168.1.24:8011
+PCSUrl: http://localhost:8871
+PASUrl: http://localhost:8877
+PCS: http://192.168.1.24:81
+PAS: http://192.168.1.24:80

+ 48 - 0
RMS/src/main/resources/application-prod2.0.yml

@@ -0,0 +1,48 @@
+spring:
+  redis:
+    host: 172.27.247.174
+    port: 6379
+    database: 3
+    password: Xx0GWxdWQJxx6Swe
+    lettuce:
+      pool:
+        max-active: 20
+        max-idle: 20
+        min-idle: 0
+        max-wait: -1ms
+    timeout: 2000ms
+  datasource:
+    url: jdbc:mysql://172.27.247.174:3306/RMS_PROD?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    username: root
+    password: TU5x6IeBi7rl
+    dynamic:
+      primary: rms
+      datasource:
+        pas:
+          url: jdbc:mysql://47.101.137.223:3306/pas-history?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
+          driver-class-name: com.mysql.cj.jdbc.Driver
+          username: root
+          password: TU5x6IeBi7rl
+        rms:
+          url: jdbc:mysql://47.101.137.223:3306/RMS_PROD?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
+          driver-class-name: com.mysql.cj.jdbc.Driver
+          username: root
+          password: TU5x6IeBi7rl
+    type: com.alibaba.druid.pool.DruidDataSource
+    druid:
+      stat-view-servlet:
+        login-username: admin
+        login-password: 123456
+      web-stat-filter:
+        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
+springdoc:
+  api-docs:
+    enabled: false
+queueName: emailProd.queue
+RMSFile:  http://139.224.24.90:8084
+PASFile: http://139.224.24.90:8011
+PCSUrl: http://localhost:8871
+PASUrl: http://localhost:8877
+PCS: http://139.224.24.90:81
+PAS: http://139.224.24.90:80

+ 4 - 5
RMS/src/main/resources/application.yml

@@ -1,12 +1,12 @@
 server:
   servlet:
     context-path: /
-  port: 8885
+  port: 8872
 sa-token:
   activity-timeout: 18000
   token-name: token
   token-style: tik
-  # 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
+  #是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
   is-concurrent: true
   timeout: 604800
 spring:
@@ -43,7 +43,7 @@ spring:
       max-file-size: 1000MB
       max-request-size: 1000MB
   profiles:
-    active: dev
+    active: local
   jackson:
     default-property-inclusion: non_null
     serialization:
@@ -67,6 +67,5 @@ mybatis-plus:
     map-underscore-to-camel-case: true
     cache-enabled: false
   mapper-locations: classpath:mapper/*.xml
-PCSUrl:  http://localhost:8880
-PASUrl:  http://localhost:8879
+
 

+ 25 - 0
RMS/src/main/resources/mapper/AssoAvoidDesignWholeLittleDirectionMapper.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+
+<mapper namespace="cn.cslg.report.mapper.AssoAvoidDesignWholeLittleDirectionMapper">
+    <!--批量插入回避设计总体方向和回避设计方向关联表数据-->
+    <!--int insertBatch(List<AssoAvoidDesignWholeLittleDirection> assoAvoidDesignWholeLittleDirections);-->
+    <insert id="insertBatch" useGeneratedKeys="true" keyProperty="id">
+        insert into ASSO_AVOIDDESIGN_WHOLE_LITTLE_DIRECTION (REPORT_ID, AVOIDDESIGN_WHOLE_DIRECTION_ID,
+        AVOIDDESIGN_LITTLE_DIRECTION_ID)
+        VALUES
+        <foreach collection="list" item="n" separator=",">
+            (#{n.reportId}, #{n.avoidDesignWholeDirectionId}, #{n.avoidDesignLittleDirectionId})
+        </foreach>
+    </insert>
+
+    <!--根据报告id删除回避设计总体方向和方向关联表数据-->
+    <!--int deleteByReportId(Integer reportId);-->
+    <delete id="deleteByReportId">
+        delete
+        from ASSO_AVOIDDESIGN_WHOLE_LITTLE_DIRECTION
+        where REPORT_ID = #{reportId}
+    </delete>
+
+</mapper>

+ 11 - 2
RMS/src/main/resources/mapper/AssoTaskPersonelMapper.xml

@@ -5,10 +5,19 @@
         select PATENT_NO  from ASSO_TASK_PERSONEL
        where PERSON_ID=#{personelId} and STATE=#{state} and TASK_ID=#{taskId}
     </select>
-
     <select id="getSplitMessage" resultType="cn.cslg.report.entity.asso.AssoTaskPatentSplit">
         select b.* from ASSO_TASK_PATENT a left join ASSO_TASK_PATENT_SPLIT as b on a.id=b.TASK_PATENT_ID
         where a.PATENT_NO=#{patentNo} and a.TASK_ID=#{taskId} limit 1;
     </select>
-
+    <select id="getPatents" resultType="java.lang.String">
+        select distinct  PATENT_NO  from ASSO_TASK_PATENT
+      <where>
+            <foreach collection="params" index="index" item="item" open="(" separator=" or " close=")">
+          PERSON_ID=#{item.personId} and STATE=#{item.state} and TASK_ID in
+                <foreach collection="item.taskIds" index="index" item="item1" open="(" separator="," close=")">
+                    #{item1}
+                </foreach>
+            </foreach>
+      </where>
+    </select>
 </mapper>

+ 78 - 0
RMS/src/main/resources/mapper/AvoidDesignLittleDirectionMapper.xml

@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+
+<mapper namespace="cn.cslg.report.mapper.AvoidDesignLittleDirectionMapper">
+    <!--批量插入回避设计方向表数据-->
+    <!--int insertBatch(List<AvoidDesignLittleDirection> avoidDesignLittleDirections);-->
+    <insert id="insertBatch" useGeneratedKeys="true" keyProperty="id">
+        insert into AVOIDDESIGN_LITTLE_DIRECTION (REPORT_ID, FEATURE_ID, LITTLE_DIRECTION)
+        VALUES
+        <foreach collection="list" item="n" separator=",">
+            (#{n.reportId}, #{n.featureId}, #{n.littleDirection})
+        </foreach>
+    </insert>
+
+    <!--根据报告id删除回避设计方向表数据-->
+    <!--int deleteByReportId(Integer reportId);-->
+    <delete id="deleteByReportId">
+        delete
+        from AVOIDDESIGN_LITTLE_DIRECTION
+        where REPORT_ID = #{reportId}
+    </delete>
+
+    <!--根据报告id查询专利号(查报告表)-->
+    <!--String selectSignPatentNoByReportId(Integer reportId);-->
+    <select id="selectSignPatentNoByReportId" resultType="String">
+        select SIGN_PATENT_NO
+        from REPORT
+        where ID = #{reportId}
+    </select>
+
+    <!--根据权要id和报告id关联查询特征和回避设计方向数据-->
+    <!--List<AvoidFeaturesVO> selectWholeByRightIdAndReportId(Integer rightId, Integer reportId);-->
+    <select id="selectWholeByRightIdAndReportId" resultMap="AllResultMap">
+        select f.ID,
+               SIGN_PATENT_NO,
+               CONTENT_OUT,
+               RIGHT_ID,
+               PARTNER_ID,
+               IS_FINAL,
+               f.REPORT_ID,
+               CONTENT,
+               EXPLAIN_TEXT,
+               SPLIT_BY,
+               RIGHT_NAME,
+               RIGHT_TYPE,
+               FEATURES_ORDER,
+               SPLIT_TYPE,
+               TASK_ID,
+               LITTLE_DIRECTION
+        from FEATURES f
+                 left join AVOIDDESIGN_LITTLE_DIRECTION l on f.ID = l.FEATURE_ID
+        where RIGHT_ID = #{rightId}
+          and f.REPORT_ID = #{reportId}
+        order by f.ID
+    </select>
+
+    <resultMap id="AllResultMap" type="cn.cslg.report.common.model.vo.AvoidFeaturesVO">
+        <id column="ID" property="id"/>
+        <result column="SIGN_PATENT_NO" property="signPatentNo"/>
+        <result column="CONTENT_OUT" property="contentOut"/>
+        <result column="RIGHT_ID" property="rightId"/>
+        <result column="PARTNER_ID" property="partnerId"/>
+        <result column="IS_FINAL" property="isFinal"/>
+        <result column="REPORT_ID" property="reportId"/>
+        <result column="CONTENT" property="content"/>
+        <result column="EXPLAIN_TEXT" property="explainText"/>
+        <result column="SPLIT_BY" property="splitBy"/>
+        <result column="RIGHT_NAME" property="rightName"/>
+        <result column="RIGHT_TYPE" property="rightType"/>
+        <result column="FEATURES_ORDER" property="featuresOrder"/>
+        <result column="SPLIT_TYPE" property="splitType"/>
+        <result column="TASK_ID" property="taskId"/>
+        <result column="LITTLE_DIRECTION" property="littleDirection"/>
+        <result column="WHOLE_DIRECTION" property="wholeDirection"/>
+    </resultMap>
+
+</mapper>

+ 29 - 0
RMS/src/main/resources/mapper/AvoidDesignWholeDirectionMapper.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+
+<mapper namespace="cn.cslg.report.mapper.AvoidDesignWholeDirectionMapper">
+    <!--插入回避设计总体方向表数据-->
+    <!--int insert(AvoidDesignWholeDirection avoidDesignWholeDirection);-->
+    <insert id="insert" useGeneratedKeys="true" keyProperty="id">
+        insert into AVOIDDESIGN_WHOLE_DIRECTION (REPORT_ID, WHOLE_DIRECTION)
+        values (#{reportId}, #{wholeDirection});
+    </insert>
+
+    <!--根据报告id删除回避设计总体方向表数据-->
+    <!--int deleteByReportId(Integer reportId);-->
+    <delete id="deleteByReportId">
+        delete
+        from AVOIDDESIGN_WHOLE_DIRECTION
+        where REPORT_ID = #{reportId}
+    </delete>
+
+    <!--根据报告id查询回避设计总体方向-->
+    <!--String selectWholeDirectionByReportId(Integer reportId);-->
+    <select id="selectWholeDirectionByReportId" resultType="String">
+        select WHOLE_DIRECTION
+        from AVOIDDESIGN_WHOLE_DIRECTION
+        where REPORT_ID = #{reportId}
+    </select>
+
+</mapper>

+ 27 - 0
RMS/src/main/resources/mapper/AvoidFeatureMapper.xml

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+
+<mapper namespace="cn.cslg.report.mapper.AvoidFeatureMapper">
+    <!--批量插入特征数据-->
+    <!--int insertBatch(List<AvoidFeatures> features);-->
+    <insert id="insertBatch" useGeneratedKeys="true" keyProperty="id">
+        insert into FEATURES (SIGN_PATENT_NO, CONTENT_OUT, RIGHT_ID, PARTNER_ID, IS_FINAL, REPORT_ID, CONTENT,
+        EXPLAIN_TEXT, SPLIT_BY, RIGHT_NAME, RIGHT_TYPE, FEATURES_ORDER, SPLIT_TYPE, TASK_ID)
+        values
+        <foreach collection="list" item="n" separator=",">
+            (#{n.signPatentNo}, #{n.contentOut}, #{n.rightId}, #{n.partnerId}, #{n.isFinal}, #{n.reportId},
+            #{n.content}, #{n.explainText}, #{n.splitBy}, #{n.rightName}, #{n.rightType}, #{n.featuresOrder},
+            #{n.splitType}, #{n.taskId})
+        </foreach>
+    </insert>
+
+    <!--根据报告id删除权要特征-->
+    <!--int deleteByReportId(Integer reportId);-->
+    <delete id="deleteByReportId">
+        delete
+        from FEATURES
+        where REPORT_ID = #{reportId}
+    </delete>
+
+</mapper>

+ 6 - 5
RMS/src/main/resources/mapper/CompareMessageMapper.xml

@@ -7,13 +7,15 @@
     </select>
 
     <select id="getComparedMessage" resultType="java.lang.String">
-        select DISTINCT f.SIGN_PATENT_NO from RMS_TEST.FEATURES f left join RMS_TEST.COMPARE_MESSAGE cm on f.ID =cm.FEATURE_ID
+        select DISTINCT f.SIGN_PATENT_NO from FEATURES f left join COMPARE_MESSAGE cm on f.ID =cm.FEATURE_ID
         <where>
             and f.REPORT_ID=#{params.reportId}
             and cm.ID is not null
             <if test="params.compareResult !=null">
              and   cm.COMPARE_RESULT=#{params.compareResult}
-
+            </if>
+            <if test="params.compareResult !=null">
+                and   cm.COMPARE_RESULT=#{params.compareResult}
             </if>
         </where>
 
@@ -25,13 +27,12 @@
             and f.REPORT_ID=#{params.reportId}
             and cm.ID is not null
             <if test="params.patentNo !=null">
-                and f.SIGN_PATENT_NO=#{params.patentNo}
+                and f.SIGN_PATENT_NO=
+                like concat('%', #{params.patentNo}, '%')
             </if>
             <if test="params.compareResult !=null">
                 and   cm.COMPARE_RESULT=#{params.compareResult}
             </if>
         </where>
-
-
     </select>
 </mapper>

+ 14 - 9
RMS/src/main/resources/mapper/ProductMapper.xml

@@ -3,8 +3,7 @@
 
 
 <mapper namespace="cn.cslg.report.mapper.ProductMapper">
-
-    <!--插入产品表数据-->
+    <!--插入数据-->
     <!--int insert(Product product);-->
     <insert id="insert" useGeneratedKeys="true" keyProperty="id">
         insert into PRODUCT (PRODUCT_NAME, PRODUCT_IDENTIFY, PRODUCT_DESCRIPTION, SURVEY_AREA, PRODUCT_IMAGE,
@@ -15,7 +14,7 @@
                 #{createPersonId})
     </insert>
 
-    <!--根据id修改产品表数据-->
+    <!--根据id修改数据-->
     <!--int update(Product product);-->
     <update id="update">
         update PRODUCT
@@ -38,9 +37,7 @@
             <if test="searchPolicy != null">
                 SEARCH_POLICY = #{searchPolicy},
             </if>
-            <if test="deadLine != null">
-                DEADLINE = #{deadLine},
-            </if>
+            DEADLINE = #{deadLine},
             <if test="focusInformation != null">
                 FOCUS_INFORMATION = #{focusInformation},
             </if>
@@ -57,10 +54,18 @@
         where ID = #{id}
     </update>
 
-    <!--根据报告reportId关联查询产品和产品附件数据(产品表、产品文件关联表、报告系统文件表)-->
+    <!--根据报告reportId统计数量-->
+    <!--int countByReportId(Integer reportId);-->
+    <select id="countByReportId" resultType="int">
+        select count(*)
+        from PRODUCT
+        where REPORT_ID = #{reportId}
+    </select>
+
+    <!--根据报告reportId关联产品表、产品文件关联表、报告系统文件表查询产品和产品附件数据-->
     <!--ProductIncludeFilesVO getWholeByReportId(Integer reportId);-->
     <select id="getWholeByReportId" resultMap="WholeResultMap">
-        select p.ID p_ID,
+        select p.ID  p_ID,
                product_name,
                product_identify,
                product_description,
@@ -118,7 +123,7 @@
         </collection>
     </resultMap>
 
-    <!--根据报告reportId删除产品表数据-->
+    <!--根据报告reportId删除数据-->
     <!--int deleteByReportId(Integer reportId);-->
     <delete id="deleteByReportId">
         delete

+ 36 - 28
RMS/src/main/resources/mapper/TaskMapper.xml

@@ -1,37 +1,45 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="cn.cslg.report.mapper.TaskMapper">
-    <select id="queryTasks" resultType="cn.cslg.report.common.model.vo.TaskReportVO" >
-   select a.* ,b.TYPE as reportType from TASK a left join REPORT b on a.REPORT_ID=b.ID
-   <where>
-<if test="param.type !=null">
- and a.TYPE =#{param.type}
-</if>
-        <if test="param.taskStatuses !=null and param.taskStatuses.size>0">
-and a.TASK_STATUS in
-            <foreach collection="param.taskStatuses" item="item" separator="," open="(" close=")">
-                #{item}
-            </foreach>
-        </if>
-        <if test="param.ids !=null and param.ids.size()!=0 ">
-            and a.CREATE_ID in
-            <foreach collection="param.ids" item="item" separator="," open="(" close=")">
-                #{item}
-            </foreach>
-        </if>
-        <if test="param.taskName !=null and param.taskName !=''">
-and a.TASK_NAME  like concat('%', #{param.taskName}, '%')
+    <select id="queryTasks" resultType="cn.cslg.report.common.model.vo.TaskReportVO">
+        select a.* ,b.TYPE as reportType,b.SIGN_PATENT_NO as signPatentNo, b.NAME as reportName from TASK a left join
+        REPORT b on
+        a.REPORT_ID=b.ID
+        <where>
+            <if test="param.type !=null">
+                and a.TYPE =#{param.type}
+            </if>
+            <if test="param.taskStatuses !=null and param.taskStatuses.size>0">
+                and a.TASK_STATUS in
+                <foreach collection="param.taskStatuses" item="item" separator="," open="(" close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="param.ids !=null and param.ids.size()!=0 ">
+                and a.CREATE_ID in
+                <foreach collection="param.ids" item="item" separator="," open="(" close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="param.handleIds !=null and param.handleIds.size()!=0 ">
+                and a.HANDLE_PERSON_ID in
+                <foreach collection="param.handleIds" item="item" separator="," open="(" close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="param.taskName !=null and param.taskName !=''">
+                and a.TASK_NAME like concat('%', #{param.taskName}, '%')
 
-        </if>
+            </if>
 
-        <if test="param.roleInTask !=null and param.roleInTask == 0">
-and a.CREATE_ID=#{param.loginId}
+            <if test="param.roleInTask !=null and param.roleInTask == 0">
+                and a.CREATE_ID=#{param.loginId}
 
-        </if>
-        <if test="param.roleInTask !=null and param.roleInTask == 1">
-            and a.HANDLE_PERSON_ID=#{param.loginId}
-        </if>
-   </where>
+            </if>
+            <if test="param.roleInTask !=null and param.roleInTask == 1">
+                and a.HANDLE_PERSON_ID=#{param.loginId}
+            </if>
+        </where>
         order by a.id desc
     </select>
 </mapper>

+ 3 - 1
RMS/target/classes/application-dev.yml

@@ -37,4 +37,6 @@ spring:
       web-stat-filter:
         exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
 queueName: mail.queue
-fileURL:  http://139.224.24.90:8082
+fileURL:  http://139.224.24.90:8082
+PCSUrl:  http://localhost:8880
+PASUrl:  http://localhost:8879

+ 1 - 2
RMS/target/classes/application.yml

@@ -67,6 +67,5 @@ mybatis-plus:
     map-underscore-to-camel-case: true
     cache-enabled: false
   mapper-locations: classpath:mapper/*.xml
-PCSUrl:  http://localhost:8880
-PASUrl:  http://localhost:8879
+
 

BIN
RMS/target/classes/cn/cslg/report/common/model/dto/AvoidDesignDirectionDTO.class


BIN
RMS/target/classes/cn/cslg/report/common/model/dto/AvoidDesignLittleDirectionDTO.class


BIN
RMS/target/classes/cn/cslg/report/common/model/dto/AvoidFeaturesDTO.class


BIN
RMS/target/classes/cn/cslg/report/common/model/dto/ProductIncludeFilesDTO.class


BIN
RMS/target/classes/cn/cslg/report/common/model/vo/AvoidDesignRightVO.class


BIN
RMS/target/classes/cn/cslg/report/common/model/vo/AvoidDesignWholeVO.class


BIN
RMS/target/classes/cn/cslg/report/common/model/vo/AvoidFeaturesVO.class


BIN
RMS/target/classes/cn/cslg/report/common/model/vo/CompareScenariosVO.class


BIN
RMS/target/classes/cn/cslg/report/common/model/vo/PatentRightVo.class


BIN
RMS/target/classes/cn/cslg/report/common/model/vo/PatentVO.class


BIN
RMS/target/classes/cn/cslg/report/common/model/vo/ProductIncludeFilesVO.class


BIN
RMS/target/classes/cn/cslg/report/common/model/vo/ReportVO.class


BIN
RMS/target/classes/cn/cslg/report/common/model/vo/TaskReportVO.class


BIN
RMS/target/classes/cn/cslg/report/common/model/vo/TaskVO$personPatents.class


BIN
RMS/target/classes/cn/cslg/report/common/model/vo/TaskVO.class


BIN
RMS/target/classes/cn/cslg/report/common/utils/DataUtils.class


+ 0 - 0
RMS/target/classes/cn/cslg/report/controller/AvoidDesignDirectionController.class


Some files were not shown because too many files changed in this diff