Преглед на файлове

Merge remote-tracking branch 'origin/master' into prod_test

lwhhszx преди 1 година
родител
ревизия
a982543285
променени са 100 файла, в които са добавени 3872 реда и са изтрити 634 реда
  1. 375 0
      logs/pas/pas-info.2024-01-25.0.log
  2. 231 0
      logs/pas/pas-info.log
  3. 9 6
      src/main/java/cn/cslg/pas/common/core/base/RedisConf.java
  4. 1 0
      src/main/java/cn/cslg/pas/common/dto/AddSelfFieldDTO.java
  5. 1 0
      src/main/java/cn/cslg/pas/common/dto/ImportTaskDTO.java
  6. 14 0
      src/main/java/cn/cslg/pas/common/dto/QueryPatentDigProjectFilesDTO.java
  7. 2 2
      src/main/java/cn/cslg/pas/common/dto/RetrieveRecordQueryDTO.java
  8. 54 0
      src/main/java/cn/cslg/pas/common/dto/business/AsInvalidReasonHistoryDTO.java
  9. 58 0
      src/main/java/cn/cslg/pas/common/dto/business/InvalidRecordDTO.java
  10. 2 1
      src/main/java/cn/cslg/pas/common/dto/business/LitigationHistoryDTO.java
  11. 1 1
      src/main/java/cn/cslg/pas/common/dto/business/MarkTaskDTO.java
  12. 16 0
      src/main/java/cn/cslg/pas/common/dto/business/OtherPatentInfoDTO.java
  13. 1 0
      src/main/java/cn/cslg/pas/common/dto/business/QueryTreeNodeDTO.java
  14. 3 0
      src/main/java/cn/cslg/pas/common/dto/business/ReportProjectDTO.java
  15. 3 5
      src/main/java/cn/cslg/pas/common/dto/business/ReviewHistoryDTO.java
  16. 19 0
      src/main/java/cn/cslg/pas/common/dto/es/EsMergePersonDTO.java
  17. 28 0
      src/main/java/cn/cslg/pas/common/dto/es/EsValueCurveDTO.java
  18. 28 0
      src/main/java/cn/cslg/pas/common/dto/es/SelectValueCurveDTO.java
  19. 8 4
      src/main/java/cn/cslg/pas/common/dto/invalidDTO/AddProofGroupDTO.java
  20. 3 7
      src/main/java/cn/cslg/pas/common/dto/patentCount/GetEsAllPersonDTO.java
  21. 6 0
      src/main/java/cn/cslg/pas/common/model/request/QueryRequest.java
  22. 22 3
      src/main/java/cn/cslg/pas/common/utils/PatentRightUtils.java
  23. 1 0
      src/main/java/cn/cslg/pas/common/vo/FieldValueVO.java
  24. 1 0
      src/main/java/cn/cslg/pas/common/vo/PatentRightParams.java
  25. 1 0
      src/main/java/cn/cslg/pas/common/vo/PersonSelfFieldVO.java
  26. 3 1
      src/main/java/cn/cslg/pas/common/vo/ProductOrCategoryVO.java
  27. 2 0
      src/main/java/cn/cslg/pas/common/vo/ReTreeNodeVO.java
  28. 71 0
      src/main/java/cn/cslg/pas/common/vo/business/AsInvalidReasonHistoryVO.java
  29. 71 0
      src/main/java/cn/cslg/pas/common/vo/business/InvalidRecordVO.java
  30. 11 1
      src/main/java/cn/cslg/pas/common/vo/business/LitigationHistoryVO.java
  31. 2 2
      src/main/java/cn/cslg/pas/common/vo/business/MergePersonAgainVO.java
  32. 3 0
      src/main/java/cn/cslg/pas/common/vo/business/OtherReferencesVO.java
  33. 4 1
      src/main/java/cn/cslg/pas/common/vo/business/PatentDigProjectFilesVO.java
  34. 10 0
      src/main/java/cn/cslg/pas/common/vo/business/PermissionRecordVO.java
  35. 4 0
      src/main/java/cn/cslg/pas/common/vo/business/ProductVO.java
  36. 10 1
      src/main/java/cn/cslg/pas/common/vo/business/ReviewHistoryVO.java
  37. 12 0
      src/main/java/cn/cslg/pas/common/vo/business/SelectProductVO.java
  38. 3 0
      src/main/java/cn/cslg/pas/common/vo/business/TreeNodeVO.java
  39. 34 0
      src/main/java/cn/cslg/pas/common/vo/es/EsValueCurveVO.java
  40. 1 1
      src/main/java/cn/cslg/pas/common/vo/invalidVO/ProofGroupVO.java
  41. 53 0
      src/main/java/cn/cslg/pas/controller/AsInvalidReasonHistoryController.java
  42. 2 2
      src/main/java/cn/cslg/pas/controller/FeatureController.java
  43. 53 0
      src/main/java/cn/cslg/pas/controller/InvalidRecordController.java
  44. 4 6
      src/main/java/cn/cslg/pas/controller/LitigationHistoryController.java
  45. 4 5
      src/main/java/cn/cslg/pas/controller/OtherReferencesController.java
  46. 38 8
      src/main/java/cn/cslg/pas/controller/PatentController.java
  47. 12 0
      src/main/java/cn/cslg/pas/controller/PatentDigProjectFilesController.java
  48. 4 5
      src/main/java/cn/cslg/pas/controller/PermissionRecordController.java
  49. 24 0
      src/main/java/cn/cslg/pas/controller/PersonFieldController.java
  50. 19 1
      src/main/java/cn/cslg/pas/controller/ProjectShareController.java
  51. 7 6
      src/main/java/cn/cslg/pas/controller/ReportProjectController.java
  52. 67 0
      src/main/java/cn/cslg/pas/controller/RetrieveRecordController.java
  53. 4 5
      src/main/java/cn/cslg/pas/controller/ReviewHistoryController.java
  54. 68 0
      src/main/java/cn/cslg/pas/domain/business/AsInvalidReasonHistory.java
  55. 2 0
      src/main/java/cn/cslg/pas/domain/business/AssoGroupFeature.java
  56. 6 4
      src/main/java/cn/cslg/pas/domain/business/AssoOtherReferencesFile.java
  57. 65 0
      src/main/java/cn/cslg/pas/domain/business/InvalidRecord.java
  58. 1 0
      src/main/java/cn/cslg/pas/domain/business/LitigationHistory.java
  59. 3 0
      src/main/java/cn/cslg/pas/domain/business/ProofGroup.java
  60. 1 1
      src/main/java/cn/cslg/pas/factorys/EsBuilderFactory/ProductQueryBuilder.java
  61. 12 9
      src/main/java/cn/cslg/pas/factorys/getSqlFactorys/GetComSql.java
  62. 3 0
      src/main/java/cn/cslg/pas/factorys/getSqlFactorys/GetDateTimeMonthSql.java
  63. 34 29
      src/main/java/cn/cslg/pas/factorys/getSqlFactorys/GetEntrustTrueNameSql.java
  64. 9 3
      src/main/java/cn/cslg/pas/factorys/reGroupFactory/GetEntrustGroup.java
  65. 56 0
      src/main/java/cn/cslg/pas/factorys/reGroupFactory/GetEventScenarioGroup.java
  66. 9 1
      src/main/java/cn/cslg/pas/factorys/reGroupFactory/GetMatterGroup.java
  67. 19 11
      src/main/java/cn/cslg/pas/factorys/reGroupFactory/GetScenarioGroup.java
  68. 1 1
      src/main/java/cn/cslg/pas/factorys/reGroupFactory/GetTimeGroup.java
  69. 13 0
      src/main/java/cn/cslg/pas/mapper/AsInvalidReasonHistoryMapper.java
  70. 2 2
      src/main/java/cn/cslg/pas/mapper/AssoOtherReferencesFileMapper.java
  71. 13 0
      src/main/java/cn/cslg/pas/mapper/InvalidRecordMapper.java
  72. 9 0
      src/main/java/cn/cslg/pas/mapper/PermissionRecordMapper.java
  73. 7 0
      src/main/java/cn/cslg/pas/mapper/ProductMarketDataMapper.java
  74. 1 0
      src/main/java/cn/cslg/pas/mapper/TreeNodeMapper.java
  75. 1 2
      src/main/java/cn/cslg/pas/service/PatentLabelService.java
  76. 3 1
      src/main/java/cn/cslg/pas/service/ReportExportService.java
  77. 298 0
      src/main/java/cn/cslg/pas/service/business/AsInvalidReasonHistoryService.java
  78. 3 3
      src/main/java/cn/cslg/pas/service/business/AssoOtherReferencesFileService.java
  79. 12 1
      src/main/java/cn/cslg/pas/service/business/CustomFieldService.java
  80. 41 39
      src/main/java/cn/cslg/pas/service/business/EventService.java
  81. 39 2
      src/main/java/cn/cslg/pas/service/business/FeatureService.java
  82. 3 1
      src/main/java/cn/cslg/pas/service/business/HightlightTemplateService.java
  83. 1 0
      src/main/java/cn/cslg/pas/service/business/ImportTaskService.java
  84. 309 0
      src/main/java/cn/cslg/pas/service/business/InvalidRecordService.java
  85. 2 2
      src/main/java/cn/cslg/pas/service/business/InvalidStatutesService.java
  86. 87 10
      src/main/java/cn/cslg/pas/service/business/LitigationHistoryService.java
  87. 679 297
      src/main/java/cn/cslg/pas/service/business/MergePersonService.java
  88. 67 32
      src/main/java/cn/cslg/pas/service/business/OtherReferencesService.java
  89. 121 0
      src/main/java/cn/cslg/pas/service/business/PatentDigProjectFilesService.java
  90. 14 7
      src/main/java/cn/cslg/pas/service/business/PatentDigProjectService.java
  91. 25 9
      src/main/java/cn/cslg/pas/service/business/PatentProjectService.java
  92. 39 8
      src/main/java/cn/cslg/pas/service/business/PermissionRecordService.java
  93. 18 10
      src/main/java/cn/cslg/pas/service/business/ProductCategoryService.java
  94. 100 31
      src/main/java/cn/cslg/pas/service/business/ProductService.java
  95. 54 1
      src/main/java/cn/cslg/pas/service/business/ProjectService.java
  96. 24 8
      src/main/java/cn/cslg/pas/service/business/ProjectTaskService.java
  97. 7 3
      src/main/java/cn/cslg/pas/service/business/ProofGroupService.java
  98. 84 25
      src/main/java/cn/cslg/pas/service/business/ReportProjectService.java
  99. 87 7
      src/main/java/cn/cslg/pas/service/business/ReviewHistoryService.java
  100. 0 0
      src/main/java/cn/cslg/pas/service/business/TreeNodeService.java

+ 375 - 0
logs/pas/pas-info.2024-01-25.0.log

@@ -0,0 +1,375 @@
+[pas:0.0.0.0:8877] [,] 2024-01-25 09:10:15.225 INFO 18620 [lettuce-nioEventLoop-4-1] io.lettuce.core.protocol.CommandHandler null Unexpected exception during request: java.net.SocketException: Connection reset
+
+java.net.SocketException: Connection reset
+	at java.base/sun.nio.ch.SocketChannelImpl.throwConnectionReset(SocketChannelImpl.java:394)
+	at java.base/sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:426)
+	at io.netty.buffer.PooledByteBuf.setBytes(PooledByteBuf.java:254)
+	at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:1132)
+	at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:357)
+	at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:151)
+	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
+	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
+	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
+	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
+	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
+	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
+	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
+	at java.base/java.lang.Thread.run(Thread.java:833)
+
+[pas:0.0.0.0:8877] [,] 2024-01-25 09:10:15.479 INFO 18620 [lettuce-eventExecutorLoop-1-8] io.lettuce.core.protocol.ConnectionWatchdog Reconnecting, last destination was /192.168.1.24:6379
+[pas:0.0.0.0:8877] [,] 2024-01-25 09:10:24.472 INFO 18620 [lettuce-eventExecutorLoop-1-8] io.lettuce.core.protocol.ConnectionWatchdog Reconnecting, last destination was 192.168.1.24/<unresolved>:6379
+[pas:0.0.0.0:8877] [,] 2024-01-25 09:10:32.673 INFO 18620 [lettuce-eventExecutorLoop-1-2] io.lettuce.core.protocol.ConnectionWatchdog Reconnecting, last destination was 192.168.1.24/<unresolved>:6379
+[pas:0.0.0.0:8877] [,] 2024-01-25 09:10:32.687 INFO 18620 [lettuce-nioEventLoop-4-7] io.lettuce.core.protocol.ReconnectionHandler Reconnected to 192.168.1.24/<unresolved>:6379
+[pas:0.0.0.0:8877] [,] 2024-01-25 09:55:50.830 INFO 18620 [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED paused.
+[pas:0.0.0.0:8877] [,] 2024-01-25 09:55:50.899 INFO 18620 [SpringApplicationShutdownHook] org.springframework.scheduling.quartz.SchedulerFactoryBean Shutting down Quartz Scheduler
+[pas:0.0.0.0:8877] [,] 2024-01-25 09:55:50.899 INFO 18620 [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutting down.
+[pas:0.0.0.0:8877] [,] 2024-01-25 09:55:50.899 INFO 18620 [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED paused.
+[pas:0.0.0.0:8877] [,] 2024-01-25 09:55:50.900 INFO 18620 [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutdown complete.
+[pas:0.0.0.0:8877] [,] 2024-01-25 09:55:50.921 INFO 18620 [SpringApplicationShutdownHook] com.alibaba.druid.pool.DruidDataSource {dataSource-1} closing ...
+[pas:0.0.0.0:8877] [,] 2024-01-25 09:55:50.925 INFO 18620 [SpringApplicationShutdownHook] com.alibaba.druid.pool.DruidDataSource {dataSource-1} closed
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:40.137 INFO 7832 [main] cn.cslg.pas.Application Starting Application using Java 18.0.2 with PID 7832 (E:\IDEAProject\PAS\target\classes started by Admin in E:\IDEAProject\PAS)
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:40.138 INFO 7832 [main] cn.cslg.pas.Application The following 1 profile is active: "dev"
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:40.904 INFO 7832 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Multiple Spring Data modules found, entering strict repository configuration mode
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:40.905 INFO 7832 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Bootstrapping Spring Data Elasticsearch repositories in DEFAULT mode.
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:40.942 INFO 7832 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Finished Spring Data repository scanning in 33 ms. Found 0 Elasticsearch repository interfaces.
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:40.947 INFO 7832 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Multiple Spring Data modules found, entering strict repository configuration mode
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:40.947 INFO 7832 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Bootstrapping Spring Data Reactive Elasticsearch repositories in DEFAULT mode.
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:40.963 INFO 7832 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Finished Spring Data repository scanning in 15 ms. Found 0 Reactive Elasticsearch repository interfaces.
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:40.972 INFO 7832 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Multiple Spring Data modules found, entering strict repository configuration mode
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:40.973 INFO 7832 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Bootstrapping Spring Data Redis repositories in DEFAULT mode.
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:40.993 INFO 7832 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Finished Spring Data repository scanning in 14 ms. Found 0 Redis repository interfaces.
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:41.637 INFO 7832 [main] org.springframework.boot.web.embedded.tomcat.TomcatWebServer Tomcat initialized with port(s): 8877 (http)
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:41.643 INFO 7832 [main] org.apache.coyote.http11.Http11NioProtocol Initializing ProtocolHandler ["http-nio-8877"]
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:41.645 INFO 7832 [main] org.apache.catalina.core.StandardService Starting service [Tomcat]
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:41.645 INFO 7832 [main] org.apache.catalina.core.StandardEngine Starting Servlet engine: [Apache Tomcat/10.1.12]
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:41.744 INFO 7832 [main] org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] Initializing Spring embedded WebApplicationContext
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:41.745 INFO 7832 [main] org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext Root WebApplicationContext: initialization completed in 1572 ms
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:47.805 INFO 7832 [main] com.alibaba.druid.pool.DruidDataSource {dataSource-1} inited
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:52.205 INFO 7832 [main] org.quartz.impl.StdSchedulerFactory Using ConnectionProvider class 'org.quartz.utils.C3p0PoolingConnectionProvider' for data source 'default'
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:52.214 INFO 7832 [MLog-Init-Reporter] com.mchange.v2.log.MLog MLog clients using slf4j logging.
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:52.231 INFO 7832 [main] com.mchange.v2.c3p0.C3P0Registry Initializing c3p0-0.9.5.2 [built 08-December-2015 22:06:04 -0800; debug? true; trace: 10]
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:52.256 INFO 7832 [main] org.quartz.impl.StdSchedulerFactory Using default implementation for ThreadExecutor
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:52.257 INFO 7832 [main] org.quartz.simpl.SimpleThreadPool Job execution threads will use class loader of thread: main
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:52.262 INFO 7832 [main] org.quartz.core.SchedulerSignalerImpl Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:52.262 INFO 7832 [main] org.quartz.core.QuartzScheduler Quartz Scheduler v.2.3.2 created.
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:52.263 INFO 7832 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Using db table-based data access locking (synchronization).
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:52.265 INFO 7832 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore JobStoreCMT initialized.
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:52.265 INFO 7832 [main] org.quartz.core.QuartzScheduler Scheduler meta-data: Quartz Scheduler (v2.3.2) 'DefaultQuartzScheduler' with instanceId 'NON_CLUSTERED'
+  Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
+  NOT STARTED.
+  Currently in standby mode.
+  Number of jobs executed: 0
+  Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
+  Using job-store 'org.springframework.scheduling.quartz.LocalDataSourceJobStore' - which supports persistence. and is not clustered.
+
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:52.265 INFO 7832 [main] org.quartz.impl.StdSchedulerFactory Quartz scheduler 'DefaultQuartzScheduler' initialized from an externally provided properties instance.
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:52.265 INFO 7832 [main] org.quartz.impl.StdSchedulerFactory Quartz scheduler version: 2.3.2
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:52.265 INFO 7832 [main] org.quartz.core.QuartzScheduler JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@54fb9c08
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:52.376 INFO 7832 [main] org.apache.coyote.http11.Http11NioProtocol Starting ProtocolHandler ["http-nio-8877"]
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:52.385 INFO 7832 [main] org.springframework.boot.web.embedded.tomcat.TomcatWebServer Tomcat started on port(s): 8877 (http) with context path ''
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:52.386 INFO 7832 [main] org.springframework.scheduling.quartz.SchedulerFactoryBean Starting Quartz Scheduler now
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:52.420 INFO 7832 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Freed 0 triggers from 'acquired' / 'blocked' state.
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:52.434 INFO 7832 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Recovering 0 jobs that were in-progress at the time of the last shut-down.
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:52.434 INFO 7832 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Recovery complete.
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:52.437 INFO 7832 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Removed 0 'complete' triggers.
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:52.441 INFO 7832 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Removed 0 stale fired job entries.
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:52.459 INFO 7832 [main] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started.
+[pas:0.0.0.0:8877] [,] 2024-01-25 10:02:52.467 INFO 7832 [main] cn.cslg.pas.Application Started Application in 12.764 seconds (process running for 13.561)
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:04.095 INFO 8460 [main] cn.cslg.pas.Application Starting Application using Java 18.0.2 with PID 8460 (E:\IDEAProject\PAS\target\classes started by Admin in E:\IDEAProject\PAS)
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:04.096 INFO 8460 [main] cn.cslg.pas.Application The following 1 profile is active: "dev"
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:04.919 INFO 8460 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Multiple Spring Data modules found, entering strict repository configuration mode
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:04.920 INFO 8460 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Bootstrapping Spring Data Elasticsearch repositories in DEFAULT mode.
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:04.956 INFO 8460 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Finished Spring Data repository scanning in 32 ms. Found 0 Elasticsearch repository interfaces.
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:04.961 INFO 8460 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Multiple Spring Data modules found, entering strict repository configuration mode
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:04.961 INFO 8460 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Bootstrapping Spring Data Reactive Elasticsearch repositories in DEFAULT mode.
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:04.977 INFO 8460 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Finished Spring Data repository scanning in 15 ms. Found 0 Reactive Elasticsearch repository interfaces.
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:04.985 INFO 8460 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Multiple Spring Data modules found, entering strict repository configuration mode
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:04.986 INFO 8460 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Bootstrapping Spring Data Redis repositories in DEFAULT mode.
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:05.006 INFO 8460 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Finished Spring Data repository scanning in 14 ms. Found 0 Redis repository interfaces.
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:05.697 INFO 8460 [main] org.springframework.boot.web.embedded.tomcat.TomcatWebServer Tomcat initialized with port(s): 8877 (http)
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:05.703 INFO 8460 [main] org.apache.coyote.http11.Http11NioProtocol Initializing ProtocolHandler ["http-nio-8877"]
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:05.704 INFO 8460 [main] org.apache.catalina.core.StandardService Starting service [Tomcat]
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:05.704 INFO 8460 [main] org.apache.catalina.core.StandardEngine Starting Servlet engine: [Apache Tomcat/10.1.12]
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:05.801 INFO 8460 [main] org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] Initializing Spring embedded WebApplicationContext
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:05.801 INFO 8460 [main] org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext Root WebApplicationContext: initialization completed in 1670 ms
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:11.880 INFO 8460 [main] com.alibaba.druid.pool.DruidDataSource {dataSource-1} inited
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:15.938 INFO 8460 [main] org.quartz.impl.StdSchedulerFactory Using ConnectionProvider class 'org.quartz.utils.C3p0PoolingConnectionProvider' for data source 'default'
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:15.947 INFO 8460 [MLog-Init-Reporter] com.mchange.v2.log.MLog MLog clients using slf4j logging.
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:15.968 INFO 8460 [main] com.mchange.v2.c3p0.C3P0Registry Initializing c3p0-0.9.5.2 [built 08-December-2015 22:06:04 -0800; debug? true; trace: 10]
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:15.992 INFO 8460 [main] org.quartz.impl.StdSchedulerFactory Using default implementation for ThreadExecutor
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:15.994 INFO 8460 [main] org.quartz.simpl.SimpleThreadPool Job execution threads will use class loader of thread: main
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:16.000 INFO 8460 [main] org.quartz.core.SchedulerSignalerImpl Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:16.000 INFO 8460 [main] org.quartz.core.QuartzScheduler Quartz Scheduler v.2.3.2 created.
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:16.001 INFO 8460 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Using db table-based data access locking (synchronization).
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:16.003 INFO 8460 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore JobStoreCMT initialized.
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:16.003 INFO 8460 [main] org.quartz.core.QuartzScheduler Scheduler meta-data: Quartz Scheduler (v2.3.2) 'DefaultQuartzScheduler' with instanceId 'NON_CLUSTERED'
+  Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
+  NOT STARTED.
+  Currently in standby mode.
+  Number of jobs executed: 0
+  Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
+  Using job-store 'org.springframework.scheduling.quartz.LocalDataSourceJobStore' - which supports persistence. and is not clustered.
+
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:16.003 INFO 8460 [main] org.quartz.impl.StdSchedulerFactory Quartz scheduler 'DefaultQuartzScheduler' initialized from an externally provided properties instance.
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:16.003 INFO 8460 [main] org.quartz.impl.StdSchedulerFactory Quartz scheduler version: 2.3.2
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:16.003 INFO 8460 [main] org.quartz.core.QuartzScheduler JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@24c8b86
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:16.110 INFO 8460 [main] org.apache.coyote.http11.Http11NioProtocol Starting ProtocolHandler ["http-nio-8877"]
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:16.113 INFO 8460 [main] org.springframework.scheduling.quartz.SchedulerFactoryBean Shutting down Quartz Scheduler
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:16.113 INFO 8460 [main] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutting down.
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:16.113 INFO 8460 [main] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED paused.
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:16.113 INFO 8460 [main] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutdown complete.
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:16.124 INFO 8460 [main] com.alibaba.druid.pool.DruidDataSource {dataSource-1} closing ...
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:16.155 INFO 8460 [main] com.alibaba.druid.pool.DruidDataSource {dataSource-1} closed
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:16.181 INFO 8460 [main] org.apache.coyote.http11.Http11NioProtocol Pausing ProtocolHandler ["http-nio-8877"]
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:16.182 INFO 8460 [main] org.apache.catalina.core.StandardService Stopping service [Tomcat]
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:16.189 INFO 8460 [main] org.apache.coyote.http11.Http11NioProtocol Stopping ProtocolHandler ["http-nio-8877"]
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:16.189 INFO 8460 [main] org.apache.coyote.http11.Http11NioProtocol Destroying ProtocolHandler ["http-nio-8877"]
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:52:16.197 INFO 8460 [main] org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLogger 
+
+Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:23.303 INFO 19676 [main] cn.cslg.pas.Application Starting Application using Java 18.0.2 with PID 19676 (E:\IDEAProject\PAS\target\classes started by Admin in E:\IDEAProject\PAS)
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:23.304 INFO 19676 [main] cn.cslg.pas.Application The following 1 profile is active: "dev"
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:24.092 INFO 19676 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Multiple Spring Data modules found, entering strict repository configuration mode
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:24.093 INFO 19676 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Bootstrapping Spring Data Elasticsearch repositories in DEFAULT mode.
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:24.128 INFO 19676 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Finished Spring Data repository scanning in 32 ms. Found 0 Elasticsearch repository interfaces.
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:24.133 INFO 19676 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Multiple Spring Data modules found, entering strict repository configuration mode
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:24.133 INFO 19676 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Bootstrapping Spring Data Reactive Elasticsearch repositories in DEFAULT mode.
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:24.149 INFO 19676 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Finished Spring Data repository scanning in 15 ms. Found 0 Reactive Elasticsearch repository interfaces.
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:24.157 INFO 19676 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Multiple Spring Data modules found, entering strict repository configuration mode
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:24.158 INFO 19676 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Bootstrapping Spring Data Redis repositories in DEFAULT mode.
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:24.189 INFO 19676 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Finished Spring Data repository scanning in 25 ms. Found 0 Redis repository interfaces.
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:24.818 INFO 19676 [main] org.springframework.boot.web.embedded.tomcat.TomcatWebServer Tomcat initialized with port(s): 8877 (http)
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:24.824 INFO 19676 [main] org.apache.coyote.http11.Http11NioProtocol Initializing ProtocolHandler ["http-nio-8877"]
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:24.825 INFO 19676 [main] org.apache.catalina.core.StandardService Starting service [Tomcat]
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:24.825 INFO 19676 [main] org.apache.catalina.core.StandardEngine Starting Servlet engine: [Apache Tomcat/10.1.12]
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:24.921 INFO 19676 [main] org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] Initializing Spring embedded WebApplicationContext
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:24.921 INFO 19676 [main] org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext Root WebApplicationContext: initialization completed in 1582 ms
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:30.915 INFO 19676 [main] com.alibaba.druid.pool.DruidDataSource {dataSource-1} inited
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:35.008 INFO 19676 [main] org.quartz.impl.StdSchedulerFactory Using ConnectionProvider class 'org.quartz.utils.C3p0PoolingConnectionProvider' for data source 'default'
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:35.016 INFO 19676 [MLog-Init-Reporter] com.mchange.v2.log.MLog MLog clients using slf4j logging.
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:35.035 INFO 19676 [main] com.mchange.v2.c3p0.C3P0Registry Initializing c3p0-0.9.5.2 [built 08-December-2015 22:06:04 -0800; debug? true; trace: 10]
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:35.060 INFO 19676 [main] org.quartz.impl.StdSchedulerFactory Using default implementation for ThreadExecutor
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:35.061 INFO 19676 [main] org.quartz.simpl.SimpleThreadPool Job execution threads will use class loader of thread: main
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:35.067 INFO 19676 [main] org.quartz.core.SchedulerSignalerImpl Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:35.068 INFO 19676 [main] org.quartz.core.QuartzScheduler Quartz Scheduler v.2.3.2 created.
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:35.069 INFO 19676 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Using db table-based data access locking (synchronization).
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:35.070 INFO 19676 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore JobStoreCMT initialized.
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:35.071 INFO 19676 [main] org.quartz.core.QuartzScheduler Scheduler meta-data: Quartz Scheduler (v2.3.2) 'DefaultQuartzScheduler' with instanceId 'NON_CLUSTERED'
+  Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
+  NOT STARTED.
+  Currently in standby mode.
+  Number of jobs executed: 0
+  Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
+  Using job-store 'org.springframework.scheduling.quartz.LocalDataSourceJobStore' - which supports persistence. and is not clustered.
+
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:35.071 INFO 19676 [main] org.quartz.impl.StdSchedulerFactory Quartz scheduler 'DefaultQuartzScheduler' initialized from an externally provided properties instance.
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:35.071 INFO 19676 [main] org.quartz.impl.StdSchedulerFactory Quartz scheduler version: 2.3.2
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:35.071 INFO 19676 [main] org.quartz.core.QuartzScheduler JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@24c8b86
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:35.177 INFO 19676 [main] org.apache.coyote.http11.Http11NioProtocol Starting ProtocolHandler ["http-nio-8877"]
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:35.185 INFO 19676 [main] org.springframework.boot.web.embedded.tomcat.TomcatWebServer Tomcat started on port(s): 8877 (http) with context path ''
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:35.186 INFO 19676 [main] org.springframework.scheduling.quartz.SchedulerFactoryBean Starting Quartz Scheduler now
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:35.216 INFO 19676 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Freed 0 triggers from 'acquired' / 'blocked' state.
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:35.227 INFO 19676 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Recovering 0 jobs that were in-progress at the time of the last shut-down.
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:35.227 INFO 19676 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Recovery complete.
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:35.233 INFO 19676 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Removed 0 'complete' triggers.
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:35.235 INFO 19676 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Removed 0 stale fired job entries.
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:35.251 INFO 19676 [main] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started.
+[pas:0.0.0.0:8877] [,] 2024-01-25 13:54:35.260 INFO 19676 [main] cn.cslg.pas.Application Started Application in 12.399 seconds (process running for 13.186)
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:55:54.135 INFO 19676 [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED paused.
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:55:54.194 INFO 19676 [SpringApplicationShutdownHook] org.springframework.scheduling.quartz.SchedulerFactoryBean Shutting down Quartz Scheduler
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:55:54.194 INFO 19676 [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutting down.
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:55:54.194 INFO 19676 [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED paused.
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:55:54.194 INFO 19676 [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutdown complete.
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:55:54.220 INFO 19676 [SpringApplicationShutdownHook] com.alibaba.druid.pool.DruidDataSource {dataSource-1} closing ...
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:55:54.224 INFO 19676 [SpringApplicationShutdownHook] com.alibaba.druid.pool.DruidDataSource {dataSource-1} closed
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:00.089 INFO 6636 [main] cn.cslg.pas.Application Starting Application using Java 18.0.2 with PID 6636 (E:\IDEAProject\PAS\target\classes started by Admin in E:\IDEAProject\PAS)
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:00.090 INFO 6636 [main] cn.cslg.pas.Application The following 1 profile is active: "dev"
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:00.914 INFO 6636 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Multiple Spring Data modules found, entering strict repository configuration mode
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:00.915 INFO 6636 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Bootstrapping Spring Data Elasticsearch repositories in DEFAULT mode.
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:00.949 INFO 6636 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Finished Spring Data repository scanning in 31 ms. Found 0 Elasticsearch repository interfaces.
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:00.954 INFO 6636 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Multiple Spring Data modules found, entering strict repository configuration mode
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:00.954 INFO 6636 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Bootstrapping Spring Data Reactive Elasticsearch repositories in DEFAULT mode.
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:00.969 INFO 6636 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Finished Spring Data repository scanning in 14 ms. Found 0 Reactive Elasticsearch repository interfaces.
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:00.978 INFO 6636 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Multiple Spring Data modules found, entering strict repository configuration mode
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:00.979 INFO 6636 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Bootstrapping Spring Data Redis repositories in DEFAULT mode.
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:00.998 INFO 6636 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Finished Spring Data repository scanning in 14 ms. Found 0 Redis repository interfaces.
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:01.633 INFO 6636 [main] org.springframework.boot.web.embedded.tomcat.TomcatWebServer Tomcat initialized with port(s): 8877 (http)
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:01.639 INFO 6636 [main] org.apache.coyote.http11.Http11NioProtocol Initializing ProtocolHandler ["http-nio-8877"]
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:01.640 INFO 6636 [main] org.apache.catalina.core.StandardService Starting service [Tomcat]
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:01.640 INFO 6636 [main] org.apache.catalina.core.StandardEngine Starting Servlet engine: [Apache Tomcat/10.1.12]
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:01.723 INFO 6636 [main] org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] Initializing Spring embedded WebApplicationContext
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:01.723 INFO 6636 [main] org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext Root WebApplicationContext: initialization completed in 1591 ms
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:07.928 INFO 6636 [main] com.alibaba.druid.pool.DruidDataSource {dataSource-1} inited
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:13.136 INFO 6636 [main] org.quartz.impl.StdSchedulerFactory Using ConnectionProvider class 'org.quartz.utils.C3p0PoolingConnectionProvider' for data source 'default'
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:13.144 INFO 6636 [MLog-Init-Reporter] com.mchange.v2.log.MLog MLog clients using slf4j logging.
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:13.162 INFO 6636 [main] com.mchange.v2.c3p0.C3P0Registry Initializing c3p0-0.9.5.2 [built 08-December-2015 22:06:04 -0800; debug? true; trace: 10]
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:13.187 INFO 6636 [main] org.quartz.impl.StdSchedulerFactory Using default implementation for ThreadExecutor
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:13.188 INFO 6636 [main] org.quartz.simpl.SimpleThreadPool Job execution threads will use class loader of thread: main
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:13.194 INFO 6636 [main] org.quartz.core.SchedulerSignalerImpl Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:13.194 INFO 6636 [main] org.quartz.core.QuartzScheduler Quartz Scheduler v.2.3.2 created.
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:13.196 INFO 6636 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Using db table-based data access locking (synchronization).
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:13.197 INFO 6636 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore JobStoreCMT initialized.
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:13.198 INFO 6636 [main] org.quartz.core.QuartzScheduler Scheduler meta-data: Quartz Scheduler (v2.3.2) 'DefaultQuartzScheduler' with instanceId 'NON_CLUSTERED'
+  Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
+  NOT STARTED.
+  Currently in standby mode.
+  Number of jobs executed: 0
+  Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
+  Using job-store 'org.springframework.scheduling.quartz.LocalDataSourceJobStore' - which supports persistence. and is not clustered.
+
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:13.198 INFO 6636 [main] org.quartz.impl.StdSchedulerFactory Quartz scheduler 'DefaultQuartzScheduler' initialized from an externally provided properties instance.
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:13.198 INFO 6636 [main] org.quartz.impl.StdSchedulerFactory Quartz scheduler version: 2.3.2
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:13.198 INFO 6636 [main] org.quartz.core.QuartzScheduler JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@27c05ed9
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:13.313 INFO 6636 [main] org.apache.coyote.http11.Http11NioProtocol Starting ProtocolHandler ["http-nio-8877"]
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:13.321 INFO 6636 [main] org.springframework.boot.web.embedded.tomcat.TomcatWebServer Tomcat started on port(s): 8877 (http) with context path ''
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:13.322 INFO 6636 [main] org.springframework.scheduling.quartz.SchedulerFactoryBean Starting Quartz Scheduler now
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:13.357 INFO 6636 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Freed 0 triggers from 'acquired' / 'blocked' state.
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:13.366 INFO 6636 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Recovering 0 jobs that were in-progress at the time of the last shut-down.
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:13.367 INFO 6636 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Recovery complete.
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:13.370 INFO 6636 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Removed 0 'complete' triggers.
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:13.374 INFO 6636 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Removed 0 stale fired job entries.
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:13.393 INFO 6636 [main] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started.
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:56:13.400 INFO 6636 [main] cn.cslg.pas.Application Started Application in 13.822 seconds (process running for 14.599)
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:57:06.754 INFO 6636 [http-nio-8877-exec-1] org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] Initializing Spring DispatcherServlet 'dispatcherServlet'
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:57:06.755 INFO 6636 [http-nio-8877-exec-1] org.springframework.web.servlet.DispatcherServlet Initializing Servlet 'dispatcherServlet'
+[pas:0.0.0.0:8877] [,] 2024-01-25 16:57:06.756 INFO 6636 [http-nio-8877-exec-1] org.springframework.web.servlet.DispatcherServlet Completed initialization in 1 ms
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:24.020 INFO 6636 [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED paused.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:24.037 INFO 6636 [SpringApplicationShutdownHook] org.springframework.scheduling.quartz.SchedulerFactoryBean Shutting down Quartz Scheduler
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:24.037 INFO 6636 [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutting down.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:24.037 INFO 6636 [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED paused.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:24.037 INFO 6636 [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutdown complete.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:24.052 INFO 6636 [SpringApplicationShutdownHook] com.alibaba.druid.pool.DruidDataSource {dataSource-1} closing ...
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:24.056 INFO 6636 [SpringApplicationShutdownHook] com.alibaba.druid.pool.DruidDataSource {dataSource-1} closed
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:30.197 INFO 15284 [main] cn.cslg.pas.Application Starting Application using Java 18.0.2 with PID 15284 (E:\IDEAProject\PAS\target\classes started by Admin in E:\IDEAProject\PAS)
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:30.198 INFO 15284 [main] cn.cslg.pas.Application The following 1 profile is active: "dev"
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:30.966 INFO 15284 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Multiple Spring Data modules found, entering strict repository configuration mode
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:30.967 INFO 15284 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Bootstrapping Spring Data Elasticsearch repositories in DEFAULT mode.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:31.002 INFO 15284 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Finished Spring Data repository scanning in 31 ms. Found 0 Elasticsearch repository interfaces.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:31.006 INFO 15284 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Multiple Spring Data modules found, entering strict repository configuration mode
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:31.006 INFO 15284 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Bootstrapping Spring Data Reactive Elasticsearch repositories in DEFAULT mode.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:31.021 INFO 15284 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Finished Spring Data repository scanning in 14 ms. Found 0 Reactive Elasticsearch repository interfaces.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:31.030 INFO 15284 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Multiple Spring Data modules found, entering strict repository configuration mode
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:31.031 INFO 15284 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Bootstrapping Spring Data Redis repositories in DEFAULT mode.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:31.051 INFO 15284 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Finished Spring Data repository scanning in 14 ms. Found 0 Redis repository interfaces.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:31.742 INFO 15284 [main] org.springframework.boot.web.embedded.tomcat.TomcatWebServer Tomcat initialized with port(s): 8877 (http)
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:31.748 INFO 15284 [main] org.apache.coyote.http11.Http11NioProtocol Initializing ProtocolHandler ["http-nio-8877"]
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:31.749 INFO 15284 [main] org.apache.catalina.core.StandardService Starting service [Tomcat]
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:31.749 INFO 15284 [main] org.apache.catalina.core.StandardEngine Starting Servlet engine: [Apache Tomcat/10.1.12]
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:31.830 INFO 15284 [main] org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] Initializing Spring embedded WebApplicationContext
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:31.830 INFO 15284 [main] org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext Root WebApplicationContext: initialization completed in 1598 ms
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:37.884 INFO 15284 [main] com.alibaba.druid.pool.DruidDataSource {dataSource-1} inited
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:42.196 INFO 15284 [main] org.quartz.impl.StdSchedulerFactory Using ConnectionProvider class 'org.quartz.utils.C3p0PoolingConnectionProvider' for data source 'default'
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:42.205 INFO 15284 [MLog-Init-Reporter] com.mchange.v2.log.MLog MLog clients using slf4j logging.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:42.222 INFO 15284 [main] com.mchange.v2.c3p0.C3P0Registry Initializing c3p0-0.9.5.2 [built 08-December-2015 22:06:04 -0800; debug? true; trace: 10]
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:42.246 INFO 15284 [main] org.quartz.impl.StdSchedulerFactory Using default implementation for ThreadExecutor
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:42.247 INFO 15284 [main] org.quartz.simpl.SimpleThreadPool Job execution threads will use class loader of thread: main
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:42.252 INFO 15284 [main] org.quartz.core.SchedulerSignalerImpl Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:42.253 INFO 15284 [main] org.quartz.core.QuartzScheduler Quartz Scheduler v.2.3.2 created.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:42.254 INFO 15284 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Using db table-based data access locking (synchronization).
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:42.255 INFO 15284 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore JobStoreCMT initialized.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:42.256 INFO 15284 [main] org.quartz.core.QuartzScheduler Scheduler meta-data: Quartz Scheduler (v2.3.2) 'DefaultQuartzScheduler' with instanceId 'NON_CLUSTERED'
+  Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
+  NOT STARTED.
+  Currently in standby mode.
+  Number of jobs executed: 0
+  Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
+  Using job-store 'org.springframework.scheduling.quartz.LocalDataSourceJobStore' - which supports persistence. and is not clustered.
+
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:42.256 INFO 15284 [main] org.quartz.impl.StdSchedulerFactory Quartz scheduler 'DefaultQuartzScheduler' initialized from an externally provided properties instance.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:42.256 INFO 15284 [main] org.quartz.impl.StdSchedulerFactory Quartz scheduler version: 2.3.2
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:42.256 INFO 15284 [main] org.quartz.core.QuartzScheduler JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@2338eeef
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:42.366 INFO 15284 [main] org.apache.coyote.http11.Http11NioProtocol Starting ProtocolHandler ["http-nio-8877"]
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:42.374 INFO 15284 [main] org.springframework.boot.web.embedded.tomcat.TomcatWebServer Tomcat started on port(s): 8877 (http) with context path ''
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:42.375 INFO 15284 [main] org.springframework.scheduling.quartz.SchedulerFactoryBean Starting Quartz Scheduler now
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:42.405 INFO 15284 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Freed 0 triggers from 'acquired' / 'blocked' state.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:42.414 INFO 15284 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Recovering 0 jobs that were in-progress at the time of the last shut-down.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:42.414 INFO 15284 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Recovery complete.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:42.417 INFO 15284 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Removed 0 'complete' triggers.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:42.420 INFO 15284 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Removed 0 stale fired job entries.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:42.438 INFO 15284 [main] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:42.445 INFO 15284 [main] cn.cslg.pas.Application Started Application in 12.71 seconds (process running for 13.331)
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:55.348 INFO 15284 [http-nio-8877-exec-1] org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] Initializing Spring DispatcherServlet 'dispatcherServlet'
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:55.348 INFO 15284 [http-nio-8877-exec-1] org.springframework.web.servlet.DispatcherServlet Initializing Servlet 'dispatcherServlet'
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:17:55.349 INFO 15284 [http-nio-8877-exec-1] org.springframework.web.servlet.DispatcherServlet Completed initialization in 1 ms
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:23.180 INFO 15284 [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED paused.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:23.199 INFO 15284 [SpringApplicationShutdownHook] org.springframework.scheduling.quartz.SchedulerFactoryBean Shutting down Quartz Scheduler
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:23.200 INFO 15284 [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutting down.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:23.200 INFO 15284 [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED paused.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:23.200 INFO 15284 [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutdown complete.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:23.216 INFO 15284 [SpringApplicationShutdownHook] com.alibaba.druid.pool.DruidDataSource {dataSource-1} closing ...
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:23.220 INFO 15284 [SpringApplicationShutdownHook] com.alibaba.druid.pool.DruidDataSource {dataSource-1} closed
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:28.877 INFO 8284 [main] cn.cslg.pas.Application Starting Application using Java 18.0.2 with PID 8284 (E:\IDEAProject\PAS\target\classes started by Admin in E:\IDEAProject\PAS)
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:28.879 INFO 8284 [main] cn.cslg.pas.Application The following 1 profile is active: "dev"
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:29.686 INFO 8284 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Multiple Spring Data modules found, entering strict repository configuration mode
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:29.687 INFO 8284 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Bootstrapping Spring Data Elasticsearch repositories in DEFAULT mode.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:29.721 INFO 8284 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Finished Spring Data repository scanning in 31 ms. Found 0 Elasticsearch repository interfaces.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:29.725 INFO 8284 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Multiple Spring Data modules found, entering strict repository configuration mode
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:29.726 INFO 8284 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Bootstrapping Spring Data Reactive Elasticsearch repositories in DEFAULT mode.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:29.741 INFO 8284 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Finished Spring Data repository scanning in 15 ms. Found 0 Reactive Elasticsearch repository interfaces.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:29.750 INFO 8284 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Multiple Spring Data modules found, entering strict repository configuration mode
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:29.751 INFO 8284 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Bootstrapping Spring Data Redis repositories in DEFAULT mode.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:29.783 INFO 8284 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Finished Spring Data repository scanning in 26 ms. Found 0 Redis repository interfaces.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:30.454 INFO 8284 [main] org.springframework.boot.web.embedded.tomcat.TomcatWebServer Tomcat initialized with port(s): 8877 (http)
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:30.460 INFO 8284 [main] org.apache.coyote.http11.Http11NioProtocol Initializing ProtocolHandler ["http-nio-8877"]
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:30.461 INFO 8284 [main] org.apache.catalina.core.StandardService Starting service [Tomcat]
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:30.461 INFO 8284 [main] org.apache.catalina.core.StandardEngine Starting Servlet engine: [Apache Tomcat/10.1.12]
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:30.557 INFO 8284 [main] org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] Initializing Spring embedded WebApplicationContext
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:30.557 INFO 8284 [main] org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext Root WebApplicationContext: initialization completed in 1633 ms
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:36.764 INFO 8284 [main] com.alibaba.druid.pool.DruidDataSource {dataSource-1} inited
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:41.495 INFO 8284 [main] org.quartz.impl.StdSchedulerFactory Using ConnectionProvider class 'org.quartz.utils.C3p0PoolingConnectionProvider' for data source 'default'
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:41.503 INFO 8284 [MLog-Init-Reporter] com.mchange.v2.log.MLog MLog clients using slf4j logging.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:41.521 INFO 8284 [main] com.mchange.v2.c3p0.C3P0Registry Initializing c3p0-0.9.5.2 [built 08-December-2015 22:06:04 -0800; debug? true; trace: 10]
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:41.546 INFO 8284 [main] org.quartz.impl.StdSchedulerFactory Using default implementation for ThreadExecutor
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:41.547 INFO 8284 [main] org.quartz.simpl.SimpleThreadPool Job execution threads will use class loader of thread: main
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:41.553 INFO 8284 [main] org.quartz.core.SchedulerSignalerImpl Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:41.553 INFO 8284 [main] org.quartz.core.QuartzScheduler Quartz Scheduler v.2.3.2 created.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:41.555 INFO 8284 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Using db table-based data access locking (synchronization).
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:41.556 INFO 8284 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore JobStoreCMT initialized.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:41.556 INFO 8284 [main] org.quartz.core.QuartzScheduler Scheduler meta-data: Quartz Scheduler (v2.3.2) 'DefaultQuartzScheduler' with instanceId 'NON_CLUSTERED'
+  Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
+  NOT STARTED.
+  Currently in standby mode.
+  Number of jobs executed: 0
+  Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
+  Using job-store 'org.springframework.scheduling.quartz.LocalDataSourceJobStore' - which supports persistence. and is not clustered.
+
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:41.556 INFO 8284 [main] org.quartz.impl.StdSchedulerFactory Quartz scheduler 'DefaultQuartzScheduler' initialized from an externally provided properties instance.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:41.556 INFO 8284 [main] org.quartz.impl.StdSchedulerFactory Quartz scheduler version: 2.3.2
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:41.556 INFO 8284 [main] org.quartz.core.QuartzScheduler JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@5d4042fc
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:41.670 INFO 8284 [main] org.apache.coyote.http11.Http11NioProtocol Starting ProtocolHandler ["http-nio-8877"]
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:41.678 INFO 8284 [main] org.springframework.boot.web.embedded.tomcat.TomcatWebServer Tomcat started on port(s): 8877 (http) with context path ''
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:41.679 INFO 8284 [main] org.springframework.scheduling.quartz.SchedulerFactoryBean Starting Quartz Scheduler now
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:41.711 INFO 8284 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Freed 0 triggers from 'acquired' / 'blocked' state.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:41.723 INFO 8284 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Recovering 0 jobs that were in-progress at the time of the last shut-down.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:41.723 INFO 8284 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Recovery complete.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:41.726 INFO 8284 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Removed 0 'complete' triggers.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:41.730 INFO 8284 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Removed 0 stale fired job entries.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:41.750 INFO 8284 [main] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started.
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:41.769 INFO 8284 [main] cn.cslg.pas.Application Started Application in 13.358 seconds (process running for 14.029)
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:47.965 INFO 8284 [http-nio-8877-exec-1] org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] Initializing Spring DispatcherServlet 'dispatcherServlet'
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:47.965 INFO 8284 [http-nio-8877-exec-1] org.springframework.web.servlet.DispatcherServlet Initializing Servlet 'dispatcherServlet'
+[pas:0.0.0.0:8877] [,] 2024-01-25 17:19:47.968 INFO 8284 [http-nio-8877-exec-1] org.springframework.web.servlet.DispatcherServlet Completed initialization in 3 ms
+[pas:0.0.0.0:8877] [,] 2024-01-25 23:10:40.064 INFO 8284 [lettuce-nioEventLoop-4-1] io.lettuce.core.protocol.CommandHandler null Unexpected exception during request: java.net.SocketException: Connection reset
+
+java.net.SocketException: Connection reset
+	at java.base/sun.nio.ch.SocketChannelImpl.throwConnectionReset(SocketChannelImpl.java:394)
+	at java.base/sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:426)
+	at io.netty.buffer.PooledByteBuf.setBytes(PooledByteBuf.java:254)
+	at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:1132)
+	at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:357)
+	at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:151)
+	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
+	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
+	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
+	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
+	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
+	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
+	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
+	at java.base/java.lang.Thread.run(Thread.java:833)
+
+[pas:0.0.0.0:8877] [,] 2024-01-25 23:10:40.108 INFO 8284 [lettuce-eventExecutorLoop-1-2] io.lettuce.core.protocol.ConnectionWatchdog Reconnecting, last destination was /192.168.1.24:6379
+[pas:0.0.0.0:8877] [,] 2024-01-25 23:10:49.105 INFO 8284 [lettuce-eventExecutorLoop-1-2] io.lettuce.core.protocol.ConnectionWatchdog Reconnecting, last destination was 192.168.1.24/<unresolved>:6379
+[pas:0.0.0.0:8877] [,] 2024-01-25 23:10:50.252 INFO 8284 [Druid-ConnectionPool-Create-1433583194] com.alibaba.druid.pool.DruidAbstractDataSource {dataSource-1} failContinuous is true
+[pas:0.0.0.0:8877] [,] 2024-01-25 23:10:55.291 INFO 8284 [Druid-ConnectionPool-Create-1433583194] com.alibaba.druid.pool.DruidAbstractDataSource {dataSource-1} failContinuous is false
+[pas:0.0.0.0:8877] [,] 2024-01-25 23:10:57.305 INFO 8284 [lettuce-eventExecutorLoop-1-4] io.lettuce.core.protocol.ConnectionWatchdog Reconnecting, last destination was 192.168.1.24/<unresolved>:6379
+[pas:0.0.0.0:8877] [,] 2024-01-25 23:10:57.318 INFO 8284 [lettuce-nioEventLoop-4-7] io.lettuce.core.protocol.ReconnectionHandler Reconnected to 192.168.1.24/<unresolved>:6379

+ 231 - 0
logs/pas/pas-info.log

@@ -4314,3 +4314,234 @@
 [pas:0.0.0.0:8877] [,] 2023-12-26 10:48:24.111 INFO 16320 [http-nio-8877-exec-1] org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] Initializing Spring DispatcherServlet 'dispatcherServlet'
 [pas:0.0.0.0:8877] [,] 2023-12-26 10:48:24.112 INFO 16320 [http-nio-8877-exec-1] org.springframework.web.servlet.DispatcherServlet Initializing Servlet 'dispatcherServlet'
 [pas:0.0.0.0:8877] [,] 2023-12-26 10:48:24.114 INFO 16320 [http-nio-8877-exec-1] org.springframework.web.servlet.DispatcherServlet Completed initialization in 2 ms
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:28.689 INFO 9388 [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED paused.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:28.703 INFO 9388 [SpringApplicationShutdownHook] org.springframework.scheduling.quartz.SchedulerFactoryBean Shutting down Quartz Scheduler
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:28.703 INFO 9388 [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutting down.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:28.703 INFO 9388 [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED paused.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:28.703 INFO 9388 [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutdown complete.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:28.716 INFO 9388 [SpringApplicationShutdownHook] com.alibaba.druid.pool.DruidDataSource {dataSource-1} closing ...
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:28.720 INFO 9388 [SpringApplicationShutdownHook] com.alibaba.druid.pool.DruidDataSource {dataSource-1} closed
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:41.062 INFO 9412 [main] cn.cslg.pas.Application Starting Application using Java 18.0.2 with PID 9412 (E:\IDEAProject\PAS\target\classes started by Admin in E:\IDEAProject\PAS)
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:41.063 INFO 9412 [main] cn.cslg.pas.Application The following 1 profile is active: "dev"
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:41.867 INFO 9412 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Multiple Spring Data modules found, entering strict repository configuration mode
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:41.868 INFO 9412 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Bootstrapping Spring Data Elasticsearch repositories in DEFAULT mode.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:41.903 INFO 9412 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Finished Spring Data repository scanning in 32 ms. Found 0 Elasticsearch repository interfaces.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:41.907 INFO 9412 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Multiple Spring Data modules found, entering strict repository configuration mode
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:41.908 INFO 9412 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Bootstrapping Spring Data Reactive Elasticsearch repositories in DEFAULT mode.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:41.923 INFO 9412 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Finished Spring Data repository scanning in 15 ms. Found 0 Reactive Elasticsearch repository interfaces.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:41.932 INFO 9412 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Multiple Spring Data modules found, entering strict repository configuration mode
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:41.933 INFO 9412 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Bootstrapping Spring Data Redis repositories in DEFAULT mode.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:41.951 INFO 9412 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Finished Spring Data repository scanning in 14 ms. Found 0 Redis repository interfaces.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:42.590 INFO 9412 [main] org.springframework.boot.web.embedded.tomcat.TomcatWebServer Tomcat initialized with port(s): 8877 (http)
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:42.596 INFO 9412 [main] org.apache.coyote.http11.Http11NioProtocol Initializing ProtocolHandler ["http-nio-8877"]
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:42.597 INFO 9412 [main] org.apache.catalina.core.StandardService Starting service [Tomcat]
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:42.597 INFO 9412 [main] org.apache.catalina.core.StandardEngine Starting Servlet engine: [Apache Tomcat/10.1.12]
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:42.681 INFO 9412 [main] org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] Initializing Spring embedded WebApplicationContext
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:42.681 INFO 9412 [main] org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext Root WebApplicationContext: initialization completed in 1582 ms
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:48.633 INFO 9412 [main] com.alibaba.druid.pool.DruidDataSource {dataSource-1} inited
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:52.932 INFO 9412 [main] org.quartz.impl.StdSchedulerFactory Using ConnectionProvider class 'org.quartz.utils.C3p0PoolingConnectionProvider' for data source 'default'
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:52.940 INFO 9412 [MLog-Init-Reporter] com.mchange.v2.log.MLog MLog clients using slf4j logging.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:52.958 INFO 9412 [main] com.mchange.v2.c3p0.C3P0Registry Initializing c3p0-0.9.5.2 [built 08-December-2015 22:06:04 -0800; debug? true; trace: 10]
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:52.982 INFO 9412 [main] org.quartz.impl.StdSchedulerFactory Using default implementation for ThreadExecutor
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:52.983 INFO 9412 [main] org.quartz.simpl.SimpleThreadPool Job execution threads will use class loader of thread: main
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:52.989 INFO 9412 [main] org.quartz.core.SchedulerSignalerImpl Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:52.989 INFO 9412 [main] org.quartz.core.QuartzScheduler Quartz Scheduler v.2.3.2 created.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:52.991 INFO 9412 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Using db table-based data access locking (synchronization).
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:52.992 INFO 9412 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore JobStoreCMT initialized.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:52.992 INFO 9412 [main] org.quartz.core.QuartzScheduler Scheduler meta-data: Quartz Scheduler (v2.3.2) 'DefaultQuartzScheduler' with instanceId 'NON_CLUSTERED'
+  Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
+  NOT STARTED.
+  Currently in standby mode.
+  Number of jobs executed: 0
+  Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
+  Using job-store 'org.springframework.scheduling.quartz.LocalDataSourceJobStore' - which supports persistence. and is not clustered.
+
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:52.993 INFO 9412 [main] org.quartz.impl.StdSchedulerFactory Quartz scheduler 'DefaultQuartzScheduler' initialized from an externally provided properties instance.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:52.993 INFO 9412 [main] org.quartz.impl.StdSchedulerFactory Quartz scheduler version: 2.3.2
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:52.993 INFO 9412 [main] org.quartz.core.QuartzScheduler JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@2338eeef
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:53.100 INFO 9412 [main] org.apache.coyote.http11.Http11NioProtocol Starting ProtocolHandler ["http-nio-8877"]
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:53.108 INFO 9412 [main] org.springframework.boot.web.embedded.tomcat.TomcatWebServer Tomcat started on port(s): 8877 (http) with context path ''
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:53.109 INFO 9412 [main] org.springframework.scheduling.quartz.SchedulerFactoryBean Starting Quartz Scheduler now
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:53.142 INFO 9412 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Freed 0 triggers from 'acquired' / 'blocked' state.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:53.155 INFO 9412 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Recovering 0 jobs that were in-progress at the time of the last shut-down.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:53.155 INFO 9412 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Recovery complete.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:53.161 INFO 9412 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Removed 0 'complete' triggers.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:53.168 INFO 9412 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Removed 0 stale fired job entries.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:53.188 INFO 9412 [main] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:41:53.200 INFO 9412 [main] cn.cslg.pas.Application Started Application in 12.595 seconds (process running for 13.387)
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:46:21.215 INFO 9412 [http-nio-8877-exec-3] org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] Initializing Spring DispatcherServlet 'dispatcherServlet'
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:46:21.216 INFO 9412 [http-nio-8877-exec-3] org.springframework.web.servlet.DispatcherServlet Initializing Servlet 'dispatcherServlet'
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:46:21.217 INFO 9412 [http-nio-8877-exec-3] org.springframework.web.servlet.DispatcherServlet Completed initialization in 1 ms
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:46:21.691 INFO 9412 [http-nio-8877-exec-3] cn.cslg.pas.common.utils.JsonUtils after ----> title:1, desc:2
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:46:21.780 INFO 9412 [http-nio-8877-exec-3] cn.cslg.pas.common.utils.JsonUtils after ----> title:1, desc:2
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:37.106 INFO 9412 [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED paused.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:37.124 INFO 9412 [SpringApplicationShutdownHook] org.springframework.scheduling.quartz.SchedulerFactoryBean Shutting down Quartz Scheduler
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:37.124 INFO 9412 [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutting down.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:37.124 INFO 9412 [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED paused.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:37.124 INFO 9412 [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutdown complete.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:37.136 INFO 9412 [SpringApplicationShutdownHook] com.alibaba.druid.pool.DruidDataSource {dataSource-1} closing ...
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:37.139 INFO 9412 [SpringApplicationShutdownHook] com.alibaba.druid.pool.DruidDataSource {dataSource-1} closed
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:43.579 INFO 20648 [main] cn.cslg.pas.Application Starting Application using Java 18.0.2 with PID 20648 (E:\IDEAProject\PAS\target\classes started by Admin in E:\IDEAProject\PAS)
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:43.580 INFO 20648 [main] cn.cslg.pas.Application The following 1 profile is active: "dev"
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:44.386 INFO 20648 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Multiple Spring Data modules found, entering strict repository configuration mode
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:44.388 INFO 20648 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Bootstrapping Spring Data Elasticsearch repositories in DEFAULT mode.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:44.422 INFO 20648 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Finished Spring Data repository scanning in 31 ms. Found 0 Elasticsearch repository interfaces.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:44.426 INFO 20648 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Multiple Spring Data modules found, entering strict repository configuration mode
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:44.426 INFO 20648 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Bootstrapping Spring Data Reactive Elasticsearch repositories in DEFAULT mode.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:44.441 INFO 20648 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Finished Spring Data repository scanning in 14 ms. Found 0 Reactive Elasticsearch repository interfaces.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:44.450 INFO 20648 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Multiple Spring Data modules found, entering strict repository configuration mode
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:44.450 INFO 20648 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Bootstrapping Spring Data Redis repositories in DEFAULT mode.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:44.481 INFO 20648 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Finished Spring Data repository scanning in 25 ms. Found 0 Redis repository interfaces.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:45.107 INFO 20648 [main] org.springframework.boot.web.embedded.tomcat.TomcatWebServer Tomcat initialized with port(s): 8877 (http)
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:45.112 INFO 20648 [main] org.apache.coyote.http11.Http11NioProtocol Initializing ProtocolHandler ["http-nio-8877"]
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:45.113 INFO 20648 [main] org.apache.catalina.core.StandardService Starting service [Tomcat]
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:45.113 INFO 20648 [main] org.apache.catalina.core.StandardEngine Starting Servlet engine: [Apache Tomcat/10.1.12]
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:45.204 INFO 20648 [main] org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] Initializing Spring embedded WebApplicationContext
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:45.204 INFO 20648 [main] org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext Root WebApplicationContext: initialization completed in 1591 ms
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:51.576 INFO 20648 [main] com.alibaba.druid.pool.DruidDataSource {dataSource-1} inited
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:55.846 INFO 20648 [main] org.quartz.impl.StdSchedulerFactory Using ConnectionProvider class 'org.quartz.utils.C3p0PoolingConnectionProvider' for data source 'default'
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:55.858 INFO 20648 [MLog-Init-Reporter] com.mchange.v2.log.MLog MLog clients using slf4j logging.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:55.876 INFO 20648 [main] com.mchange.v2.c3p0.C3P0Registry Initializing c3p0-0.9.5.2 [built 08-December-2015 22:06:04 -0800; debug? true; trace: 10]
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:55.900 INFO 20648 [main] org.quartz.impl.StdSchedulerFactory Using default implementation for ThreadExecutor
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:55.901 INFO 20648 [main] org.quartz.simpl.SimpleThreadPool Job execution threads will use class loader of thread: main
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:55.907 INFO 20648 [main] org.quartz.core.SchedulerSignalerImpl Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:55.907 INFO 20648 [main] org.quartz.core.QuartzScheduler Quartz Scheduler v.2.3.2 created.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:55.909 INFO 20648 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Using db table-based data access locking (synchronization).
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:55.910 INFO 20648 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore JobStoreCMT initialized.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:55.910 INFO 20648 [main] org.quartz.core.QuartzScheduler Scheduler meta-data: Quartz Scheduler (v2.3.2) 'DefaultQuartzScheduler' with instanceId 'NON_CLUSTERED'
+  Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
+  NOT STARTED.
+  Currently in standby mode.
+  Number of jobs executed: 0
+  Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
+  Using job-store 'org.springframework.scheduling.quartz.LocalDataSourceJobStore' - which supports persistence. and is not clustered.
+
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:55.910 INFO 20648 [main] org.quartz.impl.StdSchedulerFactory Quartz scheduler 'DefaultQuartzScheduler' initialized from an externally provided properties instance.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:55.910 INFO 20648 [main] org.quartz.impl.StdSchedulerFactory Quartz scheduler version: 2.3.2
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:55.911 INFO 20648 [main] org.quartz.core.QuartzScheduler JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@35570a84
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:56.015 INFO 20648 [main] org.apache.coyote.http11.Http11NioProtocol Starting ProtocolHandler ["http-nio-8877"]
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:56.024 INFO 20648 [main] org.springframework.boot.web.embedded.tomcat.TomcatWebServer Tomcat started on port(s): 8877 (http) with context path ''
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:56.024 INFO 20648 [main] org.springframework.scheduling.quartz.SchedulerFactoryBean Starting Quartz Scheduler now
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:56.057 INFO 20648 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Freed 0 triggers from 'acquired' / 'blocked' state.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:56.071 INFO 20648 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Recovering 0 jobs that were in-progress at the time of the last shut-down.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:56.071 INFO 20648 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Recovery complete.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:56.074 INFO 20648 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Removed 0 'complete' triggers.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:56.077 INFO 20648 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Removed 0 stale fired job entries.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:56.094 INFO 20648 [main] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:56.102 INFO 20648 [main] cn.cslg.pas.Application Started Application in 13.026 seconds (process running for 13.755)
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:56.765 INFO 20648 [http-nio-8877-exec-1] org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] Initializing Spring DispatcherServlet 'dispatcherServlet'
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:56.765 INFO 20648 [http-nio-8877-exec-1] org.springframework.web.servlet.DispatcherServlet Initializing Servlet 'dispatcherServlet'
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:49:56.767 INFO 20648 [http-nio-8877-exec-1] org.springframework.web.servlet.DispatcherServlet Completed initialization in 1 ms
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:38.040 INFO 20648 [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED paused.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:38.058 INFO 20648 [SpringApplicationShutdownHook] org.springframework.scheduling.quartz.SchedulerFactoryBean Shutting down Quartz Scheduler
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:38.058 INFO 20648 [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutting down.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:38.058 INFO 20648 [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED paused.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:38.058 INFO 20648 [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutdown complete.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:38.070 INFO 20648 [SpringApplicationShutdownHook] com.alibaba.druid.pool.DruidDataSource {dataSource-1} closing ...
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:38.073 INFO 20648 [SpringApplicationShutdownHook] com.alibaba.druid.pool.DruidDataSource {dataSource-1} closed
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:43.014 INFO 15440 [main] cn.cslg.pas.Application Starting Application using Java 18.0.2 with PID 15440 (E:\IDEAProject\PAS\target\classes started by Admin in E:\IDEAProject\PAS)
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:43.015 INFO 15440 [main] cn.cslg.pas.Application The following 1 profile is active: "dev"
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:43.872 INFO 15440 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Multiple Spring Data modules found, entering strict repository configuration mode
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:43.874 INFO 15440 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Bootstrapping Spring Data Elasticsearch repositories in DEFAULT mode.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:43.915 INFO 15440 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Finished Spring Data repository scanning in 37 ms. Found 0 Elasticsearch repository interfaces.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:43.920 INFO 15440 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Multiple Spring Data modules found, entering strict repository configuration mode
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:43.920 INFO 15440 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Bootstrapping Spring Data Reactive Elasticsearch repositories in DEFAULT mode.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:43.936 INFO 15440 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Finished Spring Data repository scanning in 15 ms. Found 0 Reactive Elasticsearch repository interfaces.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:43.946 INFO 15440 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Multiple Spring Data modules found, entering strict repository configuration mode
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:43.947 INFO 15440 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Bootstrapping Spring Data Redis repositories in DEFAULT mode.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:43.983 INFO 15440 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Finished Spring Data repository scanning in 30 ms. Found 0 Redis repository interfaces.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:44.715 INFO 15440 [main] org.springframework.boot.web.embedded.tomcat.TomcatWebServer Tomcat initialized with port(s): 8877 (http)
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:44.722 INFO 15440 [main] org.apache.coyote.http11.Http11NioProtocol Initializing ProtocolHandler ["http-nio-8877"]
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:44.723 INFO 15440 [main] org.apache.catalina.core.StandardService Starting service [Tomcat]
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:44.723 INFO 15440 [main] org.apache.catalina.core.StandardEngine Starting Servlet engine: [Apache Tomcat/10.1.12]
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:44.814 INFO 15440 [main] org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] Initializing Spring embedded WebApplicationContext
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:44.815 INFO 15440 [main] org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext Root WebApplicationContext: initialization completed in 1758 ms
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:51.663 INFO 15440 [main] com.alibaba.druid.pool.DruidDataSource {dataSource-1} inited
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:56.010 INFO 15440 [main] org.quartz.impl.StdSchedulerFactory Using ConnectionProvider class 'org.quartz.utils.C3p0PoolingConnectionProvider' for data source 'default'
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:56.018 INFO 15440 [MLog-Init-Reporter] com.mchange.v2.log.MLog MLog clients using slf4j logging.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:56.040 INFO 15440 [main] com.mchange.v2.c3p0.C3P0Registry Initializing c3p0-0.9.5.2 [built 08-December-2015 22:06:04 -0800; debug? true; trace: 10]
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:56.070 INFO 15440 [main] org.quartz.impl.StdSchedulerFactory Using default implementation for ThreadExecutor
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:56.071 INFO 15440 [main] org.quartz.simpl.SimpleThreadPool Job execution threads will use class loader of thread: main
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:56.077 INFO 15440 [main] org.quartz.core.SchedulerSignalerImpl Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:56.078 INFO 15440 [main] org.quartz.core.QuartzScheduler Quartz Scheduler v.2.3.2 created.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:56.079 INFO 15440 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Using db table-based data access locking (synchronization).
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:56.080 INFO 15440 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore JobStoreCMT initialized.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:56.081 INFO 15440 [main] org.quartz.core.QuartzScheduler Scheduler meta-data: Quartz Scheduler (v2.3.2) 'DefaultQuartzScheduler' with instanceId 'NON_CLUSTERED'
+  Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
+  NOT STARTED.
+  Currently in standby mode.
+  Number of jobs executed: 0
+  Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
+  Using job-store 'org.springframework.scheduling.quartz.LocalDataSourceJobStore' - which supports persistence. and is not clustered.
+
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:56.081 INFO 15440 [main] org.quartz.impl.StdSchedulerFactory Quartz scheduler 'DefaultQuartzScheduler' initialized from an externally provided properties instance.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:56.081 INFO 15440 [main] org.quartz.impl.StdSchedulerFactory Quartz scheduler version: 2.3.2
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:56.081 INFO 15440 [main] org.quartz.core.QuartzScheduler JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@61186191
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:56.187 INFO 15440 [main] org.apache.coyote.http11.Http11NioProtocol Starting ProtocolHandler ["http-nio-8877"]
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:56.195 INFO 15440 [main] org.springframework.boot.web.embedded.tomcat.TomcatWebServer Tomcat started on port(s): 8877 (http) with context path ''
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:56.196 INFO 15440 [main] org.springframework.scheduling.quartz.SchedulerFactoryBean Starting Quartz Scheduler now
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:56.243 INFO 15440 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Freed 0 triggers from 'acquired' / 'blocked' state.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:56.256 INFO 15440 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Recovering 0 jobs that were in-progress at the time of the last shut-down.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:56.256 INFO 15440 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Recovery complete.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:56.260 INFO 15440 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Removed 0 'complete' triggers.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:56.265 INFO 15440 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Removed 0 stale fired job entries.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:56.281 INFO 15440 [main] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:50:56.289 INFO 15440 [main] cn.cslg.pas.Application Started Application in 14.032 seconds (process running for 16.468)
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:10.899 INFO 15440 [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED paused.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:10.913 INFO 15440 [SpringApplicationShutdownHook] org.springframework.scheduling.quartz.SchedulerFactoryBean Shutting down Quartz Scheduler
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:10.913 INFO 15440 [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutting down.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:10.913 INFO 15440 [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED paused.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:10.913 INFO 15440 [SpringApplicationShutdownHook] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutdown complete.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:10.925 INFO 15440 [SpringApplicationShutdownHook] com.alibaba.druid.pool.DruidDataSource {dataSource-1} closing ...
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:10.928 INFO 15440 [SpringApplicationShutdownHook] com.alibaba.druid.pool.DruidDataSource {dataSource-1} closed
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:17.528 INFO 11172 [main] cn.cslg.pas.Application Starting Application using Java 18.0.2 with PID 11172 (E:\IDEAProject\PAS\target\classes started by Admin in E:\IDEAProject\PAS)
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:17.529 INFO 11172 [main] cn.cslg.pas.Application The following 1 profile is active: "dev"
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:18.311 INFO 11172 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Multiple Spring Data modules found, entering strict repository configuration mode
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:18.313 INFO 11172 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Bootstrapping Spring Data Elasticsearch repositories in DEFAULT mode.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:18.347 INFO 11172 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Finished Spring Data repository scanning in 32 ms. Found 0 Elasticsearch repository interfaces.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:18.351 INFO 11172 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Multiple Spring Data modules found, entering strict repository configuration mode
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:18.351 INFO 11172 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Bootstrapping Spring Data Reactive Elasticsearch repositories in DEFAULT mode.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:18.367 INFO 11172 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Finished Spring Data repository scanning in 15 ms. Found 0 Reactive Elasticsearch repository interfaces.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:18.375 INFO 11172 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Multiple Spring Data modules found, entering strict repository configuration mode
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:18.376 INFO 11172 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Bootstrapping Spring Data Redis repositories in DEFAULT mode.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:18.396 INFO 11172 [main] org.springframework.data.repository.config.RepositoryConfigurationDelegate Finished Spring Data repository scanning in 14 ms. Found 0 Redis repository interfaces.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:19.038 INFO 11172 [main] org.springframework.boot.web.embedded.tomcat.TomcatWebServer Tomcat initialized with port(s): 8877 (http)
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:19.044 INFO 11172 [main] org.apache.coyote.http11.Http11NioProtocol Initializing ProtocolHandler ["http-nio-8877"]
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:19.045 INFO 11172 [main] org.apache.catalina.core.StandardService Starting service [Tomcat]
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:19.045 INFO 11172 [main] org.apache.catalina.core.StandardEngine Starting Servlet engine: [Apache Tomcat/10.1.12]
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:19.128 INFO 11172 [main] org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] Initializing Spring embedded WebApplicationContext
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:19.128 INFO 11172 [main] org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext Root WebApplicationContext: initialization completed in 1560 ms
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:25.318 INFO 11172 [main] com.alibaba.druid.pool.DruidDataSource {dataSource-1} inited
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:29.776 INFO 11172 [main] org.quartz.impl.StdSchedulerFactory Using ConnectionProvider class 'org.quartz.utils.C3p0PoolingConnectionProvider' for data source 'default'
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:29.785 INFO 11172 [MLog-Init-Reporter] com.mchange.v2.log.MLog MLog clients using slf4j logging.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:29.812 INFO 11172 [main] com.mchange.v2.c3p0.C3P0Registry Initializing c3p0-0.9.5.2 [built 08-December-2015 22:06:04 -0800; debug? true; trace: 10]
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:29.836 INFO 11172 [main] org.quartz.impl.StdSchedulerFactory Using default implementation for ThreadExecutor
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:29.837 INFO 11172 [main] org.quartz.simpl.SimpleThreadPool Job execution threads will use class loader of thread: main
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:29.842 INFO 11172 [main] org.quartz.core.SchedulerSignalerImpl Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:29.842 INFO 11172 [main] org.quartz.core.QuartzScheduler Quartz Scheduler v.2.3.2 created.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:29.844 INFO 11172 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Using db table-based data access locking (synchronization).
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:29.845 INFO 11172 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore JobStoreCMT initialized.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:29.845 INFO 11172 [main] org.quartz.core.QuartzScheduler Scheduler meta-data: Quartz Scheduler (v2.3.2) 'DefaultQuartzScheduler' with instanceId 'NON_CLUSTERED'
+  Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
+  NOT STARTED.
+  Currently in standby mode.
+  Number of jobs executed: 0
+  Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
+  Using job-store 'org.springframework.scheduling.quartz.LocalDataSourceJobStore' - which supports persistence. and is not clustered.
+
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:29.845 INFO 11172 [main] org.quartz.impl.StdSchedulerFactory Quartz scheduler 'DefaultQuartzScheduler' initialized from an externally provided properties instance.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:29.845 INFO 11172 [main] org.quartz.impl.StdSchedulerFactory Quartz scheduler version: 2.3.2
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:29.846 INFO 11172 [main] org.quartz.core.QuartzScheduler JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@7856b790
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:29.958 INFO 11172 [main] org.apache.coyote.http11.Http11NioProtocol Starting ProtocolHandler ["http-nio-8877"]
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:29.967 INFO 11172 [main] org.springframework.boot.web.embedded.tomcat.TomcatWebServer Tomcat started on port(s): 8877 (http) with context path ''
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:29.968 INFO 11172 [main] org.springframework.scheduling.quartz.SchedulerFactoryBean Starting Quartz Scheduler now
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:30.001 INFO 11172 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Freed 0 triggers from 'acquired' / 'blocked' state.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:30.013 INFO 11172 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Recovering 0 jobs that were in-progress at the time of the last shut-down.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:30.013 INFO 11172 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Recovery complete.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:30.016 INFO 11172 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Removed 0 'complete' triggers.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:30.019 INFO 11172 [main] org.springframework.scheduling.quartz.LocalDataSourceJobStore Removed 0 stale fired job entries.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:30.040 INFO 11172 [main] org.quartz.core.QuartzScheduler Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started.
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:30.067 INFO 11172 [main] cn.cslg.pas.Application Started Application in 13.054 seconds (process running for 13.77)
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:34.523 INFO 11172 [http-nio-8877-exec-1] org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] Initializing Spring DispatcherServlet 'dispatcherServlet'
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:34.523 INFO 11172 [http-nio-8877-exec-1] org.springframework.web.servlet.DispatcherServlet Initializing Servlet 'dispatcherServlet'
+[pas:0.0.0.0:8877] [,] 2024-01-26 09:51:34.524 INFO 11172 [http-nio-8877-exec-1] org.springframework.web.servlet.DispatcherServlet Completed initialization in 1 ms

+ 9 - 6
src/main/java/cn/cslg/pas/common/core/base/RedisConf.java

@@ -17,10 +17,13 @@ public class RedisConf {
     public final static String USER_FIELD = "user-field";
     public final static String FIELD_ORDER = "field-order";
     public final static String USER_IMPORT = "user-import";
-    public final static String PROJECT_FIELD_ORDER="project_field_order";
-    public final static String TASK_FIELD_ORDER="task_field_order";
-    public final static  String PATENT_COUNT="patent-count";
-    public final static String TASK_FIELD_COUNT="task_field_count";
-    public final static String PROJECT_FIELD_COUNT="project_field_count";
-    public final static String FIELD_COUNT="field_count";
+    public final static String PROJECT_FIELD_ORDER = "project_field_order";
+    public final static String TASK_FIELD_ORDER = "task_field_order";
+    public final static String PATENT_COUNT = "patent-count";
+    public final static String TASK_FIELD_COUNT = "task_field_count";
+    public final static String PROJECT_FIELD_COUNT = "project_field_count";
+    public final static String FIELD_COUNT = "field_count";
+    public final static String PROJECT = "project";
+    public final static String PRODUCT = "product";
+    public final static String EVIDENCE_REASON = "evidence_reason";
 }

+ 1 - 0
src/main/java/cn/cslg/pas/common/dto/AddSelfFieldDTO.java

@@ -13,5 +13,6 @@ public class AddSelfFieldDTO {
     private String tableName;
     private List<PersonSelfFieldVO> value;
     private Integer projectId;
+    private Integer productId;
 
 }

+ 1 - 0
src/main/java/cn/cslg/pas/common/dto/ImportTaskDTO.java

@@ -85,4 +85,5 @@ public class ImportTaskDTO {
 
     private List<EsCustomFieldDTO> fieldDTOS;
     private List<String> patentNos;
+    private Integer productId;
 }

+ 14 - 0
src/main/java/cn/cslg/pas/common/dto/QueryPatentDigProjectFilesDTO.java

@@ -0,0 +1,14 @@
+package cn.cslg.pas.common.dto;
+
+import lombok.Data;
+
+/**
+ * @Author xiexiang
+ * @Date 2024/1/24
+ */
+@Data
+public class QueryPatentDigProjectFilesDTO {
+    private Integer projectId;
+    private Integer processId;
+    private Integer taskId;
+}

+ 2 - 2
src/main/java/cn/cslg/pas/common/dto/RetrieveRecordQueryDTO.java

@@ -7,12 +7,12 @@ public class RetrieveRecordQueryDTO {
     /**
      * 每页条数
      */
-    private Integer size;
+    private Long size;
 
     /**
      * 当前页数
      */
-    private Integer current;
+    private Long current;
 
     /**
      * 数据总数

+ 54 - 0
src/main/java/cn/cslg/pas/common/dto/business/AsInvalidReasonHistoryDTO.java

@@ -0,0 +1,54 @@
+package cn.cslg.pas.common.dto.business;
+
+import cn.cslg.pas.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 作为无效证据使用历史dto
+ * @Author xiexiang
+ * @Date 2024/1/19
+ */
+@Data
+public class AsInvalidReasonHistoryDTO {
+    private Integer id;
+    /**
+     * 无效案号
+     */
+    private String invalidCaseNum;
+
+    /**
+     * 被无效的专利
+     */
+    private String invalidedPatent;
+
+    /**
+     * 被无效的时间
+     */
+    @JsonFormat(
+            pattern = "yyyy-MM-dd",
+            timezone = "GMT+8"
+    )
+    private Date invalidTime;
+
+    /**
+     * 无效理由
+     */
+    private String invalidReason;
+
+    /**
+     * 是否被审查员认可
+     */
+    private Boolean ifApproved;
+
+    /**
+     * 专利号
+     */
+    private String patentNo;
+
+    private List<String> fileGuids;
+}

+ 58 - 0
src/main/java/cn/cslg/pas/common/dto/business/InvalidRecordDTO.java

@@ -0,0 +1,58 @@
+package cn.cslg.pas.common.dto.business;
+
+import cn.cslg.pas.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Author xiexiang
+ * @Date 2024/1/19
+ */
+@Data
+public class InvalidRecordDTO {
+    private Integer id;
+    /**
+     * 专利号
+     */
+    private String patentNo;
+
+    /**
+     * 无效案号
+     */
+    private String invalidCaseNum;
+
+    /**
+     * 无效时间
+     */
+    @JsonFormat(
+            pattern = "yyyy-MM-dd",
+            timezone = "GMT+8"
+    )
+    private Date invalidTime;
+
+    /**
+     * 判决时间
+     */
+    @JsonFormat(
+            pattern = "yyyy-MM-dd",
+            timezone = "GMT+8"
+    )
+    private Date judgementTime;
+
+    /**
+     * 结果
+     */
+    private String result;
+
+    /**
+     * 无效申请人
+     */
+    private String invalidApplicant;
+
+    private List<String> fileGuids;
+}

+ 2 - 1
src/main/java/cn/cslg/pas/common/dto/business/LitigationHistoryDTO.java

@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * @Author xiexiang
@@ -50,7 +51,7 @@ public class LitigationHistoryDTO {
     /**
      * 附件id
      */
-    private String fileGuid;
+    private List<String> fileGuids;
 
     /**
      * projectId

+ 1 - 1
src/main/java/cn/cslg/pas/common/dto/business/MarkTaskDTO.java

@@ -20,6 +20,6 @@ private Integer projectId;
 public  static class MarkedField{
     private Integer fieldId;
     private Integer fieldType;
-    private List<String> values;
+    private List<Integer> values;
 }
 }

+ 16 - 0
src/main/java/cn/cslg/pas/common/dto/business/OtherPatentInfoDTO.java

@@ -0,0 +1,16 @@
+package cn.cslg.pas.common.dto.business;
+
+import lombok.Data;
+
+/**
+ * @Author xiexiang
+ * @Date 2024/1/18
+ */
+@Data
+public class OtherPatentInfoDTO {
+    private String patentNo;
+    private Integer projectId;
+    private Integer current;
+    private Integer size;
+
+}

+ 1 - 0
src/main/java/cn/cslg/pas/common/dto/business/QueryTreeNodeDTO.java

@@ -25,5 +25,6 @@ public class QueryTreeNodeDTO {
      * 节点名称
      */
     private String name;
+    private Integer projectId;
 
 }

+ 3 - 0
src/main/java/cn/cslg/pas/common/dto/business/ReportProjectDTO.java

@@ -74,4 +74,7 @@ public class ReportProjectDTO {
     private Boolean ifSecondInvalid;
     @Schema(description = "主被动类型")
     private Integer actType;
+    private Integer associateReportId;
+    private List<Integer> copyIds;
+    private Boolean track;
 }

+ 3 - 5
src/main/java/cn/cslg/pas/common/dto/business/ReviewHistoryDTO.java

@@ -6,6 +6,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * 审查历史
@@ -37,11 +38,6 @@ public class ReviewHistoryDTO {
     private String reviewExplain;
 
     /**
-     * 文件id
-     */
-    private String fileGuid;
-
-    /**
      * 所属project
      */
     private Integer projectId;
@@ -51,4 +47,6 @@ public class ReviewHistoryDTO {
      */
     private String patentNo;
 
+    private List<String> fileGuids;
+
 }

+ 19 - 0
src/main/java/cn/cslg/pas/common/dto/es/EsMergePersonDTO.java

@@ -0,0 +1,19 @@
+package cn.cslg.pas.common.dto.es;
+
+import lombok.Data;
+
+@Data
+public class EsMergePersonDTO {
+
+    private String id;
+
+    private String routing;
+
+    private String name;
+
+    private Integer order;
+
+    private String type;
+
+    private String projectId;
+}

+ 28 - 0
src/main/java/cn/cslg/pas/common/dto/es/EsValueCurveDTO.java

@@ -0,0 +1,28 @@
+package cn.cslg.pas.common.dto.es;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class EsValueCurveDTO {
+
+    //0月  1季  2年
+    private Integer timeType;
+
+    //营销时间
+    private String time;
+
+    //营销地区
+    private String saleArea;
+
+    //销售额(万元)
+    private Double saleMoney;
+
+    //自定义许可费
+    private Double customLicense;
+
+    //许可费用(万元)
+    private Double licenseFee;
+
+}

+ 28 - 0
src/main/java/cn/cslg/pas/common/dto/es/SelectValueCurveDTO.java

@@ -0,0 +1,28 @@
+package cn.cslg.pas.common.dto.es;
+
+import lombok.Data;
+
+@Data
+public class SelectValueCurveDTO {
+
+    //0月  1季  2年
+    private Integer timeType;
+
+    //营销时间
+    private String saleTime;
+
+    //营销地区
+    private String saleArea;
+
+    //销售额(万元)
+    private Double saleMoney;
+
+    //自定义许可费
+    private Double customLicense;
+
+    //许可费用(万元)
+    private Double licenseFee;
+
+    //许可时间
+    private String licenseTime;
+}

+ 8 - 4
src/main/java/cn/cslg/pas/common/dto/invalidDTO/AddProofGroupDTO.java

@@ -9,6 +9,7 @@ import java.util.List;
 
 /**
  * 证据组合
+ *
  * @Author xiexiang
  * @Date 2023/12/25
  */
@@ -34,9 +35,12 @@ public class AddProofGroupDTO {
      */
     private Integer claimId;
 
-    /**
-     * 证据组合说明
-     */
-    private List<String> descriptions;
+    private List<Descriptions> descriptions;
+
+    @Data
+    public static class Descriptions {
+        private String description1;
+        private String description2;
 
+    }
 }

+ 3 - 7
src/main/java/cn/cslg/pas/common/dto/patentCount/GetEsAllPersonDTO.java

@@ -8,13 +8,9 @@ import java.util.List;
 @Data
 public class GetEsAllPersonDTO {
 
-    private List<String> applicant;
+    private List<String> mergeApplicant;
 
-    private List<String> rightHolder;
+    private List<String> mergeRightHolder;
 
-    private List<String> inventor;
-
-    private PersonAddress applicantAddr;
-
-    private PersonAddress rightHolderAddr;
+    private List<String> mergeInventor;
 }

+ 6 - 0
src/main/java/cn/cslg/pas/common/model/request/QueryRequest.java

@@ -20,4 +20,10 @@ public class QueryRequest {
     private List<EsCustomFieldValueDTO> customFields;
     private Integer taskId;
     private List<String> patentNos;
+    //商品化专利
+    private Integer productId;
+    //商品化专利标识
+    private String from;
+    //专利详情中商品化专用ids
+    private List<Integer> productIds;
 }

+ 22 - 3
src/main/java/cn/cslg/pas/common/utils/PatentRightUtils.java

@@ -1,8 +1,6 @@
 package cn.cslg.pas.common.utils;
 
 
-
-
 import cn.cslg.pas.common.vo.PatentRightParams;
 import cn.cslg.pas.common.vo.RePatentClaim;
 import org.springframework.stereotype.Component;
@@ -12,6 +10,7 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import java.util.stream.Collectors;
 
 /**
  * 拆分权要工具类
@@ -25,7 +24,10 @@ public class PatentRightUtils {
     public static List<RePatentClaim> formatPatentRight(PatentRightParams params) {
         try {
             //国家
-            String country = params.getPatentNo().substring(0, 2);
+            String country = params.getCountry();
+            if (country == null) {
+                country = params.getPatentNo().substring(0, 2);
+            }
             //原文
             String content = params.getContent();
             //译文
@@ -322,6 +324,23 @@ public class PatentRightUtils {
             patentRights.add(new RePatentClaim().setPatentNo(params.getPatentNo()).setContent(params.getContent()).setContentOut(params.getContentOut()).setType(1).setSort(0).setParentSort("-1"));
             return patentRights;
         }
+
+
     }
 
+    public static String getFormatClaim(String claim, String country) {
+        String reStr = "";
+        PatentRightParams params = new PatentRightParams();
+        if (country == null) {
+            country = "CN";
+        }
+        params.setContent(claim);
+        params.setCountry(country);
+        List<RePatentClaim> rePatentClaims = PatentRightUtils.formatPatentRight(params);
+        if (rePatentClaims.size() > 0) {
+            List<String> claims = rePatentClaims.stream().map(RePatentClaim::getContent).collect(Collectors.toList());
+            reStr = StringUtils.join(claims, "。\t");
+        }
+        return reStr;
+    }
 }

+ 1 - 0
src/main/java/cn/cslg/pas/common/vo/FieldValueVO.java

@@ -7,5 +7,6 @@ public class FieldValueVO {
     private Integer valueId;
     private String  value;
     private String path;
+    private String pathValue;
     private Integer num;
 }

+ 1 - 0
src/main/java/cn/cslg/pas/common/vo/PatentRightParams.java

@@ -29,4 +29,5 @@ public class PatentRightParams {
      * 独立权要
      */
     private String selfContent;
+    private String country;
 }

+ 1 - 0
src/main/java/cn/cslg/pas/common/vo/PersonSelfFieldVO.java

@@ -19,6 +19,7 @@ public class PersonSelfFieldVO {
      * 返回值名
      */
     private String value;
+    private String field;
     /**
      * 排序
      */

+ 3 - 1
src/main/java/cn/cslg/pas/common/vo/ProductOrCategoryVO.java

@@ -3,6 +3,8 @@ package cn.cslg.pas.common.vo;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
+import java.util.List;
+
 /**
  * @author 李仁杰
  * @date 2023-11-12
@@ -29,6 +31,6 @@ public class ProductOrCategoryVO {
      * Back:数据权限描述
      */
     private Integer type;
-
+    private List<Integer> valueIds;
 
 }

+ 2 - 0
src/main/java/cn/cslg/pas/common/vo/ReTreeNodeVO.java

@@ -46,4 +46,6 @@ public class ReTreeNodeVO {
     private String description;
     @Schema(description = "文件信息")
     private List<SystemFile> systemFileList;
+    @Schema(description = "专利相关数量")
+    private Long relevantProductNum;
 }

+ 71 - 0
src/main/java/cn/cslg/pas/common/vo/business/AsInvalidReasonHistoryVO.java

@@ -0,0 +1,71 @@
+package cn.cslg.pas.common.vo.business;
+
+import cn.cslg.pas.common.model.cronModel.SystemFile;
+import cn.cslg.pas.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 作为无效证据使用历史VO
+ * @Author xiexiang
+ * @Date 2024/1/19
+ */
+@Data
+public class AsInvalidReasonHistoryVO {
+    private Integer id;
+    /**
+     * 无效案号
+     */
+    private String invalidCaseNum;
+
+    /**
+     * 被无效的专利
+     */
+    private String invalidedPatent;
+
+    /**
+     * 被无效的时间
+     */
+    @JsonFormat(
+            pattern = "yyyy-MM-dd",
+            timezone = "GMT+8"
+    )
+    private Date invalidTime;
+
+    /**
+     * 无效理由
+     */
+    private String invalidReason;
+
+    /**
+     * 是否被审查员认可
+     */
+    private Boolean ifApproved;
+
+    /**
+     * 创建人
+     */
+    private String createId;
+
+    private String createName;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 专利号
+     */
+    private String patentNo;
+
+    private List<String> fileGuids;
+
+    private List<SystemFile> systemFileList;
+
+    private Boolean ifAdd;
+}

+ 71 - 0
src/main/java/cn/cslg/pas/common/vo/business/InvalidRecordVO.java

@@ -0,0 +1,71 @@
+package cn.cslg.pas.common.vo.business;
+
+import cn.cslg.pas.common.model.cronModel.SystemFile;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Author xiexiang
+ * @Date 2024/1/19
+ */
+@Data
+public class InvalidRecordVO {
+    private Integer id;
+    /**
+     * 专利号
+     */
+    private String patentNo;
+
+    /**
+     * 无效案号
+     */
+    private String invalidCaseNum;
+
+    /**
+     * 无效时间
+     */
+    @JsonFormat(
+            pattern = "yyyy-MM-dd",
+            timezone = "GMT+8"
+    )
+    private Date invalidTime;
+
+    /**
+     * 判决时间
+     */
+    @JsonFormat(
+            pattern = "yyyy-MM-dd",
+            timezone = "GMT+8"
+    )
+    private Date judgementTime;
+
+    /**
+     * 结果
+     */
+    private String result;
+
+    /**
+     * 无效申请人id
+     */
+    private String invalidApplicantId;
+
+    /**
+     * 无效申请人
+     */
+    private String invalidApplicant;
+
+    private String createId;
+
+    private String createName;
+
+    private Date createTime;
+
+    private List<String> fileGuids;
+
+    private List<SystemFile> systemFileList;
+
+    private Boolean ifAdd;
+}

+ 11 - 1
src/main/java/cn/cslg/pas/common/vo/business/LitigationHistoryVO.java

@@ -1,9 +1,12 @@
 package cn.cslg.pas.common.vo.business;
 
+import cn.cslg.pas.common.model.cronModel.SystemFile;
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * @Author xiexiang
@@ -11,6 +14,7 @@ import java.util.Date;
  */
 @Data
 public class LitigationHistoryVO {
+    private Integer id;
     /**
      * 原告
      */
@@ -30,6 +34,10 @@ public class LitigationHistoryVO {
     /**
      * 起诉时间
      */
+    @JsonFormat(
+            pattern = "yyyy-MM-dd",
+            timezone = "GMT+8"
+    )
     private Date indictTime;
 
     /**
@@ -45,7 +53,9 @@ public class LitigationHistoryVO {
     /**
      * 附件id
      */
-    private String fileGuid;
+    private List<String> fileGuids;
+
+    private List<SystemFile> systemFileList;
 
     /**
      * projectId

+ 2 - 2
src/main/java/cn/cslg/pas/common/vo/business/MergePersonAgainVO.java

@@ -6,9 +6,9 @@ import java.util.List;
 
 @Data
 public class MergePersonAgainVO {
-
+    //已存在的合并后名称
     private List<String> needMergedName;
-
+    //存在再次要合并的名称
     private List<String> mergedName;
 
     private Integer projectId;

+ 3 - 0
src/main/java/cn/cslg/pas/common/vo/business/OtherReferencesVO.java

@@ -1,5 +1,6 @@
 package cn.cslg.pas.common.vo.business;
 
+import cn.cslg.pas.common.model.cronModel.SystemFile;
 import com.baomidou.mybatisplus.annotation.TableField;
 import lombok.Data;
 
@@ -39,6 +40,8 @@ public class OtherReferencesVO {
 
     private List<String> fileGuids;
 
+    private List<SystemFile> systemFileList;
+
     private String createName;
 
     /**

+ 4 - 1
src/main/java/cn/cslg/pas/common/vo/business/PatentDigProjectFilesVO.java

@@ -1,5 +1,6 @@
 package cn.cslg.pas.common.vo.business;
 
+import cn.cslg.pas.domain.business.ProjectTask;
 import lombok.Data;
 
 import java.util.Date;
@@ -58,7 +59,7 @@ public class PatentDigProjectFilesVO {
     /**
      * 文件类型
      */
-    private Integer type;
+    private String type;
 
     /**
      * 描述
@@ -79,4 +80,6 @@ public class PatentDigProjectFilesVO {
      * 创建时间
      */
     private Date createTime;
+
+    private ProjectTask projectTask;
 }

+ 10 - 0
src/main/java/cn/cslg/pas/common/vo/business/PermissionRecordVO.java

@@ -1,6 +1,7 @@
 package cn.cslg.pas.common.vo.business;
 
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 
 import java.util.Date;
@@ -12,6 +13,7 @@ import java.util.Date;
  */
 @Data
 public class PermissionRecordVO {
+    private Integer id;
     /**
      * 专利号
      */
@@ -35,6 +37,10 @@ public class PermissionRecordVO {
     /**
      * 许可时间
      */
+    @JsonFormat(
+            pattern = "yyyy-MM-dd",
+            timezone = "GMT+8"
+    )
     private Date licenseTime;
 
     /**
@@ -45,6 +51,10 @@ public class PermissionRecordVO {
     /**
      * 截止时间
      */
+    @JsonFormat(
+            pattern = "yyyy-MM-dd",
+            timezone = "GMT+8"
+    )
     private Date licenseDeadLine;
 
     /**

+ 4 - 0
src/main/java/cn/cslg/pas/common/vo/business/ProductVO.java

@@ -56,4 +56,8 @@ public class ProductVO {
     private String companyName;
     @Schema(description = "文件信息")
     private List<SystemFile> systemFileList;
+    @Schema(description = "商品化专利数量")
+    private Long productNum;
+    @Schema(description = "商品化专利相关数量")
+    private Long relevantProductNum;
 }

+ 10 - 1
src/main/java/cn/cslg/pas/common/vo/business/ReviewHistoryVO.java

@@ -1,9 +1,12 @@
 package cn.cslg.pas.common.vo.business;
 
+import cn.cslg.pas.common.model.cronModel.SystemFile;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import org.apache.poi.hssf.record.DateWindow1904Record;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * @Author xiexiang
@@ -16,6 +19,10 @@ public class ReviewHistoryVO {
     /**
      * 时间
      */
+    @JsonFormat(
+            pattern = "yyyy-MM-dd",
+            timezone = "GMT+8"
+    )
     private Date reviewTime ;
 
     /**
@@ -31,7 +38,9 @@ public class ReviewHistoryVO {
     /**
      * 文件id
      */
-    private String fileGuid;
+    private List<String> fileGuids;
+
+    private List<SystemFile> systemFileList;
 
     /**
      * 所属project

+ 12 - 0
src/main/java/cn/cslg/pas/common/vo/business/SelectProductVO.java

@@ -0,0 +1,12 @@
+package cn.cslg.pas.common.vo.business;
+
+import cn.cslg.pas.common.model.request.StringRequest;
+import lombok.Data;
+
+@Data
+public class SelectProductVO {
+
+    private String patentNo;
+
+    private StringRequest queryRequest;
+}

+ 3 - 0
src/main/java/cn/cslg/pas/common/vo/business/TreeNodeVO.java

@@ -57,4 +57,7 @@ public class TreeNodeVO {
 
     @Schema(description = "文件信息")
     private List<SystemFile> systemFileList;
+
+    @Schema(description = "商品化专利相关数量")
+    private Long relevantProductNum;
 }

+ 34 - 0
src/main/java/cn/cslg/pas/common/vo/es/EsValueCurveVO.java

@@ -0,0 +1,34 @@
+package cn.cslg.pas.common.vo.es;
+
+import cn.cslg.pas.common.dto.es.EsCustomFieldValueDTO;
+import cn.cslg.pas.common.model.request.OrderDTO;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class EsValueCurveVO {
+
+    private Integer projectId;
+
+    private Integer taskId;
+
+    private List<String> isAdd;
+
+    private List<String> isDelete;
+
+    private Integer startNumber;
+
+    private Integer endNumber;
+
+    private String searchQuery;
+
+    private List<OrderDTO> orderDTOList;
+
+    private List<EsCustomFieldValueDTO> customFields;
+
+    //0月  1季  2年
+    private Integer timeType;
+    //地区
+    private String area;
+}

+ 1 - 1
src/main/java/cn/cslg/pas/common/vo/invalidVO/ProofGroupVO.java

@@ -112,5 +112,5 @@ public class ProofGroupVO {
 
     private String courtOpinions2;
 
-
+    private String description2;
 }

+ 53 - 0
src/main/java/cn/cslg/pas/controller/AsInvalidReasonHistoryController.java

@@ -0,0 +1,53 @@
+package cn.cslg.pas.controller;
+
+import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.dto.business.AsInvalidReasonHistoryDTO;
+import cn.cslg.pas.common.dto.business.OtherPatentInfoDTO;
+import cn.cslg.pas.common.model.cronModel.Records;
+import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.service.business.AsInvalidReasonHistoryService;
+import io.swagger.v3.oas.annotations.Operation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 作为无效证据使用历史
+ * @Author xiexiang
+ * @Date 2024/1/19
+ */
+@Slf4j
+@RequestMapping(Constants.API_XiaoSHI + "/asInvalidReasonHistory")
+@RestController
+public class AsInvalidReasonHistoryController {
+    @Autowired
+    private AsInvalidReasonHistoryService asInvalidReasonHistoryService;
+
+    @Operation(summary = "添加or更新作为无效证据使用历史")
+    @PostMapping("/saveOrUpdate")
+    public Response saveOrUpdate(@RequestBody AsInvalidReasonHistoryDTO asInvalidReasonHistoryDTO){
+        Integer id = asInvalidReasonHistoryService.saveOrUpdate(asInvalidReasonHistoryDTO);
+        Records records = new Records();
+        records.setData(id);
+        return Response.success(records);
+    }
+
+    @Operation(summary = "查询作为无效证据使用历史")
+    @PostMapping("/query")
+    public Response queryAsInvalidReasonHistory(@RequestBody OtherPatentInfoDTO otherPatentInfoDTO) throws Exception {
+        String patentNo = otherPatentInfoDTO.getPatentNo();
+        Records records = asInvalidReasonHistoryService.getAsInvalidReasonHistory(patentNo);
+        return Response.success(records);
+    }
+
+    @Operation(summary = "删除作为无效证据使用历史")
+    @PostMapping("/delete")
+    public Response delete(@RequestBody List<Integer> ids) throws Exception {
+        List<Integer> deleteIds = asInvalidReasonHistoryService.deleteAsInvalidReasonHistory(ids);
+        Records records = new Records();
+        records.setData(deleteIds);
+        return Response.success(records);
+    }
+}

+ 2 - 2
src/main/java/cn/cslg/pas/controller/FeatureController.java

@@ -79,10 +79,10 @@ public class FeatureController {
 
     @Operation(summary = "查询权要树")
     @GetMapping("/getPatentRightTree")
-    public Response getPatentRightTree(String patentNo) throws Exception {
+    public Response getPatentRightTree(String patentNo,String appNo) throws Exception {
         try {
             Records records = new Records();
-            records.setData(featureService.getPatentRightTree(patentNo));
+            records.setData(featureService.getPatentRightTree(patentNo,appNo));
             return Response.success(records);
         } catch (Exception e) {
             return Response.error(e.getMessage());

+ 53 - 0
src/main/java/cn/cslg/pas/controller/InvalidRecordController.java

@@ -0,0 +1,53 @@
+package cn.cslg.pas.controller;
+
+import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.dto.business.InvalidRecordDTO;
+import cn.cslg.pas.common.dto.business.OtherPatentInfoDTO;
+import cn.cslg.pas.common.model.cronModel.Records;
+import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.service.business.InvalidRecordService;
+import io.swagger.v3.oas.annotations.Operation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 被无效历史
+ * @Author xiexiang
+ * @Date 2024/1/19
+ */
+@Slf4j
+@RequestMapping(Constants.API_XiaoSHI + "/invalidRecord")
+@RestController
+public class InvalidRecordController {
+    @Autowired
+    private InvalidRecordService invalidRecordService;
+
+    @Operation(summary = "添加or更新被无效历史")
+    @PostMapping("/saveOrUpdate")
+    public Response saveOrUpdate(@RequestBody InvalidRecordDTO invalidRecordDTO){
+        Integer id = invalidRecordService.saveOrUpdate(invalidRecordDTO);
+        Records records = new Records();
+        records.setData(id);
+        return Response.success(records);
+    }
+
+    @Operation(summary = "查询被无效历史")
+    @PostMapping("/query")
+    public Response queryAsInvalidReasonHistory(@RequestBody OtherPatentInfoDTO otherPatentInfoDTO) throws Exception {
+        String patentNo = otherPatentInfoDTO.getPatentNo();
+        Records records = invalidRecordService.getInvalidRecord(patentNo);
+        return Response.success(records);
+    }
+
+    @Operation(summary = "删除被无效历史")
+    @PostMapping("/delete")
+    public Response delete(@RequestBody List<Integer> ids) throws Exception {
+        List<Integer> deleteIds = invalidRecordService.deleteInvalidRecord(ids);
+        Records records = new Records();
+        records.setData(deleteIds);
+        return Response.success(records);
+    }
+}

+ 4 - 6
src/main/java/cn/cslg/pas/controller/LitigationHistoryController.java

@@ -2,9 +2,9 @@ package cn.cslg.pas.controller;
 
 import cn.cslg.pas.common.core.base.Constants;
 import cn.cslg.pas.common.dto.business.LitigationHistoryDTO;
+import cn.cslg.pas.common.dto.business.OtherPatentInfoDTO;
 import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.utils.Response;
-import cn.cslg.pas.common.vo.business.LitigationHistoryVO;
 import cn.cslg.pas.service.business.LitigationHistoryService;
 import io.swagger.v3.oas.annotations.Operation;
 import lombok.extern.slf4j.Slf4j;
@@ -35,11 +35,9 @@ public class LitigationHistoryController {
     }
 
     @Operation(summary = "查询诉讼历史")
-    @GetMapping("/query")
-    public Response queryLitigationHistory(String patentNo) throws Exception {
-        List<LitigationHistoryVO> litigationHistoryVOS = litigationHistoryService.getLitigationHistory(patentNo);
-        Records records = new Records();
-        records.setData(litigationHistoryVOS);
+    @PostMapping("/query")
+    public Response queryLitigationHistory(@RequestBody OtherPatentInfoDTO otherPatentInfoDTO) throws Exception {
+        Records records = litigationHistoryService.getLitigationHistory(otherPatentInfoDTO);
         return Response.success(records);
     }
 

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

@@ -1,6 +1,7 @@
 package cn.cslg.pas.controller;
 
 import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.dto.business.OtherPatentInfoDTO;
 import cn.cslg.pas.common.dto.business.OtherReferencesDTO;
 import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.utils.Response;
@@ -35,11 +36,9 @@ public class OtherReferencesController {
     }
 
     @Operation(summary = "查询其他参考资料")
-    @GetMapping("/query")
-    public Response queryOtherReferences(String patentNo) throws Exception {
-        List<OtherReferencesVO> otherReferencesVOS = otherReferencesService.getOtherReferences(patentNo);
-        Records records = new Records();
-        records.setData(otherReferencesVOS);
+    @PostMapping("/query")
+    public Response queryOtherReferences(@RequestBody OtherPatentInfoDTO otherPatentInfoDTO) throws Exception {
+        Records records = otherReferencesService.getOtherReferences(otherPatentInfoDTO);
         return Response.success(records);
     }
 

+ 38 - 8
src/main/java/cn/cslg/pas/controller/PatentController.java

@@ -7,6 +7,7 @@ import cn.cslg.pas.common.dto.PatentExport.TaskParams;
 import cn.cslg.pas.common.dto.business.EsCountDTO;
 import cn.cslg.pas.common.dto.business.SelectClaimDTO;
 import cn.cslg.pas.common.dto.es.EsDateRangeDTO;
+import cn.cslg.pas.common.dto.es.EsValueCurveDTO;
 import cn.cslg.pas.common.model.cronModel.PersonnelVO;
 import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.model.request.StringRequest;
@@ -21,7 +22,9 @@ import cn.cslg.pas.common.vo.business.PatentNoVO;
 import cn.cslg.pas.common.vo.es.EsCustomFieldBatchVO;
 import cn.cslg.pas.common.vo.es.EsDateRangeVO;
 import cn.cslg.pas.common.vo.es.EsProductPatentVO;
+import cn.cslg.pas.common.vo.es.EsValueCurveVO;
 import cn.cslg.pas.domain.business.ImportTask;
+import cn.cslg.pas.domain.business.Product;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.factorys.businessFactory.Business;
 import cn.cslg.pas.factorys.businessFactory.BusinessFactory;
@@ -30,10 +33,7 @@ import cn.cslg.pas.service.business.ImportTaskService;
 import cn.cslg.pas.service.business.PDFExportFirstPageService;
 import cn.cslg.pas.service.business.PatentExportService;
 import cn.cslg.pas.service.business.MergePersonService;
-import cn.cslg.pas.service.business.es.EsCountService;
-import cn.cslg.pas.service.business.es.EsPatentService;
-import cn.cslg.pas.service.business.es.EsProductPatentService;
-import cn.cslg.pas.service.business.es.EsService;
+import cn.cslg.pas.service.business.es.*;
 import cn.cslg.pas.service.common.FileManagerService;
 import cn.cslg.pas.service.common.PatentStarApiService;
 import cn.hutool.core.util.IdUtil;
@@ -76,6 +76,9 @@ public class PatentController {
     private EsProductPatentService esProductPatentService;
 
     @Autowired
+    private EsValueCurveService esValueCurveService;
+
+    @Autowired
     private PatentStarApiService patentStarApiService;
 
     @Autowired
@@ -233,14 +236,24 @@ public class PatentController {
     @Operation(summary = "发明人/权利人/申请人合并后的名称移除")
     @PostMapping("/delMergedName")
     public Response delMergedName(@RequestBody MergedNameVO vo) throws Exception {
-        Integer id = mergePersonService.delMergedName(vo);
+        Integer id = null;
+        try {
+            id = mergePersonService.delMergedName(vo);
+        } catch (Exception e) {
+            return Response.success(e.getMessage());
+        }
         return Response.success(id);
     }
 
     @Operation(summary = "发明人/权利人/申请人合并记录删除")
     @PostMapping("/delMergePerson")
     public Response delMergePerson(@RequestBody MergePersonIdVO vo) throws Exception {
-        Integer id = mergePersonService.delMergePerson(vo);
+        Integer id = null;
+        try {
+            id = mergePersonService.delMergePerson(vo);
+        } catch (Exception e) {
+            return Response.success(e.getMessage());
+        }
         return Response.success(id);
     }
 
@@ -301,17 +314,34 @@ public class PatentController {
     }
 
     //---------------------------------商品化专利----------------
+    @Operation(summary = "根据专利号查询商品化专利")
+    @PostMapping("/selectProductByPatentNo")
+    public Response selectProductByPatentNo(@RequestBody SelectProductVO vo) throws Exception {
+        Records records = (Records) patentService.selectProductByPatentNo(vo);
+        return Response.success(records);
+    }
+
     @Operation(summary = "添加商品化专利")
     @PostMapping("/addProductPatent")
-    public Response addProductPatent(EsProductPatentVO vo) throws Exception {
+    public Response addProductPatent(@RequestBody EsProductPatentVO vo) throws Exception {
         List<Integer> ids = esProductPatentService.addProductPatent(vo);
         return Response.success(ids);
     }
 
     @Operation(summary = "删除商品化专利")
     @PostMapping("/delProductPatent")
-    public Response delProductPatent(EsProductPatentVO vo) throws Exception {
+    public Response delProductPatent(@RequestBody EsProductPatentVO vo) throws Exception {
         List<Integer> ids = esProductPatentService.delProductPatent(vo);
         return Response.success(ids);
     }
+
+    //---------------------------价值曲线---------------------
+    @PostMapping("/selectValueCurve")
+    @Operation(summary = "查询价值曲线")
+    public Response selectValueCurve(@RequestBody EsValueCurveVO vo) throws Exception {
+        List<EsValueCurveDTO> list = esValueCurveService.selectValueCurve(vo);
+        Records records = new Records();
+        records.setData(list);
+        return Response.success(records);
+    }
 }

+ 12 - 0
src/main/java/cn/cslg/pas/controller/PatentDigProjectFilesController.java

@@ -1,10 +1,12 @@
 package cn.cslg.pas.controller;
 
 import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.dto.QueryPatentDigProjectFilesDTO;
 import cn.cslg.pas.common.dto.business.PatentDigProjectFilesDTO;
 import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.model.request.StringRequest;
 import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.common.vo.business.PatentDigProjectFilesVO;
 import cn.cslg.pas.exception.ConditionException;
 import cn.cslg.pas.exception.UnLoginException;
 import cn.cslg.pas.exception.XiaoShiException;
@@ -83,4 +85,14 @@ public class PatentDigProjectFilesController {
         Map<Integer, Map<String, Integer>> countMap = patentDigProjectFilesService.getProcessInfo(projectId);
         return Response.success(countMap);
     }
+
+    @Operation(summary = "查询专利挖掘项目文件")
+    @PostMapping("/query")
+    public Response query(@RequestBody QueryPatentDigProjectFilesDTO queryPatentDigProjectFilesDTO) throws Exception {
+        List<PatentDigProjectFilesVO> patentDigProjectFilesVOS = patentDigProjectFilesService.getPatentDigProjectFiles(queryPatentDigProjectFilesDTO);
+        Records records = new Records();
+        records.setData(patentDigProjectFilesVOS);
+        return Response.success(records);
+    }
+
 }

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

@@ -1,6 +1,7 @@
 package cn.cslg.pas.controller;
 
 import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.dto.business.OtherPatentInfoDTO;
 import cn.cslg.pas.common.dto.business.PermissionRecordDTO;
 import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.utils.Response;
@@ -35,11 +36,9 @@ public class PermissionRecordController {
     }
 
     @Operation(summary = "查询许可历史")
-    @GetMapping("/query")
-    public Response queryLitigationHistory(String patentNo) throws Exception {
-        List<PermissionRecordVO> permissionRecordVOS = permissionRecordService.getPermissionRecord(patentNo);
-        Records records = new Records();
-        records.setData(permissionRecordVOS);
+    @PostMapping("/query")
+    public Response queryPermissionRecord(@RequestBody OtherPatentInfoDTO otherPatentInfoDTO) throws Exception {
+        Records records = permissionRecordService.getPermissionRecord(otherPatentInfoDTO);
         return Response.success(records);
     }
 

+ 24 - 0
src/main/java/cn/cslg/pas/controller/PersonFieldController.java

@@ -98,4 +98,28 @@ public class PersonFieldController {
         records.setData(getAllPatentCountVOS);
         return Response.success(records);
     }
+
+    @Operation(summary = "获得无效理由和证据表格显示栏位")
+    @PostMapping("/getEvidenceReasonTableColumns")
+    public Response getEvidenceReasonTableColumns(@RequestBody GetTabelColumDTO getTabelColumDTO) throws Exception {
+        Records records = new Records();
+        try {
+            List<PersonSelfFieldVO> personSelfFieldVOS = personFieldService.getEvidenceReasonTableColumns(getTabelColumDTO);
+
+            records.setData(personSelfFieldVOS);
+        }
+      catch (Exception e){
+            return Response.error(e.getMessage());
+      }
+        return Response.success(records);
+    }
+
+    @Operation(summary = "设置无效理由和证据表格显示栏位")
+    @PostMapping("/setEvidenceReasonTableColumns")
+    public Response setEvidenceReasonTableColumns(@RequestBody AddSelfFieldDTO addSelfFieldDTO) throws Exception {
+        List<PersonSelfFieldVO> personSelfFieldVOS = personFieldService.setEvidenceReasonTableColumns(addSelfFieldDTO);
+        Records records = new Records();
+        records.setData(personSelfFieldVOS);
+        return Response.success(records);
+    }
 }

+ 19 - 1
src/main/java/cn/cslg/pas/controller/ProjectShareController.java

@@ -14,6 +14,7 @@ import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.service.business.AssoProjectPersonService;
 import cn.cslg.pas.service.business.AvoidDesignService;
 import cn.cslg.pas.service.business.AvoidDesignWholeService;
+import cn.cslg.pas.service.business.ProjectService;
 import io.swagger.v3.oas.annotations.Operation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -24,6 +25,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 项目分享管理
@@ -37,7 +39,8 @@ import java.util.List;
 public class ProjectShareController {
     @Autowired
     private AssoProjectPersonService assoProjectPersonService;
-
+@Autowired
+private ProjectService projectService;
 
     @Operation(summary = "新增项目分享")
     @PostMapping("/addProjectShare")
@@ -86,4 +89,19 @@ public class ProjectShareController {
 
         return Response.success(records);
     }
+
+    @Operation(summary = "查询人员在项目里的角色")
+    @PostMapping("/getProjectPermissions")
+    public Response getProjectPermissions(@RequestBody List<Integer> projectIds) throws Exception {
+        Records records = new Records();
+        try {
+            Map<Integer,List<String>> map= projectService.getProjectPermissions(projectIds);
+        records.setData(map);
+        } catch (Exception e) {
+            return Response.error(e.getMessage());
+
+        }
+
+        return Response.success(records);
+    }
 }

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

@@ -11,6 +11,7 @@ import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.model.request.StringGroupRequest;
 import cn.cslg.pas.common.model.request.StringRequest;
 import cn.cslg.pas.common.utils.Response;
+import cn.cslg.pas.domain.business.ReportProject;
 import cn.cslg.pas.exception.ConditionException;
 import cn.cslg.pas.exception.UnLoginException;
 import cn.cslg.pas.exception.XiaoShiException;
@@ -44,7 +45,7 @@ public class ReportProjectController {
 
     @Operation(summary = "查询报告")
     @PostMapping("/queryReportProject")
-    @checkAuth(FunId = "xiaoshi/report")
+//    @checkAuth(FunId = "xiaoshi/report")
     public Response queryPatentProject(@RequestBody StringRequest stringRequest) throws Exception {
         Business business = businessFactory.getClass("reportProjectService");
         Records records = (Records) business.queryMessage(stringRequest);
@@ -54,7 +55,7 @@ public class ReportProjectController {
 
     @Operation(summary = "添加报告")
     @PostMapping("/addReportProject")
-    @checkAuth(FunId = "xiaoshi/report")
+//    @checkAuth(FunId = "xiaoshi/report")
     public Response addReportProject(@RequestBody ReportProjectDTO reportProjectDTO) throws Exception {
         if (reportProjectDTO != null) {
             Business business = businessFactory.getClass("reportProjectService");
@@ -78,7 +79,7 @@ public class ReportProjectController {
 
     @Operation(summary = "更新报告")
     @PostMapping("/updateReportProject")
-    @checkAuth(FunId = "xiaoshi/report")
+//    @checkAuth(FunId = "xiaoshi/report")
     public Response updatePatentProject(@RequestBody UpdateReportProjectDTO updateReportProjectDTO) throws Exception {
         if (updateReportProjectDTO != null) {
             Business business = businessFactory.getClass("reportProjectService");
@@ -91,7 +92,7 @@ public class ReportProjectController {
 
     @Operation(summary = "删除报告")
     @PostMapping("/deleteReportProject")
-    @checkAuth(FunId = "xiaoshi/report")
+//    @checkAuth(FunId = "xiaoshi/report")
     public String deletePatentProject(@RequestBody List<Integer> ids) throws Exception {
         Business business = businessFactory.getClass("reportProjectService");
         business.deleteMessage(ids);
@@ -100,7 +101,7 @@ public class ReportProjectController {
 
     @Operation(summary = "分组报告")
     @PostMapping("/groupReportProject")
-    @checkAuth(FunId = "xiaoshi/report")
+//    @checkAuth(FunId = "xiaoshi/report")
     public Response groupPatentProject(@RequestBody StringGroupRequest stringGroupRequest) throws Exception {
         Business business = businessFactory.getClass("reportProjectService");
         Records records = (Records) business.getGroup(stringGroupRequest, "reportProject");
@@ -110,7 +111,7 @@ public class ReportProjectController {
 
     @Operation(summary = "更新是否第二次无效")
     @PostMapping("/updateIfSecondInvalid")
-    @checkAuth(FunId = "xiaoshi/report")
+//    @checkAuth(FunId = "xiaoshi/report")
     public Response updateIfSecondInvalid(@RequestBody UpdateIfSecondInvalidDTO updateIfSecondInvalidDTO) throws Exception {
         try {
             reportProjectService.updateIfSecondInvalid(updateIfSecondInvalidDTO);

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

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

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

@@ -1,6 +1,7 @@
 package cn.cslg.pas.controller;
 
 import cn.cslg.pas.common.core.base.Constants;
+import cn.cslg.pas.common.dto.business.OtherPatentInfoDTO;
 import cn.cslg.pas.common.dto.business.ReviewHistoryDTO;
 import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.utils.Response;
@@ -36,11 +37,9 @@ public class ReviewHistoryController {
     }
 
     @Operation(summary = "查询审查历史")
-    @GetMapping("/query")
-    public Response queryReviewHistory(String patentNo) throws Exception {
-        List<ReviewHistoryVO> reviewHistoryVOS = reviewHistoryService.getReviewHistory(patentNo);
-        Records records = new Records();
-        records.setData(reviewHistoryVOS);
+    @PostMapping("/query")
+    public Response queryReviewHistory(@RequestBody OtherPatentInfoDTO otherPatentInfoDTO) throws Exception {
+        Records records = reviewHistoryService.getReviewHistory(otherPatentInfoDTO);
         return Response.success(records);
     }
 

+ 68 - 0
src/main/java/cn/cslg/pas/domain/business/AsInvalidReasonHistory.java

@@ -0,0 +1,68 @@
+package cn.cslg.pas.domain.business;
+
+import cn.cslg.pas.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 作为无效证据使用历史
+ * @Author xiexiang
+ * @Date 2024/1/19
+ */
+@Data
+@TableName("as_invalid_reason_history")
+public class AsInvalidReasonHistory extends BaseEntity<AsInvalidReasonHistory> {
+    /**
+     * 无效案号
+     */
+    @TableField(value = "invalid_case_num")
+    private String invalidCaseNum;
+
+    /**
+     * 被无效的专利
+     */
+    @TableField(value = "invalided_patent")
+    private String invalidedPatent;
+
+    /**
+     * 被无效的时间
+     */
+    @TableField(value = "invalid_time")
+    private Date invalidTime;
+
+    /**
+     * 无效理由
+     */
+    @TableField(value = "invalid_reason")
+    private String invalidReason;
+
+    /**
+     * 是否被审查员认可
+     */
+    @TableField(value = "if_approved")
+    private Boolean ifApproved;
+
+    /**
+     * 创建人
+     */
+    @TableField(value = "create_id")
+    private String createId;
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "create_time")
+    private Date createTime;
+
+    /**
+     * 专利号
+     */
+    @TableField(value = "patent_no")
+    private String patentNo;
+
+    @TableField(value = "tenant_id")
+    private Integer tenantId;
+}

+ 2 - 0
src/main/java/cn/cslg/pas/domain/business/AssoGroupFeature.java

@@ -16,6 +16,8 @@ public class AssoGroupFeature  extends BaseEntity<AssoGroupFeature> {
     //特征id
     @TableField(value = "feature_id")
     private Integer featureId;
+    @TableField(exist = false)
+    private String featureText;
     //特征id
     @TableField(value = "feature_pre_id")
     private Integer featurePreId;

+ 6 - 4
src/main/java/cn/cslg/pas/domain/business/AssoOtherReferencesFile.java

@@ -10,10 +10,12 @@ import lombok.Data;
  * @Date 2024/1/17
  */
 @Data
-@TableName("asso_other_references_file")
-public class AssoOtherReferencesFile extends BaseEntity<AssoOtherReferencesFile> {
+@TableName("asso_other_patent_info_file")
+public class AssoOtherPatentInfoFile extends BaseEntity<AssoOtherPatentInfoFile> {
     @TableField(value = "file_guid")
     private String fileGuid;
-    @TableField(value = "other_references_id")
-    private Integer otherReferencesId;
+    @TableField(value = "other_patent_info_id")
+    private Integer otherPatentInfoId;
+    @TableField(value = "type")
+    private Integer type;
 }

+ 65 - 0
src/main/java/cn/cslg/pas/domain/business/InvalidRecord.java

@@ -0,0 +1,65 @@
+package cn.cslg.pas.domain.business;
+
+import cn.cslg.pas.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 被无效历史
+ * @Author xiexiang
+ * @Date 2024/1/19
+ */
+@Data
+@TableName("invalid_record")
+public class InvalidRecord extends BaseEntity<InvalidRecord> {
+    /**
+     * 专利号
+     */
+    @TableField(value = "patent_no")
+    private String patentNo;
+
+    /**
+     * 无效案号
+     */
+    @TableField(value = "invalid_case_num")
+    private String invalidCaseNum;
+
+    /**
+     * 无效时间
+     */
+    @TableField(value = "invalid_time")
+    private Date invalidTime;
+
+    /**
+     * 判决时间
+     */
+    @TableField(value = "judgement_time")
+    private Date judgementTime;
+
+    /**
+     * 结果
+     */
+    @TableField(value = "result")
+    private String result;
+
+    /**
+     * 无效申请人
+     */
+    @TableField(value = "invalid_applicant")
+    private String invalidApplicant;
+
+    /**
+     * 创建人
+     */
+    @TableField(value = "create_id")
+    private String createId;
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "create_time")
+    private Date createTime;
+}

+ 1 - 0
src/main/java/cn/cslg/pas/domain/business/LitigationHistory.java

@@ -8,6 +8,7 @@ import lombok.Data;
 import java.util.Date;
 
 /**
+ * 诉讼历史
  * @Author xiexiang
  * @Date 2024/1/15
  */

+ 3 - 0
src/main/java/cn/cslg/pas/domain/business/ProofGroup.java

@@ -135,4 +135,7 @@ public class ProofGroup extends BaseEntity<ProofGroup> {
 
     @TableField(value = "project_id")
     private Integer projectId;
+    @TableField(value = "description2")
+    private String description2;
+
 }

+ 1 - 1
src/main/java/cn/cslg/pas/factorys/EsBuilderFactory/ProductQueryBuilder.java

@@ -15,7 +15,7 @@ public class ProductQueryBuilder implements IQueryBuilder {
 
     @Override
     public Query creteQuery() throws ParseException {
-        return QueryBuilders.hasChild(child -> child.type("product").query(i -> i.match(j -> j.field(field).query(value))));
+        return QueryBuilders.hasChild(child -> child.type("product").query(i -> i.term(j -> j.field(field).value(value))));
     }
 
     @Override

+ 12 - 9
src/main/java/cn/cslg/pas/factorys/getSqlFactorys/GetComSql.java

@@ -21,22 +21,25 @@ import java.util.List;
 
 @Slf4j
 @Component
-public class GetComSql  implements GetSqlObject{
+public class GetComSql implements GetSqlObject {
+
+    private SqlObject sqlObject;
 
- private SqlObject sqlObject;
     @Override
     public String getSql(String value) {
-      String filed= sqlObject.getSqlField();
-      String option =sqlObject.getOption();
-       return  filed+option+"'"+value+"'";
+        String filed = sqlObject.getSqlField();
+        String option = sqlObject.getOption();
+        if (value.equals("null")) {
+            return filed+" is null";
+        }
+        return filed + option + "'" + value + "'";
     }
 
-    public void setSqlObject(SqlObject sqlObject)
-    {
-        this.sqlObject=sqlObject;
+    public void setSqlObject(SqlObject sqlObject) {
+        this.sqlObject = sqlObject;
     }
 
-    public SqlObject getSqlObject(){
+    public SqlObject getSqlObject() {
         return sqlObject;
     }
 }

+ 3 - 0
src/main/java/cn/cslg/pas/factorys/getSqlFactorys/GetDateTimeMonthSql.java

@@ -16,6 +16,9 @@ public class GetDateTimeMonthSql implements GetSqlObject{
       String filed= sqlObject.getSqlField();
       String option =sqlObject.getOption();
         re="DATE_FORMAT("+filed+",'%Y%m')"+option+"'"+value+"'";
+        if(value.equals("null")){
+            re="isnull("+filed+")";
+        }
        return re;
     }
 

+ 34 - 29
src/main/java/cn/cslg/pas/factorys/getSqlFactorys/GetEntrustTrueNameSql.java

@@ -15,47 +15,52 @@ import java.util.List;
 
 @Slf4j
 @Component
-public class GetEntrustTrueNameSql implements GetSqlObject{
-    private SqlObject sqlObject ;
-  @Autowired
-  private PermissionService permissionService;
-    @Override
-    public String getSql( String value) {
+public class GetEntrustTrueNameSql implements GetSqlObject {
+    private SqlObject sqlObject;
+    @Autowired
+    private PermissionService permissionService;
 
+    @Override
+    public String getSql(String value) {
+        if (value.equals("null")) {
+            return "isnull(p.entrust_id)";
+        }
         List<String> entrustNames = new ArrayList<>();
-        Integer ifEqual= 0;
+        Integer ifEqual = 0;
         //根据名称查询人员id
         List<EntrustVO> entrustVOS = null;
-        if(sqlObject.getField().equals("entrustNameTrue"))
-        {
-            ifEqual =0;
+        if (sqlObject.getField().equals("entrustNameTrue")) {
+            ifEqual = 0;
 
+        } else {
+            ifEqual = 1;
         }
-          else{
-            ifEqual =1;
-        }
-       //根据名称查询
+        //根据名称查询
         try {
-        String json =  permissionService.getEntrustsByName(value,ifEqual);
-            entrustVOS = JSON.parseArray(json,EntrustVO.class);
-        }catch (Exception e){
+            String json = permissionService.getEntrustsByName(value, ifEqual);
+            entrustVOS = JSON.parseArray(json, EntrustVO.class);
+        } catch (Exception e) {
         }
-        if(entrustVOS==null||entrustVOS.size()==0){
-           return " 1!=1 ";
+        if (entrustVOS == null || entrustVOS.size() == 0) {
+            return " 1!=1 ";
         }
-   entrustVOS.forEach(item->{
-String tmp ="(p.entrust_id=" +item.getEntrustId()+" and p.entrust_type="+item.getEntrustType()+")";
-entrustNames.add(tmp);
-   });
-        String names = StringUtils.join(entrustNames," or ");
-        String re = "("+names+")";
+        entrustVOS.forEach(item -> {
+            String tmp = "(p.entrust_id=" + item.getEntrustId() + " and p.entrust_type=" + item.getEntrustType() + ")";
+            entrustNames.add(tmp);
+        });
+        String names = StringUtils.join(entrustNames, " or ");
+        String re = "(" + names + ")";
         return re;
     }
+
     @Override
-    public void setSqlObject(SqlObject sqlObject){
-        this.sqlObject =sqlObject;
-    };
-    public SqlObject getSqlObject(){
+    public void setSqlObject(SqlObject sqlObject) {
+        this.sqlObject = sqlObject;
+    }
+
+    ;
+
+    public SqlObject getSqlObject() {
         return sqlObject;
     }
 }

+ 9 - 3
src/main/java/cn/cslg/pas/factorys/reGroupFactory/GetEntrustGroup.java

@@ -25,7 +25,7 @@ public class GetEntrustGroup implements QueryGroupImp {
 
     @Override
     public ReGroupDataVO getGroup(List<String> sqls, String tableName, String groupField) {
-        groupField = "p.entrust_type,p.entrust_id";
+        groupField = "p.entrust_type ,p.entrust_id ";
         ReGroupDataVO reGroupDataVO = new ReGroupDataVO();
         List<Map<String, Object>> maps = new ArrayList<>();
         String selectField = groupField;
@@ -40,9 +40,15 @@ public class GetEntrustGroup implements QueryGroupImp {
         Long total = eventMapper.getEntrustGroupCount(sqls, tableName, groupField, selectField);
         //装载调查类型名称
         for (EntrustVO item : entrustVOS) {
-            if (item == null) {
-                continue;
+
+            if(item.getEntrustId()==null){
+                Map<String, Object> map = new HashMap<>();
+                map.put("name", "未知");
+                map.put("value", "未知");
+                map.put("count",item.getNum());
+                maps.add(map);
             }
+
             EntrustVO entrustVO = entrustVOList.stream().filter(tem -> tem.getEntrustId().equals(item.getEntrustId()) && tem.getEntrustType().equals(item.getEntrustType())).findFirst().orElse(null);
             if (entrustVO != null) {
                 Map<String, Object> map = new HashMap<>();

+ 56 - 0
src/main/java/cn/cslg/pas/factorys/reGroupFactory/GetEventScenarioGroup.java

@@ -0,0 +1,56 @@
+package cn.cslg.pas.factorys.reGroupFactory;
+
+import cn.cslg.pas.common.model.cronModel.ReGroupDataVO;
+import cn.cslg.pas.common.vo.GroupReVO;
+import cn.cslg.pas.domain.business.SystemDict;
+import cn.cslg.pas.mapper.EventMapper;
+import cn.cslg.pas.service.business.SystemDictService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.*;
+
+
+@Slf4j
+@Component
+public class GetEventScenarioGroup implements QueryGroupImp {
+    @Autowired
+    private EventMapper eventMapper;
+    @Autowired
+    private SystemDictService systemDictService;
+
+    @Override
+    public ReGroupDataVO getGroup(List<String> sqls, String tableName, String groupField) {
+        ReGroupDataVO reGroupDataVO = new ReGroupDataVO();
+        List<Map<String, Object>> maps = new ArrayList<>();
+        String selectField = groupField;
+        List<SystemDict> systemDictList = systemDictService.getSystemDictListByType(Arrays.asList("ENTERPRISE_APPLICATION_SCENARIO"));
+        //分组查询应用场景
+        List<GroupReVO> scenarioIds = eventMapper.getGroups(sqls, tableName, groupField, selectField);
+        Long total = eventMapper.getGroupsCount(sqls, tableName, groupField, selectField);
+        //装载应用场景名称
+        scenarioIds.forEach(item -> {
+            if (item.getValue() .equals("0")) {
+                Map<String, Object> map = new HashMap<>();
+                map.put("name", "未知");
+                map.put("value", "未知");
+                map.put("count", item.getNum());
+                maps.add(map);
+            } else {
+                SystemDict systemDict = systemDictList.stream().filter(tem -> tem.getValue().equals(item.getValue())).findFirst().orElse(null);
+                if (systemDict != null) {
+                    Map<String, Object> map = new HashMap<>();
+                    map.put("name", systemDict.getLabel());
+                    map.put("value", systemDict.getValue());
+                    map.put("count", item.getNum());
+                    maps.add(map);
+                }
+            }
+        });
+        reGroupDataVO.setValues(maps);
+        reGroupDataVO.setTotal(total);
+        return reGroupDataVO;
+    }
+
+}

+ 9 - 1
src/main/java/cn/cslg/pas/factorys/reGroupFactory/GetMatterGroup.java

@@ -26,13 +26,21 @@ public class GetMatterGroup implements QueryGroupImp {
     public ReGroupDataVO getGroup(List<String> sqls, String tableName, String groupField) {
         ReGroupDataVO reGroupDataVO =new ReGroupDataVO();
         List<Map<String, Object>> maps = new ArrayList<>();
-        String selectField = groupField;
+        String selectField = "ifnull(aspm.matter_id,0)";;
         List<Matter> matters = matterService.list();
+        tableName =tableName+" left join (select * from pas_prod2.asso_project_event where matter_id is not null) as aspm on p.id = aspm.project_id";
         //分组查询应用场景
         List<GroupReVO> matterIds = eventMapper.getGroups(sqls, tableName, groupField, selectField);
         Long total =eventMapper.getGroupsCount(sqls, tableName, groupField, selectField);
         //装载调查类型名称
         matterIds.forEach(item->{
+            if(item.getValue().equals("0")){
+                Map<String,Object> map =new HashMap<>();
+                map.put("name","未知");
+                map.put("value","未知");
+                map.put("count",item.getNum());
+                maps.add(map);
+            }
             Matter matter = matters.stream().filter(tem->tem.getId().toString().equals(item.getValue())).findFirst().orElse(null);
             if(matter!=null)
             {

+ 19 - 11
src/main/java/cn/cslg/pas/factorys/reGroupFactory/GetScenarioGroup.java

@@ -22,23 +22,31 @@ public class GetScenarioGroup implements QueryGroupImp {
 
     @Override
     public ReGroupDataVO getGroup(List<String> sqls, String tableName, String groupField) {
-        ReGroupDataVO reGroupDataVO =new ReGroupDataVO();
+        ReGroupDataVO reGroupDataVO = new ReGroupDataVO();
         List<Map<String, Object>> maps = new ArrayList<>();
-        String selectField = groupField;
+        String selectField = "ifnull(asps.scenario_id,0)";
         List<SystemDict> systemDictList = systemDictService.getSystemDictListByType(Arrays.asList("ENTERPRISE_APPLICATION_SCENARIO"));
         //分组查询应用场景
+        tableName =tableName+" left join (select * from pas_prod2.asso_project_event where scenario_id is not null) as asps on p.id = asps.project_id";
         List<GroupReVO> scenarioIds = eventMapper.getGroups(sqls, tableName, groupField, selectField);
-        Long total =eventMapper.getGroupsCount(sqls, tableName, groupField, selectField);
+        Long total = eventMapper.getGroupsCount(sqls, tableName, groupField, selectField);
         //装载应用场景名称
-        scenarioIds.forEach(item->{
-        SystemDict systemDict = systemDictList.stream().filter(tem->tem.getValue().equals(item.getValue())).findFirst().orElse(null);
-            if(systemDict!=null)
-            {
-                Map<String,Object> map =new HashMap<>();
-                map.put("name",systemDict.getLabel());
-                map.put("value",systemDict.getValue());
-                map.put("count",item.getNum());
+        scenarioIds.forEach(item -> {
+            if (item.getValue() .equals("0")) {
+                Map<String, Object> map = new HashMap<>();
+                map.put("name", "未知");
+                map.put("value", "未知");
+                map.put("count", item.getNum());
                 maps.add(map);
+            } else {
+                SystemDict systemDict = systemDictList.stream().filter(tem -> tem.getValue().equals(item.getValue())).findFirst().orElse(null);
+                if (systemDict != null) {
+                    Map<String, Object> map = new HashMap<>();
+                    map.put("name", systemDict.getLabel());
+                    map.put("value", systemDict.getValue());
+                    map.put("count", item.getNum());
+                    maps.add(map);
+                }
             }
         });
         reGroupDataVO.setValues(maps);

+ 1 - 1
src/main/java/cn/cslg/pas/factorys/reGroupFactory/GetTimeGroup.java

@@ -24,7 +24,7 @@ public class GetTimeGroup implements QueryGroupImp {
     public ReGroupDataVO getGroup(List<String> sqls, String tableName, String groupField) {
         ReGroupDataVO reGroupDataVO =new ReGroupDataVO();
         List<Map<String, Object>> maps = new ArrayList<>();
-        String selectField = "DATE_FORMAT(" + groupField + ",'%Y%m')";
+        String selectField = "ifnull(DATE_FORMAT(" + groupField + ",'%Y%m') ,'未知')";
         groupField = selectField;
         List<GroupReVO> reValues = eventMapper.getGroups(sqls, tableName, groupField, selectField);
         Long total =eventMapper.getGroupsCount(sqls, tableName, groupField, selectField);

+ 13 - 0
src/main/java/cn/cslg/pas/mapper/AsInvalidReasonHistoryMapper.java

@@ -0,0 +1,13 @@
+package cn.cslg.pas.mapper;
+
+import cn.cslg.pas.domain.business.AsInvalidReasonHistory;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @Author xiexiang
+ * @Date 2024/1/19
+ */
+@Repository
+public interface AsInvalidReasonHistoryMapper extends BaseMapper<AsInvalidReasonHistory> {
+}

+ 2 - 2
src/main/java/cn/cslg/pas/mapper/AssoOtherReferencesFileMapper.java

@@ -1,6 +1,6 @@
 package cn.cslg.pas.mapper;
 
-import cn.cslg.pas.domain.business.AssoOtherReferencesFile;
+import cn.cslg.pas.domain.business.AssoOtherPatentInfoFile;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.springframework.stereotype.Repository;
 
@@ -9,5 +9,5 @@ import org.springframework.stereotype.Repository;
  * @Date 2024/1/17
  */
 @Repository
-public interface AssoOtherReferencesFileMapper extends BaseMapper<AssoOtherReferencesFile> {
+public interface AssoOtherPatentInfoFileMapper extends BaseMapper<AssoOtherPatentInfoFile> {
 }

+ 13 - 0
src/main/java/cn/cslg/pas/mapper/InvalidRecordMapper.java

@@ -0,0 +1,13 @@
+package cn.cslg.pas.mapper;
+
+import cn.cslg.pas.domain.business.InvalidRecord;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @Author xiexiang
+ * @Date 2024/1/19
+ */
+@Repository
+public interface InvalidRecordMapper extends BaseMapper<InvalidRecord> {
+}

+ 9 - 0
src/main/java/cn/cslg/pas/mapper/PermissionRecordMapper.java

@@ -1,13 +1,22 @@
 package cn.cslg.pas.mapper;
 
+import cn.cslg.pas.common.dto.es.SelectValueCurveDTO;
 import cn.cslg.pas.domain.business.PermissionRecord;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 /**
  * @Author xiexiang
  * @Date 2024/1/16
  */
 @Repository
 public interface PermissionRecordMapper extends BaseMapper<PermissionRecord> {
+
+    public List<SelectValueCurveDTO> selectLicenseeMonthList(String patentNo);
+
+    public List<SelectValueCurveDTO> selectLicenseeYearList(String patentNo);
+
+    public List<SelectValueCurveDTO> selectLicenseeQuarterList(String patentNo);
 }

+ 7 - 0
src/main/java/cn/cslg/pas/mapper/ProductMarketDataMapper.java

@@ -1,5 +1,6 @@
 package cn.cslg.pas.mapper;
 
+import cn.cslg.pas.common.dto.es.SelectValueCurveDTO;
 import cn.cslg.pas.common.vo.GroupMarketDataVO;
 import cn.cslg.pas.common.vo.business.ProductMarketDataVO;
 import cn.cslg.pas.domain.business.ProductMarketData;
@@ -19,4 +20,10 @@ public interface ProductMarketDataMapper extends BaseMapper<ProductMarketData> {
     public Long getProductMarketDataCount(String sql);
     public List<GroupMarketDataVO> getGroups(List<String> sqls, String tableName, String groupField, String selectField);
     public List<GroupMarketDataVO> getPartGroups(List<String> sqls, String tableName, String groupField, String selectField);
+
+    public List<SelectValueCurveDTO> selectSaleMonthList(List<Integer> productIds);
+
+    public List<SelectValueCurveDTO> selectSaleYearList(List<Integer> productIds);
+
+    public List<SelectValueCurveDTO> selectSaleQuarterList(List<Integer> productIds);
 }

+ 1 - 0
src/main/java/cn/cslg/pas/mapper/TreeNodeMapper.java

@@ -21,4 +21,5 @@ public interface TreeNodeMapper extends BaseMapper<TreeNode> {
     List<TreeNodeVO> getTreeNodeByIds(List<Integer> ids,Boolean ifCopyChild,Integer type,Integer typeId);
     List<TreeNodeVO> getTreeNodes(String sql1,String sql2,String sql3);
     public Long getTreeNodeCount(String sql);
+    public List<String> getTreeFieldPath(List<String> ids);
 }

+ 1 - 2
src/main/java/cn/cslg/pas/service/PatentLabelService.java

@@ -39,7 +39,7 @@ public class PatentLabelService {
                 esCustomField.setStatsValue(labels);
                 esCustomField.setFieldValue(labels);
                 patent.setESCustomField(esCustomField);
-                esService.updatePatent(patent, patentWithIdVO.getId());
+                esService.updateByQuery(patent, patentWithIdVO.getId());
                 id = patentWithIdVO.getId();
             } else {
                 ESCustomField esCustomField = new ESCustomField();
@@ -50,7 +50,6 @@ public class PatentLabelService {
                 esCustomField.setFieldValue(labels);
                 esCustomField.setStatsValue(labels);
                 id = esCustomFieldService.addEsCustomFieldToEs(esCustomField, patentNo, null);
-
             }
         } catch (Exception e) {
             throw new XiaoShiException("查询失败");

+ 3 - 1
src/main/java/cn/cslg/pas/service/ReportExportService.java

@@ -142,7 +142,9 @@ public class ReportExportService {
 
     private XWPFTemplate Torttemplate(Integer reportId, String filePath) throws IOException {
         //根据报告Id查询标的专利号
-        ReportProject report = reportProjectService.getById(reportId);
+        LambdaQueryWrapper<ReportProject> projectLambdaQueryWrapper =new LambdaQueryWrapper<>();
+        projectLambdaQueryWrapper.eq(ReportProject::getProjectId,reportId);
+        ReportProject report = reportProjectService.getOne(projectLambdaQueryWrapper,false);
         String patentNo = report.getSignPatentNo();
 //        PatentVO patentVO = new PatentVO();
 //        patentVO.setPatentNos(Arrays.asList(patentNo));

+ 298 - 0
src/main/java/cn/cslg/pas/service/business/AsInvalidReasonHistoryService.java

@@ -0,0 +1,298 @@
+package cn.cslg.pas.service.business;
+
+import cn.cslg.pas.common.dto.business.AsInvalidReasonHistoryDTO;
+import cn.cslg.pas.common.model.cronModel.Personnel;
+import cn.cslg.pas.common.model.cronModel.PersonnelVO;
+import cn.cslg.pas.common.model.cronModel.Records;
+import cn.cslg.pas.common.model.cronModel.SystemFile;
+import cn.cslg.pas.common.utils.CacheUtils;
+import cn.cslg.pas.common.utils.LoginUtils;
+import cn.cslg.pas.common.utils.StringUtils;
+import cn.cslg.pas.common.vo.business.AsInvalidReasonHistoryVO;
+import cn.cslg.pas.domain.business.*;
+import cn.cslg.pas.exception.XiaoShiException;
+import cn.cslg.pas.mapper.AsInvalidReasonHistoryMapper;
+import cn.cslg.pas.service.business.invalidReport.AssoReasonLiteratureService;
+import cn.cslg.pas.service.common.FileManagerService;
+import cn.cslg.pas.service.permissions.PermissionService;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 作为无效证据使用历史
+ * @Author xiexiang
+ * @Date 2024/1/19
+ */
+@Slf4j
+@Service
+public class AsInvalidReasonHistoryService extends ServiceImpl<AsInvalidReasonHistoryMapper, AsInvalidReasonHistory> {
+    @Autowired
+    private LoginUtils loginUtils;
+
+    @Autowired
+    private CacheUtils cacheUtils;
+
+    @Autowired
+    private PermissionService permissionService;
+
+    @Autowired
+    private AssoOtherPatentInfoFileService assoOtherPatentInfoFileService;
+
+    @Autowired
+    private OtherReferencesService otherReferencesService;
+
+    @Autowired
+    private FileManagerService fileManagerService;
+
+    @Autowired
+    private CompareLiteratureService compareLiteratureService;
+
+    @Autowired
+    private ReportProjectService reportProjectService;
+
+    @Autowired
+    private ProjectService projectService;
+
+    @Autowired
+    private InvalidRecordService invalidRecordService;
+
+    @Autowired
+    private AssoReasonLiteratureService assoReasonLiteratureService;
+
+    /**
+     * 新增or更新
+     * @param asInvalidReasonHistoryDTO
+     * @return
+     */
+    public Integer saveOrUpdate(AsInvalidReasonHistoryDTO asInvalidReasonHistoryDTO){
+        if (asInvalidReasonHistoryDTO == null) {
+            throw new XiaoShiException("入参为空");
+        }
+        Integer id = asInvalidReasonHistoryDTO.getId();
+        List<String> fileGuids = asInvalidReasonHistoryDTO.getFileGuids();
+        AsInvalidReasonHistory asInvalidReasonHistory = new AsInvalidReasonHistory();
+        Integer type = 5;
+        if (id != null) {
+            //update
+            asInvalidReasonHistory = this.getById(id);
+            BeanUtils.copyProperties(asInvalidReasonHistoryDTO, asInvalidReasonHistory);
+            asInvalidReasonHistory.updateById();
+            //先删除 后添加
+            LambdaQueryWrapper<AssoOtherPatentInfoFile> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(AssoOtherPatentInfoFile::getOtherPatentInfoId, id)
+                    .eq(AssoOtherPatentInfoFile::getType, type);
+            assoOtherPatentInfoFileService.remove(queryWrapper);
+            if (fileGuids != null && !fileGuids.isEmpty()) {
+                List<Integer> fileIds = otherReferencesService.addFile(asInvalidReasonHistory.getId(), fileGuids, type);
+            }
+        } else {
+            BeanUtils.copyProperties(asInvalidReasonHistoryDTO, asInvalidReasonHistory);
+            PersonnelVO personnelVO = new PersonnelVO();
+            try {
+                personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+            } catch (Exception e) {
+                throw new XiaoShiException("未查询到当前登陆人");
+            }
+            asInvalidReasonHistory.setCreateId(personnelVO.getId());
+            asInvalidReasonHistory.setTenantId(personnelVO.getTenantId());
+            asInvalidReasonHistory.insert();
+            if (fileGuids != null && !fileGuids.isEmpty()) {
+                //先删除 后添加
+                List<Integer> fileIds = otherReferencesService.addFile(asInvalidReasonHistory.getId(), fileGuids, type);
+            }
+        }
+        return asInvalidReasonHistory.getId();
+    }
+
+    /**
+     * 查询
+     * @param patentNo
+     * @return
+     * @throws IOException
+     */
+    public Records getAsInvalidReasonHistory(String patentNo) throws IOException {
+        List<AsInvalidReasonHistoryVO> asInvalidReasonHistoryVOS = new ArrayList<>();
+        if (patentNo == null || StringUtils.isEmpty(patentNo)) {
+            throw new XiaoShiException("入参为空");
+        }
+
+        LambdaQueryWrapper<AsInvalidReasonHistory> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(AsInvalidReasonHistory::getPatentNo, patentNo)
+                .orderByDesc(AsInvalidReasonHistory::getInvalidTime);
+        List<AsInvalidReasonHistory> asInvalidReasonHistories = this.list(queryWrapper);
+
+        if (!asInvalidReasonHistories.isEmpty()) {
+            asInvalidReasonHistories.forEach(item -> {
+                AsInvalidReasonHistoryVO asInvalidReasonHistoryVO = new AsInvalidReasonHistoryVO();
+                BeanUtils.copyProperties(item, asInvalidReasonHistoryVO);
+                asInvalidReasonHistoryVO.setIfAdd(true);
+                LambdaQueryWrapper<AssoOtherPatentInfoFile> queryWrapper1 = new LambdaQueryWrapper<>();
+                queryWrapper1.eq(AssoOtherPatentInfoFile::getOtherPatentInfoId, asInvalidReasonHistoryVO.getId())
+                        .eq(AssoOtherPatentInfoFile::getType, 5);
+                List<AssoOtherPatentInfoFile> assoOtherPatentInfoFiles = assoOtherPatentInfoFileService.list(queryWrapper1);
+                if (!assoOtherPatentInfoFiles.isEmpty()) {
+                    List<String> fileGuids = assoOtherPatentInfoFiles.stream().map(AssoOtherPatentInfoFile::getFileGuid).collect(Collectors.toList());
+                    asInvalidReasonHistoryVO.setFileGuids(fileGuids);
+                }
+                asInvalidReasonHistoryVOS.add(asInvalidReasonHistoryVO);
+            });
+        }
+        List<AsInvalidReasonHistoryVO> finalVOS = this.findInInvalidReport(patentNo, asInvalidReasonHistoryVOS);
+        this.loadAsInvalidReasonHistoryVOS(finalVOS);
+        Records records = new Records();
+        records.setData(finalVOS);
+        return records;
+    }
+
+    /**
+     * 装载
+     * @param asInvalidReasonHistoryVOS
+     * @throws IOException
+     */
+    public void loadAsInvalidReasonHistoryVOS(List<AsInvalidReasonHistoryVO> asInvalidReasonHistoryVOS) throws IOException {
+        List<String> createIds = new ArrayList<>();
+        asInvalidReasonHistoryVOS.forEach(item -> {
+            if (item.getCreateId() != null) {
+                createIds.add(item.getCreateId());
+            }
+        });
+        List<Personnel> personnels = new ArrayList<>();
+        //查询发起人名称
+        if (createIds.size() != 0) {
+            String res = permissionService.getPersonnelByIdsFromPCS(createIds);
+            JSONObject jsonObject = JSONObject.parseObject(res);
+            personnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
+        }
+        //装载信息
+        for (AsInvalidReasonHistoryVO asInvalidReasonHistoryVO : asInvalidReasonHistoryVOS) {
+            //装载人员信息
+            Personnel personnel = personnels.stream().filter(item -> item.getId().equals(asInvalidReasonHistoryVO.getCreateId())).findFirst().orElse(null);
+            if (personnel != null) {
+                asInvalidReasonHistoryVO.setCreateName(personnel.getPersonnelName());
+            }
+            LambdaQueryWrapper<AssoOtherPatentInfoFile> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(AssoOtherPatentInfoFile::getOtherPatentInfoId, asInvalidReasonHistoryVO.getId())
+                    .eq(AssoOtherPatentInfoFile::getType, 5);
+            List<AssoOtherPatentInfoFile> assoOtherPatentInfoFiles = assoOtherPatentInfoFileService.list(queryWrapper);
+            if (!assoOtherPatentInfoFiles.isEmpty()) {
+                List<String> fileGuids = assoOtherPatentInfoFiles.stream().map(AssoOtherPatentInfoFile::getFileGuid).collect(Collectors.toList());
+                asInvalidReasonHistoryVO.setFileGuids(fileGuids);
+                List<SystemFile> systemFiles = new ArrayList<>();
+                if (fileGuids.size() != 0) {
+                    String res = fileManagerService.getSystemFileFromFMS(fileGuids);
+                    systemFiles = JSONObject.parseArray(res, SystemFile.class);
+                }
+                if (!systemFiles.isEmpty()) {
+                    asInvalidReasonHistoryVO.setSystemFileList(systemFiles);
+                }
+            }
+        }
+    }
+
+    /**
+     * 删除
+     * @param ids
+     * @return
+     */
+    public List<Integer> deleteAsInvalidReasonHistory(List<Integer> ids) {
+        if (!ids.isEmpty()) {
+            //先删除附件
+            LambdaQueryWrapper<AssoOtherPatentInfoFile> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.in(AssoOtherPatentInfoFile::getOtherPatentInfoId, ids)
+                    .eq(AssoOtherPatentInfoFile::getType, 5);
+            assoOtherPatentInfoFileService.remove(queryWrapper);
+            this.removeBatchByIds(ids);
+        }
+        return ids;
+    }
+
+    /**
+     * 查询全部的
+     * @param patentNo
+     * @param asInvalidReasonHistoryVOS
+     * @return
+     */
+    public List<AsInvalidReasonHistoryVO> findInInvalidReport(String patentNo, List<AsInvalidReasonHistoryVO> asInvalidReasonHistoryVOS){
+        List<AsInvalidReasonHistoryVO> finalVOS = new ArrayList<>();
+        finalVOS.addAll(asInvalidReasonHistoryVOS);
+        //查询出所有的projectId
+        LambdaQueryWrapper<CompareLiterature> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(CompareLiterature::getLiteratureNo, patentNo);
+        List<CompareLiterature> compareLiteratures = compareLiteratureService.list(queryWrapper);
+        //对比文献号存在
+        if (!compareLiteratures.isEmpty()) {
+            //取出所有报告并留下是无效的
+            List<Integer> projectIds = compareLiteratures
+                    .stream()
+                    .map(CompareLiterature::getProjectId)
+                    .collect(Collectors.toList());
+            LambdaQueryWrapper<ReportProject> queryWrapper1 = new LambdaQueryWrapper<>();
+            queryWrapper1.in(ReportProject::getProjectId, projectIds);
+            List<ReportProject> results = reportProjectService.list(queryWrapper1);
+            if (!results.isEmpty()) {
+                results.forEach(
+                        item -> {
+                            Project project = projectService.getById(item.getProjectId());
+                            if (project.getType().equals(2)) {
+                                if (item.getReportType().equals(7)) {
+                                    AsInvalidReasonHistoryVO asVO = new AsInvalidReasonHistoryVO();
+                                    asVO.setPatentNo(patentNo);
+                                    asVO.setInvalidedPatent(item.getSignPatentNo());
+                                    asVO.setInvalidCaseNum(item.getCaseNumber());
+                                    Integer affairType = 1;
+                                    Date invalidTime = invalidRecordService.loadInvalidTime(affairType, item);
+                                    asVO.setInvalidTime(invalidTime);
+                                    asVO.setCreateId(project.getCreateId());
+                                    asVO.setCreateTime(project.getCreateTime());
+                                    List<String> fileGuids = invalidRecordService.loadFileGuids(item.getProjectId());
+                                    asVO.setFileGuids(fileGuids);
+                                    asVO.setIfAdd(false);
+                                    finalVOS.add(asVO);
+                                } else if (item.getReportType().equals(1) || item.getReportType().equals(2)) {
+                                    //判断是否有对比结果
+                                    LambdaQueryWrapper<CompareLiterature> queryWrapper2 = new LambdaQueryWrapper<>();
+                                    queryWrapper2.eq(CompareLiterature::getLiteratureNo, patentNo)
+                                            .eq(CompareLiterature::getProjectId, item.getProjectId());
+                                    CompareLiterature compareLiterature = compareLiteratureService.getOne(queryWrapper2, false);
+                                    if (compareLiterature != null) {
+                                        Integer compareLiteratureId = compareLiterature.getId();
+                                        LambdaQueryWrapper<AssoReasonLiterature> queryWrapper3 = new LambdaQueryWrapper<>();
+                                        queryWrapper3.eq(AssoReasonLiterature::getLiteratureId, compareLiteratureId);
+                                        List<AssoReasonLiterature> assoReasonLiteratures = assoReasonLiteratureService.list(queryWrapper3);
+                                        if (!assoReasonLiteratures.isEmpty()) {
+                                            AsInvalidReasonHistoryVO asVO = new AsInvalidReasonHistoryVO();
+                                            asVO.setPatentNo(patentNo);
+                                            asVO.setInvalidedPatent(item.getSignPatentNo());
+                                            asVO.setInvalidCaseNum(item.getCaseNumber());
+                                            Integer affairType = 1;
+                                            Date invalidTime = invalidRecordService.loadInvalidTime(affairType, item);
+                                            asVO.setInvalidTime(invalidTime);
+                                            asVO.setCreateId(project.getCreateId());
+                                            asVO.setCreateTime(project.getCreateTime());
+                                            List<String> fileGuids = invalidRecordService.loadFileGuids(item.getProjectId());
+                                            asVO.setFileGuids(fileGuids);
+                                            asVO.setIfAdd(false);
+                                            finalVOS.add(asVO);
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                );
+            }
+        }
+        return finalVOS;
+    }
+
+}

+ 3 - 3
src/main/java/cn/cslg/pas/service/business/AssoOtherReferencesFileService.java

@@ -1,7 +1,7 @@
 package cn.cslg.pas.service.business;
 
-import cn.cslg.pas.domain.business.AssoOtherReferencesFile;
-import cn.cslg.pas.mapper.AssoOtherReferencesFileMapper;
+import cn.cslg.pas.domain.business.AssoOtherPatentInfoFile;
+import cn.cslg.pas.mapper.AssoOtherPatentInfoFileMapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -12,5 +12,5 @@ import org.springframework.stereotype.Service;
  */
 @Slf4j
 @Service
-public class AssoOtherReferencesFileService extends ServiceImpl<AssoOtherReferencesFileMapper, AssoOtherReferencesFile> {
+public class AssoOtherPatentInfoFileService extends ServiceImpl<AssoOtherPatentInfoFileMapper, AssoOtherPatentInfoFile> {
 }

+ 12 - 1
src/main/java/cn/cslg/pas/service/business/CustomFieldService.java

@@ -456,8 +456,19 @@ public class CustomFieldService extends ServiceImpl<CustomFieldMapper, CustomFie
                         treeNodes.forEach(item -> {
                             FieldValueVO fieldValueVO = new FieldValueVO();
                             fieldValueVO.setValueId(item.getId());
-                            fieldValueVO.setValue(item.getName());
                             fieldValueVO.setPath(item.getPath());
+
+                            List<String> idStrs = new ArrayList<>();
+                            List<String> pathNames =new ArrayList<>();
+                            if (item.getPath() != null && !item.getPath().equals("")) {
+                                idStrs = Arrays.asList(item.getPath().split("/"));
+                            pathNames=  treeNodeService.getBaseMapper().getTreeFieldPath(idStrs);
+
+                            }
+                            pathNames.add(item.getName());
+                         String pathValue=   StringUtils.join(pathNames,"/");
+                         fieldValueVO.setPathValue(pathValue);
+                            fieldValueVO.setValue(pathValue);
                             fieldValueVOS.add(fieldValueVO);
                         });
                     }

+ 41 - 39
src/main/java/cn/cslg/pas/service/business/EventService.java

@@ -76,10 +76,10 @@ public class EventService extends ServiceImpl<EventMapper, Event> implements Bus
     @Transactional(rollbackFor = Exception.class)
     public Object queryMessage(QueryRequest queryRequest) throws Exception {
 
-       List<String> sqls = formatQueryService.reSqls(queryRequest,"event");
-        sqls=this.loadSearchSql(sqls);
-       //根据sql查询事件信息
-        List<EventVO> eventVOS = eventMapper.getEvent(sqls.get(0),sqls.get(1),sqls.get(2));
+        List<String> sqls = formatQueryService.reSqls(queryRequest, "event");
+        sqls = this.loadSearchSql(sqls);
+        //根据sql查询事件信息
+        List<EventVO> eventVOS = eventMapper.getEvent(sqls.get(0), sqls.get(1), sqls.get(2));
 
         //查询总数
         Long total = eventMapper.getEventCount(sqls.get(0));
@@ -177,7 +177,7 @@ public class EventService extends ServiceImpl<EventMapper, Event> implements Bus
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Object updateMessage(Object object, List<MultipartFile> files) {
-        PersonnelVO personnelVO =cacheUtils.getLoginUser(loginUtils.getId());
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
         UpdateEventDTO updateEventDTO = (UpdateEventDTO) object;
         //检查事件格式
         if (updateEventDTO == null || updateEventDTO.getId() == null) {
@@ -191,7 +191,7 @@ public class EventService extends ServiceImpl<EventMapper, Event> implements Bus
         LambdaQueryWrapper<Event> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(Event::getName, name);
         List<Event> events = this.list(queryWrapper);
-        if (!updateEventDTO.getName().equals(event.getName())  && events.size() != 0) {
+        if (!updateEventDTO.getName().equals(event.getName()) && events.size() != 0) {
             throw new XiaoShiException("名称重复");
         }
         BeanUtils.copyProperties(updateEventDTO, event);
@@ -253,15 +253,15 @@ public class EventService extends ServiceImpl<EventMapper, Event> implements Bus
      * @throws Exception
      */
     @Transactional(rollbackFor = Exception.class)
-    public Object getGroup(GroupRequest groupRequest,String tableName) throws Exception {
-        StringRequest stringRequest =new StringRequest();
-        BeanUtils.copyProperties(groupRequest,stringRequest);
-        List<String> sqls = formatQueryService.reSqls(stringRequest,tableName);
-        sqls =this.loadSearchSql(sqls);
+    public Object getGroup(GroupRequest groupRequest, String tableName) throws Exception {
+        StringRequest stringRequest = new StringRequest();
+        BeanUtils.copyProperties(groupRequest, stringRequest);
+        List<String> sqls = formatQueryService.reSqls(stringRequest, tableName);
+        sqls = this.loadSearchSql(sqls);
         //格式化 分组
-        GroupConfig groupConfig=null;
+        GroupConfig groupConfig = null;
         if (groupRequest.getGroupBy() != null) {
-            String json = CommonService.readJsonFile(tableName+".json");
+            String json = CommonService.readJsonFile(tableName + ".json");
             List<GroupConfig> groupConfigs = JSON.parseArray(json, GroupConfig.class);
             groupConfig = groupConfigs.stream().filter(item -> groupRequest.getGroupBy().equals(item.getField())).findFirst().orElse(null);
             if (groupConfig == null) {
@@ -271,7 +271,7 @@ public class EventService extends ServiceImpl<EventMapper, Event> implements Bus
 
         //返回分组数据
         QueryGroupImp queryGroupImp = queryGroupFactory.getClass(groupConfig.getGroupClass());
-        ReGroupDataVO  reGroupDataVO = queryGroupImp.getGroup(sqls, tableName, groupConfig.getSqlField());
+        ReGroupDataVO reGroupDataVO = queryGroupImp.getGroup(sqls, tableName, groupConfig.getSqlField());
 
         //装载数据
         GroupVO groupVO = new GroupVO();
@@ -355,9 +355,9 @@ public class EventService extends ServiceImpl<EventMapper, Event> implements Bus
         //查询文件
         if (guids.size() != 0) {
             String res = fileManagerService.getSystemFileFromFMS(guids);
-if(res!=null&&!res.trim().equals("")) {
-    systemFiles = JSONObject.parseArray(res, SystemFile.class);
-}
+            if (res != null && !res.trim().equals("")) {
+                systemFiles = JSONObject.parseArray(res, SystemFile.class);
+            }
         }
 
         //查询关联报告或专题库
@@ -434,33 +434,35 @@ if(res!=null&&!res.trim().equals("")) {
 
     }
 
-public List<Integer> getEventIdByName(String value,Boolean ifEqual){
-    LambdaQueryWrapper<Event> queryWrapper = new LambdaQueryWrapper<>();
-    queryWrapper.select(Event::getId);
-    if (ifEqual != null && ifEqual.equals(true)) {
-        queryWrapper.like(Event::getName, value);
-    } else {
-        queryWrapper.eq(Event::getName, value);
-    }
-    java.util.function.Function<Object, Integer> f = (o -> Integer.parseInt(o.toString()));
-    List<Integer> ids = this.listObjs(queryWrapper, f);
-    return ids;
+    public List<Integer> getEventIdByName(String value, Boolean ifEqual) {
+        LambdaQueryWrapper<Event> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.select(Event::getId);
+        if (ifEqual != null && ifEqual.equals(true)) {
+            queryWrapper.like(Event::getName, value);
+        } else {
+            queryWrapper.eq(Event::getName, value);
+        }
+        java.util.function.Function<Object, Integer> f = (o -> Integer.parseInt(o.toString()));
+        List<Integer> ids = this.listObjs(queryWrapper, f);
+        return ids;
 
-}
+    }
 
 
     //装载查询语句
-    private List<String> loadSearchSql(List<String> sqls){
-        PersonnelVO personnelVO =cacheUtils.getLoginUser(loginUtils.getId());
-        Integer tenant_id =personnelVO.getTenantId();
-        String rootSql ="(tenant_id ="+tenant_id+")";
-        if(sqls.get(0)!=null&&!sqls.get(0).equals(""))
-        {
-            sqls.set(0,rootSql+" and"+"("+sqls.get(0)+")");
-
+    private List<String> loadSearchSql(List<String> sqls) {
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        Integer tenant_id = personnelVO.getTenantId();
+        Integer roleType = personnelVO.getRoleType();
+        String rootSql = "";
+        if (roleType == null || roleType.equals(2) || roleType.equals(0)) {
+            rootSql = "(tenant_id =" + tenant_id + ")";
         }
-        else {
-            sqls.set(0,rootSql);
+
+        if (sqls.get(0) != null && !sqls.get(0).equals("")&&!rootSql.equals("")) {
+            sqls.set(0, rootSql + " and" + "(" + sqls.get(0) + ")");
+        } else if((sqls.get(0) == null ||sqls.get(0).equals(""))&&!rootSql.equals("")){
+            sqls.set(0, rootSql);
         }
 
         return sqls;

+ 39 - 2
src/main/java/cn/cslg/pas/service/business/FeatureService.java

@@ -18,6 +18,7 @@ import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.mapper.FeatureMapper;
 import cn.cslg.pas.service.business.es.EsService;
 import cn.cslg.pas.service.business.invalidReport.AssoGroupFeatureService;
+import cn.cslg.pas.service.common.PatentStarApiService;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -56,6 +57,8 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Feature> {
     @Lazy
     private AssoGroupFeatureService assoGroupFeatureService;
 
+    @Autowired
+    private PatentStarApiService patentStarApiService;
     @Transactional(rollbackFor = Exception.class)
     public List<PatentRightVo> splitPatentFeature(SplitVO splitVO) throws IOException {
         String patentNo = splitVO.getPatentNo();
@@ -190,6 +193,40 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Feature> {
         return patentRights;
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    public List<RePatentClaim> getRightListByNo(String patentNo,String appNo) throws IOException {
+        //从pas获得拆分后的权要
+        SelectClaimDTO selectClaimDTO = null;
+        String patentRight ="";
+        try {if(appNo!=null) {
+            selectClaimDTO = patentStarApiService.getOrginCalim(appNo);
+            if(selectClaimDTO!=null&&selectClaimDTO.getClaimContent()!=null&&selectClaimDTO.getClaimContent().size()!=0){
+              patentRight=selectClaimDTO.getClaimContent().get(0).getTextContent();
+
+            }
+        }
+        else if(patentNo!=null){
+            selectClaimDTO = esService.selectClaim(patentNo);
+            patentRight =selectClaimDTO.getClaim();
+        }
+
+        } catch (Exception e) {
+            throw new XiaoShiException("未查询到权要");
+        }
+        if (selectClaimDTO == null) {
+            throw new XiaoShiException("未查询到权要");
+        }
+
+        PatentRightParams params = new PatentRightParams();
+        params.setContent(patentRight);
+        params.setPatentNo(patentNo);
+        List<RePatentClaim> patentRights = PatentRightUtils.formatPatentRight(params);
+        patentRights.forEach(item -> {
+            item.setRightName("权要" + (item.getSort() + 1));
+        });
+        return patentRights;
+    }
+
     //获得专利拆分信息
     public QuerySplitVO getSplitMessage(QuerySplitDTO splitDTO) {
         QuerySplitVO splitVO = new QuerySplitVO();
@@ -224,9 +261,9 @@ public class FeatureService extends ServiceImpl<FeatureMapper, Feature> {
         }
     }
 
-    public List<PatentRightTree> getPatentRightTree(String patentNo) {
+    public List<PatentRightTree> getPatentRightTree(String patentNo,String appNo) {
         try {
-            List<RePatentClaim> patentRights = this.getRightListByNo(patentNo);
+            List<RePatentClaim> patentRights = this.getRightListByNo(patentNo,appNo);
 
             List<PatentRightTree> treeNodeList = new ArrayList<>();
             //装载权要原文

+ 3 - 1
src/main/java/cn/cslg/pas/service/business/HightlightTemplateService.java

@@ -10,6 +10,7 @@ import cn.cslg.pas.common.utils.StringUtils;
 import cn.cslg.pas.common.vo.HightlightTemplateVO;
 import cn.cslg.pas.common.vo.business.ProjectTaskVO;
 import cn.cslg.pas.domain.business.HightlightTemplate;
+import cn.cslg.pas.domain.business.LitigationHistory;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.mapper.HightlightTemplateMapper;
 import cn.cslg.pas.service.permissions.PermissionService;
@@ -102,7 +103,8 @@ public class HightlightTemplateService extends ServiceImpl<HightlightTemplateMap
         List<HightlightTemplateVO> hightlightTemplateVOS = new ArrayList<>();
         LambdaQueryWrapper<HightlightTemplate> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(HightlightTemplate::getProjectId, projectId)
-                .eq(HightlightTemplate::getCreateId, personnelVO.getId());
+                .eq(HightlightTemplate::getCreateId, personnelVO.getId())
+                .orderByDesc(HightlightTemplate::getCreateTime);
         List<HightlightTemplate> hightlightTemplates = this.list(queryWrapper);
 
         if (!hightlightTemplates.isEmpty()) {

+ 1 - 0
src/main/java/cn/cslg/pas/service/business/ImportTaskService.java

@@ -163,6 +163,7 @@ public class ImportTaskService extends ServiceImpl<ImportTaskMapper, ImportTask>
         importTaskCondition.setOrderBy(importTaskDTO.getOrderBy());
         importTaskCondition.setOrderByType(importTaskDTO.getOrderByType());
         importTaskCondition.setCreateId(personnelVO.getId());
+
         if (importTaskDTO.getPatentNos() != null && importTaskDTO.getPatentNos().size() > 0) {
             String jsons = JSONObject.toJSON(importTaskDTO.getPatentNos()).toString();
             importTaskCondition.setPatentNos(jsons);

+ 309 - 0
src/main/java/cn/cslg/pas/service/business/InvalidRecordService.java

@@ -0,0 +1,309 @@
+package cn.cslg.pas.service.business;
+
+import cn.cslg.pas.common.dto.business.InvalidRecordDTO;
+import cn.cslg.pas.common.model.cronModel.Personnel;
+import cn.cslg.pas.common.model.cronModel.PersonnelVO;
+import cn.cslg.pas.common.model.cronModel.Records;
+import cn.cslg.pas.common.model.cronModel.SystemFile;
+import cn.cslg.pas.common.utils.CacheUtils;
+import cn.cslg.pas.common.utils.LoginUtils;
+import cn.cslg.pas.common.utils.StringUtils;
+import cn.cslg.pas.common.vo.business.InvalidRecordVO;
+import cn.cslg.pas.domain.business.*;
+import cn.cslg.pas.exception.XiaoShiException;
+import cn.cslg.pas.mapper.InvalidRecordMapper;
+import cn.cslg.pas.service.common.FileManagerService;
+import cn.cslg.pas.service.permissions.PermissionService;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 被无效历史
+ * @Author xiexiang
+ * @Date 2024/1/19
+ */
+@Slf4j
+@Service
+public class InvalidRecordService extends ServiceImpl<InvalidRecordMapper, InvalidRecord> {
+    @Autowired
+    private LoginUtils loginUtils;
+
+    @Autowired
+    private CacheUtils cacheUtils;
+
+    @Autowired
+    private PermissionService permissionService;
+
+    @Autowired
+    private AssoOtherPatentInfoFileService assoOtherPatentInfoFileService;
+
+    @Autowired
+    private OtherReferencesService otherReferencesService;
+
+    @Autowired
+    private FileManagerService fileManagerService;
+
+    @Autowired
+    private CompareLiteratureService compareLiteratureService;
+
+    @Autowired
+    private ReportProjectService reportProjectService;
+
+    @Autowired
+    private ProjectService projectService;
+
+    @Autowired
+    private ReportAffairService reportAffairService;
+
+    @Autowired
+    private AssoProjectFileService assoProjectFileService;
+
+    /**
+     * 新增or更新
+     * @param invalidRecordDTO
+     * @return
+     */
+    public Integer saveOrUpdate(InvalidRecordDTO invalidRecordDTO){
+        if (invalidRecordDTO == null) {
+            throw new XiaoShiException("入参为空");
+        }
+        Integer id = invalidRecordDTO.getId();
+        List<String> fileGuids = invalidRecordDTO.getFileGuids();
+        InvalidRecord invalidRecord = new InvalidRecord();
+        Integer type = 6;
+        if (id != null) {
+            //update
+            invalidRecord = this.getById(id);
+            BeanUtils.copyProperties(invalidRecordDTO, invalidRecord);
+            invalidRecord.updateById();
+            //先删除 后添加
+            LambdaQueryWrapper<AssoOtherPatentInfoFile> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(AssoOtherPatentInfoFile::getOtherPatentInfoId, id)
+                    .eq(AssoOtherPatentInfoFile::getType, type);
+            assoOtherPatentInfoFileService.remove(queryWrapper);
+            if (fileGuids != null && !fileGuids.isEmpty()) {
+                List<Integer> fileIds = otherReferencesService.addFile(invalidRecord.getId(), fileGuids, type);
+            }
+        } else {
+            BeanUtils.copyProperties(invalidRecordDTO, invalidRecord);
+            PersonnelVO personnelVO = new PersonnelVO();
+            try {
+                personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+            } catch (Exception e) {
+                throw new XiaoShiException("未查询到当前登陆人");
+            }
+            invalidRecord.setCreateId(personnelVO.getId());
+            invalidRecord.insert();
+            if (fileGuids != null && !fileGuids.isEmpty()) {
+                //先删除 后添加
+                List<Integer> fileIds = otherReferencesService.addFile(invalidRecord.getId(), fileGuids, type);
+            }
+        }
+        return invalidRecord.getId();
+    }
+
+    /**
+     * 查询
+     * @param patentNo
+     * @return
+     * @throws IOException
+     */
+    public Records getInvalidRecord(String patentNo) throws IOException {
+        List<InvalidRecordVO> invalidRecordVOS = new ArrayList<>();
+        if (patentNo == null || StringUtils.isEmpty(patentNo)) {
+            throw new XiaoShiException("入参为空");
+        }
+
+        LambdaQueryWrapper<InvalidRecord> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(InvalidRecord::getPatentNo, patentNo);
+        List<InvalidRecord> invalidRecords = this.list(queryWrapper);
+
+        if (!invalidRecords.isEmpty()) {
+            invalidRecords.forEach(item -> {
+                InvalidRecordVO invalidRecordVO = new InvalidRecordVO();
+                BeanUtils.copyProperties(item, invalidRecordVO);
+                invalidRecordVO.setIfAdd(true);
+                invalidRecordVOS.add(invalidRecordVO);
+            });
+        }
+        List<InvalidRecordVO> finalVOS = this.findInvalidRecord(patentNo, invalidRecordVOS);
+        this.loadInvalidRecordVOS(finalVOS);
+        Records records = new Records();
+        records.setData(finalVOS);
+        return records;
+    }
+
+    /**
+     * 装载
+     * @param invalidRecordVOS
+     * @throws IOException
+     */
+    public void loadInvalidRecordVOS(List<InvalidRecordVO> invalidRecordVOS) throws IOException {
+        List<String> createIds = new ArrayList<>();
+        invalidRecordVOS.forEach(item -> {
+            if (item.getCreateId() != null) {
+                createIds.add(item.getCreateId());
+            }
+        });
+        List<Personnel> personnels = new ArrayList<>();
+        //查询发起人名称
+        if (createIds.size() != 0) {
+            String res = permissionService.getPersonnelByIdsFromPCS(createIds);
+            JSONObject jsonObject = JSONObject.parseObject(res);
+            personnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
+        }
+        //装载信息
+        for (InvalidRecordVO invalidRecordVO : invalidRecordVOS) {
+            //装载人员信息
+            Personnel personnel = personnels.stream().filter(item -> item.getId().equals(invalidRecordVO.getCreateId())).findFirst().orElse(null);
+            if (personnel != null) {
+                invalidRecordVO.setCreateName(personnel.getPersonnelName());
+            }
+            LambdaQueryWrapper<AssoOtherPatentInfoFile> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(AssoOtherPatentInfoFile::getOtherPatentInfoId, invalidRecordVO.getId())
+                    .eq(AssoOtherPatentInfoFile::getType, 6);
+            List<AssoOtherPatentInfoFile> assoOtherPatentInfoFiles = assoOtherPatentInfoFileService.list(queryWrapper);
+            if (!assoOtherPatentInfoFiles.isEmpty()) {
+                List<String> fileGuids = assoOtherPatentInfoFiles.stream().map(AssoOtherPatentInfoFile::getFileGuid).collect(Collectors.toList());
+                invalidRecordVO.setFileGuids(fileGuids);
+                List<SystemFile> systemFiles = new ArrayList<>();
+                if (fileGuids.size() != 0) {
+                    String res = fileManagerService.getSystemFileFromFMS(fileGuids);
+                    systemFiles = JSONObject.parseArray(res, SystemFile.class);
+                }
+                if (!systemFiles.isEmpty()) {
+                    invalidRecordVO.setSystemFileList(systemFiles);
+                }
+            }
+        }
+    }
+
+    /**
+     * 删除
+     * @param ids
+     * @return
+     */
+    public List<Integer> deleteInvalidRecord(List<Integer> ids) {
+        if (!ids.isEmpty()) {
+            //先删除附件
+            LambdaQueryWrapper<AssoOtherPatentInfoFile> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.in(AssoOtherPatentInfoFile::getOtherPatentInfoId, ids)
+                    .eq(AssoOtherPatentInfoFile::getType, 5);
+            assoOtherPatentInfoFileService.remove(queryWrapper);
+            this.removeBatchByIds(ids);
+        }
+        return ids;
+    }
+
+    public List<InvalidRecordVO> findInvalidRecord(String patentNo, List<InvalidRecordVO> invalidRecordVOS){
+        List<InvalidRecordVO> finalVOS = new ArrayList<>();
+        finalVOS.addAll(invalidRecordVOS);
+        LambdaQueryWrapper<ReportProject> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ReportProject::getSignPatentNo, patentNo);
+        List<ReportProject> reportProjects = reportProjectService.list(queryWrapper);
+        if (!reportProjects.isEmpty()) {
+            reportProjects.forEach(item -> {
+                Project project = projectService.getById(item.getProjectId());
+                Integer type = item.getReportType();
+                //报告类型为稳定性分析和第三方意见  查询无效请求书
+                if (type.equals(1) || type.equals(2)) {
+                    InvalidRecordVO invalidRecordVO = new InvalidRecordVO();
+                    invalidRecordVO.setInvalidCaseNum(item.getCaseNumber());
+                    invalidRecordVO.setPatentNo(patentNo);
+                    Integer affairType = 1;
+                    Date time = this.loadInvalidTime(affairType, item);
+                    invalidRecordVO.setInvalidTime(time);
+                    invalidRecordVO.setCreateId(project.getCreateId());
+                    invalidRecordVO.setCreateTime(project.getCreateTime());
+                    List<String> fileGuids = this.loadFileGuids(item.getProjectId());
+                    invalidRecordVO.setFileGuids(fileGuids);
+                    invalidRecordVO.setIfAdd(false);
+                    finalVOS.add(invalidRecordVO);
+                } else if (type.equals(7)) {
+                    //报告类型为官方无效  查询行政判决诉讼书
+                    InvalidRecordVO invalidRecordVO = new InvalidRecordVO();
+                    invalidRecordVO.setInvalidCaseNum(item.getCaseNumber());
+                    invalidRecordVO.setPatentNo(patentNo);
+                    Integer affairType = 1;
+                    Date invalidTime = this.loadInvalidTime(affairType, item);
+                    invalidRecordVO.setInvalidTime(invalidTime);
+                    Integer judgeType = 5;
+                    Date judgeTime = this.loadInvalidTime(judgeType, item);
+                    invalidRecordVO.setJudgementTime(judgeTime);
+                    invalidRecordVO.setCreateId(project.getCreateId());
+                    invalidRecordVO.setCreateTime(project.getCreateTime());
+                    List<String> fileGuids = this.loadFileGuids(item.getProjectId());
+                    invalidRecordVO.setFileGuids(fileGuids);
+                    invalidRecordVO.setIfAdd(false);
+                    finalVOS.add(invalidRecordVO);
+                }
+            });
+        }
+        return finalVOS;
+    }
+
+    public Date loadInvalidTime(Integer type, ReportProject reportProject){
+        LambdaQueryWrapper<ReportAffair> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ReportAffair::getAffairType, type)
+                .eq(ReportAffair::getProjectId, reportProject.getProjectId())
+                .orderByDesc(ReportAffair::getCreateTime)
+                .last("LIMIT 1");
+        ReportAffair reportAffair = reportAffairService.getOne(queryWrapper, false);
+        if (reportAffair != null) {
+            return reportAffair.getOccurredTime();
+        } else {
+            return null;
+        }
+    }
+
+    public List<String> loadFileGuids(Integer projectId){
+        List<String> fileGuids = new ArrayList<>();
+        LambdaQueryWrapper<AssoProjectFile> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(AssoProjectFile::getProjectId, projectId);
+        List<AssoProjectFile> assoProjectFiles = assoProjectFileService.list(queryWrapper);
+        if (!assoProjectFiles.isEmpty()) {
+            fileGuids = assoProjectFiles.stream().map(AssoProjectFile::getFileGuid).collect(Collectors.toList());
+        }
+        return fileGuids;
+    }
+
+//    /**
+//     * 先查判决书 后查决定书
+//     * @param reportProject
+//     * @return
+//     */
+//    public String getResult(ReportProject reportProject){
+//        LambdaQueryWrapper<ReportAffair> queryWrapper = new LambdaQueryWrapper<>();
+//        queryWrapper.eq(ReportAffair::getAffairType, 5)
+//                .eq(ReportAffair::getProjectId, reportProject.getProjectId())
+//                .orderByDesc(ReportAffair::getCreateTime)
+//                .last("LIMIT 1");
+//        ReportAffair reportAffair = reportAffairService.getOne(queryWrapper, false);
+//        if (reportAffair != null) {
+//            return reportAffair.getDescription();
+//        } else {
+//            LambdaQueryWrapper<ReportAffair> queryWrapper1 = new LambdaQueryWrapper<>();
+//            queryWrapper1.eq(ReportAffair::getAffairType, 3)
+//                    .eq(ReportAffair::getProjectId, reportProject.getProjectId())
+//                    .orderByDesc(ReportAffair::getCreateTime)
+//                    .last("LIMIT 1");
+//            ReportAffair reportAffair1 = reportAffairService.getOne(queryWrapper1, false);
+//            if (reportAffair1 != null) {
+//                LambdaQueryWrapper<InvalidDecisionFile> queryWrapper2 = new LambdaQueryWrapper<>();
+//                queryWrapper2.eq(InvalidDecisionFile::)
+//            }
+//        }
+//    }
+}

+ 2 - 2
src/main/java/cn/cslg/pas/service/business/InvalidStatutesService.java

@@ -82,7 +82,7 @@ public class InvalidStatutesService extends ServiceImpl<InvalidStatutesMapper, I
                     //涉及内容为说明书或者附图
                     InvalidStatutes invalidStatutes = new InvalidStatutes();
                     BeanUtils.copyProperties(invalidStatutesDTO, invalidStatutes);
-                    if (invalidStatutesDTO.getRelatedContent().equals(2)) {
+
                         PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
                         PatentClaim patentClaim = new PatentClaim();
                         patentClaim.setCreateId(personnelVO.getId());
@@ -90,7 +90,7 @@ public class InvalidStatutesService extends ServiceImpl<InvalidStatutesMapper, I
                         patentClaim.setProjectId(projectId);
                         patentClaim.insert();
                         invalidStatutes.setClaimId(patentClaim.getId());
-                    }
+
 
                     invalidStatutes.insert();
                     Integer id = invalidStatutes.getId();

+ 87 - 10
src/main/java/cn/cslg/pas/service/business/LitigationHistoryService.java

@@ -1,21 +1,25 @@
 package cn.cslg.pas.service.business;
 
 import cn.cslg.pas.common.dto.business.LitigationHistoryDTO;
-import cn.cslg.pas.common.dto.business.ReviewHistoryDTO;
+import cn.cslg.pas.common.dto.business.OtherPatentInfoDTO;
 import cn.cslg.pas.common.model.cronModel.Personnel;
 import cn.cslg.pas.common.model.cronModel.PersonnelVO;
+import cn.cslg.pas.common.model.cronModel.Records;
+import cn.cslg.pas.common.model.cronModel.SystemFile;
 import cn.cslg.pas.common.utils.CacheUtils;
 import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.common.utils.StringUtils;
 import cn.cslg.pas.common.vo.business.LitigationHistoryVO;
-import cn.cslg.pas.common.vo.business.ReviewHistoryVO;
+import cn.cslg.pas.domain.business.AssoOtherPatentInfoFile;
 import cn.cslg.pas.domain.business.LitigationHistory;
-import cn.cslg.pas.domain.business.ReviewHistory;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.mapper.LitigationHistoryMapper;
+import cn.cslg.pas.service.common.FileManagerService;
 import cn.cslg.pas.service.permissions.PermissionService;
 import com.alibaba.fastjson.JSONObject;
 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 lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
@@ -25,6 +29,7 @@ import org.springframework.stereotype.Service;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @Author xiexiang
@@ -42,6 +47,15 @@ public class LitigationHistoryService extends ServiceImpl<LitigationHistoryMappe
     @Autowired
     private PermissionService permissionService;
 
+    @Autowired
+    private AssoOtherPatentInfoFileService assoOtherPatentInfoFileService;
+
+    @Autowired
+    private OtherReferencesService otherReferencesService;
+
+    @Autowired
+    private FileManagerService fileManagerService;
+
     /**
      * 新增or更新
      * @param litigationHistoryDTO
@@ -52,12 +66,23 @@ public class LitigationHistoryService extends ServiceImpl<LitigationHistoryMappe
             throw new XiaoShiException("入参为空");
         }
         Integer id = litigationHistoryDTO.getId();
+        List<String> fileGuids = litigationHistoryDTO.getFileGuids();
         LitigationHistory litigationHistory = new LitigationHistory();
+        Integer type = 4;
         if (id != null) {
             //update
             litigationHistory = this.getById(id);
             BeanUtils.copyProperties(litigationHistoryDTO, litigationHistory);
             litigationHistory.updateById();
+
+            //先删除 后添加
+            LambdaQueryWrapper<AssoOtherPatentInfoFile> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(AssoOtherPatentInfoFile::getOtherPatentInfoId, id)
+                    .eq(AssoOtherPatentInfoFile::getType, type);
+            assoOtherPatentInfoFileService.remove(queryWrapper);
+            if (fileGuids != null && !fileGuids.isEmpty()) {
+                List<Integer> fileIds = otherReferencesService.addFile(litigationHistory.getId(), fileGuids, type);
+            }
         } else {
             BeanUtils.copyProperties(litigationHistoryDTO, litigationHistory);
             PersonnelVO personnelVO = new PersonnelVO();
@@ -68,19 +93,36 @@ public class LitigationHistoryService extends ServiceImpl<LitigationHistoryMappe
             }
             litigationHistory.setCreateId(personnelVO.getId());
             litigationHistory.insert();
+            if (fileGuids != null && !fileGuids.isEmpty()) {
+                //先删除 后添加
+                List<Integer> fileIds = otherReferencesService.addFile(litigationHistory.getId(), fileGuids, type);
+            }
         }
         return litigationHistory.getId();
     }
 
-    public List<LitigationHistoryVO> getLitigationHistory(String patentNo) throws IOException {
+    /**
+     * 分页查询
+     * @param otherPatentInfoDTO
+     * @return
+     * @throws IOException
+     */
+    public Records getLitigationHistory( OtherPatentInfoDTO otherPatentInfoDTO) throws IOException {
+        List<LitigationHistoryVO> litigationHistoryVOS = new ArrayList<>();
+        String patentNo = otherPatentInfoDTO.getPatentNo();
         if (patentNo == null || StringUtils.isEmpty(patentNo)) {
             throw new XiaoShiException("入参为空");
         }
-        List<LitigationHistoryVO> litigationHistoryVOS = new ArrayList<>();
-        LambdaQueryWrapper<LitigationHistory> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(LitigationHistory::getPatentNo, patentNo);
-        List<LitigationHistory> litigationHistories = this.list(queryWrapper);
+        Integer current = otherPatentInfoDTO.getCurrent();
+        Integer size = otherPatentInfoDTO.getSize();
+        Page<LitigationHistory> page = new Page<>(current, size);
 
+        LambdaQueryWrapper<LitigationHistory> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(LitigationHistory::getPatentNo, patentNo)
+                    .orderByDesc(LitigationHistory::getCreateTime);
+        IPage<LitigationHistory> litigationHistoryPage = this.page(page, queryWrapper);
+        List<LitigationHistory> litigationHistories = litigationHistoryPage.getRecords();
+        long total = litigationHistoryPage.getTotal();
         if (!litigationHistories.isEmpty()) {
             litigationHistories.forEach(item -> {
                 LitigationHistoryVO litigationHistoryVO = new LitigationHistoryVO();
@@ -89,9 +131,19 @@ public class LitigationHistoryService extends ServiceImpl<LitigationHistoryMappe
             });
             this.loadLitigationHistoryVOS(litigationHistoryVOS);
         }
-        return litigationHistoryVOS;
+        Records records = new Records();
+        records.setTotal(total);
+        records.setCurrent((long)current);
+        records.setSize((long) size);
+        records.setData(litigationHistoryVOS);
+        return records;
     }
 
+    /**
+     * 装载
+     * @param litigationHistoryVOS
+     * @throws IOException
+     */
     public void loadLitigationHistoryVOS(List<LitigationHistoryVO> litigationHistoryVOS) throws IOException {
         List<String> createIds = new ArrayList<>();
         litigationHistoryVOS.forEach(item -> {
@@ -113,12 +165,37 @@ public class LitigationHistoryService extends ServiceImpl<LitigationHistoryMappe
             if (personnel != null) {
                 litigationHistoryVO.setCreateName(personnel.getPersonnelName());
             }
+            LambdaQueryWrapper<AssoOtherPatentInfoFile> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(AssoOtherPatentInfoFile::getOtherPatentInfoId, litigationHistoryVO.getId())
+                    .eq(AssoOtherPatentInfoFile::getType, 4);
+            List<AssoOtherPatentInfoFile> assoOtherPatentInfoFiles = assoOtherPatentInfoFileService.list(queryWrapper);
+            if (!assoOtherPatentInfoFiles.isEmpty()) {
+                List<String> fileGuids = assoOtherPatentInfoFiles.stream().map(AssoOtherPatentInfoFile::getFileGuid).collect(Collectors.toList());
+                litigationHistoryVO.setFileGuids(fileGuids);
+                List<SystemFile> systemFiles = new ArrayList<>();
+                if (fileGuids.size() != 0) {
+                    String res = fileManagerService.getSystemFileFromFMS(fileGuids);
+                    systemFiles = JSONObject.parseArray(res, SystemFile.class);
+                }
+                if (!systemFiles.isEmpty()) {
+                    litigationHistoryVO.setSystemFileList(systemFiles);
+                }
+            }
         }
-
     }
 
+    /**
+     * 删除
+     * @param ids
+     * @return
+     */
     public List<Integer> deleteLitigationHistory(List<Integer> ids) {
         if (!ids.isEmpty()) {
+            //先删除附件
+            LambdaQueryWrapper<AssoOtherPatentInfoFile> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.in(AssoOtherPatentInfoFile::getOtherPatentInfoId, ids)
+                    .eq(AssoOtherPatentInfoFile::getType, 4);
+            assoOtherPatentInfoFileService.remove(queryWrapper);
             this.removeBatchByIds(ids);
         }
         return ids;

Файловите разлики са ограничени, защото са твърде много
+ 679 - 297
src/main/java/cn/cslg/pas/service/business/MergePersonService.java


+ 67 - 32
src/main/java/cn/cslg/pas/service/business/OtherReferencesService.java

@@ -1,21 +1,25 @@
 package cn.cslg.pas.service.business;
 
+import cn.cslg.pas.common.dto.business.OtherPatentInfoDTO;
 import cn.cslg.pas.common.dto.business.OtherReferencesDTO;
 import cn.cslg.pas.common.model.cronModel.Personnel;
 import cn.cslg.pas.common.model.cronModel.PersonnelVO;
+import cn.cslg.pas.common.model.cronModel.Records;
+import cn.cslg.pas.common.model.cronModel.SystemFile;
 import cn.cslg.pas.common.utils.CacheUtils;
 import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.common.utils.StringUtils;
-import cn.cslg.pas.common.vo.business.LitigationHistoryVO;
 import cn.cslg.pas.common.vo.business.OtherReferencesVO;
-import cn.cslg.pas.domain.business.AssoOtherReferencesFile;
-import cn.cslg.pas.domain.business.LitigationHistory;
+import cn.cslg.pas.domain.business.AssoOtherPatentInfoFile;
 import cn.cslg.pas.domain.business.OtherReferences;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.mapper.OtherReferencesMapper;
+import cn.cslg.pas.service.common.FileManagerService;
 import cn.cslg.pas.service.permissions.PermissionService;
 import com.alibaba.fastjson.JSONObject;
 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 lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
@@ -45,7 +49,10 @@ public class OtherReferencesService extends ServiceImpl<OtherReferencesMapper, O
     private PermissionService permissionService;
 
     @Autowired
-    private AssoOtherReferencesFileService assoReferencesFileService;
+    private AssoOtherPatentInfoFileService assoOtherPatentInfoFileService;
+
+    @Autowired
+    private FileManagerService fileManagerService;
 
     /**
      * 新增or更新其他参考资料
@@ -59,17 +66,19 @@ public class OtherReferencesService extends ServiceImpl<OtherReferencesMapper, O
         Integer id = otherReferencesDTO.getId();
         List<String> fileGuids = otherReferencesDTO.getFileGuids();
         OtherReferences otherReferences = new OtherReferences();
+        Integer type = 1;
         if (id != null) {
             //update
             otherReferences = this.getById(id);
             BeanUtils.copyProperties(otherReferencesDTO, otherReferences);
             otherReferences.updateById();
             //先删除 后添加
-            LambdaQueryWrapper<AssoOtherReferencesFile> queryWrapper = new LambdaQueryWrapper<>();
-            queryWrapper.eq(AssoOtherReferencesFile::getOtherReferencesId, id);
-            assoReferencesFileService.remove(queryWrapper);
-            if (!fileGuids.isEmpty()) {
-                List<Integer> fileIds = this.addFile(otherReferences.getId(), fileGuids);
+            LambdaQueryWrapper<AssoOtherPatentInfoFile> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(AssoOtherPatentInfoFile::getOtherPatentInfoId, id)
+                    .eq(AssoOtherPatentInfoFile::getType, type);
+            assoOtherPatentInfoFileService.remove(queryWrapper);
+            if (fileGuids != null && !fileGuids.isEmpty()) {
+                List<Integer> fileIds = this.addFile(otherReferences.getId(), fileGuids, type);
             }
         } else {
             BeanUtils.copyProperties(otherReferencesDTO, otherReferences);
@@ -81,9 +90,9 @@ public class OtherReferencesService extends ServiceImpl<OtherReferencesMapper, O
             }
             otherReferences.setCreateId(personnelVO.getId());
             otherReferences.insert();
-            if (!fileGuids.isEmpty()) {
+            if (fileGuids != null && !fileGuids.isEmpty()) {
                 //先删除 后添加
-                List<Integer> fileIds = this.addFile(otherReferences.getId(), fileGuids);
+                List<Integer> fileIds = this.addFile(otherReferences.getId(), fileGuids, type);
             }
         }
         return otherReferences.getId();
@@ -93,37 +102,47 @@ public class OtherReferencesService extends ServiceImpl<OtherReferencesMapper, O
      * 新增文件与其他参考资料关联
      * @param id
      * @param fileGuids
+     * @param type
      * @return
      */
-    public List<Integer> addFile(Integer id, List<String> fileGuids){
+    public List<Integer> addFile(Integer id, List<String> fileGuids, Integer type){
         List<Integer> ids = new ArrayList<>();
         if (!fileGuids.isEmpty()) {
-            List<AssoOtherReferencesFile> assoOtherReferencesFiles = new ArrayList<>();
+            List<AssoOtherPatentInfoFile> assoOtherPatentInfoFiles = new ArrayList<>();
             fileGuids.forEach(item -> {
-                AssoOtherReferencesFile assoOtherReferencesFile = new AssoOtherReferencesFile();
-                assoOtherReferencesFile.setOtherReferencesId(id);
-                assoOtherReferencesFile.setFileGuid(item);
-                assoOtherReferencesFiles.add(assoOtherReferencesFile);
+                AssoOtherPatentInfoFile assoOtherPatentInfoFile = new AssoOtherPatentInfoFile();
+                assoOtherPatentInfoFile.setOtherPatentInfoId(id);
+                assoOtherPatentInfoFile.setType(type);
+                assoOtherPatentInfoFile.setFileGuid(item);
+                assoOtherPatentInfoFiles.add(assoOtherPatentInfoFile);
             });
-            assoReferencesFileService.saveBatch(assoOtherReferencesFiles);
+            assoOtherPatentInfoFileService.saveBatch(assoOtherPatentInfoFiles);
+            ids = assoOtherPatentInfoFiles.stream().map(AssoOtherPatentInfoFile::getId).collect(Collectors.toList());
         }
         return ids;
     }
 
     /**
-     * 查询
-     * @param patentNo
+     * 分页查询
+     * @param otherPatentInfoDTO
      * @return
      * @throws IOException
      */
-    public List<OtherReferencesVO> getOtherReferences(String patentNo) throws IOException {
+    public Records getOtherReferences(OtherPatentInfoDTO otherPatentInfoDTO) throws IOException {
+        List<OtherReferencesVO> otherReferencesVOS = new ArrayList<>();
+        String patentNo = otherPatentInfoDTO.getPatentNo();
         if (patentNo == null || StringUtils.isEmpty(patentNo)) {
             throw new XiaoShiException("入参为空");
         }
-        List<OtherReferencesVO> otherReferencesVOS = new ArrayList<>();
+        Integer current = otherPatentInfoDTO.getCurrent();
+        Integer size = otherPatentInfoDTO.getSize();
+        Page<OtherReferences> page = new Page<>(current, size);
+
         LambdaQueryWrapper<OtherReferences> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(OtherReferences::getPatentNo, patentNo);
-        List<OtherReferences> otherReferencesList = this.list(queryWrapper);
+        IPage<OtherReferences> otherReferencesPage = this.page(page, queryWrapper);
+        List<OtherReferences> otherReferencesList = otherReferencesPage.getRecords();
+        long total = otherReferencesPage.getTotal();
 
         if (!otherReferencesList.isEmpty()) {
             otherReferencesList.forEach(item -> {
@@ -133,7 +152,12 @@ public class OtherReferencesService extends ServiceImpl<OtherReferencesMapper, O
             });
             this.loadOtherReferencesVOS(otherReferencesVOS);
         }
-        return otherReferencesVOS;
+        Records records = new Records();
+        records.setTotal(total);
+        records.setCurrent((long)current);
+        records.setSize((long) size);
+        records.setData(otherReferencesVOS);
+        return records;
     }
 
     /**
@@ -162,13 +186,23 @@ public class OtherReferencesService extends ServiceImpl<OtherReferencesMapper, O
             if (personnel != null) {
                 otherReferencesVO.setCreateName(personnel.getPersonnelName());
             }
-            LambdaQueryWrapper<AssoOtherReferencesFile> queryWrapper = new LambdaQueryWrapper<>();
-            queryWrapper.eq(AssoOtherReferencesFile::getOtherReferencesId, otherReferencesVO.getId());
-            List<AssoOtherReferencesFile> assoOtherReferencesFiles = assoReferencesFileService.list(queryWrapper);
-            if (!assoOtherReferencesFiles.isEmpty()) {
-                List<String> fileGuids = assoOtherReferencesFiles.stream().map(AssoOtherReferencesFile::getFileGuid).collect(Collectors.toList());
+            LambdaQueryWrapper<AssoOtherPatentInfoFile> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(AssoOtherPatentInfoFile::getOtherPatentInfoId, otherReferencesVO.getId())
+                    .eq(AssoOtherPatentInfoFile::getType, 1);
+            List<AssoOtherPatentInfoFile> assoOtherPatentInfoFiles = assoOtherPatentInfoFileService.list(queryWrapper);
+            if (!assoOtherPatentInfoFiles.isEmpty()) {
+                List<String> fileGuids = assoOtherPatentInfoFiles.stream().map(AssoOtherPatentInfoFile::getFileGuid).collect(Collectors.toList());
                 otherReferencesVO.setFileGuids(fileGuids);
+                List<SystemFile> systemFiles = new ArrayList<>();
+                if (fileGuids.size() != 0) {
+                    String res = fileManagerService.getSystemFileFromFMS(fileGuids);
+                    systemFiles = JSONObject.parseArray(res, SystemFile.class);
+                }
+                if (!systemFiles.isEmpty()) {
+                    otherReferencesVO.setSystemFileList(systemFiles);
+                }
             }
+
         }
 
     }
@@ -181,9 +215,10 @@ public class OtherReferencesService extends ServiceImpl<OtherReferencesMapper, O
     public List<Integer> deleteOtherReferences(List<Integer> ids) {
         if (!ids.isEmpty()) {
             //先删除附件
-            LambdaQueryWrapper<AssoOtherReferencesFile> queryWrapper = new LambdaQueryWrapper<>();
-            queryWrapper.in(AssoOtherReferencesFile::getOtherReferencesId, ids);
-            assoReferencesFileService.remove(queryWrapper);
+            LambdaQueryWrapper<AssoOtherPatentInfoFile> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.in(AssoOtherPatentInfoFile::getOtherPatentInfoId, ids)
+                    .eq(AssoOtherPatentInfoFile::getType, 1);
+            assoOtherPatentInfoFileService.remove(queryWrapper);
             this.removeBatchByIds(ids);
         }
         return ids;

+ 121 - 0
src/main/java/cn/cslg/pas/service/business/PatentDigProjectFilesService.java

@@ -1,5 +1,6 @@
 package cn.cslg.pas.service.business;
 
+import cn.cslg.pas.common.dto.QueryPatentDigProjectFilesDTO;
 import cn.cslg.pas.common.dto.business.PatentDigProjectFilesDTO;
 import cn.cslg.pas.common.model.cronModel.Personnel;
 import cn.cslg.pas.common.model.cronModel.PersonnelVO;
@@ -10,6 +11,8 @@ import cn.cslg.pas.common.model.request.QueryRequest;
 import cn.cslg.pas.common.utils.CacheUtils;
 import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.common.vo.business.PatentDigProjectFilesVO;
+import cn.cslg.pas.domain.business.AssoProjectFile;
+import cn.cslg.pas.domain.business.AssoTaskFile;
 import cn.cslg.pas.domain.business.PatentDigProjectFiles;
 import cn.cslg.pas.domain.business.ProjectTask;
 import cn.cslg.pas.exception.UnLoginException;
@@ -33,6 +36,7 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 专利挖掘项目文件Service层
@@ -64,6 +68,12 @@ public class PatentDigProjectFilesService extends ServiceImpl<PatentDigProjectFi
     @Lazy
     private ProjectTaskService projectTaskService;
 
+    @Autowired
+    private AssoTaskFileService assoTaskFileService;
+
+    @Autowired
+    private AssoProjectFileService assoProjectFileService;
+
 
     @Override
     public Object queryMessage(QueryRequest queryRequest) throws Exception {
@@ -178,11 +188,15 @@ public class PatentDigProjectFilesService extends ServiceImpl<PatentDigProjectFi
      */
     private void loadPatentDigProjectFiles(List<PatentDigProjectFilesVO> patentDigProjectFilesVOS) throws IOException {
         List<String> createIds = new ArrayList<>();
+        List<String> fileGuids = new ArrayList<>();
         patentDigProjectFilesVOS.forEach(
                 item -> {
                     if (item.getCreateId() != null) {
                         createIds.add(item.getCreateId());
                     }
+                    if (item.getFileGuid() != null) {
+                        fileGuids.add(item.getFileGuid());
+                    }
                 }
         );
         List<Personnel> personnels = new ArrayList<>();
@@ -192,6 +206,12 @@ public class PatentDigProjectFilesService extends ServiceImpl<PatentDigProjectFi
             JSONObject jsonObject = JSONObject.parseObject(res);
             personnels = JSONObject.parseArray(jsonObject.getString("data"), Personnel.class);
         }
+
+        List<SystemFile> systemFiles = new ArrayList<>();
+        if (fileGuids.size() != 0) {
+            String res = fileManagerService.getSystemFileFromFMS(fileGuids);
+            systemFiles = JSONObject.parseArray(res, SystemFile.class);
+        }
         for (PatentDigProjectFilesVO patentDigProjectFilesVO : patentDigProjectFilesVOS) {
             //装载人员信息
             Personnel personnel = personnels.stream().filter(item -> item.getId().equals(patentDigProjectFilesVO.getCreateId())).findFirst().orElse(null);
@@ -200,9 +220,19 @@ public class PatentDigProjectFilesService extends ServiceImpl<PatentDigProjectFi
             } else {
                 throw new XiaoShiException("未获取到当前登陆人信息");
             }
+            SystemFile systemFile = systemFiles.stream().filter(item -> item.getGuid().equals(patentDigProjectFilesVO.getFileGuid())).findFirst().orElse(null);
+            patentDigProjectFilesVO.setType(systemFile.getType());
+            patentDigProjectFilesVO.setName(systemFile.getOriginalName());
             //调用查询流程名称方法
             String name = this.getProcessName(patentDigProjectFilesVO.getProcessId());
             patentDigProjectFilesVO.setProcessName(name);
+
+            //任务信息
+            Integer taskId = patentDigProjectFilesVO.getTaskId();
+            if (taskId != null) {
+                ProjectTask projectTask = projectTaskService.getById(taskId);
+                patentDigProjectFilesVO.setProjectTask(projectTask);
+            }
         }
     }
 
@@ -253,6 +283,11 @@ public class PatentDigProjectFilesService extends ServiceImpl<PatentDigProjectFi
         return taskId;
     }
 
+    /**
+     * 获取流程信息
+     * @param projectId
+     * @return
+     */
     public Map<Integer, Map<String, Integer>> getProcessInfo(Integer projectId){
         Map<Integer, Map<String, Integer>> processInfo = new HashMap<>();
         for (int i = 1; i < 8; i++) {
@@ -269,4 +304,90 @@ public class PatentDigProjectFilesService extends ServiceImpl<PatentDigProjectFi
         }
         return processInfo;
     }
+
+    /**
+     * 查询专利挖掘项目所有文件
+     * @param queryPatentDigProjectFilesDTO
+     */
+    public List<PatentDigProjectFilesVO> getPatentDigProjectFiles(QueryPatentDigProjectFilesDTO queryPatentDigProjectFilesDTO){
+        List<PatentDigProjectFilesVO> patentDigProjectFilesVOS = new ArrayList<>();
+        //查询本表
+        if (queryPatentDigProjectFilesDTO == null) {
+            throw new XiaoShiException("入参为空");
+        }
+        Integer projectId = queryPatentDigProjectFilesDTO.getProjectId();
+        if (projectId == null) {
+            throw new XiaoShiException("projectId为空");
+        }
+        Integer processId = queryPatentDigProjectFilesDTO.getProcessId();
+        Integer taskId = queryPatentDigProjectFilesDTO.getTaskId();
+        LambdaQueryWrapper<PatentDigProjectFiles> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(PatentDigProjectFiles::getProjectId, projectId);
+        if (processId != null) {
+            queryWrapper.eq(PatentDigProjectFiles::getProcessId, processId);
+        }
+        if (taskId != null) {
+            queryWrapper.eq(PatentDigProjectFiles::getTaskId, taskId);
+        }
+        List<PatentDigProjectFiles> patentDigProjectFilesList = this.list(queryWrapper);
+        if (!patentDigProjectFilesList.isEmpty()) {
+            patentDigProjectFilesList.forEach(item -> {
+                PatentDigProjectFilesVO patentDigProjectFilesVO = new PatentDigProjectFilesVO();
+                BeanUtils.copyProperties(item, patentDigProjectFilesVO);
+                patentDigProjectFilesVOS.add(patentDigProjectFilesVO);
+            });
+        }
+        //查询项目下所有任务的文件
+        LambdaQueryWrapper<ProjectTask> queryWrapper1 = new LambdaQueryWrapper<>();
+        queryWrapper1.eq(ProjectTask::getProjectId, projectId);
+        if (processId != null) {
+            queryWrapper1.eq(ProjectTask::getProcessId, processId);
+        }
+        if (taskId != null) {
+            queryWrapper1.eq(ProjectTask::getId, taskId);
+        }
+        List<ProjectTask> projectTasks = projectTaskService.list(queryWrapper1);
+        if (!projectTasks.isEmpty()) {
+            List<Integer> taskIds = projectTasks.stream().map(ProjectTask::getId).collect(Collectors.toList());
+            LambdaQueryWrapper<AssoTaskFile> queryWrapper2 = new LambdaQueryWrapper<>();
+            queryWrapper2.in(AssoTaskFile::getTaskId, taskIds);
+            List<AssoTaskFile> assoTaskFiles = assoTaskFileService.list(queryWrapper2);
+            if (!assoTaskFiles.isEmpty()) {
+                assoTaskFiles.forEach(item -> {
+                    ProjectTask projectTask = projectTasks.stream().filter(item2 -> item2.getId().equals(item.getTaskId())).findFirst().orElse(null);
+                    PatentDigProjectFilesVO patentDigProjectFilesVO = new PatentDigProjectFilesVO();
+                    patentDigProjectFilesVO.setProjectId(projectId);
+                    patentDigProjectFilesVO.setFileGuid(item.getFileGuid());
+                    patentDigProjectFilesVO.setTaskId(item.getTaskId());
+                    patentDigProjectFilesVO.setCreateId(item.getCreateId());
+                    patentDigProjectFilesVO.setCreateTime(item.getCreateTime());
+                    patentDigProjectFilesVO.setDescription(item.getDescription());
+                    if (projectTask != null) {
+                        patentDigProjectFilesVO.setProcessId(projectTask.getProcessId());
+                    }
+                    patentDigProjectFilesVOS.add(patentDigProjectFilesVO);
+                });
+            }
+        }
+        //查询项目下的文件
+        LambdaQueryWrapper<AssoProjectFile> queryWrapper2 = new LambdaQueryWrapper<>();
+        queryWrapper2.eq(AssoProjectFile::getProjectId, projectId);
+        List<AssoProjectFile> assoProjectFiles = assoProjectFileService.list(queryWrapper2);
+        if (!assoProjectFiles.isEmpty()) {
+            assoProjectFiles.forEach(item -> {
+                PatentDigProjectFilesVO patentDigProjectFilesVO = new PatentDigProjectFilesVO();
+                patentDigProjectFilesVO.setProjectId(projectId);
+                patentDigProjectFilesVO.setFileGuid(item.getFileGuid());
+                patentDigProjectFilesVO.setCreateId(item.getCreateId());
+                patentDigProjectFilesVO.setCreateTime(item.getCreateTime().toDate());
+                patentDigProjectFilesVOS.add(patentDigProjectFilesVO);
+            });
+        }
+        try {
+            this.loadPatentDigProjectFiles(patentDigProjectFilesVOS);
+        } catch (Exception e) {
+            throw new XiaoShiException("装载信息错误");
+        }
+        return patentDigProjectFilesVOS;
+    }
 }

+ 14 - 7
src/main/java/cn/cslg/pas/service/business/PatentDigProjectService.java

@@ -158,7 +158,7 @@ public class PatentDigProjectService extends ServiceImpl<PatentDigProjectMapper,
             }
         }
 
-        tableName = "patent_dig_project as dp left join project as p on dp.project_id =p.id left join rd_project rp on dp.rd_project_id =rp.id left join asso_project_event as aspe on p.id =aspe.project_id";
+        tableName = "patent_dig_project as dp left join project as p on dp.project_id =p.id left join rd_project rp on dp.rd_project_id =rp.id ";
         //返回分组数据
         QueryGroupImp queryGroupImp = queryGroupFactory.getClass(groupConfig.getGroupClass());
         ReGroupDataVO reGroupDataVO = queryGroupImp.getGroup(sqls, tableName, groupConfig.getSqlField());
@@ -761,14 +761,21 @@ public class PatentDigProjectService extends ServiceImpl<PatentDigProjectMapper,
     private List<String> loadSearchSql(List<String> sqls){
         PersonnelVO personnelVO =cacheUtils.getLoginUser(loginUtils.getId());
         String id =personnelVO.getId();
-        String rootSql ="(p.create_id ="+id+" or p.head_id="+id+" or p.id in (select project_id from asso_project_person where person_id ="+id+"))";
-        if(sqls.get(0)!=null&&!sqls.get(0).equals(""))
-        {
-            sqls.set(0,rootSql+" and"+"("+sqls.get(0)+")");
+        Integer tenantId= personnelVO.getTenantId();
+        Integer roleType = personnelVO.getRoleType();
+        String rootSql = "";
+        if (roleType == null || roleType.equals(0)) {
+            rootSql ="(p.create_id ="+id+" or p.head_id="+id+" or p.id in (select project_id from asso_project_person where person_id ="+id+"))";
 
         }
-        else {
-            sqls.set(0,rootSql);
+        else if(roleType.equals(2))
+        {
+            rootSql="p.tenantId="+tenantId;
+        }
+        if (sqls.get(0) != null && !sqls.get(0).equals("") && !rootSql.equals("")) {
+            sqls.set(0, rootSql + " and" + "(" + sqls.get(0) + ")");
+        } else if ((sqls.get(0) == null || sqls.get(0).equals("")) && !rootSql.equals("")) {
+            sqls.set(0, rootSql);
         }
 
         return sqls;

+ 25 - 9
src/main/java/cn/cslg/pas/service/business/PatentProjectService.java

@@ -37,6 +37,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -205,7 +206,7 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
             }
         }
 
-        tableName = "patent_project as pp left join project as p on pp.project_id = p.id left join asso_project_event as aspe on p.id = aspe.project_id";
+        tableName = "patent_project as pp left join project as p on pp.project_id = p.id ";
         //返回分组数据
         QueryGroupImp queryGroupImp = queryGroupFactory.getClass(groupConfig.getGroupClass());
         ReGroupDataVO reGroupDataVO = queryGroupImp.getGroup(sqls, tableName, groupConfig.getSqlField());
@@ -377,6 +378,9 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
             //遍历传入的树
             for (ProjectTreesDTO projectTreesDTO : trees) {
                 List<Integer> valueIds = projectTreesDTO.getValueIds();
+                if(valueIds==null||valueIds.size()==0){
+                    valueIds = Arrays.asList(0);
+                }
                 //遍历值id集合
                 for (Integer valueId : valueIds) {
                     AssoProjectTreeNode assoProjectTreeNode = new AssoProjectTreeNode();
@@ -547,6 +551,9 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
             //遍历传入的树
             for (ProjectTreesDTO projectTreesDTO : trees) {
                 List<Integer> valueIds = projectTreesDTO.getValueIds();
+                if(valueIds==null||valueIds.size()==0){
+                    valueIds = Arrays.asList(0);
+                }
                 //遍历值id集合
                 for (Integer valueId : valueIds) {
                     AssoProjectTreeNode assoProjectTreeNode = new AssoProjectTreeNode();
@@ -845,10 +852,12 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
                 AssoProjectTreeNode assoProjectTreeNode = assoProjectTreeNodes.stream().filter(item -> item.getProjectId().equals(patentProjectVO.getId()) && (item.getTreeType().equals(2) || item.getTreeType().equals(3))).
                         findFirst().orElse(null);
                 if (assoProjectTreeNode != null) {
+                    ProductOrCategoryVO productOrCategoryVO = new ProductOrCategoryVO();
+                    productOrCategoryVO.setValueIds(Arrays.asList(assoProjectTreeNode.getValueId()));
                     if (assoProjectTreeNode.getTreeType().equals(2)) {
                         Product product = products.stream().filter(item -> item.getId().equals(assoProjectTreeNode.getFieldId())).findFirst().orElse(null);
                         if (product != null) {
-                            ProductOrCategoryVO productOrCategoryVO = new ProductOrCategoryVO();
+
                             productOrCategoryVO.setName(product.getName());
                             productOrCategoryVO.setId(product.getId());
                             productOrCategoryVO.setType(2);
@@ -857,7 +866,6 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
                     } else if (assoProjectTreeNode.getTreeType().equals(3)) {
                         ProductCategory productCategory = productCategories.stream().filter(item -> item.getId().equals(assoProjectTreeNode.getFieldId())).findFirst().orElse(null);
                         if (productCategory != null) {
-                            ProductOrCategoryVO productOrCategoryVO = new ProductOrCategoryVO();
                             productOrCategoryVO.setName(productCategory.getName());
                             productOrCategoryVO.setId(productCategory.getId());
                             productOrCategoryVO.setType(3);
@@ -873,14 +881,22 @@ public class PatentProjectService extends ServiceImpl<PatentProjectMapper, Paten
     private List<String> loadSearchSql(List<String> sqls){
         PersonnelVO personnelVO =cacheUtils.getLoginUser(loginUtils.getId());
         String id =personnelVO.getId();
-        String rootSql ="(p.create_id ="+id+" or p.head_id="+id+" or p.id in (select project_id from asso_project_person where person_id ="+id+"))";
-        if(sqls.get(0)!=null&&!sqls.get(0).equals(""))
-        {
-            sqls.set(0,rootSql+" and"+"("+sqls.get(0)+")");
+        Integer tenantId= personnelVO.getTenantId();
+        Integer roleType = personnelVO.getRoleType();
+        String rootSql = "";
+        if (roleType == null || roleType.equals(0)) {
+           rootSql ="(p.create_id ="+id+" or p.head_id="+id+" or p.id in (select project_id from asso_project_person where person_id ="+id+"))";
 
         }
-        else {
-            sqls.set(0,rootSql);
+        else if(roleType.equals(2))
+        {
+            rootSql="p.tenantId="+tenantId;
+        }
+
+        if (sqls.get(0) != null && !sqls.get(0).equals("") && !rootSql.equals("")) {
+            sqls.set(0, rootSql + " and" + "(" + sqls.get(0) + ")");
+        } else if ((sqls.get(0) == null || sqls.get(0).equals("")) && !rootSql.equals("")) {
+            sqls.set(0, rootSql);
         }
 
         return sqls;

+ 39 - 8
src/main/java/cn/cslg/pas/service/business/PermissionRecordService.java

@@ -1,21 +1,23 @@
 package cn.cslg.pas.service.business;
 
 import cn.cslg.pas.common.dto.business.LitigationHistoryDTO;
+import cn.cslg.pas.common.dto.business.OtherPatentInfoDTO;
 import cn.cslg.pas.common.dto.business.PermissionRecordDTO;
 import cn.cslg.pas.common.model.cronModel.Personnel;
 import cn.cslg.pas.common.model.cronModel.PersonnelVO;
+import cn.cslg.pas.common.model.cronModel.Records;
 import cn.cslg.pas.common.utils.CacheUtils;
 import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.common.utils.StringUtils;
-import cn.cslg.pas.common.vo.business.LitigationHistoryVO;
 import cn.cslg.pas.common.vo.business.PermissionRecordVO;
-import cn.cslg.pas.domain.business.LitigationHistory;
 import cn.cslg.pas.domain.business.PermissionRecord;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.mapper.PermissionRecordMapper;
 import cn.cslg.pas.service.permissions.PermissionService;
 import com.alibaba.fastjson.JSONObject;
 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 lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
@@ -66,21 +68,35 @@ public class PermissionRecordService extends ServiceImpl<PermissionRecordMapper,
             } catch (Exception e) {
                 throw new XiaoShiException("未查询到当前登陆人");
             }
+            permissionRecord.setTenantId(personnelVO.getTenantId());
             permissionRecord.setCreateId(personnelVO.getId());
             permissionRecord.insert();
         }
         return permissionRecord.getId();
     }
 
-    public List<PermissionRecordVO> getPermissionRecord(String patentNo) throws IOException {
+    /**
+     * 分页查询
+     * @param otherPatentInfoDTO
+     * @return
+     * @throws IOException
+     */
+    public Records getPermissionRecord(OtherPatentInfoDTO otherPatentInfoDTO) throws IOException {
+        List<PermissionRecordVO> permissionRecordVOS = new ArrayList<>();
+        String patentNo = otherPatentInfoDTO.getPatentNo();
         if (patentNo == null || StringUtils.isEmpty(patentNo)) {
             throw new XiaoShiException("入参为空");
         }
-        List<PermissionRecordVO> permissionRecordVOS = new ArrayList<>();
-        LambdaQueryWrapper<PermissionRecord> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(PermissionRecord::getPatentNo, patentNo);
-        List<PermissionRecord> permissionRecords = this.list(queryWrapper);
+        Integer current = otherPatentInfoDTO.getCurrent();
+        Integer size = otherPatentInfoDTO.getSize();
+        Page<PermissionRecord> page = new Page<>(current, size);
 
+        LambdaQueryWrapper<PermissionRecord> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(PermissionRecord::getPatentNo, patentNo)
+                .orderByDesc(PermissionRecord::getCreateTime);
+        IPage<PermissionRecord> permissionRecordPage = this.page(page, queryWrapper);
+        List<PermissionRecord> permissionRecords = permissionRecordPage.getRecords();
+        long total = permissionRecordPage.getTotal();
         if (!permissionRecords.isEmpty()) {
             permissionRecords.forEach(item -> {
                 PermissionRecordVO permissionRecordVO = new PermissionRecordVO();
@@ -89,9 +105,19 @@ public class PermissionRecordService extends ServiceImpl<PermissionRecordMapper,
             });
             this.loadPermissionRecordVOS(permissionRecordVOS);
         }
-        return permissionRecordVOS;
+        Records records = new Records();
+        records.setTotal(total);
+        records.setCurrent((long)current);
+        records.setSize((long) size);
+        records.setData(permissionRecordVOS);
+        return records;
     }
 
+    /**
+     * 装载
+     * @param permissionRecordVOS
+     * @throws IOException
+     */
     public void loadPermissionRecordVOS(List<PermissionRecordVO> permissionRecordVOS) throws IOException {
         List<String> createIds = new ArrayList<>();
         permissionRecordVOS.forEach(item -> {
@@ -117,6 +143,11 @@ public class PermissionRecordService extends ServiceImpl<PermissionRecordMapper,
 
     }
 
+    /**
+     * 删除许可历史
+     * @param ids
+     * @return
+     */
     public List<Integer> deletePermissionRecord(List<Integer> ids) {
         if (!ids.isEmpty()) {
             this.removeBatchByIds(ids);

+ 18 - 10
src/main/java/cn/cslg/pas/service/business/ProductCategoryService.java

@@ -508,20 +508,28 @@ public class ProductCategoryService extends ServiceImpl<ProductCategoryMapper, P
     private List<String> loadSearchSql(List<String> sqls){
         PersonnelVO personnelVO =cacheUtils.getLoginUser(loginUtils.getId());
         String id =personnelVO.getId();
-        Integer tenantId =personnelVO.getTenantId();
-        String rootSql ="category.create_id="+id+" or(category.show_type =0 and category.tenant ="+tenantId+") or ( category.id in (select product_category_id from asso_product_category_person where" +
-                " person_id="+id+" and role=0)) or (category.show_type=2 and  category.id in (select product_category_id from asso_product_category_person where" +
-                " person_id="+id+" and role=1)) or(category.show_type =3 and category.id not in(select product_category_id from asso_product_category_person where" +
-                " person_id="+id+" and role=2))";
-        if(sqls.get(0)!=null&&!sqls.get(0).equals(""))
-        {
-            sqls.set(0,rootSql+" and"+"("+sqls.get(0)+")");
+        Integer tenantId= personnelVO.getTenantId();
+        Integer roleType = personnelVO.getRoleType();
+        String rootSql = "";
+        if (roleType == null || roleType.equals(0)) {
+            rootSql ="category.create_id="+id+" or(category.show_type =0 and category.tenant ="+tenantId+") or ( category.id in (select product_category_id from asso_product_category_person where" +
+                    " person_id="+id+" and role=0)) or (category.show_type=2 and  category.id in (select product_category_id from asso_product_category_person where" +
+                    " person_id="+id+" and role=1)) or(category.show_type =3 and category.id not in(select product_category_id from asso_product_category_person where" +
+                    " person_id="+id+" and role=2))";
 
         }
-        else {
-            sqls.set(0,rootSql);
+        else if(roleType.equals(2))
+        {
+            rootSql="category.tenant="+tenantId;
         }
 
+        if (sqls.get(0) != null && !sqls.get(0).equals("") && !rootSql.equals("")) {
+            sqls.set(0, rootSql + " and" + "(" + sqls.get(0) + ")");
+        } else if ((sqls.get(0) == null || sqls.get(0).equals("")) && !rootSql.equals("")) {
+            sqls.set(0, rootSql);
+        }
+
+
         return sqls;
 
     }

+ 100 - 31
src/main/java/cn/cslg/pas/service/business/ProductService.java

@@ -7,6 +7,7 @@ import cn.cslg.pas.common.model.request.GroupRequest;
 import cn.cslg.pas.common.model.request.QueryRequest;
 import cn.cslg.pas.common.utils.CacheUtils;
 import cn.cslg.pas.common.utils.LoginUtils;
+import cn.cslg.pas.common.utils.StringUtils;
 import cn.cslg.pas.common.vo.business.PersonVO;
 import cn.cslg.pas.common.vo.business.ProductVO;
 import cn.cslg.pas.domain.business.*;
@@ -14,9 +15,11 @@ import cn.cslg.pas.exception.UnLoginException;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.factorys.businessFactory.Business;
 import cn.cslg.pas.mapper.ProductMapper;
+import cn.cslg.pas.service.business.es.EsProductPatentService;
 import cn.cslg.pas.service.common.FileManagerService;
 import cn.cslg.pas.service.permissions.PermissionService;
 import cn.cslg.pas.service.query.FormatQueryService;
+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;
@@ -24,8 +27,10 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
@@ -35,6 +40,7 @@ import java.util.stream.Collectors;
 
 /**
  * 产品的Service层
+ *
  * @Author xiexiang
  * @Date 2023/10/26
  */
@@ -66,11 +72,45 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
     @Autowired
     private AssoProductPersonService assoProductPersonService;
 
+    @Autowired
+    @Lazy
+    private EsProductPatentService esProductPatentService;
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Object queryMessage(QueryRequest queryRequest) throws Exception {
-        List<String> sqls = formatQueryService.reSqls(queryRequest,"product");
-       sqls= this.loadSearchSql(sqls);
+        List<String> sqls = formatQueryService.reSqls(queryRequest, "product");
+        sqls = this.loadSearchSql(sqls);
+        //根据sql查询产品信息
+        List<ProductVO> productVOS = productMapper.getProduct(sqls.get(0), sqls.get(1), sqls.get(2));
+        if (!CollectionUtils.isEmpty(productVOS)) {
+            for (ProductVO productVO : productVOS) {
+                Integer productId = productVO.getId();
+                Long productNum = esProductPatentService.selectProductNum(productId);
+                productVO.setProductNum(productNum);
+                Long relevantProductNum = esProductPatentService.selectRelevantProductNum(productId);
+                productVO.setRelevantProductNum(relevantProductNum);
+            }
+        }
+        //查询总数
+        Long total = productMapper.getProductCount(sqls.get(0));
+        //装载产品信息
+        this.loadProduct(productVOS);
+        //装载返回信息
+        Records records = new Records();
+        records.setCurrent(queryRequest.getCurrent());
+        records.setSize(queryRequest.getSize());
+        records.setData(productVOS);
+        records.setTotal(total);
+        return records;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public Object selectProduct(QueryRequest queryRequest) throws Exception {
+        List<String> sqls = formatQueryService.reSqls(queryRequest, "product");
+        sqls = this.loadSearchSql(sqls);
+        sqls = this.loadProductIdsSql(sqls, queryRequest.getProductIds());
+
         //根据sql查询产品信息
         List<ProductVO> productVOS = productMapper.getProduct(sqls.get(0), sqls.get(1), sqls.get(2));
         //查询总数
@@ -88,6 +128,7 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
 
     /**
      * 新增产品
+     *
      * @param object
      * @param files
      * @return
@@ -140,10 +181,10 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
         }
         //判断可见类型:
         Integer showType = productDTO.getShowType();
-        if(showType != 0 && showType != 1){
+        if (showType != 0 && showType != 1) {
             List<String> showPersonIds = productDTO.getShowPersonIds();
             //0所有人可见,1本人可见
-            if(showPersonIds != null && showPersonIds.size() != 0){
+            if (showPersonIds != null && showPersonIds.size() != 0) {
                 for (String showPersonId : showPersonIds) {
                     AssoProductPerson assoProductPerson = new AssoProductPerson();
                     assoProductPerson.setProductId(product.getId());
@@ -161,11 +202,11 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
                 }
             }
         }
-        if(assoProductPeople != null && assoProductPeople.size() != 0){
+        if (assoProductPeople != null && assoProductPeople.size() != 0) {
             assoProductPersonService.saveBatch(assoProductPeople);
         }
         //判断文件是否为空
-        if(files != null && files.size() != 0) {
+        if (files != null && files.size() != 0) {
             try {
                 //调用上传文件接口
                 List<String> guids = fileManagerService.uploadFileGetGuid(files);
@@ -190,6 +231,7 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
 
     /**
      * 删除产品
+     *
      * @param ids
      * @return
      */
@@ -218,6 +260,7 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
 
     /**
      * 更新产品
+     *
      * @param object
      * @param files
      * @return
@@ -226,7 +269,7 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
     public Object updateMessage(Object object, List<MultipartFile> files) {
         //object to updateProductDTO
         UpdateProductDTO updateProductDTO = (UpdateProductDTO) object;
-        if(updateProductDTO == null || updateProductDTO.getId() == null){
+        if (updateProductDTO == null || updateProductDTO.getId() == null) {
             throw new XiaoShiException("参数错误");
         }
         //获取登陆人信息 用于设置创建人
@@ -244,7 +287,7 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
         LambdaQueryWrapper<Product> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(Product::getName, name);
         List<Product> products = this.list(queryWrapper);
-        if(!updateProductDTO.getName().equals(product.getName()) && products.size() != 0){
+        if (!updateProductDTO.getName().equals(product.getName()) && products.size() != 0) {
             throw new XiaoShiException("名称重复");
         }
         BeanUtils.copyProperties(updateProductDTO, product);
@@ -279,10 +322,10 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
         }
         //判断可见类型:
         Integer showType = updateProductDTO.getShowType();
-        if(showType != 0 && showType != 1){
+        if (showType != 0 && showType != 1) {
             List<String> showPersonIds = updateProductDTO.getShowPersonIds();
             //0所有人可见,1本人可见
-            if(showPersonIds != null && showPersonIds.size() != 0){
+            if (showPersonIds != null && showPersonIds.size() != 0) {
                 for (String showPersonId : showPersonIds) {
                     AssoProductPerson assoProductPerson = new AssoProductPerson();
                     assoProductPerson.setProductId(product.getId());
@@ -300,7 +343,7 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
                 }
             }
         }
-        if(assoProductPeople != null && assoProductPeople.size() != 0){
+        if (assoProductPeople != null && assoProductPeople.size() != 0) {
             assoProductPersonService.saveBatch(assoProductPeople);
         }
         /**
@@ -313,20 +356,20 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
         List<String> fileGuIds = assoFiles.stream().map(AssoProductFile::getFileGuid).collect(Collectors.toList());
         //获取更新后的附件ids
         List<String> updateFileGuIds = new ArrayList<>();
-        if(updateProductDTO.getGuids() != null && updateProductDTO.getGuids().size() != 0){
+        if (updateProductDTO.getGuids() != null && updateProductDTO.getGuids().size() != 0) {
             updateFileGuIds = updateProductDTO.getGuids();
             fileGuIds.retainAll(updateFileGuIds);
         }
         //做差获得被删除的文件id
-        if(fileGuIds.size() != 0){
+        if (fileGuIds.size() != 0) {
             //根据文件id删除产品与文件关联表记录
             LambdaQueryWrapper<AssoProductFile> deleteWrapper = new LambdaQueryWrapper<>();
             deleteWrapper.in(AssoProductFile::getFileGuid, fileGuIds);
             assoProductFileService.remove(deleteWrapper);
             //远程删除服务器上的文件
-            try{
+            try {
                 fileManagerService.deleteFileFromFMS(fileGuIds);
-            } catch (Exception e){
+            } catch (Exception e) {
 
             }
         }
@@ -353,7 +396,7 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
     }
 
     @Override
-    public GroupVO getGroup(GroupRequest groupRequest,String tableName) throws Exception {
+    public GroupVO getGroup(GroupRequest groupRequest, String tableName) throws Exception {
         return null;
     }
 
@@ -369,6 +412,7 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
 
     /**
      * 装载productVO
+     *
      * @param productVOS
      * @throws IOException
      */
@@ -377,7 +421,7 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
         List<Integer> ids = new ArrayList<>();
         productVOS.forEach(
                 item -> {
-                    if(item.getCreateId() != null){
+                    if (item.getCreateId() != null) {
                         createIds.add(item.getCreateId());
                     }
                     if (item.getId() != null) {
@@ -409,8 +453,8 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
         if (guids.size() != 0) {
             String res = fileManagerService.getSystemFileFromFMS(guids);
             systemFiles = JSONObject.parseArray(res, SystemFile.class);
-            if(systemFiles==null){
-                systemFiles=new ArrayList<>();
+            if (systemFiles == null) {
+                systemFiles = new ArrayList<>();
             }
         }
 
@@ -418,7 +462,7 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
         for (ProductVO productVO : productVOS) {
             //装载人员信息
             Personnel personnel = personnels.stream().filter(item -> item.getId().toString().equals(productVO.getCreateId())).findFirst().orElse(null);
-            if(personnel != null){
+            if (personnel != null) {
                 productVO.setCreateName(personnel.getPersonnelName());
             } else {
                 throw new XiaoShiException("未获取到当前登陆人信息");
@@ -497,23 +541,48 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
 
     //装载查询语句
     //装载查询语句
-    private List<String> loadSearchSql(List<String> sqls){
-        PersonnelVO personnelVO =cacheUtils.getLoginUser(loginUtils.getId());
+    private List<String> loadSearchSql(List<String> sqls) {
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
         String id =personnelVO.getId();
-        Integer tenantId =personnelVO.getTenantId();
-        String rootSql ="product.create_id="+id+" or(product.show_type =0 and product.tenant_id ="+tenantId+") or ( product.id in (select product_id from asso_product_person where" +
-                " person_id="+id+" and role=0)) or (product.show_type=2 and  product.id in (select product_id from asso_product_person where" +
-                " person_id="+id+" and role=1)) or(product.show_type =3 and product.id not in(select product_id from asso_product_person where" +
-                " person_id="+id+" and role=2))";
-        if(sqls.get(0)!=null&&!sqls.get(0).equals(""))
+        Integer tenantId= personnelVO.getTenantId();
+        Integer roleType = personnelVO.getRoleType();
+        String rootSql = "";
+        if (roleType == null || roleType.equals(0)) {
+            rootSql = "product.create_id=" + id + " or(product.show_type =0 and product.tenant_id =" + tenantId + ") or ( product.id in (select product_id from asso_product_person where" +
+                    " person_id=" + id + " and role=0)) or (product.show_type=2 and  product.id in (select product_id from asso_product_person where" +
+                    " person_id=" + id + " and role=1)) or(product.show_type =3 and product.id not in(select product_id from asso_product_person where" +
+                    " person_id=" + id + " and role=2))";
+
+        }
+        else if(roleType.equals(2))
         {
-            sqls.set(0,rootSql+" and"+"("+sqls.get(0)+")");
+            rootSql="product.tenant_id="+tenantId;
+        }
 
+        if (sqls.get(0) != null && !sqls.get(0).equals("") && !rootSql.equals("")) {
+            sqls.set(0, rootSql + " and" + "(" + sqls.get(0) + ")");
+        } else if ((sqls.get(0) == null || sqls.get(0).equals("")) && !rootSql.equals("")) {
+            sqls.set(0, rootSql);
         }
-        else {
-            sqls.set(0,rootSql);
+
+        return sqls;
+
+    }
+
+    //装载查询产品语句
+    private List<String> loadProductIdsSql(List<String> sqls, List<Integer> ids) {
+        String rootSql = "";
+        if (CollectionUtils.isEmpty(ids)) {
+            rootSql = "product.id in " + "(" + 0 + ")";
+        } else {
+            rootSql = "product.id in " + "(" + String.join(",", ids.stream().map(Object::toString).collect(Collectors.toList())) + ")";
         }
 
+        if (sqls.get(0) != null && !sqls.get(0).equals("")) {
+            sqls.set(0, "(" + rootSql + ")" + " and " + "(" + sqls.get(0) + ")");
+        } else {
+            sqls.set(0, rootSql);
+        }
         return sqls;
 
     }

+ 54 - 1
src/main/java/cn/cslg/pas/service/business/ProjectService.java

@@ -1,14 +1,20 @@
 package cn.cslg.pas.service.business;
 
+import cn.cslg.pas.common.model.cronModel.PersonnelVO;
+import cn.cslg.pas.common.utils.CacheUtils;
+import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.domain.business.AssoProductPerson;
+import cn.cslg.pas.domain.business.AssoProjectPerson;
 import cn.cslg.pas.domain.business.Project;
 import cn.cslg.pas.mapper.AssoProductPersonMapper;
 import cn.cslg.pas.mapper.ProjectMapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.Optional;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 项目业务层
@@ -20,8 +26,55 @@ public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
     @Autowired
     private ProjectMapper projectMapper;
 
+    @Autowired
+    private CacheUtils cacheUtils;
+    @Autowired
+    private LoginUtils loginUtils;
+    @Autowired
+    private  AssoProjectPersonService assoProjectPersonService;
     public Optional<Project> getByIdOpt(Integer id) {
         Project project = projectMapper.selectById(id);
         return Optional.ofNullable(project);
     }
+
+    public Map<Integer,List<String>> getProjectPermissions(List<Integer> projectIds){
+        Map<Integer,List<String>> map =new HashMap<>();
+        if(projectIds==null||projectIds.size()==0){
+            return map;
+        }
+        projectIds.forEach(
+              item->{
+                  map.put(item,new ArrayList<>());
+              }
+        );
+        PersonnelVO personnelVO=cacheUtils.getLoginUser(loginUtils.getId());
+        String id =personnelVO.getId();
+        LambdaQueryWrapper<Project> queryWrapper =new LambdaQueryWrapper<>();
+        queryWrapper.select(Project::getId,Project::getCreateId,Project::getHeadId);
+        queryWrapper.in(Project::getId,projectIds);
+        List<Project> projects =this.list(queryWrapper);
+
+        projects.forEach(item->{
+            Integer projectId= item.getId();
+            String createId =item.getCreateId();
+            String headId =item.getHeadId();
+            List<String> roles =map.get(projectId);
+            if(id.equals(createId))
+            {roles.add("0");}
+            if(id.equals(headId)){
+                roles.add("1");
+            }
+        });
+        LambdaQueryWrapper<AssoProjectPerson> queryWrapper1 =new LambdaQueryWrapper<>();
+        queryWrapper1.in(AssoProjectPerson::getProjectId,projectIds);
+        queryWrapper1.eq(AssoProjectPerson::getPersonId,id);
+        List<AssoProjectPerson> assoProjectPersonList =assoProjectPersonService.list(queryWrapper1);
+        assoProjectPersonList.forEach(item->{
+            Integer projectId =item.getProjectId();
+            List<String> roles =map.get(projectId);
+            roles.add("2");
+        });
+
+return map;
+    }
 }

+ 24 - 8
src/main/java/cn/cslg/pas/service/business/ProjectTaskService.java

@@ -1158,20 +1158,36 @@ public class ProjectTaskService extends ServiceImpl<ProjectTaskMapper, ProjectTa
                     assoTaskField.setFieldId(item.getId());
                     assoTaskField.setFieldType(item.getType());
                     assoTaskField.setTaskId(taskId);
-                    assoTaskField.setProjectId(batchId);
+                    assoTaskField.setTaskBatchId(batchId);
                     assoTaskField.setProjectId(projectId);
+                    assoTaskField.setFieldValueId(0);
                     assoTaskFields.add(assoTaskField);
                 });
             }
         } else {
             markedFields.forEach(item -> {
-                AssoTaskField assoTaskField = new AssoTaskField();
-                assoTaskField.setFieldId(item.getFieldId());
-                assoTaskField.setFieldType(item.getFieldType());
-                assoTaskField.setTaskId(taskId);
-                assoTaskField.setProjectId(batchId);
-                assoTaskField.setProjectId(projectId);
-                assoTaskFields.add(assoTaskField);
+
+               if(item.getValues()!=null&&item.getValues().size()>0){
+                   item.getValues().forEach(i->{
+                       AssoTaskField assoTaskField = new AssoTaskField();
+                       assoTaskField.setFieldId(item.getFieldId());
+                       assoTaskField.setFieldType(item.getFieldType());
+                       assoTaskField.setTaskId(taskId);
+                       assoTaskField.setTaskBatchId(batchId);
+                       assoTaskField.setProjectId(projectId);
+                       assoTaskField.setFieldValueId(i);
+                       assoTaskFields.add(assoTaskField);
+                   });
+               }
+              else {
+                   AssoTaskField assoTaskField = new AssoTaskField();
+                   assoTaskField.setFieldId(item.getFieldId());
+                   assoTaskField.setFieldType(item.getFieldType());
+                   assoTaskField.setTaskId(taskId);
+                   assoTaskField.setTaskBatchId(batchId);
+                   assoTaskField.setProjectId(projectId);
+                   assoTaskField.setFieldValueId(0);
+               }
             });
 
         }

+ 7 - 3
src/main/java/cn/cslg/pas/service/business/ProofGroupService.java

@@ -59,7 +59,7 @@ public class ProofGroupService extends ServiceImpl<ProofGroupMapper, ProofGroup>
         List<Integer> proofGroupIds = new ArrayList<>();
         if (addProofGroupDTO != null) {
             Integer id = addProofGroupDTO.getId();
-            List<String> descriptions = addProofGroupDTO.getDescriptions();
+            List<AddProofGroupDTO.Descriptions> descriptions = addProofGroupDTO.getDescriptions();
             Integer projectId = addProofGroupDTO.getProjectId();
             Integer claimId = addProofGroupDTO.getClaimId();
             Integer statutesId = addProofGroupDTO.getStatutesId();
@@ -85,9 +85,11 @@ public class ProofGroupService extends ServiceImpl<ProofGroupMapper, ProofGroup>
                 ProofGroup proofGroup = this.getById(id);
                 proofGroup.setInvalidStatutesId(invalidStatutesId);
                 if (!descriptions.isEmpty() && descriptions.size() == 1) {
-                    proofGroup.setDescription(descriptions.get(0));
+                    proofGroup.setDescription(descriptions.get(0).getDescription1());
+                    proofGroup.setDescription2(descriptions.get(0).getDescription2());
                 } else {
                     proofGroup.setDescription(null);
+                    proofGroup.setDescription2(null);
                 }
                 proofGroup.updateById();
                 proofGroupIds.add(proofGroup.getId());
@@ -100,7 +102,8 @@ public class ProofGroupService extends ServiceImpl<ProofGroupMapper, ProofGroup>
                     descriptions.forEach(item -> {
                         ProofGroup proofGroup = new ProofGroup();
                         proofGroup.setInvalidStatutesId(invalidStatutesId);
-                        proofGroup.setDescription(item);
+                        proofGroup.setDescription(item.getDescription1());
+                        proofGroup.setDescription2(item.getDescription2());
                         proofGroups.add(proofGroup);
                     });
                 } else {
@@ -145,6 +148,7 @@ public class ProofGroupService extends ServiceImpl<ProofGroupMapper, ProofGroup>
                 proofGroupVO.setClaimId(invalidStatutes.getClaimId());
                 proofGroupVO.setProjectId(invalidStatutes.getProjectId());
                 proofGroupVO.setDescription(item.getDescription());
+                proofGroupVO.setDescription2(item.getDescription2());
                 proofGroupVOS.add(proofGroupVO);
             });
         }

+ 84 - 25
src/main/java/cn/cslg/pas/service/business/ReportProjectService.java

@@ -37,6 +37,7 @@ import jakarta.validation.constraints.AssertFalse;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
@@ -47,8 +48,8 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
 
-@Service
 @Slf4j
+@Service
 public class ReportProjectService extends ServiceImpl<ReportProjectMapper, ReportProject> implements Business {
 
     @Autowired
@@ -101,12 +102,17 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
     private ScenarioService scenarioService;
     @Autowired
     private EsService esService;
+    @Autowired
+    private CustomFieldService customFieldService;
+    @Autowired
+    @Lazy
+    private CompareLiteratureService compareLiteratureService;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Object queryMessage(QueryRequest queryRequest) throws Exception {
         List<String> sqls = formatQueryService.reSqls(queryRequest, "reportProject");
-             sqls=this.loadSearchSql(sqls);
+        sqls = this.loadSearchSql(sqls);
         //根据sql查询事件信息
         List<ReportProjectVO> reportProject = reportProjectMapper.getReportProject(sqls.get(0), sqls.get(1), sqls.get(2));
         this.loadReportProjectVO(reportProject);
@@ -209,7 +215,7 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
                 throw new XiaoShiException("未找到配置");
             }
         }
-        tableName = "report as rp left join project as p on rp.project_id =p.id left join asso_project_event as aspe on p.id =aspe.project_id";
+        tableName = "report as rp left join project as p on rp.project_id =p.id ";
         //返回分组数据
         QueryGroupImp queryGroupImp = queryGroupFactory.getClass(groupConfig.getGroupClass());
         ReGroupDataVO reGroupDataVO = queryGroupImp.getGroup(sqls, tableName, groupConfig.getSqlField());
@@ -360,16 +366,42 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
         if (events != null && events.size() != 0) {
             //遍历传入的事件集合
             for (ProjectEventDTO projectEventDTO : events) {
-                AssoProjectEvent assoProjectEvent = new AssoProjectEvent();
-                //事件id和处理事项id
-                BeanUtils.copyProperties(projectEventDTO, assoProjectEvent);
-                //项目id
-                assoProjectEvent.setProjectId(project.getId());
-                //创建人
-                assoProjectEvent.setCreateId(personnelVO.getId());
-                //类型为报告
-                assoProjectEvent.setProjectType(1);
-                assoProjectEvents.add(assoProjectEvent);
+                if (projectEventDTO.getEventId() != null) {
+                    AssoProjectEvent assoProjectEvent = new AssoProjectEvent();
+                    //事件id和处理事项id
+                    assoProjectEvent.setEventId(projectEventDTO.getEventId());
+                    //项目id
+                    assoProjectEvent.setProjectId(project.getId());
+                    //创建人
+                    assoProjectEvent.setCreateId(personnelVO.getId());
+                    //类型为报告
+                    assoProjectEvent.setProjectType(1);
+                    assoProjectEvents.add(assoProjectEvent);
+                }
+                if (projectEventDTO.getMatterId() != null) {
+                    AssoProjectEvent assoProjectEvent = new AssoProjectEvent();
+                    //事件id和处理事项id
+                    assoProjectEvent.setMatterId(projectEventDTO.getMatterId());
+                    //项目id
+                    assoProjectEvent.setProjectId(project.getId());
+                    //创建人
+                    assoProjectEvent.setCreateId(personnelVO.getId());
+                    //类型为报告
+                    assoProjectEvent.setProjectType(1);
+                    assoProjectEvents.add(assoProjectEvent);
+                }
+                if (projectEventDTO.getScenarioId() != null) {
+                    AssoProjectEvent assoProjectEvent = new AssoProjectEvent();
+                    //事件id和处理事项id
+                    assoProjectEvent.setScenarioId(projectEventDTO.getScenarioId());
+                    //项目id
+                    assoProjectEvent.setProjectId(project.getId());
+                    //创建人
+                    assoProjectEvent.setCreateId(personnelVO.getId());
+                    //类型为报告
+                    assoProjectEvent.setProjectType(1);
+                    assoProjectEvents.add(assoProjectEvent);
+                }
             }
             if (assoProjectEvents != null && assoProjectEvents.size() != 0) {
                 assoProjectEventService.saveBatch(assoProjectEvents);
@@ -407,6 +439,26 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
             });
             assoReportCronService.saveBatch(assoReportCrons);
         }
+
+        /**
+         * 复制信息
+         */
+        Boolean track = reportProjectDTO.getTrack();
+        if (track != null && track.equals(true)) {
+            List<Integer> copyIds = reportProjectDTO.getCopyIds();
+            //复制对比文献
+            if (copyIds != null && copyIds.contains(0)) {
+                Integer oldProjectId = reportProjectDTO.getAssociateReportId();
+                compareLiteratureService.copyCompareLiterature(oldProjectId, project.getId());
+            }
+            //复制标引信息
+            if (copyIds != null && copyIds.contains(1)) {
+                Integer oldProjectId = reportProjectDTO.getAssociateReportId();
+                customFieldService.copyCustomField(oldProjectId, project.getId());
+            }
+
+
+        }
         //返回id
         return project.getId();
     }
@@ -497,9 +549,9 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
         LambdaQueryWrapper<ReportProject> reportProjectWrapper = new LambdaQueryWrapper<>();
         reportProjectWrapper.eq(ReportProject::getProjectId, project.getId());
         ReportProject reportProject = this.getOne(reportProjectWrapper);
-        Integer reportId =reportProject.getId();
+        Integer reportId = reportProject.getId();
         BeanUtils.copyProperties(updateReportProjectDTO, reportProject);
-       reportProject.setId(reportId);
+        reportProject.setId(reportId);
         reportProject.updateById();
 
         /**
@@ -873,18 +925,25 @@ public class ReportProjectService extends ServiceImpl<ReportProjectMapper, Repor
         return true;
     }
 
- //装载查询语句
-    private List<String> loadSearchSql(List<String> sqls){
-        PersonnelVO personnelVO =cacheUtils.getLoginUser(loginUtils.getId());
-        String id =personnelVO.getId();
-        String rootSql ="(p.create_id ="+id+" or p.head_id="+id+" or p.id in (select project_id from asso_project_person where person_id ="+id+"))";
-        if(sqls.get(0)!=null&&!sqls.get(0).equals(""))
-        {
-            sqls.set(0,rootSql+" and"+"("+sqls.get(0)+")");
+    //装载查询语句
+    private List<String> loadSearchSql(List<String> sqls) {
+        PersonnelVO personnelVO = cacheUtils.getLoginUser(loginUtils.getId());
+        String id = personnelVO.getId();
+        Integer tenantId= personnelVO.getTenantId();
+        Integer roleType = personnelVO.getRoleType();
+        String rootSql = "";
+        if (roleType == null || roleType.equals(0)) {
+            rootSql = "(p.create_id =" + id + " or p.head_id=" + id + " or p.id in (select project_id from asso_project_person where person_id =" + id + "))";
 
         }
-        else {
-            sqls.set(0,rootSql);
+        else if(roleType.equals(2))
+        {
+            rootSql="p.tenantId="+tenantId;
+        }
+        if (sqls.get(0) != null && !sqls.get(0).equals("") && !rootSql.equals("")) {
+            sqls.set(0, rootSql + " and" + "(" + sqls.get(0) + ")");
+        } else if ((sqls.get(0) == null || sqls.get(0).equals("")) && !rootSql.equals("")) {
+            sqls.set(0, rootSql);
         }
 
         return sqls;

+ 87 - 7
src/main/java/cn/cslg/pas/service/business/ReviewHistoryService.java

@@ -1,20 +1,26 @@
 package cn.cslg.pas.service.business;
 
+import cn.cslg.pas.common.dto.business.OtherPatentInfoDTO;
 import cn.cslg.pas.common.dto.business.ReviewHistoryDTO;
 import cn.cslg.pas.common.model.cronModel.Personnel;
 import cn.cslg.pas.common.model.cronModel.PersonnelVO;
+import cn.cslg.pas.common.model.cronModel.Records;
+import cn.cslg.pas.common.model.cronModel.SystemFile;
 import cn.cslg.pas.common.utils.CacheUtils;
 import cn.cslg.pas.common.utils.LoginUtils;
 import cn.cslg.pas.common.utils.StringUtils;
-import cn.cslg.pas.common.vo.HightlightTemplateVO;
 import cn.cslg.pas.common.vo.business.ReviewHistoryVO;
+import cn.cslg.pas.domain.business.AssoOtherPatentInfoFile;
 import cn.cslg.pas.domain.business.HightlightTemplate;
 import cn.cslg.pas.domain.business.ReviewHistory;
 import cn.cslg.pas.exception.XiaoShiException;
 import cn.cslg.pas.mapper.ReviewHistoryMapper;
+import cn.cslg.pas.service.common.FileManagerService;
 import cn.cslg.pas.service.permissions.PermissionService;
 import com.alibaba.fastjson.JSONObject;
 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 lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
@@ -24,6 +30,7 @@ import org.springframework.stereotype.Service;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @Author xiexiang
@@ -41,6 +48,15 @@ public class ReviewHistoryService extends ServiceImpl<ReviewHistoryMapper, Revie
     @Autowired
     private PermissionService permissionService;
 
+    @Autowired
+    private AssoOtherPatentInfoFileService assoOtherPatentInfoFileService;
+
+    @Autowired
+    private OtherReferencesService otherReferencesService;
+
+    @Autowired
+    private FileManagerService fileManagerService;
+
     /**
      * 新增or更新
      * @param reviewHistoryDTO
@@ -51,12 +67,23 @@ public class ReviewHistoryService extends ServiceImpl<ReviewHistoryMapper, Revie
             throw new XiaoShiException("入参为空");
         }
         Integer id = reviewHistoryDTO.getId();
+        List<String> fileGuids = reviewHistoryDTO.getFileGuids();
         ReviewHistory reviewHistory = new ReviewHistory();
+        Integer type = 3;
         if (id != null) {
             //update
             reviewHistory = this.getById(id);
             BeanUtils.copyProperties(reviewHistoryDTO, reviewHistory);
             reviewHistory.updateById();
+
+            //先删除 后添加
+            LambdaQueryWrapper<AssoOtherPatentInfoFile> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(AssoOtherPatentInfoFile::getOtherPatentInfoId, id)
+                    .eq(AssoOtherPatentInfoFile::getType, type);
+            assoOtherPatentInfoFileService.remove(queryWrapper);
+            if (fileGuids != null && !fileGuids.isEmpty()) {
+                List<Integer> fileIds = otherReferencesService.addFile(reviewHistory.getId(), fileGuids, type);
+            }
         } else {
             BeanUtils.copyProperties(reviewHistoryDTO, reviewHistory);
             PersonnelVO personnelVO = new PersonnelVO();
@@ -68,19 +95,36 @@ public class ReviewHistoryService extends ServiceImpl<ReviewHistoryMapper, Revie
             reviewHistory.setCreateId(personnelVO.getId());
             reviewHistory.setTenantId(personnelVO.getTenantId());
             reviewHistory.insert();
+            if (fileGuids != null && !fileGuids.isEmpty()) {
+                //先删除 后添加
+                List<Integer> fileIds = otherReferencesService.addFile(reviewHistory.getId(), fileGuids, type);
+            }
         }
         return reviewHistory.getId();
     }
 
-    public List<ReviewHistoryVO> getReviewHistory(String patentNo) throws IOException {
+    /**
+     * 分页查询
+     * @param otherPatentInfoDTO
+     * @return
+     * @throws IOException
+     */
+    public Records getReviewHistory(OtherPatentInfoDTO otherPatentInfoDTO) throws IOException {
+        List<ReviewHistoryVO> reviewHistoryVOS = new ArrayList<>();
+        String patentNo = otherPatentInfoDTO.getPatentNo();
         if (patentNo == null || StringUtils.isEmpty(patentNo)) {
             throw new XiaoShiException("入参为空");
         }
-        List<ReviewHistoryVO> reviewHistoryVOS = new ArrayList<>();
-        LambdaQueryWrapper<ReviewHistory> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(ReviewHistory::getPatentNo, patentNo);
-        List<ReviewHistory> reviewHistories = this.list(queryWrapper);
+        Integer current = otherPatentInfoDTO.getCurrent();
+        Integer size = otherPatentInfoDTO.getSize();
+        Page<ReviewHistory> page = new Page<>(current, size);
 
+        LambdaQueryWrapper<ReviewHistory> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ReviewHistory::getPatentNo, patentNo)
+                .orderByDesc(ReviewHistory::getCreateTime);
+        IPage<ReviewHistory> reviewHistoryPage = this.page(page, queryWrapper);
+        List<ReviewHistory> reviewHistories = reviewHistoryPage.getRecords();
+        long total = reviewHistoryPage.getTotal();
         if (!reviewHistories.isEmpty()) {
             reviewHistories.forEach(item -> {
                 ReviewHistoryVO reviewHistoryVO = new ReviewHistoryVO();
@@ -89,9 +133,19 @@ public class ReviewHistoryService extends ServiceImpl<ReviewHistoryMapper, Revie
             });
             this.loadReviewHistoryVOS(reviewHistoryVOS);
         }
-        return reviewHistoryVOS;
+        Records records = new Records();
+        records.setTotal(total);
+        records.setCurrent((long)current);
+        records.setSize((long) size);
+        records.setData(reviewHistoryVOS);
+        return records;
     }
 
+    /**
+     * 装载
+     * @param reviewHistoryVOS
+     * @throws IOException
+     */
     public void loadReviewHistoryVOS(List<ReviewHistoryVO> reviewHistoryVOS) throws IOException {
         List<String> createIds = new ArrayList<>();
         reviewHistoryVOS.forEach(item -> {
@@ -113,12 +167,38 @@ public class ReviewHistoryService extends ServiceImpl<ReviewHistoryMapper, Revie
             if (personnel != null) {
                 reviewHistoryVO.setCreateName(personnel.getPersonnelName());
             }
+            LambdaQueryWrapper<AssoOtherPatentInfoFile> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(AssoOtherPatentInfoFile::getOtherPatentInfoId, reviewHistoryVO.getId())
+                    .eq(AssoOtherPatentInfoFile::getType, 3);
+            List<AssoOtherPatentInfoFile> assoOtherPatentInfoFiles = assoOtherPatentInfoFileService.list(queryWrapper);
+            if (!assoOtherPatentInfoFiles.isEmpty()) {
+                List<String> fileGuids = assoOtherPatentInfoFiles.stream().map(AssoOtherPatentInfoFile::getFileGuid).collect(Collectors.toList());
+                reviewHistoryVO.setFileGuids(fileGuids);
+                List<SystemFile> systemFiles = new ArrayList<>();
+                if (fileGuids.size() != 0) {
+                    String res = fileManagerService.getSystemFileFromFMS(fileGuids);
+                    systemFiles = JSONObject.parseArray(res, SystemFile.class);
+                }
+                if (!systemFiles.isEmpty()) {
+                    reviewHistoryVO.setSystemFileList(systemFiles);
+                }
+            }
         }
 
     }
 
+    /**
+     * 删除
+     * @param ids
+     * @return
+     */
     public List<Integer> deleteReviewHistory(List<Integer> ids) {
         if (!ids.isEmpty()) {
+            //先删除附件
+            LambdaQueryWrapper<AssoOtherPatentInfoFile> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.in(AssoOtherPatentInfoFile::getOtherPatentInfoId, ids)
+                    .eq(AssoOtherPatentInfoFile::getType, 3);
+            assoOtherPatentInfoFileService.remove(queryWrapper);
             this.removeBatchByIds(ids);
         }
         return ids;

+ 0 - 0
src/main/java/cn/cslg/pas/service/business/TreeNodeService.java


Някои файлове не бяха показани, защото твърде много файлове са промени