Long 2 дней назад
Родитель
Сommit
d0a645a990
43 измененных файлов с 567 добавлено и 8672 удалено
  1. 0 6936
      effective-fs-service.xml
  2. 0 26
      fs-admin/pom.xml
  3. 87 0
      fs-admin/src/main/java/com/fs/admin/controller/monitor/SysJobLogController.java
  4. 8 0
      fs-admin/src/main/java/com/fs/admin/controller/monitor/TenantJobController.java
  5. 0 13
      fs-agent/pom.xml
  6. 5 0
      fs-common/pom.xml
  7. 110 0
      fs-common/src/main/java/com/fs/common/utils/CronUtils.java
  8. 0 40
      fs-quartz/pom.xml
  9. 0 167
      fs-quartz/src/main/java/com/fs/quartz/controller/SysJobController.java
  10. 0 165
      fs-quartz/src/main/java/com/fs/quartz/controller/SysJobLogController.java
  11. 0 95
      fs-quartz/src/main/java/com/fs/quartz/util/CronUtils.java
  12. 0 6
      fs-service/pom.xml
  13. 7 6
      fs-service/src/main/java/com/fs/quartz/domain/SysJob.java
  14. 4 3
      fs-service/src/main/java/com/fs/quartz/domain/SysJobLog.java
  15. 2 1
      fs-service/src/main/java/com/fs/quartz/mapper/SysJobLogMapper.java
  16. 2 1
      fs-service/src/main/java/com/fs/quartz/mapper/SysJobMapper.java
  17. 0 65
      fs-service/src/main/java/com/fs/quartz/saas/QuartzSaaSConfig.java
  18. 0 115
      fs-service/src/main/java/com/fs/quartz/saas/TenantJobDispatcherJob.java
  19. 2 1
      fs-service/src/main/java/com/fs/quartz/service/ISysJobLogService.java
  20. 10 11
      fs-service/src/main/java/com/fs/quartz/service/ISysJobService.java
  21. 4 3
      fs-service/src/main/java/com/fs/quartz/service/impl/SysJobLogServiceImpl.java
  22. 51 81
      fs-service/src/main/java/com/fs/quartz/service/impl/SysJobServiceImpl.java
  23. 44 3
      fs-service/src/main/java/com/fs/quartz/service/impl/SysJobTemplateServiceImpl.java
  24. 7 5
      fs-service/src/main/java/com/fs/quartz/service/impl/TenantJobConfigServiceImpl.java
  25. 0 0
      fs-service/src/main/resources/mapper/quartz/SysJobLogMapper.xml
  26. 0 0
      fs-service/src/main/resources/mapper/quartz/SysJobMapper.xml
  27. 8 66
      fs-task/pom.xml
  28. 1 6
      fs-task/src/main/java/com/fs/FsTaskApplication.java
  29. 71 0
      fs-task/src/main/java/com/fs/quartz/service/SysJobInitService.java
  30. 1 1
      fs-task/src/main/java/com/fs/quartz/task/RyTask.java
  31. 7 7
      fs-task/src/main/java/com/fs/quartz/util/AbstractQuartzJob.java
  32. 4 3
      fs-task/src/main/java/com/fs/quartz/util/JobInvokeUtil.java
  33. 1 1
      fs-task/src/main/java/com/fs/quartz/util/QuartzDisallowConcurrentExecution.java
  34. 9 4
      fs-task/src/main/java/com/fs/quartz/util/QuartzJobExecution.java
  35. 1 10
      fs-task/src/main/java/com/fs/quartz/util/ScheduleUtils.java
  36. 114 0
      fs-task/src/main/java/com/fs/quartz/util/TenantJobDispatcherJob.java
  37. 0 47
      fs-task/src/main/java/com/fs/task/TaskPackages.java
  38. 0 28
      fs-task/src/main/java/com/fs/task/config/TaskModuleConfiguration.java
  39. 0 577
      fs-task/src/main/java/com/fs/task/controller/TaskManualController.java
  40. 0 56
      fs-task/src/main/java/com/fs/task/controller/TaskRegistryController.java
  41. 0 114
      fs-task/src/main/java/com/fs/task/service/TaskRegistryService.java
  42. 0 1
      fs-task/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
  43. 7 8
      pom.xml

+ 0 - 6936
effective-fs-service.xml

@@ -1,6936 +0,0 @@
-[INFO] Scanning for projects...
-[WARNING] 
-[WARNING] Some problems were encountered while building the effective model for com.fs:fs-service:jar:1.1.0
-[WARNING] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: org.mapstruct:mapstruct:jar -> duplicate declaration of version ${org.mapstruct.version} @ line 313, column 21
-[WARNING] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: org.mapstruct:mapstruct-processor:jar -> duplicate declaration of version ${org.mapstruct.version} @ line 318, column 21
-[WARNING] 
-[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
-[WARNING] 
-[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
-[WARNING] 
-[INFO] 
-[INFO] -------------------------< com.fs:fs-service >--------------------------
-[INFO] Building fs-service 1.1.0
-[INFO] --------------------------------[ jar ]---------------------------------
-[INFO] 
-[INFO] --- maven-help-plugin:3.5.1:effective-pom (default-cli) @ fs-service ---
-[INFO] 
-Effective POMs, after inheritance, interpolation, and profiles are applied:
-
-<?xml version="1.0" encoding="GBK"?>
-<!-- ====================================================================== -->
-<!--                                                                        -->
-<!-- Generated by Maven Help Plugin                                         -->
-<!-- See: https://maven.apache.org/plugins/maven-help-plugin/               -->
-<!--                                                                        -->
-<!-- ====================================================================== -->
-<!-- ====================================================================== -->
-<!--                                                                        -->
-<!-- Effective POM for project 'com.fs:fs-service:jar:1.1.0'                -->
-<!--                                                                        -->
-<!-- ====================================================================== -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>com.fs</groupId>
-    <artifactId>fs</artifactId>
-    <version>1.1.0</version>
-  </parent>
-  <groupId>com.fs</groupId>
-  <artifactId>fs-service</artifactId>
-  <version>1.1.0</version>
-  <description>service模块</description>
-  <properties>
-    <bitwalker.version>1.21</bitwalker.version>
-    <commons.collections.version>3.2.2</commons.collections.version>
-    <commons.fileupload.version>1.4</commons.fileupload.version>
-    <commons.io.version>2.11.0</commons.io.version>
-    <druid.version>1.2.6</druid.version>
-    <fastjson.version>1.2.76</fastjson.version>
-    <fs.version>1.1.0</fs.version>
-    <gson-version>2.10</gson-version>
-    <ijpay-version>2.7.8</ijpay-version>
-    <java.version>17</java.version>
-    <jna.version>5.8.0</jna.version>
-    <jwt.version>0.9.1</jwt.version>
-    <kaptcha.version>2.3.2</kaptcha.version>
-    <lombok.version>1.18.32</lombok.version>
-    <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
-    <mybatis-spring-boot.version>2.3.2</mybatis-spring-boot.version>
-    <org.mapstruct.version>1.5.5.Final</org.mapstruct.version>
-    <oshi.version>5.8.0</oshi.version>
-    <pagehelper.boot.version>1.4.7</pagehelper.boot.version>
-    <poi.version>4.1.2</poi.version>
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
-    <swagger.version>2.9.2</swagger.version>
-    <velocity.version>1.7</velocity.version>
-    <weixin-java-cp.version>4.7.0</weixin-java-cp.version>
-    <weixin-java-miniapp.version>4.7.0</weixin-java-miniapp.version>
-    <weixin-java-mp.version>4.7.0</weixin-java-mp.version>
-  </properties>
-  <dependencyManagement>
-    <dependencies>
-      <dependency>
-        <groupId>com.google.code.gson</groupId>
-        <artifactId>gson</artifactId>
-        <version>2.10</version>
-      </dependency>
-      <dependency>
-        <groupId>mysql</groupId>
-        <artifactId>mysql-connector-java</artifactId>
-        <version>8.0.33</version>
-      </dependency>
-      <dependency>
-        <groupId>com.alibaba</groupId>
-        <artifactId>druid-spring-boot-starter</artifactId>
-        <version>1.2.6</version>
-      </dependency>
-      <dependency>
-        <groupId>eu.bitwalker</groupId>
-        <artifactId>UserAgentUtils</artifactId>
-        <version>1.21</version>
-      </dependency>
-      <dependency>
-        <groupId>org.mybatis.spring.boot</groupId>
-        <artifactId>mybatis-spring-boot-starter</artifactId>
-        <version>2.3.2</version>
-      </dependency>
-      <dependency>
-        <groupId>com.github.pagehelper</groupId>
-        <artifactId>pagehelper-spring-boot-starter</artifactId>
-        <version>1.4.7</version>
-      </dependency>
-      <dependency>
-        <groupId>com.github.oshi</groupId>
-        <artifactId>oshi-core</artifactId>
-        <version>5.8.0</version>
-      </dependency>
-      <dependency>
-        <groupId>net.java.dev.jna</groupId>
-        <artifactId>jna</artifactId>
-        <version>5.8.0</version>
-      </dependency>
-      <dependency>
-        <groupId>net.java.dev.jna</groupId>
-        <artifactId>jna-platform</artifactId>
-        <version>5.8.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.springfox</groupId>
-        <artifactId>springfox-swagger2</artifactId>
-        <version>2.9.2</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>swagger-annotations</artifactId>
-            <groupId>io.swagger</groupId>
-          </exclusion>
-          <exclusion>
-            <artifactId>swagger-models</artifactId>
-            <groupId>io.swagger</groupId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>io.springfox</groupId>
-        <artifactId>springfox-swagger-ui</artifactId>
-        <version>2.9.2</version>
-      </dependency>
-      <dependency>
-        <groupId>com.github.xiaoymin</groupId>
-        <artifactId>swagger-bootstrap-ui</artifactId>
-        <version>1.9.3</version>
-      </dependency>
-      <dependency>
-        <groupId>commons-io</groupId>
-        <artifactId>commons-io</artifactId>
-        <version>2.11.0</version>
-      </dependency>
-      <dependency>
-        <groupId>commons-fileupload</groupId>
-        <artifactId>commons-fileupload</artifactId>
-        <version>1.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.poi</groupId>
-        <artifactId>poi-ooxml</artifactId>
-        <version>4.1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.velocity</groupId>
-        <artifactId>velocity</artifactId>
-        <version>1.7</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>commons-collections</artifactId>
-            <groupId>commons-collections</groupId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>commons-collections</groupId>
-        <artifactId>commons-collections</artifactId>
-        <version>3.2.2</version>
-      </dependency>
-      <dependency>
-        <groupId>com.alibaba</groupId>
-        <artifactId>fastjson</artifactId>
-        <version>1.2.76</version>
-      </dependency>
-      <dependency>
-        <groupId>io.jsonwebtoken</groupId>
-        <artifactId>jjwt</artifactId>
-        <version>0.9.1</version>
-      </dependency>
-      <dependency>
-        <groupId>com.github.penggle</groupId>
-        <artifactId>kaptcha</artifactId>
-        <version>2.3.2</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fs</groupId>
-        <artifactId>fs-quartz</artifactId>
-        <version>1.1.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fs</groupId>
-        <artifactId>fs-task</artifactId>
-        <version>1.1.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fs</groupId>
-        <artifactId>fs-generator</artifactId>
-        <version>1.1.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fs</groupId>
-        <artifactId>fs-framework</artifactId>
-        <version>1.1.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fs</groupId>
-        <artifactId>fs-service</artifactId>
-        <version>1.1.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fs</groupId>
-        <artifactId>fs-wx-ipad-task</artifactId>
-        <version>1.1.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fs</groupId>
-        <artifactId>fs-common</artifactId>
-        <version>1.1.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fs</groupId>
-        <artifactId>fs-repeat-api</artifactId>
-        <version>1.1.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fs</groupId>
-        <artifactId>fs-ipad-task</artifactId>
-        <version>1.1.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fs</groupId>
-        <artifactId>fs-websocket</artifactId>
-        <version>1.1.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.github.javen205</groupId>
-        <artifactId>IJPay-All</artifactId>
-        <version>2.7.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.retry</groupId>
-        <artifactId>spring-retry</artifactId>
-        <version>1.3.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-amqp</artifactId>
-        <version>5.16.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-blueprint</artifactId>
-        <version>5.16.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-broker</artifactId>
-        <version>5.16.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-camel</artifactId>
-        <version>5.16.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-client</artifactId>
-        <version>5.16.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-console</artifactId>
-        <version>5.16.7</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>commons-logging</artifactId>
-            <groupId>commons-logging</groupId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-http</artifactId>
-        <version>5.16.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-jaas</artifactId>
-        <version>5.16.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-jdbc-store</artifactId>
-        <version>5.16.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-jms-pool</artifactId>
-        <version>5.16.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-kahadb-store</artifactId>
-        <version>5.16.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-karaf</artifactId>
-        <version>5.16.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-leveldb-store</artifactId>
-        <version>5.16.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-log4j-appender</artifactId>
-        <version>5.16.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-mqtt</artifactId>
-        <version>5.16.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-openwire-generator</artifactId>
-        <version>5.16.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-openwire-legacy</artifactId>
-        <version>5.16.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-osgi</artifactId>
-        <version>5.16.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-partition</artifactId>
-        <version>5.16.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-pool</artifactId>
-        <version>5.16.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-ra</artifactId>
-        <version>5.16.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-run</artifactId>
-        <version>5.16.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-runtime-config</artifactId>
-        <version>5.16.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-shiro</artifactId>
-        <version>5.16.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-spring</artifactId>
-        <version>5.16.7</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>commons-logging</artifactId>
-            <groupId>commons-logging</groupId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-stomp</artifactId>
-        <version>5.16.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>activemq-web</artifactId>
-        <version>5.16.7</version>
-      </dependency>
-      <dependency>
-        <groupId>antlr</groupId>
-        <artifactId>antlr</artifactId>
-        <version>2.7.7</version>
-      </dependency>
-      <dependency>
-        <groupId>com.google.appengine</groupId>
-        <artifactId>appengine-api-1.0-sdk</artifactId>
-        <version>1.9.98</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>artemis-amqp-protocol</artifactId>
-        <version>2.19.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>artemis-commons</artifactId>
-        <version>2.19.1</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>commons-logging</artifactId>
-            <groupId>commons-logging</groupId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>artemis-core-client</artifactId>
-        <version>2.19.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>artemis-jdbc-store</artifactId>
-        <version>2.19.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>artemis-jms-client</artifactId>
-        <version>2.19.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>artemis-jms-server</artifactId>
-        <version>2.19.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>artemis-journal</artifactId>
-        <version>2.19.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>artemis-quorum-api</artifactId>
-        <version>2.19.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>artemis-selector</artifactId>
-        <version>2.19.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>artemis-server</artifactId>
-        <version>2.19.1</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>commons-logging</artifactId>
-            <groupId>commons-logging</groupId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.activemq</groupId>
-        <artifactId>artemis-service-extensions</artifactId>
-        <version>2.19.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.aspectj</groupId>
-        <artifactId>aspectjrt</artifactId>
-        <version>1.9.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.aspectj</groupId>
-        <artifactId>aspectjtools</artifactId>
-        <version>1.9.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.aspectj</groupId>
-        <artifactId>aspectjweaver</artifactId>
-        <version>1.9.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.assertj</groupId>
-        <artifactId>assertj-core</artifactId>
-        <version>3.22.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.atomikos</groupId>
-        <artifactId>transactions-jdbc</artifactId>
-        <version>4.0.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.atomikos</groupId>
-        <artifactId>transactions-jms</artifactId>
-        <version>4.0.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.atomikos</groupId>
-        <artifactId>transactions-jta</artifactId>
-        <version>4.0.6</version>
-      </dependency>
-      <dependency>
-        <groupId>org.awaitility</groupId>
-        <artifactId>awaitility</artifactId>
-        <version>4.2.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.awaitility</groupId>
-        <artifactId>awaitility-groovy</artifactId>
-        <version>4.2.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.awaitility</groupId>
-        <artifactId>awaitility-kotlin</artifactId>
-        <version>4.2.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.awaitility</groupId>
-        <artifactId>awaitility-scala</artifactId>
-        <version>4.2.0</version>
-      </dependency>
-      <dependency>
-        <groupId>net.bytebuddy</groupId>
-        <artifactId>byte-buddy</artifactId>
-        <version>1.12.23</version>
-      </dependency>
-      <dependency>
-        <groupId>net.bytebuddy</groupId>
-        <artifactId>byte-buddy-agent</artifactId>
-        <version>1.12.23</version>
-      </dependency>
-      <dependency>
-        <groupId>org.cache2k</groupId>
-        <artifactId>cache2k-api</artifactId>
-        <version>2.6.1.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.cache2k</groupId>
-        <artifactId>cache2k-config</artifactId>
-        <version>2.6.1.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.cache2k</groupId>
-        <artifactId>cache2k-core</artifactId>
-        <version>2.6.1.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.cache2k</groupId>
-        <artifactId>cache2k-jcache</artifactId>
-        <version>2.6.1.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.cache2k</groupId>
-        <artifactId>cache2k-micrometer</artifactId>
-        <version>2.6.1.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.cache2k</groupId>
-        <artifactId>cache2k-spring</artifactId>
-        <version>2.6.1.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>com.github.ben-manes.caffeine</groupId>
-        <artifactId>caffeine</artifactId>
-        <version>2.9.3</version>
-      </dependency>
-      <dependency>
-        <groupId>com.github.ben-manes.caffeine</groupId>
-        <artifactId>guava</artifactId>
-        <version>2.9.3</version>
-      </dependency>
-      <dependency>
-        <groupId>com.github.ben-manes.caffeine</groupId>
-        <artifactId>jcache</artifactId>
-        <version>2.9.3</version>
-      </dependency>
-      <dependency>
-        <groupId>com.github.ben-manes.caffeine</groupId>
-        <artifactId>simulator</artifactId>
-        <version>2.9.3</version>
-      </dependency>
-      <dependency>
-        <groupId>com.datastax.oss</groupId>
-        <artifactId>java-driver-core</artifactId>
-        <version>4.14.1</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml</groupId>
-        <artifactId>classmate</artifactId>
-        <version>1.5.1</version>
-      </dependency>
-      <dependency>
-        <groupId>commons-codec</groupId>
-        <artifactId>commons-codec</artifactId>
-        <version>1.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.commons</groupId>
-        <artifactId>commons-dbcp2</artifactId>
-        <version>2.9.0</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>commons-logging</artifactId>
-            <groupId>commons-logging</groupId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.commons</groupId>
-        <artifactId>commons-lang3</artifactId>
-        <version>3.12.0</version>
-      </dependency>
-      <dependency>
-        <groupId>commons-pool</groupId>
-        <artifactId>commons-pool</artifactId>
-        <version>1.6</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.commons</groupId>
-        <artifactId>commons-pool2</artifactId>
-        <version>2.11.1</version>
-      </dependency>
-      <dependency>
-        <groupId>com.couchbase.client</groupId>
-        <artifactId>java-client</artifactId>
-        <version>3.3.4</version>
-      </dependency>
-      <dependency>
-        <groupId>com.ibm.db2</groupId>
-        <artifactId>jcc</artifactId>
-        <version>11.5.9.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.spring.gradle</groupId>
-        <artifactId>dependency-management-plugin</artifactId>
-        <version>1.0.15.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.derby</groupId>
-        <artifactId>derby</artifactId>
-        <version>10.14.2.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.derby</groupId>
-        <artifactId>derbyclient</artifactId>
-        <version>10.14.2.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.derby</groupId>
-        <artifactId>derbynet</artifactId>
-        <version>10.14.2.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.derby</groupId>
-        <artifactId>derbyoptionaltools</artifactId>
-        <version>10.14.2.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.derby</groupId>
-        <artifactId>derbytools</artifactId>
-        <version>10.14.2.0</version>
-      </dependency>
-      <dependency>
-        <groupId>net.sf.ehcache</groupId>
-        <artifactId>ehcache</artifactId>
-        <version>2.10.9.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.ehcache</groupId>
-        <artifactId>ehcache</artifactId>
-        <version>3.10.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.ehcache</groupId>
-        <artifactId>ehcache-clustered</artifactId>
-        <version>3.10.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.ehcache</groupId>
-        <artifactId>ehcache-transactions</artifactId>
-        <version>3.10.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.elasticsearch</groupId>
-        <artifactId>elasticsearch</artifactId>
-        <version>7.17.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.elasticsearch.client</groupId>
-        <artifactId>transport</artifactId>
-        <version>7.17.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.elasticsearch.client</groupId>
-        <artifactId>elasticsearch-rest-client</artifactId>
-        <version>7.17.15</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>commons-logging</artifactId>
-            <groupId>commons-logging</groupId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.elasticsearch.client</groupId>
-        <artifactId>elasticsearch-rest-client-sniffer</artifactId>
-        <version>7.17.15</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>commons-logging</artifactId>
-            <groupId>commons-logging</groupId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.elasticsearch.client</groupId>
-        <artifactId>elasticsearch-rest-high-level-client</artifactId>
-        <version>7.17.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.elasticsearch.distribution.integ-test-zip</groupId>
-        <artifactId>elasticsearch</artifactId>
-        <version>7.17.15</version>
-        <type>zip</type>
-      </dependency>
-      <dependency>
-        <groupId>org.elasticsearch.plugin</groupId>
-        <artifactId>transport-netty4-client</artifactId>
-        <version>7.17.15</version>
-      </dependency>
-      <dependency>
-        <groupId>de.flapdoodle.embed</groupId>
-        <artifactId>de.flapdoodle.embed.mongo</artifactId>
-        <version>3.4.11</version>
-      </dependency>
-      <dependency>
-        <groupId>org.flywaydb</groupId>
-        <artifactId>flyway-core</artifactId>
-        <version>8.5.13</version>
-      </dependency>
-      <dependency>
-        <groupId>org.flywaydb</groupId>
-        <artifactId>flyway-firebird</artifactId>
-        <version>8.5.13</version>
-      </dependency>
-      <dependency>
-        <groupId>org.flywaydb</groupId>
-        <artifactId>flyway-mysql</artifactId>
-        <version>8.5.13</version>
-      </dependency>
-      <dependency>
-        <groupId>org.flywaydb</groupId>
-        <artifactId>flyway-sqlserver</artifactId>
-        <version>8.5.13</version>
-      </dependency>
-      <dependency>
-        <groupId>org.freemarker</groupId>
-        <artifactId>freemarker</artifactId>
-        <version>2.3.32</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish</groupId>
-        <artifactId>jakarta.el</artifactId>
-        <version>3.0.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jaxb</groupId>
-        <artifactId>codemodel</artifactId>
-        <version>2.3.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jaxb</groupId>
-        <artifactId>codemodel-annotation-compiler</artifactId>
-        <version>2.3.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jaxb</groupId>
-        <artifactId>jaxb-jxc</artifactId>
-        <version>2.3.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jaxb</groupId>
-        <artifactId>jaxb-runtime</artifactId>
-        <version>2.3.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jaxb</groupId>
-        <artifactId>jaxb-xjc</artifactId>
-        <version>2.3.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jaxb</groupId>
-        <artifactId>txw2</artifactId>
-        <version>2.3.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jaxb</groupId>
-        <artifactId>txwc2</artifactId>
-        <version>2.3.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jaxb</groupId>
-        <artifactId>xsom</artifactId>
-        <version>2.3.9</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.web</groupId>
-        <artifactId>jakarta.servlet.jsp.jstl</artifactId>
-        <version>1.2.6</version>
-      </dependency>
-      <dependency>
-        <groupId>com.graphql-java</groupId>
-        <artifactId>graphql-java</artifactId>
-        <version>18.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.h2database</groupId>
-        <artifactId>h2</artifactId>
-        <version>2.1.214</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hamcrest</groupId>
-        <artifactId>hamcrest</artifactId>
-        <version>2.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hamcrest</groupId>
-        <artifactId>hamcrest-core</artifactId>
-        <version>2.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hamcrest</groupId>
-        <artifactId>hamcrest-library</artifactId>
-        <version>2.2</version>
-      </dependency>
-      <dependency>
-        <groupId>com.hazelcast</groupId>
-        <artifactId>hazelcast</artifactId>
-        <version>5.1.7</version>
-      </dependency>
-      <dependency>
-        <groupId>com.hazelcast</groupId>
-        <artifactId>hazelcast-spring</artifactId>
-        <version>5.1.7</version>
-      </dependency>
-      <dependency>
-        <groupId>com.hazelcast</groupId>
-        <artifactId>hazelcast-hibernate52</artifactId>
-        <version>2.2.1</version>
-      </dependency>
-      <dependency>
-        <groupId>com.hazelcast</groupId>
-        <artifactId>hazelcast-hibernate53</artifactId>
-        <version>2.2.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hibernate</groupId>
-        <artifactId>hibernate-c3p0</artifactId>
-        <version>5.6.15.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hibernate</groupId>
-        <artifactId>hibernate-core</artifactId>
-        <version>5.6.15.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hibernate</groupId>
-        <artifactId>hibernate-ehcache</artifactId>
-        <version>5.6.15.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hibernate</groupId>
-        <artifactId>hibernate-entitymanager</artifactId>
-        <version>5.6.15.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hibernate</groupId>
-        <artifactId>hibernate-envers</artifactId>
-        <version>5.6.15.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hibernate</groupId>
-        <artifactId>hibernate-hikaricp</artifactId>
-        <version>5.6.15.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hibernate</groupId>
-        <artifactId>hibernate-java8</artifactId>
-        <version>5.6.15.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hibernate</groupId>
-        <artifactId>hibernate-jcache</artifactId>
-        <version>5.6.15.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hibernate</groupId>
-        <artifactId>hibernate-jpamodelgen</artifactId>
-        <version>5.6.15.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hibernate</groupId>
-        <artifactId>hibernate-micrometer</artifactId>
-        <version>5.6.15.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hibernate</groupId>
-        <artifactId>hibernate-proxool</artifactId>
-        <version>5.6.15.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hibernate</groupId>
-        <artifactId>hibernate-spatial</artifactId>
-        <version>5.6.15.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hibernate</groupId>
-        <artifactId>hibernate-testing</artifactId>
-        <version>5.6.15.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hibernate</groupId>
-        <artifactId>hibernate-vibur</artifactId>
-        <version>5.6.15.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hibernate.validator</groupId>
-        <artifactId>hibernate-validator</artifactId>
-        <version>6.2.5.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hibernate.validator</groupId>
-        <artifactId>hibernate-validator-annotation-processor</artifactId>
-        <version>6.2.5.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>com.zaxxer</groupId>
-        <artifactId>HikariCP</artifactId>
-        <version>4.0.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.hsqldb</groupId>
-        <artifactId>hsqldb</artifactId>
-        <version>2.5.2</version>
-      </dependency>
-      <dependency>
-        <groupId>net.sourceforge.htmlunit</groupId>
-        <artifactId>htmlunit</artifactId>
-        <version>2.60.0</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>commons-logging</artifactId>
-            <groupId>commons-logging</groupId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.httpcomponents</groupId>
-        <artifactId>httpasyncclient</artifactId>
-        <version>4.1.5</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>commons-logging</artifactId>
-            <groupId>commons-logging</groupId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.httpcomponents</groupId>
-        <artifactId>fluent-hc</artifactId>
-        <version>4.5.14</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.httpcomponents</groupId>
-        <artifactId>httpclient</artifactId>
-        <version>4.5.14</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>commons-logging</artifactId>
-            <groupId>commons-logging</groupId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.httpcomponents</groupId>
-        <artifactId>httpclient-cache</artifactId>
-        <version>4.5.14</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.httpcomponents</groupId>
-        <artifactId>httpclient-osgi</artifactId>
-        <version>4.5.14</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.httpcomponents</groupId>
-        <artifactId>httpclient-win</artifactId>
-        <version>4.5.14</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.httpcomponents</groupId>
-        <artifactId>httpmime</artifactId>
-        <version>4.5.14</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.httpcomponents.client5</groupId>
-        <artifactId>httpclient5</artifactId>
-        <version>5.1.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.httpcomponents.client5</groupId>
-        <artifactId>httpclient5-cache</artifactId>
-        <version>5.1.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.httpcomponents.client5</groupId>
-        <artifactId>httpclient5-fluent</artifactId>
-        <version>5.1.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.httpcomponents.client5</groupId>
-        <artifactId>httpclient5-win</artifactId>
-        <version>5.1.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.httpcomponents</groupId>
-        <artifactId>httpcore</artifactId>
-        <version>4.4.16</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.httpcomponents</groupId>
-        <artifactId>httpcore-nio</artifactId>
-        <version>4.4.16</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.httpcomponents.core5</groupId>
-        <artifactId>httpcore5</artifactId>
-        <version>5.1.5</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.httpcomponents.core5</groupId>
-        <artifactId>httpcore5-h2</artifactId>
-        <version>5.1.5</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.httpcomponents.core5</groupId>
-        <artifactId>httpcore5-reactive</artifactId>
-        <version>5.1.5</version>
-      </dependency>
-      <dependency>
-        <groupId>org.influxdb</groupId>
-        <artifactId>influxdb-java</artifactId>
-        <version>2.22</version>
-      </dependency>
-      <dependency>
-        <groupId>com.sun.activation</groupId>
-        <artifactId>jakarta.activation</artifactId>
-        <version>1.2.2</version>
-      </dependency>
-      <dependency>
-        <groupId>jakarta.activation</groupId>
-        <artifactId>jakarta.activation-api</artifactId>
-        <version>1.2.2</version>
-      </dependency>
-      <dependency>
-        <groupId>jakarta.annotation</groupId>
-        <artifactId>jakarta.annotation-api</artifactId>
-        <version>1.3.5</version>
-      </dependency>
-      <dependency>
-        <groupId>jakarta.jms</groupId>
-        <artifactId>jakarta.jms-api</artifactId>
-        <version>2.0.3</version>
-      </dependency>
-      <dependency>
-        <groupId>jakarta.json</groupId>
-        <artifactId>jakarta.json-api</artifactId>
-        <version>1.1.6</version>
-      </dependency>
-      <dependency>
-        <groupId>jakarta.json.bind</groupId>
-        <artifactId>jakarta.json.bind-api</artifactId>
-        <version>1.0.2</version>
-      </dependency>
-      <dependency>
-        <groupId>jakarta.mail</groupId>
-        <artifactId>jakarta.mail-api</artifactId>
-        <version>1.6.7</version>
-      </dependency>
-      <dependency>
-        <groupId>jakarta.management.j2ee</groupId>
-        <artifactId>jakarta.management.j2ee-api</artifactId>
-        <version>1.1.4</version>
-      </dependency>
-      <dependency>
-        <groupId>jakarta.persistence</groupId>
-        <artifactId>jakarta.persistence-api</artifactId>
-        <version>2.2.3</version>
-      </dependency>
-      <dependency>
-        <groupId>jakarta.servlet</groupId>
-        <artifactId>jakarta.servlet-api</artifactId>
-        <version>4.0.4</version>
-      </dependency>
-      <dependency>
-        <groupId>jakarta.servlet.jsp.jstl</groupId>
-        <artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
-        <version>1.2.7</version>
-      </dependency>
-      <dependency>
-        <groupId>jakarta.transaction</groupId>
-        <artifactId>jakarta.transaction-api</artifactId>
-        <version>1.3.3</version>
-      </dependency>
-      <dependency>
-        <groupId>jakarta.validation</groupId>
-        <artifactId>jakarta.validation-api</artifactId>
-        <version>2.0.2</version>
-      </dependency>
-      <dependency>
-        <groupId>jakarta.websocket</groupId>
-        <artifactId>jakarta.websocket-api</artifactId>
-        <version>1.1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>jakarta.ws.rs</groupId>
-        <artifactId>jakarta.ws.rs-api</artifactId>
-        <version>2.1.6</version>
-      </dependency>
-      <dependency>
-        <groupId>jakarta.xml.bind</groupId>
-        <artifactId>jakarta.xml.bind-api</artifactId>
-        <version>2.3.3</version>
-      </dependency>
-      <dependency>
-        <groupId>jakarta.xml.soap</groupId>
-        <artifactId>jakarta.xml.soap-api</artifactId>
-        <version>1.4.2</version>
-      </dependency>
-      <dependency>
-        <groupId>jakarta.xml.ws</groupId>
-        <artifactId>jakarta.xml.ws-api</artifactId>
-        <version>2.3.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.janino</groupId>
-        <artifactId>commons-compiler</artifactId>
-        <version>3.1.10</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.janino</groupId>
-        <artifactId>commons-compiler-jdk</artifactId>
-        <version>3.1.10</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.janino</groupId>
-        <artifactId>janino</artifactId>
-        <version>3.1.10</version>
-      </dependency>
-      <dependency>
-        <groupId>javax.activation</groupId>
-        <artifactId>javax.activation-api</artifactId>
-        <version>1.2.0</version>
-      </dependency>
-      <dependency>
-        <groupId>javax.annotation</groupId>
-        <artifactId>javax.annotation-api</artifactId>
-        <version>1.3.2</version>
-      </dependency>
-      <dependency>
-        <groupId>javax.cache</groupId>
-        <artifactId>cache-api</artifactId>
-        <version>1.1.1</version>
-      </dependency>
-      <dependency>
-        <groupId>javax.xml.bind</groupId>
-        <artifactId>jaxb-api</artifactId>
-        <version>2.3.1</version>
-      </dependency>
-      <dependency>
-        <groupId>javax.xml.ws</groupId>
-        <artifactId>jaxws-api</artifactId>
-        <version>2.3.1</version>
-      </dependency>
-      <dependency>
-        <groupId>javax.jms</groupId>
-        <artifactId>javax.jms-api</artifactId>
-        <version>2.0.1</version>
-      </dependency>
-      <dependency>
-        <groupId>javax.json</groupId>
-        <artifactId>javax.json-api</artifactId>
-        <version>1.1.4</version>
-      </dependency>
-      <dependency>
-        <groupId>javax.json.bind</groupId>
-        <artifactId>javax.json.bind-api</artifactId>
-        <version>1.0</version>
-      </dependency>
-      <dependency>
-        <groupId>javax.mail</groupId>
-        <artifactId>javax.mail-api</artifactId>
-        <version>1.6.2</version>
-      </dependency>
-      <dependency>
-        <groupId>javax.money</groupId>
-        <artifactId>money-api</artifactId>
-        <version>1.1</version>
-      </dependency>
-      <dependency>
-        <groupId>javax.persistence</groupId>
-        <artifactId>javax.persistence-api</artifactId>
-        <version>2.2</version>
-      </dependency>
-      <dependency>
-        <groupId>javax.transaction</groupId>
-        <artifactId>javax.transaction-api</artifactId>
-        <version>1.3</version>
-      </dependency>
-      <dependency>
-        <groupId>javax.validation</groupId>
-        <artifactId>validation-api</artifactId>
-        <version>2.0.1.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>javax.websocket</groupId>
-        <artifactId>javax.websocket-api</artifactId>
-        <version>1.1</version>
-      </dependency>
-      <dependency>
-        <groupId>jaxen</groupId>
-        <artifactId>jaxen</artifactId>
-        <version>1.2.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.firebirdsql.jdbc</groupId>
-        <artifactId>jaybird</artifactId>
-        <version>4.0.9.java8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.firebirdsql.jdbc</groupId>
-        <artifactId>jaybird-jdk18</artifactId>
-        <version>4.0.9.java8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jboss.logging</groupId>
-        <artifactId>jboss-logging</artifactId>
-        <version>3.4.3.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jdom</groupId>
-        <artifactId>jdom2</artifactId>
-        <version>2.0.6.1</version>
-      </dependency>
-      <dependency>
-        <groupId>redis.clients</groupId>
-        <artifactId>jedis</artifactId>
-        <version>3.8.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.mortbay.jasper</groupId>
-        <artifactId>apache-el</artifactId>
-        <version>9.0.52</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.orbit</groupId>
-        <artifactId>javax.servlet.jsp</artifactId>
-        <version>2.2.0.v201112011158</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-reactive-httpclient</artifactId>
-        <version>1.1.15</version>
-      </dependency>
-      <dependency>
-        <groupId>com.samskivert</groupId>
-        <artifactId>jmustache</artifactId>
-        <version>1.15</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.johnzon</groupId>
-        <artifactId>johnzon-core</artifactId>
-        <version>1.2.21</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.johnzon</groupId>
-        <artifactId>johnzon-jaxrs</artifactId>
-        <version>1.2.21</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.johnzon</groupId>
-        <artifactId>johnzon-jsonb</artifactId>
-        <version>1.2.21</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.johnzon</groupId>
-        <artifactId>johnzon-jsonb-extras</artifactId>
-        <version>1.2.21</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.johnzon</groupId>
-        <artifactId>johnzon-jsonschema</artifactId>
-        <version>1.2.21</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.johnzon</groupId>
-        <artifactId>johnzon-mapper</artifactId>
-        <version>1.2.21</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.johnzon</groupId>
-        <artifactId>johnzon-websocket</artifactId>
-        <version>1.2.21</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jolokia</groupId>
-        <artifactId>jolokia-core</artifactId>
-        <version>1.7.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jooq</groupId>
-        <artifactId>jooq</artifactId>
-        <version>3.14.16</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jooq</groupId>
-        <artifactId>jooq-codegen</artifactId>
-        <version>3.14.16</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jooq</groupId>
-        <artifactId>jooq-kotlin</artifactId>
-        <version>3.14.16</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jooq</groupId>
-        <artifactId>jooq-meta</artifactId>
-        <version>3.14.16</version>
-      </dependency>
-      <dependency>
-        <groupId>com.jayway.jsonpath</groupId>
-        <artifactId>json-path</artifactId>
-        <version>2.7.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.jayway.jsonpath</groupId>
-        <artifactId>json-path-assert</artifactId>
-        <version>2.7.0</version>
-      </dependency>
-      <dependency>
-        <groupId>net.minidev</groupId>
-        <artifactId>json-smart</artifactId>
-        <version>2.4.11</version>
-      </dependency>
-      <dependency>
-        <groupId>org.skyscreamer</groupId>
-        <artifactId>jsonassert</artifactId>
-        <version>1.5.1</version>
-      </dependency>
-      <dependency>
-        <groupId>javax.servlet</groupId>
-        <artifactId>jstl</artifactId>
-        <version>1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>net.sourceforge.jtds</groupId>
-        <artifactId>jtds</artifactId>
-        <version>1.3.1</version>
-      </dependency>
-      <dependency>
-        <groupId>junit</groupId>
-        <artifactId>junit</artifactId>
-        <version>4.13.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>connect</artifactId>
-        <version>3.1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>connect-api</artifactId>
-        <version>3.1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>connect-basic-auth-extension</artifactId>
-        <version>3.1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>connect-file</artifactId>
-        <version>3.1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>connect-json</artifactId>
-        <version>3.1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>connect-mirror</artifactId>
-        <version>3.1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>connect-mirror-client</artifactId>
-        <version>3.1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>connect-runtime</artifactId>
-        <version>3.1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>connect-transforms</artifactId>
-        <version>3.1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>generator</artifactId>
-        <version>3.1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>kafka-clients</artifactId>
-        <version>3.1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>kafka-clients</artifactId>
-        <version>3.1.2</version>
-        <classifier>test</classifier>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>kafka-log4j-appender</artifactId>
-        <version>3.1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>kafka-metadata</artifactId>
-        <version>3.1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>kafka-raft</artifactId>
-        <version>3.1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>kafka-server-common</artifactId>
-        <version>3.1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>kafka-server-common</artifactId>
-        <version>3.1.2</version>
-        <classifier>test</classifier>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>kafka-shell</artifactId>
-        <version>3.1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>kafka-storage</artifactId>
-        <version>3.1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>kafka-storage-api</artifactId>
-        <version>3.1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>kafka-streams</artifactId>
-        <version>3.1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>kafka-streams-scala_2.12</artifactId>
-        <version>3.1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>kafka-streams-scala_2.13</artifactId>
-        <version>3.1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>kafka-streams-test-utils</artifactId>
-        <version>3.1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>kafka-tools</artifactId>
-        <version>3.1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>kafka_2.12</artifactId>
-        <version>3.1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>kafka_2.12</artifactId>
-        <version>3.1.2</version>
-        <classifier>test</classifier>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>kafka_2.13</artifactId>
-        <version>3.1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>kafka_2.13</artifactId>
-        <version>3.1.2</version>
-        <classifier>test</classifier>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.kafka</groupId>
-        <artifactId>trogdor</artifactId>
-        <version>3.1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>io.lettuce</groupId>
-        <artifactId>lettuce-core</artifactId>
-        <version>6.1.10.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>org.liquibase</groupId>
-        <artifactId>liquibase-cdi</artifactId>
-        <version>4.9.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.liquibase</groupId>
-        <artifactId>liquibase-core</artifactId>
-        <version>4.9.1</version>
-      </dependency>
-      <dependency>
-        <groupId>ch.qos.logback</groupId>
-        <artifactId>logback-access</artifactId>
-        <version>1.2.12</version>
-      </dependency>
-      <dependency>
-        <groupId>ch.qos.logback</groupId>
-        <artifactId>logback-classic</artifactId>
-        <version>1.2.12</version>
-      </dependency>
-      <dependency>
-        <groupId>ch.qos.logback</groupId>
-        <artifactId>logback-core</artifactId>
-        <version>1.2.12</version>
-      </dependency>
-      <dependency>
-        <groupId>org.projectlombok</groupId>
-        <artifactId>lombok</artifactId>
-        <version>1.18.30</version>
-      </dependency>
-      <dependency>
-        <groupId>org.mariadb.jdbc</groupId>
-        <artifactId>mariadb-java-client</artifactId>
-        <version>3.1.4</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-stackdriver</artifactId>
-        <version>1.9.17</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>javax.annotation-api</artifactId>
-            <groupId>javax.annotation</groupId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.mongodb</groupId>
-        <artifactId>bson</artifactId>
-        <version>4.6.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.mongodb</groupId>
-        <artifactId>bson-record-codec</artifactId>
-        <version>4.6.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.mongodb</groupId>
-        <artifactId>mongodb-driver-core</artifactId>
-        <version>4.6.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.mongodb</groupId>
-        <artifactId>mongodb-driver-legacy</artifactId>
-        <version>4.6.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.mongodb</groupId>
-        <artifactId>mongodb-driver-reactivestreams</artifactId>
-        <version>4.6.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.mongodb</groupId>
-        <artifactId>mongodb-driver-sync</artifactId>
-        <version>4.6.1</version>
-      </dependency>
-      <dependency>
-        <groupId>com.microsoft.sqlserver</groupId>
-        <artifactId>mssql-jdbc</artifactId>
-        <version>10.2.3.jre8</version>
-      </dependency>
-      <dependency>
-        <groupId>com.mysql</groupId>
-        <artifactId>mysql-connector-j</artifactId>
-        <version>8.0.33</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>protobuf-java</artifactId>
-            <groupId>com.google.protobuf</groupId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>net.sourceforge.nekohtml</groupId>
-        <artifactId>nekohtml</artifactId>
-        <version>1.9.22</version>
-      </dependency>
-      <dependency>
-        <groupId>org.neo4j.driver</groupId>
-        <artifactId>neo4j-java-driver</artifactId>
-        <version>4.4.12</version>
-      </dependency>
-      <dependency>
-        <groupId>org.messaginghub</groupId>
-        <artifactId>pooled-jms</artifactId>
-        <version>1.2.6</version>
-      </dependency>
-      <dependency>
-        <groupId>org.postgresql</groupId>
-        <artifactId>postgresql</artifactId>
-        <version>42.3.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.quartz-scheduler</groupId>
-        <artifactId>quartz</artifactId>
-        <version>2.3.2</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>c3p0</artifactId>
-            <groupId>com.mchange</groupId>
-          </exclusion>
-          <exclusion>
-            <artifactId>*</artifactId>
-            <groupId>com.zaxxer</groupId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.quartz-scheduler</groupId>
-        <artifactId>quartz-jobs</artifactId>
-        <version>2.3.2</version>
-      </dependency>
-      <dependency>
-        <groupId>com.rabbitmq</groupId>
-        <artifactId>amqp-client</artifactId>
-        <version>5.14.3</version>
-      </dependency>
-      <dependency>
-        <groupId>com.rabbitmq</groupId>
-        <artifactId>stream-client</artifactId>
-        <version>0.5.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.reactivestreams</groupId>
-        <artifactId>reactive-streams</artifactId>
-        <version>1.0.4</version>
-      </dependency>
-      <dependency>
-        <groupId>io.reactivex</groupId>
-        <artifactId>rxjava</artifactId>
-        <version>1.3.8</version>
-      </dependency>
-      <dependency>
-        <groupId>io.reactivex</groupId>
-        <artifactId>rxjava-reactive-streams</artifactId>
-        <version>1.2.1</version>
-      </dependency>
-      <dependency>
-        <groupId>io.reactivex.rxjava2</groupId>
-        <artifactId>rxjava</artifactId>
-        <version>2.2.21</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-test</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-test-autoconfigure</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-actuator</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-actuator-autoconfigure</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-autoconfigure</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-autoconfigure-processor</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-buildpack-platform</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-configuration-metadata</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-configuration-processor</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-devtools</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-jarmode-layertools</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-loader</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-loader-tools</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-properties-migrator</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-activemq</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-actuator</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-amqp</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-aop</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-artemis</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-batch</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-cache</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-data-cassandra</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-data-cassandra-reactive</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-data-couchbase</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-data-couchbase-reactive</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-data-jdbc</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-data-jpa</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-data-ldap</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-data-mongodb</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-data-mongodb-reactive</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-data-r2dbc</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-data-redis</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-data-redis-reactive</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-data-neo4j</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-data-rest</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-freemarker</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-graphql</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-groovy-templates</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-hateoas</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-integration</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-jdbc</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-jersey</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-jetty</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-jooq</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-json</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-jta-atomikos</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-log4j2</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-logging</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-mail</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-mustache</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-oauth2-client</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-quartz</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-reactor-netty</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-rsocket</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-security</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-test</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-thymeleaf</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-tomcat</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-undertow</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-validation</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-web</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-webflux</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-websocket</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-web-services</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>com.sun.xml.messaging.saaj</groupId>
-        <artifactId>saaj-impl</artifactId>
-        <version>1.5.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.seleniumhq.selenium</groupId>
-        <artifactId>lift</artifactId>
-        <version>4.1.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.seleniumhq.selenium</groupId>
-        <artifactId>selenium-api</artifactId>
-        <version>4.1.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.seleniumhq.selenium</groupId>
-        <artifactId>selenium-chrome-driver</artifactId>
-        <version>4.1.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.seleniumhq.selenium</groupId>
-        <artifactId>selenium-chromium-driver</artifactId>
-        <version>4.1.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.seleniumhq.selenium</groupId>
-        <artifactId>selenium-devtools-v100</artifactId>
-        <version>4.1.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.seleniumhq.selenium</groupId>
-        <artifactId>selenium-devtools-v101</artifactId>
-        <version>4.1.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.seleniumhq.selenium</groupId>
-        <artifactId>selenium-devtools-v85</artifactId>
-        <version>4.1.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.seleniumhq.selenium</groupId>
-        <artifactId>selenium-devtools-v99</artifactId>
-        <version>4.1.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.seleniumhq.selenium</groupId>
-        <artifactId>selenium-edge-driver</artifactId>
-        <version>4.1.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.seleniumhq.selenium</groupId>
-        <artifactId>selenium-firefox-driver</artifactId>
-        <version>4.1.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.seleniumhq.selenium</groupId>
-        <artifactId>selenium-grid</artifactId>
-        <version>4.1.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.seleniumhq.selenium</groupId>
-        <artifactId>selenium-http</artifactId>
-        <version>4.1.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.seleniumhq.selenium</groupId>
-        <artifactId>selenium-ie-driver</artifactId>
-        <version>4.1.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.seleniumhq.selenium</groupId>
-        <artifactId>selenium-java</artifactId>
-        <version>4.1.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.seleniumhq.selenium</groupId>
-        <artifactId>selenium-json</artifactId>
-        <version>4.1.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.seleniumhq.selenium</groupId>
-        <artifactId>selenium-opera-driver</artifactId>
-        <version>4.1.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.seleniumhq.selenium</groupId>
-        <artifactId>selenium-remote-driver</artifactId>
-        <version>4.1.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.seleniumhq.selenium</groupId>
-        <artifactId>selenium-safari-driver</artifactId>
-        <version>4.1.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.seleniumhq.selenium</groupId>
-        <artifactId>selenium-session-map-jdbc</artifactId>
-        <version>4.1.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.seleniumhq.selenium</groupId>
-        <artifactId>selenium-session-map-redis</artifactId>
-        <version>4.1.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.seleniumhq.selenium</groupId>
-        <artifactId>selenium-support</artifactId>
-        <version>4.1.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.seleniumhq.selenium</groupId>
-        <artifactId>htmlunit-driver</artifactId>
-        <version>3.61.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.sendgrid</groupId>
-        <artifactId>sendgrid-java</artifactId>
-        <version>4.9.3</version>
-      </dependency>
-      <dependency>
-        <groupId>javax.servlet</groupId>
-        <artifactId>javax.servlet-api</artifactId>
-        <version>4.0.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.slf4j</groupId>
-        <artifactId>jcl-over-slf4j</artifactId>
-        <version>1.7.36</version>
-      </dependency>
-      <dependency>
-        <groupId>org.slf4j</groupId>
-        <artifactId>jul-to-slf4j</artifactId>
-        <version>1.7.36</version>
-      </dependency>
-      <dependency>
-        <groupId>org.slf4j</groupId>
-        <artifactId>log4j-over-slf4j</artifactId>
-        <version>1.7.36</version>
-      </dependency>
-      <dependency>
-        <groupId>org.slf4j</groupId>
-        <artifactId>slf4j-api</artifactId>
-        <version>1.7.36</version>
-      </dependency>
-      <dependency>
-        <groupId>org.slf4j</groupId>
-        <artifactId>slf4j-ext</artifactId>
-        <version>1.7.36</version>
-      </dependency>
-      <dependency>
-        <groupId>org.slf4j</groupId>
-        <artifactId>slf4j-jcl</artifactId>
-        <version>1.7.36</version>
-      </dependency>
-      <dependency>
-        <groupId>org.slf4j</groupId>
-        <artifactId>slf4j-jdk14</artifactId>
-        <version>1.7.36</version>
-      </dependency>
-      <dependency>
-        <groupId>org.slf4j</groupId>
-        <artifactId>slf4j-log4j12</artifactId>
-        <version>1.7.36</version>
-      </dependency>
-      <dependency>
-        <groupId>org.slf4j</groupId>
-        <artifactId>slf4j-nop</artifactId>
-        <version>1.7.36</version>
-      </dependency>
-      <dependency>
-        <groupId>org.slf4j</groupId>
-        <artifactId>slf4j-simple</artifactId>
-        <version>1.7.36</version>
-      </dependency>
-      <dependency>
-        <groupId>org.yaml</groupId>
-        <artifactId>snakeyaml</artifactId>
-        <version>1.30</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.solr</groupId>
-        <artifactId>solr-analysis-extras</artifactId>
-        <version>8.11.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.solr</groupId>
-        <artifactId>solr-analytics</artifactId>
-        <version>8.11.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.solr</groupId>
-        <artifactId>solr-cell</artifactId>
-        <version>8.11.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.solr</groupId>
-        <artifactId>solr-core</artifactId>
-        <version>8.11.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.solr</groupId>
-        <artifactId>solr-dataimporthandler</artifactId>
-        <version>8.11.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.solr</groupId>
-        <artifactId>solr-dataimporthandler-extras</artifactId>
-        <version>8.11.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.solr</groupId>
-        <artifactId>solr-gcs-repository</artifactId>
-        <version>8.11.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.solr</groupId>
-        <artifactId>solr-jaegertracer-configurator</artifactId>
-        <version>8.11.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.solr</groupId>
-        <artifactId>solr-langid</artifactId>
-        <version>8.11.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.solr</groupId>
-        <artifactId>solr-ltr</artifactId>
-        <version>8.11.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.solr</groupId>
-        <artifactId>solr-prometheus-exporter</artifactId>
-        <version>8.11.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.solr</groupId>
-        <artifactId>solr-s3-repository</artifactId>
-        <version>8.11.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.solr</groupId>
-        <artifactId>solr-solrj</artifactId>
-        <version>8.11.2</version>
-        <exclusions>
-          <exclusion>
-            <artifactId>jcl-over-slf4j</artifactId>
-            <groupId>org.slf4j</groupId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.solr</groupId>
-        <artifactId>solr-test-framework</artifactId>
-        <version>8.11.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.solr</groupId>
-        <artifactId>solr-velocity</artifactId>
-        <version>8.11.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.amqp</groupId>
-        <artifactId>spring-amqp</artifactId>
-        <version>2.4.17</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.amqp</groupId>
-        <artifactId>spring-rabbit</artifactId>
-        <version>2.4.17</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.amqp</groupId>
-        <artifactId>spring-rabbit-stream</artifactId>
-        <version>2.4.17</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.amqp</groupId>
-        <artifactId>spring-rabbit-junit</artifactId>
-        <version>2.4.17</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.amqp</groupId>
-        <artifactId>spring-rabbit-test</artifactId>
-        <version>2.4.17</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.batch</groupId>
-        <artifactId>spring-batch-core</artifactId>
-        <version>4.3.10</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.batch</groupId>
-        <artifactId>spring-batch-infrastructure</artifactId>
-        <version>4.3.10</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.batch</groupId>
-        <artifactId>spring-batch-integration</artifactId>
-        <version>4.3.10</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.batch</groupId>
-        <artifactId>spring-batch-test</artifactId>
-        <version>4.3.10</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.graphql</groupId>
-        <artifactId>spring-graphql</artifactId>
-        <version>1.0.6</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.graphql</groupId>
-        <artifactId>spring-graphql-test</artifactId>
-        <version>1.0.6</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.hateoas</groupId>
-        <artifactId>spring-hateoas</artifactId>
-        <version>1.5.6</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.kafka</groupId>
-        <artifactId>spring-kafka</artifactId>
-        <version>2.8.11</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.kafka</groupId>
-        <artifactId>spring-kafka-test</artifactId>
-        <version>2.8.11</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.ldap</groupId>
-        <artifactId>spring-ldap-core</artifactId>
-        <version>2.4.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.ldap</groupId>
-        <artifactId>spring-ldap-core-tiger</artifactId>
-        <version>2.4.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.ldap</groupId>
-        <artifactId>spring-ldap-ldif-core</artifactId>
-        <version>2.4.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.ldap</groupId>
-        <artifactId>spring-ldap-odm</artifactId>
-        <version>2.4.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.ldap</groupId>
-        <artifactId>spring-ldap-test</artifactId>
-        <version>2.4.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.restdocs</groupId>
-        <artifactId>spring-restdocs-asciidoctor</artifactId>
-        <version>2.0.8.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.restdocs</groupId>
-        <artifactId>spring-restdocs-core</artifactId>
-        <version>2.0.8.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.restdocs</groupId>
-        <artifactId>spring-restdocs-mockmvc</artifactId>
-        <version>2.0.8.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.restdocs</groupId>
-        <artifactId>spring-restdocs-restassured</artifactId>
-        <version>2.0.8.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.restdocs</groupId>
-        <artifactId>spring-restdocs-webtestclient</artifactId>
-        <version>2.0.8.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.ws</groupId>
-        <artifactId>spring-ws-core</artifactId>
-        <version>3.1.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.ws</groupId>
-        <artifactId>spring-ws-security</artifactId>
-        <version>3.1.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.ws</groupId>
-        <artifactId>spring-ws-support</artifactId>
-        <version>3.1.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.ws</groupId>
-        <artifactId>spring-ws-test</artifactId>
-        <version>3.1.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.ws</groupId>
-        <artifactId>spring-xml</artifactId>
-        <version>3.1.8</version>
-      </dependency>
-      <dependency>
-        <groupId>org.xerial</groupId>
-        <artifactId>sqlite-jdbc</artifactId>
-        <version>3.36.0.3</version>
-      </dependency>
-      <dependency>
-        <groupId>com.sun.mail</groupId>
-        <artifactId>jakarta.mail</artifactId>
-        <version>1.6.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.thymeleaf</groupId>
-        <artifactId>thymeleaf</artifactId>
-        <version>3.0.15.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>org.thymeleaf</groupId>
-        <artifactId>thymeleaf-spring5</artifactId>
-        <version>3.0.15.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>com.github.mxab.thymeleaf.extras</groupId>
-        <artifactId>thymeleaf-extras-data-attribute</artifactId>
-        <version>2.0.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.thymeleaf.extras</groupId>
-        <artifactId>thymeleaf-extras-java8time</artifactId>
-        <version>3.0.4.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>org.thymeleaf.extras</groupId>
-        <artifactId>thymeleaf-extras-springsecurity5</artifactId>
-        <version>3.0.5.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>nz.net.ultraq.thymeleaf</groupId>
-        <artifactId>thymeleaf-layout-dialect</artifactId>
-        <version>3.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.tomcat</groupId>
-        <artifactId>tomcat-annotations-api</artifactId>
-        <version>9.0.83</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.tomcat</groupId>
-        <artifactId>tomcat-jdbc</artifactId>
-        <version>9.0.83</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.tomcat</groupId>
-        <artifactId>tomcat-jsp-api</artifactId>
-        <version>9.0.83</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.tomcat.embed</groupId>
-        <artifactId>tomcat-embed-core</artifactId>
-        <version>9.0.83</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.tomcat.embed</groupId>
-        <artifactId>tomcat-embed-el</artifactId>
-        <version>9.0.83</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.tomcat.embed</groupId>
-        <artifactId>tomcat-embed-jasper</artifactId>
-        <version>9.0.83</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.tomcat.embed</groupId>
-        <artifactId>tomcat-embed-websocket</artifactId>
-        <version>9.0.83</version>
-      </dependency>
-      <dependency>
-        <groupId>com.unboundid</groupId>
-        <artifactId>unboundid-ldapsdk</artifactId>
-        <version>6.0.10</version>
-      </dependency>
-      <dependency>
-        <groupId>io.undertow</groupId>
-        <artifactId>undertow-core</artifactId>
-        <version>2.2.28.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.undertow</groupId>
-        <artifactId>undertow-servlet</artifactId>
-        <version>2.2.28.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.undertow</groupId>
-        <artifactId>undertow-websockets-jsr</artifactId>
-        <version>2.2.28.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.webjars</groupId>
-        <artifactId>webjars-locator-core</artifactId>
-        <version>0.50</version>
-      </dependency>
-      <dependency>
-        <groupId>wsdl4j</groupId>
-        <artifactId>wsdl4j</artifactId>
-        <version>1.6.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.xmlunit</groupId>
-        <artifactId>xmlunit-assertj</artifactId>
-        <version>2.9.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.xmlunit</groupId>
-        <artifactId>xmlunit-assertj3</artifactId>
-        <version>2.9.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.xmlunit</groupId>
-        <artifactId>xmlunit-core</artifactId>
-        <version>2.9.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.xmlunit</groupId>
-        <artifactId>xmlunit-legacy</artifactId>
-        <version>2.9.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.xmlunit</groupId>
-        <artifactId>xmlunit-matchers</artifactId>
-        <version>2.9.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.xmlunit</groupId>
-        <artifactId>xmlunit-placeholders</artifactId>
-        <version>2.9.1</version>
-      </dependency>
-      <dependency>
-        <groupId>com.datastax.oss</groupId>
-        <artifactId>java-driver-core-shaded</artifactId>
-        <version>4.14.1</version>
-      </dependency>
-      <dependency>
-        <groupId>com.datastax.oss</groupId>
-        <artifactId>java-driver-mapper-processor</artifactId>
-        <version>4.14.1</version>
-      </dependency>
-      <dependency>
-        <groupId>com.datastax.oss</groupId>
-        <artifactId>java-driver-mapper-runtime</artifactId>
-        <version>4.14.1</version>
-      </dependency>
-      <dependency>
-        <groupId>com.datastax.oss</groupId>
-        <artifactId>java-driver-query-builder</artifactId>
-        <version>4.14.1</version>
-      </dependency>
-      <dependency>
-        <groupId>com.datastax.oss</groupId>
-        <artifactId>java-driver-test-infra</artifactId>
-        <version>4.14.1</version>
-      </dependency>
-      <dependency>
-        <groupId>com.datastax.oss</groupId>
-        <artifactId>java-driver-metrics-micrometer</artifactId>
-        <version>4.14.1</version>
-      </dependency>
-      <dependency>
-        <groupId>com.datastax.oss</groupId>
-        <artifactId>java-driver-metrics-microprofile</artifactId>
-        <version>4.14.1</version>
-      </dependency>
-      <dependency>
-        <groupId>com.datastax.oss</groupId>
-        <artifactId>native-protocol</artifactId>
-        <version>1.5.1</version>
-      </dependency>
-      <dependency>
-        <groupId>com.datastax.oss</groupId>
-        <artifactId>java-driver-shaded-guava</artifactId>
-        <version>25.1-jre-graal-sub-1</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-annotation</artifactId>
-        <version>4.2.22</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-caffeine</artifactId>
-        <version>4.2.22</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-caffeine3</artifactId>
-        <version>4.2.22</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-core</artifactId>
-        <version>4.2.22</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-collectd</artifactId>
-        <version>4.2.22</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-ehcache</artifactId>
-        <version>4.2.22</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-graphite</artifactId>
-        <version>4.2.22</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-healthchecks</artifactId>
-        <version>4.2.22</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-httpclient</artifactId>
-        <version>4.2.22</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-httpclient5</artifactId>
-        <version>4.2.22</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-httpasyncclient</artifactId>
-        <version>4.2.22</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-jakarta-servlet</artifactId>
-        <version>4.2.22</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-jakarta-servlet6</artifactId>
-        <version>4.2.22</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-jakarta-servlets</artifactId>
-        <version>4.2.22</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-jcache</artifactId>
-        <version>4.2.22</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-jdbi</artifactId>
-        <version>4.2.22</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-jdbi3</artifactId>
-        <version>4.2.22</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-jersey2</artifactId>
-        <version>4.2.22</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-jersey3</artifactId>
-        <version>4.2.22</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-jersey31</artifactId>
-        <version>4.2.22</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-jetty9</artifactId>
-        <version>4.2.22</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-jetty10</artifactId>
-        <version>4.2.22</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-jetty11</artifactId>
-        <version>4.2.22</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-jetty12</artifactId>
-        <version>4.2.22</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-jetty12-ee10</artifactId>
-        <version>4.2.22</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-jmx</artifactId>
-        <version>4.2.22</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-json</artifactId>
-        <version>4.2.22</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-jvm</artifactId>
-        <version>4.2.22</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-log4j2</artifactId>
-        <version>4.2.22</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-logback</artifactId>
-        <version>4.2.22</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-logback13</artifactId>
-        <version>4.2.22</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-logback14</artifactId>
-        <version>4.2.22</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-servlet</artifactId>
-        <version>4.2.22</version>
-      </dependency>
-      <dependency>
-        <groupId>io.dropwizard.metrics</groupId>
-        <artifactId>metrics-servlets</artifactId>
-        <version>4.2.22</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy</artifactId>
-        <version>3.0.19</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-ant</artifactId>
-        <version>3.0.19</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-astbuilder</artifactId>
-        <version>3.0.19</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-bsf</artifactId>
-        <version>3.0.19</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-cli-commons</artifactId>
-        <version>3.0.19</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-cli-picocli</artifactId>
-        <version>3.0.19</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-console</artifactId>
-        <version>3.0.19</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-datetime</artifactId>
-        <version>3.0.19</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-dateutil</artifactId>
-        <version>3.0.19</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-docgenerator</artifactId>
-        <version>3.0.19</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-groovydoc</artifactId>
-        <version>3.0.19</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-groovysh</artifactId>
-        <version>3.0.19</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-jaxb</artifactId>
-        <version>3.0.19</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-jmx</artifactId>
-        <version>3.0.19</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-json</artifactId>
-        <version>3.0.19</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-jsr223</artifactId>
-        <version>3.0.19</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-macro</artifactId>
-        <version>3.0.19</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-nio</artifactId>
-        <version>3.0.19</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-servlet</artifactId>
-        <version>3.0.19</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-sql</artifactId>
-        <version>3.0.19</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-swing</artifactId>
-        <version>3.0.19</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-templates</artifactId>
-        <version>3.0.19</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-test</artifactId>
-        <version>3.0.19</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-test-junit5</artifactId>
-        <version>3.0.19</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-testng</artifactId>
-        <version>3.0.19</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-xml</artifactId>
-        <version>3.0.19</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.groovy</groupId>
-        <artifactId>groovy-yaml</artifactId>
-        <version>3.0.19</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-api</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-cachestore-jdbc</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-cachestore-sql</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-cachestore-jpa</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-cachestore-remote</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-cachestore-rocksdb</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-cdi-common</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-cdi-embedded</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-cdi-remote</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-checkstyle</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-cli-client</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-client-hotrod</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-client-rest</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-key-value-store-client</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-clustered-counter</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-clustered-lock</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-commons</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-commons-test</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-component-annotations</artifactId>
-        <version>13.0.20.Final</version>
-        <scope>provided</scope>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-component-processor</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-core</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-jboss-marshalling</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-extended-statistics</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-hibernate-cache-commons</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-hibernate-cache-spi</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-hibernate-cache-v53</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-jcache-commons</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-jcache</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-jcache-remote</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-console</artifactId>
-        <version>0.15.5.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-multimap</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-objectfilter</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-query-core</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-query</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-query-dsl</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-remote-query-client</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-remote-query-server</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-scripting</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-server-core</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-server-hotrod</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-server-memcached</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-server-rest</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-server-router</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-server-runtime</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-server-testdriver-core</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-server-testdriver-junit4</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-server-testdriver-junit5</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-spring5-common</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-spring5-embedded</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-spring5-remote</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-spring-boot-starter-embedded</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-spring-boot-starter-remote</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-tasks</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-tasks-api</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-tools</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-anchored-keys</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan.protostream</groupId>
-        <artifactId>protostream</artifactId>
-        <version>4.4.4.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan.protostream</groupId>
-        <artifactId>protostream-types</artifactId>
-        <version>4.4.4.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan.protostream</groupId>
-        <artifactId>protostream-processor</artifactId>
-        <version>4.4.4.Final</version>
-        <scope>provided</scope>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-cloudevents-integration</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-marshaller-kryo</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-marshaller-kryo-bundle</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-marshaller-protostuff</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>org.infinispan</groupId>
-        <artifactId>infinispan-marshaller-protostuff-bundle</artifactId>
-        <version>13.0.20.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.core</groupId>
-        <artifactId>jackson-annotations</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.core</groupId>
-        <artifactId>jackson-core</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.core</groupId>
-        <artifactId>jackson-databind</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.dataformat</groupId>
-        <artifactId>jackson-dataformat-avro</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.dataformat</groupId>
-        <artifactId>jackson-dataformat-cbor</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.dataformat</groupId>
-        <artifactId>jackson-dataformat-csv</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.dataformat</groupId>
-        <artifactId>jackson-dataformat-ion</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.dataformat</groupId>
-        <artifactId>jackson-dataformat-properties</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.dataformat</groupId>
-        <artifactId>jackson-dataformat-protobuf</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.dataformat</groupId>
-        <artifactId>jackson-dataformat-smile</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.dataformat</groupId>
-        <artifactId>jackson-dataformat-toml</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.dataformat</groupId>
-        <artifactId>jackson-dataformat-xml</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.dataformat</groupId>
-        <artifactId>jackson-dataformat-yaml</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.datatype</groupId>
-        <artifactId>jackson-datatype-eclipse-collections</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.datatype</groupId>
-        <artifactId>jackson-datatype-guava</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.datatype</groupId>
-        <artifactId>jackson-datatype-hibernate4</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.datatype</groupId>
-        <artifactId>jackson-datatype-hibernate5</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.datatype</groupId>
-        <artifactId>jackson-datatype-hibernate5-jakarta</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.datatype</groupId>
-        <artifactId>jackson-datatype-hppc</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.datatype</groupId>
-        <artifactId>jackson-datatype-jakarta-jsonp</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.datatype</groupId>
-        <artifactId>jackson-datatype-jaxrs</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.datatype</groupId>
-        <artifactId>jackson-datatype-joda</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.datatype</groupId>
-        <artifactId>jackson-datatype-joda-money</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.datatype</groupId>
-        <artifactId>jackson-datatype-jdk8</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.datatype</groupId>
-        <artifactId>jackson-datatype-json-org</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.datatype</groupId>
-        <artifactId>jackson-datatype-jsr310</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.datatype</groupId>
-        <artifactId>jackson-datatype-jsr353</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.datatype</groupId>
-        <artifactId>jackson-datatype-pcollections</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.jaxrs</groupId>
-        <artifactId>jackson-jaxrs-base</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.jaxrs</groupId>
-        <artifactId>jackson-jaxrs-cbor-provider</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.jaxrs</groupId>
-        <artifactId>jackson-jaxrs-json-provider</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.jaxrs</groupId>
-        <artifactId>jackson-jaxrs-smile-provider</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.jaxrs</groupId>
-        <artifactId>jackson-jaxrs-xml-provider</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.jaxrs</groupId>
-        <artifactId>jackson-jaxrs-yaml-provider</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.jakarta.rs</groupId>
-        <artifactId>jackson-jakarta-rs-base</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.jakarta.rs</groupId>
-        <artifactId>jackson-jakarta-rs-cbor-provider</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.jakarta.rs</groupId>
-        <artifactId>jackson-jakarta-rs-json-provider</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.jakarta.rs</groupId>
-        <artifactId>jackson-jakarta-rs-smile-provider</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.jakarta.rs</groupId>
-        <artifactId>jackson-jakarta-rs-xml-provider</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.jakarta.rs</groupId>
-        <artifactId>jackson-jakarta-rs-yaml-provider</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.jr</groupId>
-        <artifactId>jackson-jr-all</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.jr</groupId>
-        <artifactId>jackson-jr-annotation-support</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.jr</groupId>
-        <artifactId>jackson-jr-objects</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.jr</groupId>
-        <artifactId>jackson-jr-retrofit2</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.jr</groupId>
-        <artifactId>jackson-jr-stree</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.module</groupId>
-        <artifactId>jackson-module-afterburner</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.module</groupId>
-        <artifactId>jackson-module-blackbird</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.module</groupId>
-        <artifactId>jackson-module-guice</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.module</groupId>
-        <artifactId>jackson-module-jaxb-annotations</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.module</groupId>
-        <artifactId>jackson-module-jakarta-xmlbind-annotations</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.module</groupId>
-        <artifactId>jackson-module-jsonSchema</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.module</groupId>
-        <artifactId>jackson-module-kotlin</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.module</groupId>
-        <artifactId>jackson-module-mrbean</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.module</groupId>
-        <artifactId>jackson-module-no-ctor-deser</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.module</groupId>
-        <artifactId>jackson-module-osgi</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.module</groupId>
-        <artifactId>jackson-module-parameter-names</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.module</groupId>
-        <artifactId>jackson-module-paranamer</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.module</groupId>
-        <artifactId>jackson-module-scala_2.11</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.module</groupId>
-        <artifactId>jackson-module-scala_2.12</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.module</groupId>
-        <artifactId>jackson-module-scala_2.13</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>com.fasterxml.jackson.module</groupId>
-        <artifactId>jackson-module-scala_3</artifactId>
-        <version>2.13.5</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.core</groupId>
-        <artifactId>jersey-common</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.core</groupId>
-        <artifactId>jersey-client</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.core</groupId>
-        <artifactId>jersey-server</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.bundles</groupId>
-        <artifactId>jaxrs-ri</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.connectors</groupId>
-        <artifactId>jersey-apache-connector</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.connectors</groupId>
-        <artifactId>jersey-helidon-connector</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.connectors</groupId>
-        <artifactId>jersey-grizzly-connector</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.connectors</groupId>
-        <artifactId>jersey-jetty-connector</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.connectors</groupId>
-        <artifactId>jersey-jdk-connector</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.connectors</groupId>
-        <artifactId>jersey-netty-connector</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.containers</groupId>
-        <artifactId>jersey-container-jetty-http</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.containers</groupId>
-        <artifactId>jersey-container-grizzly2-http</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.containers</groupId>
-        <artifactId>jersey-container-grizzly2-servlet</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.containers</groupId>
-        <artifactId>jersey-container-jetty-servlet</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.containers</groupId>
-        <artifactId>jersey-container-jdk-http</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.containers</groupId>
-        <artifactId>jersey-container-netty-http</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.containers</groupId>
-        <artifactId>jersey-container-servlet</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.containers</groupId>
-        <artifactId>jersey-container-servlet-core</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.containers</groupId>
-        <artifactId>jersey-container-simple-http</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.containers.glassfish</groupId>
-        <artifactId>jersey-gf-ejb</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext</groupId>
-        <artifactId>jersey-bean-validation</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext</groupId>
-        <artifactId>jersey-entity-filtering</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext</groupId>
-        <artifactId>jersey-metainf-services</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext.microprofile</groupId>
-        <artifactId>jersey-mp-config</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext</groupId>
-        <artifactId>jersey-mvc</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext</groupId>
-        <artifactId>jersey-mvc-bean-validation</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext</groupId>
-        <artifactId>jersey-mvc-freemarker</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext</groupId>
-        <artifactId>jersey-mvc-jsp</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext</groupId>
-        <artifactId>jersey-mvc-mustache</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext</groupId>
-        <artifactId>jersey-proxy-client</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext</groupId>
-        <artifactId>jersey-servlet-portability</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext</groupId>
-        <artifactId>jersey-spring4</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext</groupId>
-        <artifactId>jersey-spring5</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext</groupId>
-        <artifactId>jersey-declarative-linking</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext</groupId>
-        <artifactId>jersey-wadl-doclet</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext.cdi</groupId>
-        <artifactId>jersey-weld2-se</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext.cdi</groupId>
-        <artifactId>jersey-cdi1x</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext.cdi</groupId>
-        <artifactId>jersey-cdi1x-transaction</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext.cdi</groupId>
-        <artifactId>jersey-cdi1x-validation</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext.cdi</groupId>
-        <artifactId>jersey-cdi1x-servlet</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext.cdi</groupId>
-        <artifactId>jersey-cdi1x-ban-custom-hk2-binding</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext.cdi</groupId>
-        <artifactId>jersey-cdi-rs-inject</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext.rx</groupId>
-        <artifactId>jersey-rx-client-guava</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext.rx</groupId>
-        <artifactId>jersey-rx-client-rxjava</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext.rx</groupId>
-        <artifactId>jersey-rx-client-rxjava2</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.ext.microprofile</groupId>
-        <artifactId>jersey-mp-rest-client</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.media</groupId>
-        <artifactId>jersey-media-jaxb</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.media</groupId>
-        <artifactId>jersey-media-json-jackson</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.media</groupId>
-        <artifactId>jersey-media-json-jettison</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.media</groupId>
-        <artifactId>jersey-media-json-processing</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.media</groupId>
-        <artifactId>jersey-media-json-binding</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.media</groupId>
-        <artifactId>jersey-media-kryo</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.media</groupId>
-        <artifactId>jersey-media-moxy</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.media</groupId>
-        <artifactId>jersey-media-multipart</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.media</groupId>
-        <artifactId>jersey-media-sse</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.security</groupId>
-        <artifactId>oauth1-client</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.security</groupId>
-        <artifactId>oauth1-server</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.security</groupId>
-        <artifactId>oauth1-signature</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.security</groupId>
-        <artifactId>oauth2-client</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.inject</groupId>
-        <artifactId>jersey-hk2</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.inject</groupId>
-        <artifactId>jersey-cdi2-se</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.test-framework</groupId>
-        <artifactId>jersey-test-framework-core</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.test-framework.providers</groupId>
-        <artifactId>jersey-test-framework-provider-bundle</artifactId>
-        <version>2.35</version>
-        <type>pom</type>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.test-framework.providers</groupId>
-        <artifactId>jersey-test-framework-provider-external</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.test-framework.providers</groupId>
-        <artifactId>jersey-test-framework-provider-grizzly2</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.test-framework.providers</groupId>
-        <artifactId>jersey-test-framework-provider-inmemory</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.test-framework.providers</groupId>
-        <artifactId>jersey-test-framework-provider-jdk-http</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.test-framework.providers</groupId>
-        <artifactId>jersey-test-framework-provider-simple</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.test-framework.providers</groupId>
-        <artifactId>jersey-test-framework-provider-jetty</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.glassfish.jersey.test-framework</groupId>
-        <artifactId>jersey-test-framework-util</artifactId>
-        <version>2.35</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>apache-jsp</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>apache-jstl</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-alpn-client</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-alpn-java-client</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-alpn-java-server</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-alpn-openjdk8-client</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-alpn-openjdk8-server</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-alpn-conscrypt-client</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-alpn-conscrypt-server</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-alpn-server</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-annotations</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-ant</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-client</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-continuation</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-deploy</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-distribution</artifactId>
-        <version>9.4.53.v20231009</version>
-        <type>zip</type>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-distribution</artifactId>
-        <version>9.4.53.v20231009</version>
-        <type>tar.gz</type>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.fcgi</groupId>
-        <artifactId>fcgi-client</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.fcgi</groupId>
-        <artifactId>fcgi-server</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.gcloud</groupId>
-        <artifactId>jetty-gcloud-session-manager</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-home</artifactId>
-        <version>9.4.53.v20231009</version>
-        <type>zip</type>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-home</artifactId>
-        <version>9.4.53.v20231009</version>
-        <type>tar.gz</type>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-http</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.http2</groupId>
-        <artifactId>http2-client</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.http2</groupId>
-        <artifactId>http2-common</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.http2</groupId>
-        <artifactId>http2-hpack</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.http2</groupId>
-        <artifactId>http2-http-client-transport</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.http2</groupId>
-        <artifactId>http2-server</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-http-spi</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>infinispan-common</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>infinispan-remote-query</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>infinispan-embedded-query</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-hazelcast</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-io</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-jaas</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-jaspi</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-jmx</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-jndi</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.memcached</groupId>
-        <artifactId>jetty-memcached-sessions</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-nosql</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.osgi</groupId>
-        <artifactId>jetty-osgi-boot</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.osgi</groupId>
-        <artifactId>jetty-osgi-boot-jsp</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.osgi</groupId>
-        <artifactId>jetty-osgi-boot-warurl</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.osgi</groupId>
-        <artifactId>jetty-httpservice</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-plus</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-proxy</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-quickstart</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-rewrite</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-security</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-openid</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-server</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-servlet</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-servlets</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-spring</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-unixsocket</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-util</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-util-ajax</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-webapp</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.websocket</groupId>
-        <artifactId>javax-websocket-client-impl</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.websocket</groupId>
-        <artifactId>javax-websocket-server-impl</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.websocket</groupId>
-        <artifactId>websocket-api</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.websocket</groupId>
-        <artifactId>websocket-client</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.websocket</groupId>
-        <artifactId>websocket-common</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.websocket</groupId>
-        <artifactId>websocket-server</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty.websocket</groupId>
-        <artifactId>websocket-servlet</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.eclipse.jetty</groupId>
-        <artifactId>jetty-xml</artifactId>
-        <version>9.4.53.v20231009</version>
-      </dependency>
-      <dependency>
-        <groupId>org.junit.jupiter</groupId>
-        <artifactId>junit-jupiter</artifactId>
-        <version>5.8.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.junit.jupiter</groupId>
-        <artifactId>junit-jupiter-api</artifactId>
-        <version>5.8.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.junit.jupiter</groupId>
-        <artifactId>junit-jupiter-engine</artifactId>
-        <version>5.8.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.junit.jupiter</groupId>
-        <artifactId>junit-jupiter-migrationsupport</artifactId>
-        <version>5.8.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.junit.jupiter</groupId>
-        <artifactId>junit-jupiter-params</artifactId>
-        <version>5.8.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.junit.platform</groupId>
-        <artifactId>junit-platform-commons</artifactId>
-        <version>1.8.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.junit.platform</groupId>
-        <artifactId>junit-platform-console</artifactId>
-        <version>1.8.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.junit.platform</groupId>
-        <artifactId>junit-platform-engine</artifactId>
-        <version>1.8.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.junit.platform</groupId>
-        <artifactId>junit-platform-jfr</artifactId>
-        <version>1.8.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.junit.platform</groupId>
-        <artifactId>junit-platform-launcher</artifactId>
-        <version>1.8.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.junit.platform</groupId>
-        <artifactId>junit-platform-reporting</artifactId>
-        <version>1.8.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.junit.platform</groupId>
-        <artifactId>junit-platform-runner</artifactId>
-        <version>1.8.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.junit.platform</groupId>
-        <artifactId>junit-platform-suite</artifactId>
-        <version>1.8.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.junit.platform</groupId>
-        <artifactId>junit-platform-suite-api</artifactId>
-        <version>1.8.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.junit.platform</groupId>
-        <artifactId>junit-platform-suite-commons</artifactId>
-        <version>1.8.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.junit.platform</groupId>
-        <artifactId>junit-platform-suite-engine</artifactId>
-        <version>1.8.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.junit.platform</groupId>
-        <artifactId>junit-platform-testkit</artifactId>
-        <version>1.8.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.junit.vintage</groupId>
-        <artifactId>junit-vintage-engine</artifactId>
-        <version>5.8.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-stdlib</artifactId>
-        <version>1.6.21</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-stdlib-jdk7</artifactId>
-        <version>1.6.21</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-stdlib-jdk8</artifactId>
-        <version>1.6.21</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-stdlib-js</artifactId>
-        <version>1.6.21</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-stdlib-common</artifactId>
-        <version>1.6.21</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-reflect</artifactId>
-        <version>1.6.21</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-osgi-bundle</artifactId>
-        <version>1.6.21</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-test</artifactId>
-        <version>1.6.21</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-test-junit</artifactId>
-        <version>1.6.21</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-test-junit5</artifactId>
-        <version>1.6.21</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-test-testng</artifactId>
-        <version>1.6.21</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-test-js</artifactId>
-        <version>1.6.21</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-test-common</artifactId>
-        <version>1.6.21</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-test-annotations-common</artifactId>
-        <version>1.6.21</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-main-kts</artifactId>
-        <version>1.6.21</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-script-runtime</artifactId>
-        <version>1.6.21</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-script-util</artifactId>
-        <version>1.6.21</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-scripting-common</artifactId>
-        <version>1.6.21</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-scripting-jvm</artifactId>
-        <version>1.6.21</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-scripting-jvm-host</artifactId>
-        <version>1.6.21</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-scripting-ide-services</artifactId>
-        <version>1.6.21</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-compiler</artifactId>
-        <version>1.6.21</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-compiler-embeddable</artifactId>
-        <version>1.6.21</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlin</groupId>
-        <artifactId>kotlin-daemon-client</artifactId>
-        <version>1.6.21</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlinx</groupId>
-        <artifactId>kotlinx-coroutines-android</artifactId>
-        <version>1.6.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlinx</groupId>
-        <artifactId>kotlinx-coroutines-core-jvm</artifactId>
-        <version>1.6.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlinx</groupId>
-        <artifactId>kotlinx-coroutines-core</artifactId>
-        <version>1.6.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlinx</groupId>
-        <artifactId>kotlinx-coroutines-debug</artifactId>
-        <version>1.6.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlinx</groupId>
-        <artifactId>kotlinx-coroutines-guava</artifactId>
-        <version>1.6.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlinx</groupId>
-        <artifactId>kotlinx-coroutines-javafx</artifactId>
-        <version>1.6.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlinx</groupId>
-        <artifactId>kotlinx-coroutines-jdk8</artifactId>
-        <version>1.6.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlinx</groupId>
-        <artifactId>kotlinx-coroutines-jdk9</artifactId>
-        <version>1.6.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlinx</groupId>
-        <artifactId>kotlinx-coroutines-play-services</artifactId>
-        <version>1.6.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlinx</groupId>
-        <artifactId>kotlinx-coroutines-reactive</artifactId>
-        <version>1.6.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlinx</groupId>
-        <artifactId>kotlinx-coroutines-reactor</artifactId>
-        <version>1.6.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlinx</groupId>
-        <artifactId>kotlinx-coroutines-rx2</artifactId>
-        <version>1.6.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlinx</groupId>
-        <artifactId>kotlinx-coroutines-rx3</artifactId>
-        <version>1.6.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlinx</groupId>
-        <artifactId>kotlinx-coroutines-slf4j</artifactId>
-        <version>1.6.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlinx</groupId>
-        <artifactId>kotlinx-coroutines-swing</artifactId>
-        <version>1.6.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlinx</groupId>
-        <artifactId>kotlinx-coroutines-test-jvm</artifactId>
-        <version>1.6.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.jetbrains.kotlinx</groupId>
-        <artifactId>kotlinx-coroutines-test</artifactId>
-        <version>1.6.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-api</artifactId>
-        <version>2.17.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-core</artifactId>
-        <version>2.17.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-layout-template-json</artifactId>
-        <version>2.17.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-1.2-api</artifactId>
-        <version>2.17.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-jcl</artifactId>
-        <version>2.17.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-flume-ng</artifactId>
-        <version>2.17.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-taglib</artifactId>
-        <version>2.17.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-jmx-gui</artifactId>
-        <version>2.17.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-slf4j-impl</artifactId>
-        <version>2.17.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-slf4j18-impl</artifactId>
-        <version>2.17.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-to-slf4j</artifactId>
-        <version>2.17.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-appserver</artifactId>
-        <version>2.17.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-web</artifactId>
-        <version>2.17.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-couchdb</artifactId>
-        <version>2.17.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-mongodb4</artifactId>
-        <version>2.17.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-mongodb3</artifactId>
-        <version>2.17.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-cassandra</artifactId>
-        <version>2.17.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-jpa</artifactId>
-        <version>2.17.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-iostreams</artifactId>
-        <version>2.17.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-jul</artifactId>
-        <version>2.17.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-jpl</artifactId>
-        <version>2.17.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-liquibase</artifactId>
-        <version>2.17.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-docker</artifactId>
-        <version>2.17.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-kubernetes</artifactId>
-        <version>2.17.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-spring-boot</artifactId>
-        <version>2.17.2</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-spring-cloud-config-client</artifactId>
-        <version>2.17.2</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-core</artifactId>
-        <version>1.9.17</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-appoptics</artifactId>
-        <version>1.9.17</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-atlas</artifactId>
-        <version>1.9.17</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-azure-monitor</artifactId>
-        <version>1.9.17</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-cloudwatch</artifactId>
-        <version>1.9.17</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-cloudwatch2</artifactId>
-        <version>1.9.17</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-datadog</artifactId>
-        <version>1.9.17</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-dynatrace</artifactId>
-        <version>1.9.17</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-elastic</artifactId>
-        <version>1.9.17</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-ganglia</artifactId>
-        <version>1.9.17</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-graphite</artifactId>
-        <version>1.9.17</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-health</artifactId>
-        <version>1.9.17</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-humio</artifactId>
-        <version>1.9.17</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-influx</artifactId>
-        <version>1.9.17</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-jmx</artifactId>
-        <version>1.9.17</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-kairos</artifactId>
-        <version>1.9.17</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-new-relic</artifactId>
-        <version>1.9.17</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-opentsdb</artifactId>
-        <version>1.9.17</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-otlp</artifactId>
-        <version>1.9.17</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-prometheus</artifactId>
-        <version>1.9.17</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-signalfx</artifactId>
-        <version>1.9.17</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-statsd</artifactId>
-        <version>1.9.17</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-registry-wavefront</artifactId>
-        <version>1.9.17</version>
-      </dependency>
-      <dependency>
-        <groupId>io.micrometer</groupId>
-        <artifactId>micrometer-test</artifactId>
-        <version>1.9.17</version>
-      </dependency>
-      <dependency>
-        <groupId>org.mockito</groupId>
-        <artifactId>mockito-core</artifactId>
-        <version>4.5.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.mockito</groupId>
-        <artifactId>mockito-android</artifactId>
-        <version>4.5.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.mockito</groupId>
-        <artifactId>mockito-errorprone</artifactId>
-        <version>4.5.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.mockito</groupId>
-        <artifactId>mockito-inline</artifactId>
-        <version>4.5.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.mockito</groupId>
-        <artifactId>mockito-junit-jupiter</artifactId>
-        <version>4.5.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.mockito</groupId>
-        <artifactId>mockito-proxy</artifactId>
-        <version>4.5.1</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-buffer</artifactId>
-        <version>4.1.101.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-codec</artifactId>
-        <version>4.1.101.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-codec-dns</artifactId>
-        <version>4.1.101.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-codec-haproxy</artifactId>
-        <version>4.1.101.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-codec-http</artifactId>
-        <version>4.1.101.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-codec-http2</artifactId>
-        <version>4.1.101.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-codec-memcache</artifactId>
-        <version>4.1.101.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-codec-mqtt</artifactId>
-        <version>4.1.101.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-codec-redis</artifactId>
-        <version>4.1.101.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-codec-smtp</artifactId>
-        <version>4.1.101.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-codec-socks</artifactId>
-        <version>4.1.101.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-codec-stomp</artifactId>
-        <version>4.1.101.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-codec-xml</artifactId>
-        <version>4.1.101.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-common</artifactId>
-        <version>4.1.101.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-dev-tools</artifactId>
-        <version>4.1.101.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-handler</artifactId>
-        <version>4.1.101.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-handler-proxy</artifactId>
-        <version>4.1.101.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-handler-ssl-ocsp</artifactId>
-        <version>4.1.101.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-resolver</artifactId>
-        <version>4.1.101.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-resolver-dns</artifactId>
-        <version>4.1.101.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-transport</artifactId>
-        <version>4.1.101.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-transport-rxtx</artifactId>
-        <version>4.1.101.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-transport-sctp</artifactId>
-        <version>4.1.101.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-transport-udt</artifactId>
-        <version>4.1.101.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-example</artifactId>
-        <version>4.1.101.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-all</artifactId>
-        <version>4.1.101.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-resolver-dns-classes-macos</artifactId>
-        <version>4.1.101.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-resolver-dns-native-macos</artifactId>
-        <version>4.1.101.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-resolver-dns-native-macos</artifactId>
-        <version>4.1.101.Final</version>
-        <classifier>osx-x86_64</classifier>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-resolver-dns-native-macos</artifactId>
-        <version>4.1.101.Final</version>
-        <classifier>osx-aarch_64</classifier>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-transport-native-unix-common</artifactId>
-        <version>4.1.101.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-transport-native-unix-common</artifactId>
-        <version>4.1.101.Final</version>
-        <classifier>linux-aarch_64</classifier>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-transport-native-unix-common</artifactId>
-        <version>4.1.101.Final</version>
-        <classifier>linux-x86_64</classifier>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-transport-native-unix-common</artifactId>
-        <version>4.1.101.Final</version>
-        <classifier>osx-x86_64</classifier>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-transport-native-unix-common</artifactId>
-        <version>4.1.101.Final</version>
-        <classifier>osx-aarch_64</classifier>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-transport-classes-epoll</artifactId>
-        <version>4.1.101.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-transport-native-epoll</artifactId>
-        <version>4.1.101.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-transport-native-epoll</artifactId>
-        <version>4.1.101.Final</version>
-        <classifier>linux-aarch_64</classifier>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-transport-native-epoll</artifactId>
-        <version>4.1.101.Final</version>
-        <classifier>linux-x86_64</classifier>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-transport-classes-kqueue</artifactId>
-        <version>4.1.101.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-transport-native-kqueue</artifactId>
-        <version>4.1.101.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-transport-native-kqueue</artifactId>
-        <version>4.1.101.Final</version>
-        <classifier>osx-x86_64</classifier>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-transport-native-kqueue</artifactId>
-        <version>4.1.101.Final</version>
-        <classifier>osx-aarch_64</classifier>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-tcnative-classes</artifactId>
-        <version>2.0.61.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-tcnative</artifactId>
-        <version>2.0.61.Final</version>
-        <classifier>linux-x86_64</classifier>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-tcnative</artifactId>
-        <version>2.0.61.Final</version>
-        <classifier>linux-x86_64-fedora</classifier>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-tcnative</artifactId>
-        <version>2.0.61.Final</version>
-        <classifier>linux-aarch_64-fedora</classifier>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-tcnative</artifactId>
-        <version>2.0.61.Final</version>
-        <classifier>osx-x86_64</classifier>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-tcnative-boringssl-static</artifactId>
-        <version>2.0.61.Final</version>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-tcnative-boringssl-static</artifactId>
-        <version>2.0.61.Final</version>
-        <classifier>linux-x86_64</classifier>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-tcnative-boringssl-static</artifactId>
-        <version>2.0.61.Final</version>
-        <classifier>linux-aarch_64</classifier>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-tcnative-boringssl-static</artifactId>
-        <version>2.0.61.Final</version>
-        <classifier>osx-x86_64</classifier>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-tcnative-boringssl-static</artifactId>
-        <version>2.0.61.Final</version>
-        <classifier>osx-aarch_64</classifier>
-      </dependency>
-      <dependency>
-        <groupId>io.netty</groupId>
-        <artifactId>netty-tcnative-boringssl-static</artifactId>
-        <version>2.0.61.Final</version>
-        <classifier>windows-x86_64</classifier>
-      </dependency>
-      <dependency>
-        <groupId>com.squareup.okhttp3</groupId>
-        <artifactId>mockwebserver</artifactId>
-        <version>4.9.3</version>
-      </dependency>
-      <dependency>
-        <groupId>com.squareup.okhttp3</groupId>
-        <artifactId>okcurl</artifactId>
-        <version>4.9.3</version>
-      </dependency>
-      <dependency>
-        <groupId>com.squareup.okhttp3</groupId>
-        <artifactId>okhttp</artifactId>
-        <version>4.9.3</version>
-      </dependency>
-      <dependency>
-        <groupId>com.squareup.okhttp3</groupId>
-        <artifactId>okhttp-brotli</artifactId>
-        <version>4.9.3</version>
-      </dependency>
-      <dependency>
-        <groupId>com.squareup.okhttp3</groupId>
-        <artifactId>okhttp-dnsoverhttps</artifactId>
-        <version>4.9.3</version>
-      </dependency>
-      <dependency>
-        <groupId>com.squareup.okhttp3</groupId>
-        <artifactId>logging-interceptor</artifactId>
-        <version>4.9.3</version>
-      </dependency>
-      <dependency>
-        <groupId>com.squareup.okhttp3</groupId>
-        <artifactId>okhttp-sse</artifactId>
-        <version>4.9.3</version>
-      </dependency>
-      <dependency>
-        <groupId>com.squareup.okhttp3</groupId>
-        <artifactId>okhttp-tls</artifactId>
-        <version>4.9.3</version>
-      </dependency>
-      <dependency>
-        <groupId>com.squareup.okhttp3</groupId>
-        <artifactId>okhttp-urlconnection</artifactId>
-        <version>4.9.3</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.jdbc</groupId>
-        <artifactId>ojdbc11</artifactId>
-        <version>21.5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.jdbc</groupId>
-        <artifactId>ojdbc8</artifactId>
-        <version>21.5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.jdbc</groupId>
-        <artifactId>ucp</artifactId>
-        <version>21.5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.jdbc</groupId>
-        <artifactId>ucp11</artifactId>
-        <version>21.5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.jdbc</groupId>
-        <artifactId>rsi</artifactId>
-        <version>21.5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.security</groupId>
-        <artifactId>oraclepki</artifactId>
-        <version>21.5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.security</groupId>
-        <artifactId>osdt_core</artifactId>
-        <version>21.5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.security</groupId>
-        <artifactId>osdt_cert</artifactId>
-        <version>21.5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.ha</groupId>
-        <artifactId>simplefan</artifactId>
-        <version>21.5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.ha</groupId>
-        <artifactId>ons</artifactId>
-        <version>21.5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.nls</groupId>
-        <artifactId>orai18n</artifactId>
-        <version>21.5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.xml</groupId>
-        <artifactId>xdb</artifactId>
-        <version>21.5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.xml</groupId>
-        <artifactId>xmlparserv2</artifactId>
-        <version>21.5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.jdbc.debug</groupId>
-        <artifactId>ojdbc11_g</artifactId>
-        <version>21.5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.jdbc.debug</groupId>
-        <artifactId>ojdbc8_g</artifactId>
-        <version>21.5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.jdbc.debug</groupId>
-        <artifactId>ojdbc8dms_g</artifactId>
-        <version>21.5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.jdbc.debug</groupId>
-        <artifactId>ojdbc11dms_g</artifactId>
-        <version>21.5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.observability</groupId>
-        <artifactId>dms</artifactId>
-        <version>21.5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.observability</groupId>
-        <artifactId>ojdbc11dms</artifactId>
-        <version>21.5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.observability</groupId>
-        <artifactId>ojdbc8dms</artifactId>
-        <version>21.5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.jdbc</groupId>
-        <artifactId>ojdbc11-production</artifactId>
-        <version>21.5.0.0</version>
-        <type>pom</type>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.jdbc</groupId>
-        <artifactId>ojdbc8-production</artifactId>
-        <version>21.5.0.0</version>
-        <type>pom</type>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.observability</groupId>
-        <artifactId>ojdbc8-observability</artifactId>
-        <version>21.5.0.0</version>
-        <type>pom</type>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.observability</groupId>
-        <artifactId>ojdbc11-observability</artifactId>
-        <version>21.5.0.0</version>
-        <type>pom</type>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.jdbc.debug</groupId>
-        <artifactId>ojdbc8-debug</artifactId>
-        <version>21.5.0.0</version>
-        <type>pom</type>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.jdbc.debug</groupId>
-        <artifactId>ojdbc11-debug</artifactId>
-        <version>21.5.0.0</version>
-        <type>pom</type>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.jdbc.debug</groupId>
-        <artifactId>ojdbc8-observability-debug</artifactId>
-        <version>21.5.0.0</version>
-        <type>pom</type>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.jdbc.debug</groupId>
-        <artifactId>ojdbc11-observability-debug</artifactId>
-        <version>21.5.0.0</version>
-        <type>pom</type>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient</artifactId>
-        <version>0.15.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_caffeine</artifactId>
-        <version>0.15.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_common</artifactId>
-        <version>0.15.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_dropwizard</artifactId>
-        <version>0.15.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_graphite_bridge</artifactId>
-        <version>0.15.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_guava</artifactId>
-        <version>0.15.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_hibernate</artifactId>
-        <version>0.15.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_hotspot</artifactId>
-        <version>0.15.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_httpserver</artifactId>
-        <version>0.15.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_jetty</artifactId>
-        <version>0.15.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_jetty_jdk8</artifactId>
-        <version>0.15.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_log4j</artifactId>
-        <version>0.15.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_log4j2</artifactId>
-        <version>0.15.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_logback</artifactId>
-        <version>0.15.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_pushgateway</artifactId>
-        <version>0.15.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_servlet</artifactId>
-        <version>0.15.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_servlet_jakarta</artifactId>
-        <version>0.15.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_spring_boot</artifactId>
-        <version>0.15.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_spring_web</artifactId>
-        <version>0.15.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_tracer_otel</artifactId>
-        <version>0.15.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_tracer_otel_agent</artifactId>
-        <version>0.15.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.prometheus</groupId>
-        <artifactId>simpleclient_vertx</artifactId>
-        <version>0.15.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.querydsl</groupId>
-        <artifactId>querydsl-core</artifactId>
-        <version>5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.querydsl</groupId>
-        <artifactId>querydsl-codegen</artifactId>
-        <version>5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.querydsl</groupId>
-        <artifactId>querydsl-codegen-utils</artifactId>
-        <version>5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.querydsl</groupId>
-        <artifactId>querydsl-spatial</artifactId>
-        <version>5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.querydsl</groupId>
-        <artifactId>querydsl-apt</artifactId>
-        <version>5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.querydsl</groupId>
-        <artifactId>querydsl-collections</artifactId>
-        <version>5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.querydsl</groupId>
-        <artifactId>querydsl-guava</artifactId>
-        <version>5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.querydsl</groupId>
-        <artifactId>querydsl-sql</artifactId>
-        <version>5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.querydsl</groupId>
-        <artifactId>querydsl-sql-spatial</artifactId>
-        <version>5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.querydsl</groupId>
-        <artifactId>querydsl-sql-codegen</artifactId>
-        <version>5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.querydsl</groupId>
-        <artifactId>querydsl-sql-spring</artifactId>
-        <version>5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.querydsl</groupId>
-        <artifactId>querydsl-jpa</artifactId>
-        <version>5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.querydsl</groupId>
-        <artifactId>querydsl-jpa-codegen</artifactId>
-        <version>5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.querydsl</groupId>
-        <artifactId>querydsl-jdo</artifactId>
-        <version>5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.querydsl</groupId>
-        <artifactId>querydsl-kotlin-codegen</artifactId>
-        <version>5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.querydsl</groupId>
-        <artifactId>querydsl-lucene3</artifactId>
-        <version>5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.querydsl</groupId>
-        <artifactId>querydsl-lucene4</artifactId>
-        <version>5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.querydsl</groupId>
-        <artifactId>querydsl-lucene5</artifactId>
-        <version>5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.querydsl</groupId>
-        <artifactId>querydsl-hibernate-search</artifactId>
-        <version>5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.querydsl</groupId>
-        <artifactId>querydsl-mongodb</artifactId>
-        <version>5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.querydsl</groupId>
-        <artifactId>querydsl-scala</artifactId>
-        <version>5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.querydsl</groupId>
-        <artifactId>querydsl-kotlin</artifactId>
-        <version>5.0.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.oracle.database.r2dbc</groupId>
-        <artifactId>oracle-r2dbc</artifactId>
-        <version>0.4.0</version>
-      </dependency>
-      <dependency>
-        <groupId>io.r2dbc</groupId>
-        <artifactId>r2dbc-h2</artifactId>
-        <version>0.9.1.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>org.mariadb</groupId>
-        <artifactId>r2dbc-mariadb</artifactId>
-        <version>1.1.2</version>
-      </dependency>
-      <dependency>
-        <groupId>io.r2dbc</groupId>
-        <artifactId>r2dbc-mssql</artifactId>
-        <version>0.9.0.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>org.postgresql</groupId>
-        <artifactId>r2dbc-postgresql</artifactId>
-        <version>0.9.2.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>io.r2dbc</groupId>
-        <artifactId>r2dbc-pool</artifactId>
-        <version>0.9.2.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>io.r2dbc</groupId>
-        <artifactId>r2dbc-proxy</artifactId>
-        <version>0.9.1.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>io.r2dbc</groupId>
-        <artifactId>r2dbc-spi</artifactId>
-        <version>0.9.1.RELEASE</version>
-      </dependency>
-      <dependency>
-        <groupId>io.projectreactor</groupId>
-        <artifactId>reactor-core</artifactId>
-        <version>3.4.34</version>
-      </dependency>
-      <dependency>
-        <groupId>io.projectreactor</groupId>
-        <artifactId>reactor-test</artifactId>
-        <version>3.4.34</version>
-      </dependency>
-      <dependency>
-        <groupId>io.projectreactor</groupId>
-        <artifactId>reactor-tools</artifactId>
-        <version>3.4.34</version>
-      </dependency>
-      <dependency>
-        <groupId>io.projectreactor.addons</groupId>
-        <artifactId>reactor-extra</artifactId>
-        <version>3.4.10</version>
-      </dependency>
-      <dependency>
-        <groupId>io.projectreactor.addons</groupId>
-        <artifactId>reactor-adapter</artifactId>
-        <version>3.4.10</version>
-      </dependency>
-      <dependency>
-        <groupId>io.projectreactor.netty</groupId>
-        <artifactId>reactor-netty</artifactId>
-        <version>1.0.39</version>
-      </dependency>
-      <dependency>
-        <groupId>io.projectreactor.netty</groupId>
-        <artifactId>reactor-netty-core</artifactId>
-        <version>1.0.39</version>
-      </dependency>
-      <dependency>
-        <groupId>io.projectreactor.netty</groupId>
-        <artifactId>reactor-netty-http</artifactId>
-        <version>1.0.39</version>
-      </dependency>
-      <dependency>
-        <groupId>io.projectreactor.netty</groupId>
-        <artifactId>reactor-netty-http-brave</artifactId>
-        <version>1.0.39</version>
-      </dependency>
-      <dependency>
-        <groupId>io.projectreactor.addons</groupId>
-        <artifactId>reactor-pool</artifactId>
-        <version>0.2.12</version>
-      </dependency>
-      <dependency>
-        <groupId>io.projectreactor.kafka</groupId>
-        <artifactId>reactor-kafka</artifactId>
-        <version>1.3.22</version>
-      </dependency>
-      <dependency>
-        <groupId>io.projectreactor.rabbitmq</groupId>
-        <artifactId>reactor-rabbitmq</artifactId>
-        <version>1.5.6</version>
-      </dependency>
-      <dependency>
-        <groupId>io.projectreactor.kotlin</groupId>
-        <artifactId>reactor-kotlin-extensions</artifactId>
-        <version>1.1.10</version>
-      </dependency>
-      <dependency>
-        <groupId>io.rest-assured</groupId>
-        <artifactId>json-schema-validator</artifactId>
-        <version>4.5.1</version>
-      </dependency>
-      <dependency>
-        <groupId>io.rest-assured</groupId>
-        <artifactId>rest-assured-common</artifactId>
-        <version>4.5.1</version>
-      </dependency>
-      <dependency>
-        <groupId>io.rest-assured</groupId>
-        <artifactId>json-path</artifactId>
-        <version>4.5.1</version>
-      </dependency>
-      <dependency>
-        <groupId>io.rest-assured</groupId>
-        <artifactId>xml-path</artifactId>
-        <version>4.5.1</version>
-      </dependency>
-      <dependency>
-        <groupId>io.rest-assured</groupId>
-        <artifactId>rest-assured</artifactId>
-        <version>4.5.1</version>
-      </dependency>
-      <dependency>
-        <groupId>io.rest-assured</groupId>
-        <artifactId>spring-commons</artifactId>
-        <version>4.5.1</version>
-      </dependency>
-      <dependency>
-        <groupId>io.rest-assured</groupId>
-        <artifactId>spring-mock-mvc</artifactId>
-        <version>4.5.1</version>
-      </dependency>
-      <dependency>
-        <groupId>io.rest-assured</groupId>
-        <artifactId>scala-support</artifactId>
-        <version>4.5.1</version>
-      </dependency>
-      <dependency>
-        <groupId>io.rest-assured</groupId>
-        <artifactId>spring-web-test-client</artifactId>
-        <version>4.5.1</version>
-      </dependency>
-      <dependency>
-        <groupId>io.rest-assured</groupId>
-        <artifactId>kotlin-extensions</artifactId>
-        <version>4.5.1</version>
-      </dependency>
-      <dependency>
-        <groupId>io.rest-assured</groupId>
-        <artifactId>spring-mock-mvc-kotlin-extensions</artifactId>
-        <version>4.5.1</version>
-      </dependency>
-      <dependency>
-        <groupId>io.rest-assured</groupId>
-        <artifactId>rest-assured-all</artifactId>
-        <version>4.5.1</version>
-      </dependency>
-      <dependency>
-        <groupId>io.rest-assured.examples</groupId>
-        <artifactId>scalatra-example</artifactId>
-        <version>4.5.1</version>
-      </dependency>
-      <dependency>
-        <groupId>io.rest-assured.examples</groupId>
-        <artifactId>scalatra-webapp</artifactId>
-        <version>4.5.1</version>
-        <type>war</type>
-      </dependency>
-      <dependency>
-        <groupId>io.rest-assured.examples</groupId>
-        <artifactId>rest-assured-itest-java</artifactId>
-        <version>4.5.1</version>
-      </dependency>
-      <dependency>
-        <groupId>io.rest-assured.examples</groupId>
-        <artifactId>spring-mvc-webapp</artifactId>
-        <version>4.5.1</version>
-        <type>war</type>
-      </dependency>
-      <dependency>
-        <groupId>io.rest-assured.examples</groupId>
-        <artifactId>scala-example</artifactId>
-        <version>4.5.1</version>
-      </dependency>
-      <dependency>
-        <groupId>io.rest-assured.examples</groupId>
-        <artifactId>scala-mock-mvc-example</artifactId>
-        <version>4.5.1</version>
-      </dependency>
-      <dependency>
-        <groupId>io.rest-assured.examples</groupId>
-        <artifactId>kotlin-example</artifactId>
-        <version>4.5.1</version>
-      </dependency>
-      <dependency>
-        <groupId>io.rsocket</groupId>
-        <artifactId>rsocket-core</artifactId>
-        <version>1.1.3</version>
-      </dependency>
-      <dependency>
-        <groupId>io.rsocket</groupId>
-        <artifactId>rsocket-load-balancer</artifactId>
-        <version>1.1.3</version>
-      </dependency>
-      <dependency>
-        <groupId>io.rsocket</groupId>
-        <artifactId>rsocket-micrometer</artifactId>
-        <version>1.1.3</version>
-      </dependency>
-      <dependency>
-        <groupId>io.rsocket</groupId>
-        <artifactId>rsocket-test</artifactId>
-        <version>1.1.3</version>
-      </dependency>
-      <dependency>
-        <groupId>io.rsocket</groupId>
-        <artifactId>rsocket-transport-local</artifactId>
-        <version>1.1.3</version>
-      </dependency>
-      <dependency>
-        <groupId>io.rsocket</groupId>
-        <artifactId>rsocket-transport-netty</artifactId>
-        <version>1.1.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.data</groupId>
-        <artifactId>spring-data-cassandra</artifactId>
-        <version>3.4.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.data</groupId>
-        <artifactId>spring-data-commons</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.data</groupId>
-        <artifactId>spring-data-couchbase</artifactId>
-        <version>4.4.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.data</groupId>
-        <artifactId>spring-data-elasticsearch</artifactId>
-        <version>4.4.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.data</groupId>
-        <artifactId>spring-data-geode</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.data</groupId>
-        <artifactId>spring-data-jdbc</artifactId>
-        <version>2.4.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.data</groupId>
-        <artifactId>spring-data-relational</artifactId>
-        <version>2.4.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.data</groupId>
-        <artifactId>spring-data-jpa</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.data</groupId>
-        <artifactId>spring-data-mongodb</artifactId>
-        <version>3.4.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.data</groupId>
-        <artifactId>spring-data-neo4j</artifactId>
-        <version>6.3.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.data</groupId>
-        <artifactId>spring-data-r2dbc</artifactId>
-        <version>1.5.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.data</groupId>
-        <artifactId>spring-data-redis</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.data</groupId>
-        <artifactId>spring-data-rest-webmvc</artifactId>
-        <version>3.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.data</groupId>
-        <artifactId>spring-data-rest-core</artifactId>
-        <version>3.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.data</groupId>
-        <artifactId>spring-data-rest-hal-explorer</artifactId>
-        <version>3.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.data</groupId>
-        <artifactId>spring-data-keyvalue</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.data</groupId>
-        <artifactId>spring-data-envers</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.data</groupId>
-        <artifactId>spring-data-ldap</artifactId>
-        <version>2.7.18</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-aop</artifactId>
-        <version>5.3.31</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-aspects</artifactId>
-        <version>5.3.31</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-beans</artifactId>
-        <version>5.3.31</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-context</artifactId>
-        <version>5.3.31</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-context-indexer</artifactId>
-        <version>5.3.31</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-context-support</artifactId>
-        <version>5.3.31</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-core</artifactId>
-        <version>5.3.31</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-expression</artifactId>
-        <version>5.3.31</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-instrument</artifactId>
-        <version>5.3.31</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-jcl</artifactId>
-        <version>5.3.31</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-jdbc</artifactId>
-        <version>5.3.31</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-jms</artifactId>
-        <version>5.3.31</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-messaging</artifactId>
-        <version>5.3.31</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-orm</artifactId>
-        <version>5.3.31</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-oxm</artifactId>
-        <version>5.3.31</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-r2dbc</artifactId>
-        <version>5.3.31</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-test</artifactId>
-        <version>5.3.31</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-tx</artifactId>
-        <version>5.3.31</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-web</artifactId>
-        <version>5.3.31</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-webflux</artifactId>
-        <version>5.3.31</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-webmvc</artifactId>
-        <version>5.3.31</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-websocket</artifactId>
-        <version>5.3.31</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-amqp</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-core</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-event</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-feed</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-file</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-ftp</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-gemfire</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-groovy</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-http</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-ip</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-jdbc</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-jms</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-jmx</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-jpa</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-kafka</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-mail</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-mongodb</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-mqtt</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-r2dbc</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-redis</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-rmi</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-rsocket</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-scripting</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-security</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-sftp</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-stomp</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-stream</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-syslog</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-test</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-test-support</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-webflux</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-websocket</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-ws</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-xml</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-xmpp</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-zeromq</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.integration</groupId>
-        <artifactId>spring-integration-zookeeper</artifactId>
-        <version>5.5.20</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-acl</artifactId>
-        <version>5.7.11</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-aspects</artifactId>
-        <version>5.7.11</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-cas</artifactId>
-        <version>5.7.11</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-config</artifactId>
-        <version>5.7.11</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-core</artifactId>
-        <version>5.7.11</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-crypto</artifactId>
-        <version>5.7.11</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-data</artifactId>
-        <version>5.7.11</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-ldap</artifactId>
-        <version>5.7.11</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-messaging</artifactId>
-        <version>5.7.11</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-oauth2-client</artifactId>
-        <version>5.7.11</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-oauth2-core</artifactId>
-        <version>5.7.11</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-oauth2-jose</artifactId>
-        <version>5.7.11</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-oauth2-resource-server</artifactId>
-        <version>5.7.11</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-openid</artifactId>
-        <version>5.7.11</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-remoting</artifactId>
-        <version>5.7.11</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-rsocket</artifactId>
-        <version>5.7.11</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-saml2-service-provider</artifactId>
-        <version>5.7.11</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-taglibs</artifactId>
-        <version>5.7.11</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-test</artifactId>
-        <version>5.7.11</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.security</groupId>
-        <artifactId>spring-security-web</artifactId>
-        <version>5.7.11</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.session</groupId>
-        <artifactId>spring-session-core</artifactId>
-        <version>2.7.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.session</groupId>
-        <artifactId>spring-session-data-geode</artifactId>
-        <version>2.7.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.session</groupId>
-        <artifactId>spring-session-data-mongodb</artifactId>
-        <version>2.7.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.session</groupId>
-        <artifactId>spring-session-data-redis</artifactId>
-        <version>2.7.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.session</groupId>
-        <artifactId>spring-session-hazelcast</artifactId>
-        <version>2.7.4</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework.session</groupId>
-        <artifactId>spring-session-jdbc</artifactId>
-        <version>2.7.4</version>
-      </dependency>
-    </dependencies>
-  </dependencyManagement>
-  <dependencies>
-    <dependency>
-      <groupId>io.springfox</groupId>
-      <artifactId>springfox-swagger2</artifactId>
-      <version>2.9.2</version>
-      <scope>compile</scope>
-      <exclusions>
-        <exclusion>
-          <artifactId>swagger-annotations</artifactId>
-          <groupId>io.swagger</groupId>
-        </exclusion>
-        <exclusion>
-          <artifactId>swagger-models</artifactId>
-          <groupId>io.swagger</groupId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>io.springfox</groupId>
-      <artifactId>springfox-swagger-ui</artifactId>
-      <version>2.9.2</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.github.xiaoymin</groupId>
-      <artifactId>swagger-bootstrap-ui</artifactId>
-      <version>1.9.3</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.github.javen205</groupId>
-      <artifactId>IJPay-All</artifactId>
-      <version>2.7.8</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.fs</groupId>
-      <artifactId>fs-quartz</artifactId>
-      <version>1.1.0</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>cn.jpush.api</groupId>
-      <artifactId>jpush-client</artifactId>
-      <version>3.4.3</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.alipay.sdk</groupId>
-      <artifactId>alipay-sdk-java</artifactId>
-      <version>4.8.62.ALL</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>mysql</groupId>
-      <artifactId>mysql-connector-java</artifactId>
-      <version>8.0.33</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.squareup.okhttp3</groupId>
-      <artifactId>okhttp</artifactId>
-      <version>4.9.1</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>cn.jpush.api</groupId>
-      <artifactId>jiguang-common</artifactId>
-      <version>1.1.7</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.fs</groupId>
-      <artifactId>fs-common</artifactId>
-      <version>1.1.0</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.projectlombok</groupId>
-      <artifactId>lombok</artifactId>
-      <version>1.18.30</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.baidu.dev2</groupId>
-      <artifactId>baiduads-sdk</artifactId>
-      <version>2023.1.0</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.tzbank</groupId>
-      <artifactId>tzbClient</artifactId>
-      <version>1.0-SNAPSHOT</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.google.zxing</groupId>
-      <artifactId>core</artifactId>
-      <version>3.3.0</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.google.zxing</groupId>
-      <artifactId>javase</artifactId>
-      <version>3.3.0</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>net.coobird</groupId>
-      <artifactId>thumbnailator</artifactId>
-      <version>0.4.8</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.qcloud</groupId>
-      <artifactId>cos-sts_api</artifactId>
-      <version>3.1.1</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.qiniu</groupId>
-      <artifactId>qiniu-java-sdk</artifactId>
-      <version>[7.2.0, 7.2.99]</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.aliyun.oss</groupId>
-      <artifactId>aliyun-sdk-oss</artifactId>
-      <version>3.5.0</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.qcloud</groupId>
-      <artifactId>cos_api</artifactId>
-      <version>5.6.3</version>
-      <scope>compile</scope>
-      <exclusions>
-        <exclusion>
-          <artifactId>slf4j-log4j12</artifactId>
-          <groupId>org.slf4j</groupId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>com.tencentcloudapi</groupId>
-      <artifactId>tencentcloud-sdk-java</artifactId>
-      <version>3.1.322</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.hibernate.validator</groupId>
-      <artifactId>hibernate-validator</artifactId>
-      <version>6.2.5.Final</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.github.binarywang</groupId>
-      <artifactId>weixin-java-miniapp</artifactId>
-      <version>4.7.0</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.github.binarywang</groupId>
-      <artifactId>weixin-java-pay</artifactId>
-      <version>4.7.2.B</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.github.binarywang</groupId>
-      <artifactId>weixin-java-mp</artifactId>
-      <version>4.7.0</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.github.binarywang</groupId>
-      <artifactId>weixin-java-cp</artifactId>
-      <version>4.7.0</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>io.swagger</groupId>
-      <artifactId>swagger-annotations</artifactId>
-      <version>1.5.21</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>io.swagger</groupId>
-      <artifactId>swagger-models</artifactId>
-      <version>1.5.21</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.vdurmont</groupId>
-      <artifactId>emoji-java</artifactId>
-      <version>4.0.0</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.github.tencentyun</groupId>
-      <artifactId>tls-sig-api-v2</artifactId>
-      <version>2.0</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.httpcomponents.client5</groupId>
-      <artifactId>httpclient5</artifactId>
-      <version>5.2.1</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.baidubce</groupId>
-      <artifactId>appbuilder</artifactId>
-      <version>0.6.0</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.springframework</groupId>
-      <artifactId>spring-test</artifactId>
-      <version>5.2.12.RELEASE</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.huaweicloud.sdk</groupId>
-      <artifactId>huaweicloud-sdk-vod</artifactId>
-      <version>3.1.103</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.huaweicloud.sdk</groupId>
-      <artifactId>huaweicloud-sdk-mpc</artifactId>
-      <version>3.1.88</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.huaweicloud.sdk</groupId>
-      <artifactId>huaweicloud-sdk-cdn</artifactId>
-      <version>3.1.54</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.huaweicloud</groupId>
-      <artifactId>esdk-obs-java-bundle</artifactId>
-      <version>3.23.9</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>ws.schild</groupId>
-      <artifactId>jave-core</artifactId>
-      <version>3.0.0</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.google.protobuf</groupId>
-      <artifactId>protobuf-java</artifactId>
-      <version>3.11.4</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.redisson</groupId>
-      <artifactId>redisson-spring-boot-starter</artifactId>
-      <version>3.13.6</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.rocketmq</groupId>
-      <artifactId>rocketmq-spring-boot-starter</artifactId>
-      <version>2.2.3</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.baomidou</groupId>
-      <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
-      <version>3.1.0</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-text</artifactId>
-      <version>1.10.0</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.github.wechatpay-apiv3</groupId>
-      <artifactId>wechatpay-java</artifactId>
-      <version>0.2.16</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.github.ben-manes.caffeine</groupId>
-      <artifactId>caffeine</artifactId>
-      <version>2.9.3</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.mapstruct</groupId>
-      <artifactId>mapstruct</artifactId>
-      <version>1.5.5.Final</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.mapstruct</groupId>
-      <artifactId>mapstruct-processor</artifactId>
-      <version>1.5.5.Final</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.hc</groupId>
-      <artifactId>openapi</artifactId>
-      <version>1.0</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.volcengine</groupId>
-      <artifactId>volc-sdk-java</artifactId>
-      <version>1.0.250</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.springframework.retry</groupId>
-      <artifactId>spring-retry</artifactId>
-      <version>1.3.1</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.alibaba</groupId>
-      <artifactId>druid-spring-boot-starter</artifactId>
-      <version>1.2.6</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.github.penggle</groupId>
-      <artifactId>kaptcha</artifactId>
-      <version>2.3.2</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.github.oshi</groupId>
-      <artifactId>oshi-core</artifactId>
-      <version>5.8.0</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>com.hankcs</groupId>
-      <artifactId>aho-corasick-double-array-trie</artifactId>
-      <version>1.2.3</version>
-      <scope>compile</scope>
-    </dependency>
-  </dependencies>
-  <repositories>
-    <repository>
-      <releases>
-        <enabled>true</enabled>
-      </releases>
-      <id>public</id>
-      <name>aliyun nexus</name>
-      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
-    </repository>
-    <repository>
-      <id>OceanengineOpenApi</id>
-      <name>ad_open_sdk_java</name>
-      <url>https://artifact.bytedance.com/repository/releases/</url>
-    </repository>
-    <repository>
-      <snapshots>
-        <enabled>false</enabled>
-      </snapshots>
-      <id>central</id>
-      <name>Central Repository</name>
-      <url>https://repo.maven.apache.org/maven2</url>
-    </repository>
-  </repositories>
-  <pluginRepositories>
-    <pluginRepository>
-      <releases>
-        <enabled>true</enabled>
-      </releases>
-      <snapshots>
-        <enabled>false</enabled>
-      </snapshots>
-      <id>public</id>
-      <name>aliyun nexus</name>
-      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
-    </pluginRepository>
-    <pluginRepository>
-      <releases>
-        <updatePolicy>never</updatePolicy>
-      </releases>
-      <snapshots>
-        <enabled>false</enabled>
-      </snapshots>
-      <id>central</id>
-      <name>Central Repository</name>
-      <url>https://repo.maven.apache.org/maven2</url>
-    </pluginRepository>
-  </pluginRepositories>
-  <build>
-    <sourceDirectory>F:\project\Saas\ylrz_saas_his_scrm\fs-service\src\main\java</sourceDirectory>
-    <scriptSourceDirectory>F:\project\Saas\ylrz_saas_his_scrm\fs-service\src\main\scripts</scriptSourceDirectory>
-    <testSourceDirectory>F:\project\Saas\ylrz_saas_his_scrm\fs-service\src\test\java</testSourceDirectory>
-    <outputDirectory>F:\project\Saas\ylrz_saas_his_scrm\fs-service\target\classes</outputDirectory>
-    <testOutputDirectory>F:\project\Saas\ylrz_saas_his_scrm\fs-service\target\test-classes</testOutputDirectory>
-    <resources>
-      <resource>
-        <directory>F:\project\Saas\ylrz_saas_his_scrm\fs-service\src\main\resources</directory>
-      </resource>
-    </resources>
-    <testResources>
-      <testResource>
-        <directory>F:\project\Saas\ylrz_saas_his_scrm\fs-service\src\test\resources</directory>
-      </testResource>
-    </testResources>
-    <directory>F:\project\Saas\ylrz_saas_his_scrm\fs-service\target</directory>
-    <finalName>fs-service-1.1.0</finalName>
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <artifactId>maven-antrun-plugin</artifactId>
-          <version>1.3</version>
-        </plugin>
-        <plugin>
-          <artifactId>maven-assembly-plugin</artifactId>
-          <version>2.2-beta-5</version>
-        </plugin>
-        <plugin>
-          <artifactId>maven-dependency-plugin</artifactId>
-          <version>2.8</version>
-        </plugin>
-        <plugin>
-          <artifactId>maven-release-plugin</artifactId>
-          <version>2.5.3</version>
-        </plugin>
-      </plugins>
-    </pluginManagement>
-    <plugins>
-      <plugin>
-        <artifactId>maven-compiler-plugin</artifactId>
-        <version>3.11.0</version>
-        <executions>
-          <execution>
-            <id>default-compile</id>
-            <phase>compile</phase>
-            <goals>
-              <goal>compile</goal>
-            </goals>
-            <configuration>
-              <source>17</source>
-              <target>17</target>
-              <encoding>UTF-8</encoding>
-              <annotationProcessorPaths>
-                <path>
-                  <groupId>org.projectlombok</groupId>
-                  <artifactId>lombok</artifactId>
-                  <version>1.18.32</version>
-                </path>
-                <path>
-                  <groupId>org.mapstruct</groupId>
-                  <artifactId>mapstruct-processor</artifactId>
-                  <version>1.5.5.Final</version>
-                </path>
-                <path>
-                  <groupId>org.projectlombok</groupId>
-                  <artifactId>lombok-mapstruct-binding</artifactId>
-                  <version>0.2.0</version>
-                </path>
-              </annotationProcessorPaths>
-            </configuration>
-          </execution>
-          <execution>
-            <id>default-testCompile</id>
-            <phase>test-compile</phase>
-            <goals>
-              <goal>testCompile</goal>
-            </goals>
-            <configuration>
-              <source>17</source>
-              <target>17</target>
-              <encoding>UTF-8</encoding>
-              <annotationProcessorPaths>
-                <path>
-                  <groupId>org.projectlombok</groupId>
-                  <artifactId>lombok</artifactId>
-                  <version>1.18.32</version>
-                </path>
-                <path>
-                  <groupId>org.mapstruct</groupId>
-                  <artifactId>mapstruct-processor</artifactId>
-                  <version>1.5.5.Final</version>
-                </path>
-                <path>
-                  <groupId>org.projectlombok</groupId>
-                  <artifactId>lombok-mapstruct-binding</artifactId>
-                  <version>0.2.0</version>
-                </path>
-              </annotationProcessorPaths>
-            </configuration>
-          </execution>
-        </executions>
-        <configuration>
-          <source>17</source>
-          <target>17</target>
-          <encoding>UTF-8</encoding>
-          <annotationProcessorPaths>
-            <path>
-              <groupId>org.projectlombok</groupId>
-              <artifactId>lombok</artifactId>
-              <version>1.18.32</version>
-            </path>
-            <path>
-              <groupId>org.mapstruct</groupId>
-              <artifactId>mapstruct-processor</artifactId>
-              <version>1.5.5.Final</version>
-            </path>
-            <path>
-              <groupId>org.projectlombok</groupId>
-              <artifactId>lombok-mapstruct-binding</artifactId>
-              <version>0.2.0</version>
-            </path>
-          </annotationProcessorPaths>
-        </configuration>
-      </plugin>
-      <plugin>
-        <artifactId>maven-clean-plugin</artifactId>
-        <version>2.5</version>
-        <executions>
-          <execution>
-            <id>default-clean</id>
-            <phase>clean</phase>
-            <goals>
-              <goal>clean</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <artifactId>maven-resources-plugin</artifactId>
-        <version>2.6</version>
-        <executions>
-          <execution>
-            <id>default-testResources</id>
-            <phase>process-test-resources</phase>
-            <goals>
-              <goal>testResources</goal>
-            </goals>
-          </execution>
-          <execution>
-            <id>default-resources</id>
-            <phase>process-resources</phase>
-            <goals>
-              <goal>resources</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <artifactId>maven-jar-plugin</artifactId>
-        <version>2.4</version>
-        <executions>
-          <execution>
-            <id>default-jar</id>
-            <phase>package</phase>
-            <goals>
-              <goal>jar</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <artifactId>maven-surefire-plugin</artifactId>
-        <version>2.12.4</version>
-        <executions>
-          <execution>
-            <id>default-test</id>
-            <phase>test</phase>
-            <goals>
-              <goal>test</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <artifactId>maven-install-plugin</artifactId>
-        <version>2.4</version>
-        <executions>
-          <execution>
-            <id>default-install</id>
-            <phase>install</phase>
-            <goals>
-              <goal>install</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <artifactId>maven-deploy-plugin</artifactId>
-        <version>2.7</version>
-        <executions>
-          <execution>
-            <id>default-deploy</id>
-            <phase>deploy</phase>
-            <goals>
-              <goal>deploy</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <artifactId>maven-site-plugin</artifactId>
-        <version>3.3</version>
-        <executions>
-          <execution>
-            <id>default-site</id>
-            <phase>site</phase>
-            <goals>
-              <goal>site</goal>
-            </goals>
-            <configuration>
-              <outputDirectory>F:\project\Saas\ylrz_saas_his_scrm\fs-service\target\site</outputDirectory>
-              <reportPlugins>
-                <reportPlugin>
-                  <groupId>org.apache.maven.plugins</groupId>
-                  <artifactId>maven-project-info-reports-plugin</artifactId>
-                </reportPlugin>
-              </reportPlugins>
-            </configuration>
-          </execution>
-          <execution>
-            <id>default-deploy</id>
-            <phase>site-deploy</phase>
-            <goals>
-              <goal>deploy</goal>
-            </goals>
-            <configuration>
-              <outputDirectory>F:\project\Saas\ylrz_saas_his_scrm\fs-service\target\site</outputDirectory>
-              <reportPlugins>
-                <reportPlugin>
-                  <groupId>org.apache.maven.plugins</groupId>
-                  <artifactId>maven-project-info-reports-plugin</artifactId>
-                </reportPlugin>
-              </reportPlugins>
-            </configuration>
-          </execution>
-        </executions>
-        <configuration>
-          <outputDirectory>F:\project\Saas\ylrz_saas_his_scrm\fs-service\target\site</outputDirectory>
-          <reportPlugins>
-            <reportPlugin>
-              <groupId>org.apache.maven.plugins</groupId>
-              <artifactId>maven-project-info-reports-plugin</artifactId>
-            </reportPlugin>
-          </reportPlugins>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-  <reporting>
-    <outputDirectory>F:\project\Saas\ylrz_saas_his_scrm\fs-service\target\site</outputDirectory>
-  </reporting>
-</project>
-
-
-[INFO] ------------------------------------------------------------------------
-[INFO] BUILD SUCCESS
-[INFO] ------------------------------------------------------------------------
-[INFO] Total time:  0.920 s
-[INFO] Finished at: 2026-06-01T15:07:35+08:00
-[INFO] ------------------------------------------------------------------------

+ 0 - 26
fs-admin/pom.xml

@@ -93,32 +93,6 @@
             </exclusions>
         </dependency>
 
-
-
-        <!-- 定时任务框架 -->
-        <dependency>
-            <groupId>com.fs</groupId>
-            <artifactId>fs-quartz</artifactId>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.apache.tomcat</groupId>
-                    <artifactId>annotations-api</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-
-        <!-- 统一定时任务 Bean 模块(包含所有 Task 实现 + TaskRegistry + 手动触发接口) -->
-        <dependency>
-            <groupId>com.fs</groupId>
-            <artifactId>fs-task</artifactId>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.apache.tomcat</groupId>
-                    <artifactId>annotations-api</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-
         <!-- lombok -->
         <dependency>
             <groupId>org.projectlombok</groupId>

+ 87 - 0
fs-admin/src/main/java/com/fs/admin/controller/monitor/SysJobLogController.java

@@ -0,0 +1,87 @@
+package com.fs.admin.controller.monitor;
+
+import com.fs.common.annotation.Log;
+import com.fs.common.core.controller.BaseController;
+import com.fs.common.core.domain.AjaxResult;
+import com.fs.common.core.page.TableDataInfo;
+import com.fs.common.enums.BusinessType;
+import com.fs.common.utils.poi.ExcelUtil;
+import com.fs.quartz.domain.SysJobLog;
+import com.fs.quartz.service.ISysJobLogService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 调度日志操作处理
+ * 
+
+ */
+@RestController
+@RequestMapping("/monitor/jobLog")
+public class SysJobLogController extends BaseController
+{
+    @Autowired
+    private ISysJobLogService jobLogService;
+
+    /**
+     * 查询定时任务调度日志列表
+     */
+    @PreAuthorize("@ss.hasPermi('monitor:job:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(SysJobLog sysJobLog)
+    {
+        startPage();
+        List<SysJobLog> list = jobLogService.selectJobLogList(sysJobLog);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出定时任务调度日志列表
+     */
+    @PreAuthorize("@ss.hasPermi('monitor:job:export')")
+    @Log(title = "任务调度日志", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(SysJobLog sysJobLog)
+    {
+        List<SysJobLog> list = jobLogService.selectJobLogList(sysJobLog);
+        ExcelUtil<SysJobLog> util = new ExcelUtil<SysJobLog>(SysJobLog.class);
+        return util.exportExcel(list, "调度日志");
+    }
+    
+    /**
+     * 根据调度编号获取详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('monitor:job:query')")
+    @GetMapping(value = "/{configId}")
+    public AjaxResult getInfo(@PathVariable Long jobLogId)
+    {
+        return AjaxResult.success(jobLogService.selectJobLogById(jobLogId));
+    }
+
+
+    /**
+     * 删除定时任务调度日志
+     */
+    @PreAuthorize("@ss.hasPermi('monitor:job:remove')")
+    @Log(title = "定时任务调度日志", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{jobLogIds}")
+    public AjaxResult remove(@PathVariable Long[] jobLogIds)
+    {
+        return toAjax(jobLogService.deleteJobLogByIds(jobLogIds));
+    }
+
+    /**
+     * 清空定时任务调度日志
+     */
+    @PreAuthorize("@ss.hasPermi('monitor:job:remove')")
+    @Log(title = "调度日志", businessType = BusinessType.CLEAN)
+    @DeleteMapping("/clean")
+    public AjaxResult clean()
+    {
+        jobLogService.cleanJobLog();
+        return AjaxResult.success();
+    }
+}

+ 8 - 0
fs-admin/src/main/java/com/fs/admin/controller/monitor/TenantJobController.java

@@ -88,6 +88,14 @@ public class TenantJobController extends BaseController {
         return AjaxResult.success();
     }
 
+    /** 保存租户任务分配:精确设置某租户对应的模板列表(templateIds 为空则取消全部分配) */
+    @PreAuthorize("@ss.hasPermi('monitor:job:edit')")
+    @PutMapping("/config")
+    public AjaxResult saveTenantConfig(@RequestBody TenantJobConfigSaveDTO dto) {
+        tenantJobConfigService.saveTenantConfig(dto, getUsername());
+        return AjaxResult.success();
+    }
+
     /** 同步全部模板到指定租户库(自动创建缺失的 config) */
     @PreAuthorize("@ss.hasPermi('monitor:job:edit')")
     @PostMapping("/sync/{tenantId}")

+ 0 - 13
fs-agent/pom.xml

@@ -77,19 +77,6 @@
             <artifactId>fs-service</artifactId>
         </dependency>
 
-
-
-        <!-- 定时任务-->
-        <dependency>
-            <groupId>com.fs</groupId>
-            <artifactId>fs-quartz</artifactId>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.apache.tomcat</groupId>
-                    <artifactId>annotations-api</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
         <!-- lombok -->
         <dependency>
             <groupId>org.projectlombok</groupId>

+ 5 - 0
fs-common/pom.xml

@@ -156,6 +156,11 @@
             <artifactId>commons-lang</artifactId>
             <version>2.6</version> <!-- 稳定版本,兼容大部分场景 -->
         </dependency>
+
+        <dependency>
+            <groupId>com.cronutils</groupId>
+            <artifactId>cron-utils</artifactId>
+        </dependency>
     </dependencies>
 
 </project>

+ 110 - 0
fs-common/src/main/java/com/fs/common/utils/CronUtils.java

@@ -0,0 +1,110 @@
+package com.fs.common.utils;
+
+import com.cronutils.model.Cron;
+import com.cronutils.model.CronType;
+import com.cronutils.model.definition.CronDefinition;
+import com.cronutils.model.definition.CronDefinitionBuilder;
+import com.cronutils.model.time.ExecutionTime;
+import com.cronutils.parser.CronParser;
+
+import java.text.ParseException;
+import java.time.ZonedDateTime;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.Optional;
+
+/**
+ * cron表达式工具类
+ * 
+
+ *
+ */
+public class CronUtils
+{
+    private static final CronDefinition CRON_DEFINITION = CronDefinitionBuilder.instanceDefinitionFor(CronType.QUARTZ);
+
+    private static final CronParser CRON_PARSER = new CronParser(CRON_DEFINITION);
+
+    /**
+     * 返回一个布尔值代表一个给定的Cron表达式的有效性
+     */
+    public static boolean isValid(String cronExpression)
+    {
+        try {
+            CRON_PARSER.parse(cronExpression).validate();
+            return true;
+        } catch (Exception e) {
+            return false;
+        }
+    }
+
+    /**
+     * 返回一个字符串值,表示该消息无效Cron表达式给出有效性
+     */
+    public static String getInvalidMessage(String cronExpression)
+    {
+        try {
+            CRON_PARSER.parse(cronExpression).validate();
+            return null;
+        } catch (Exception e) {
+            return e.getMessage();
+        }
+    }
+
+    /**
+     * 返回下一个执行时间根据给定的Cron表达式
+     *
+     * @param cronExpression Cron表达式
+     * @return Date 下次Cron表达式执行时间
+     */
+    public static Date getNextExecution(String cronExpression)
+    {
+        try {
+            Cron cron = CRON_PARSER.parse(cronExpression);
+            cron.validate();
+
+            ExecutionTime executionTime = ExecutionTime.forCron(cron);
+
+            Optional<ZonedDateTime> next = executionTime.nextExecution(ZonedDateTime.now());
+
+            return next.map(zdt -> Date.from(zdt.toInstant())).orElse(null);
+        } catch (Exception e) {
+            throw new IllegalArgumentException(e.getMessage(), e);
+        }
+    }
+
+    /**
+     * 判断 cron 表达式是否在当前这一分钟内会触发(用于 SaaS 租户任务分发器)
+     *
+     * @param cronExpression cron 表达式
+     * @return 当前分钟内会触发返回 true
+     */
+    public static boolean isDueInThisMinute(String cronExpression) {
+        if (cronExpression == null || cronExpression.isBlank()) {
+            return false;
+        }
+
+        try {
+
+            Cron cron = CRON_PARSER.parse(cronExpression);
+            cron.validate();
+
+            ExecutionTime executionTime = ExecutionTime.forCron(cron);
+
+            ZonedDateTime now = ZonedDateTime.now();
+
+            ZonedDateTime startOfMinute = now.withSecond(0).withNano(0);
+
+            ZonedDateTime startOfNextMinute = startOfMinute.plusMinutes(1);
+
+            // 与 Quartz 版本保持一致
+            ZonedDateTime base = startOfMinute.minusNanos(1);
+
+            Optional<ZonedDateTime> next = executionTime.nextExecution(base);
+
+            return next.isPresent() && !next.get().isBefore(startOfMinute) && next.get().isBefore(startOfNextMinute);
+        } catch (Exception e) {
+            return false;
+        }
+    }
+}

+ 0 - 40
fs-quartz/pom.xml

@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>fs</artifactId>
-        <groupId>com.fs</groupId>
-        <version>1.1.0</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>fs-quartz</artifactId>
-
-    <description>
-        quartz定时任务
-    </description>
-
-    <dependencies>
-
-        <!-- 定时任务 -->
-        <dependency>
-            <groupId>org.quartz-scheduler</groupId>
-            <artifactId>quartz</artifactId>
-            <exclusions>
-                <exclusion>
-                    <groupId>com.mchange</groupId>
-                    <artifactId>c3p0</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-
-        <!-- 通用工具-->
-        <dependency>
-            <groupId>com.fs</groupId>
-            <artifactId>fs-common</artifactId>
-        </dependency>
-
-    </dependencies>
-
-</project>

+ 0 - 167
fs-quartz/src/main/java/com/fs/quartz/controller/SysJobController.java

@@ -1,167 +0,0 @@
-package com.fs.quartz.controller;
-
-import java.util.List;
-import org.quartz.SchedulerException;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.fs.common.annotation.Log;
-import com.fs.common.constant.Constants;
-import com.fs.common.core.controller.BaseController;
-import com.fs.common.core.domain.AjaxResult;
-import com.fs.common.core.page.TableDataInfo;
-import com.fs.common.enums.BusinessType;
-import com.fs.common.exception.job.TaskException;
-import com.fs.common.utils.StringUtils;
-import com.fs.common.utils.poi.ExcelUtil;
-import com.fs.quartz.domain.SysJob;
-import com.fs.quartz.service.ISysJobService;
-import com.fs.quartz.util.CronUtils;
-
-/**
- * 调度任务信息操作处理
- * 
-
- */
-@RestController
-@RequestMapping("/monitor/job")
-public class SysJobController extends BaseController
-{
-    @Autowired
-    private ISysJobService jobService;
-
-    /**
-     * 查询定时任务列表
-     */
-    @PreAuthorize("@ss.hasPermi('monitor:job:list')")
-    @GetMapping("/list")
-    public TableDataInfo list(SysJob sysJob)
-    {
-        startPage();
-        List<SysJob> list = jobService.selectJobList(sysJob);
-        return getDataTable(list);
-    }
-
-    /**
-     * 导出定时任务列表
-     */
-    @PreAuthorize("@ss.hasPermi('monitor:job:export')")
-    @Log(title = "定时任务", businessType = BusinessType.EXPORT)
-    @GetMapping("/export")
-    public AjaxResult export(SysJob sysJob)
-    {
-        List<SysJob> list = jobService.selectJobList(sysJob);
-        ExcelUtil<SysJob> util = new ExcelUtil<SysJob>(SysJob.class);
-        return util.exportExcel(list, "定时任务");
-    }
-
-    /**
-     * 获取定时任务详细信息
-     */
-    @PreAuthorize("@ss.hasPermi('monitor:job:query')")
-    @GetMapping(value = "/{jobId}")
-    public AjaxResult getInfo(@PathVariable("jobId") Long jobId)
-    {
-        return AjaxResult.success(jobService.selectJobById(jobId));
-    }
-
-    /**
-     * 新增定时任务
-     */
-    @PreAuthorize("@ss.hasPermi('monitor:job:add')")
-    @Log(title = "定时任务", businessType = BusinessType.INSERT)
-    @PostMapping
-    public AjaxResult add(@RequestBody SysJob job) throws SchedulerException, TaskException
-    {
-        if (!CronUtils.isValid(job.getCronExpression()))
-        {
-            return error("新增任务'" + job.getJobName() + "'失败,Cron表达式不正确");
-        }
-        else if (StringUtils.containsIgnoreCase(job.getInvokeTarget(), Constants.LOOKUP_RMI))
-        {
-            return error("新增任务'" + job.getJobName() + "'失败,目标字符串不允许'rmi://'调用");
-        }
-        else if (StringUtils.containsIgnoreCase(job.getInvokeTarget(), Constants.LOOKUP_LDAP))
-        {
-            return error("新增任务'" + job.getJobName() + "'失败,目标字符串不允许'ldap://'调用");
-        }
-        else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[] { Constants.HTTP, Constants.HTTPS }))
-        {
-            return error("新增任务'" + job.getJobName() + "'失败,目标字符串不允许'http(s)//'调用");
-        }
-        job.setCreateBy(getUsername());
-        return toAjax(jobService.insertJob(job));
-    }
-
-    /**
-     * 修改定时任务
-     */
-    @PreAuthorize("@ss.hasPermi('monitor:job:edit')")
-    @Log(title = "定时任务", businessType = BusinessType.UPDATE)
-    @PutMapping
-    public AjaxResult edit(@RequestBody SysJob job) throws SchedulerException, TaskException
-    {
-        if (!CronUtils.isValid(job.getCronExpression()))
-        {
-            return error("修改任务'" + job.getJobName() + "'失败,Cron表达式不正确");
-        }
-        else if (StringUtils.containsIgnoreCase(job.getInvokeTarget(), Constants.LOOKUP_RMI))
-        {
-            return error("修改任务'" + job.getJobName() + "'失败,目标字符串不允许'rmi://'调用");
-        }
-        else if (StringUtils.containsIgnoreCase(job.getInvokeTarget(), Constants.LOOKUP_LDAP))
-        {
-            return error("修改任务'" + job.getJobName() + "'失败,目标字符串不允许'ldap://'调用");
-        }
-        else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[] { Constants.HTTP, Constants.HTTPS }))
-        {
-            return error("修改任务'" + job.getJobName() + "'失败,目标字符串不允许'http(s)//'调用");
-        }
-        job.setUpdateBy(getUsername());
-        return toAjax(jobService.updateJob(job));
-    }
-
-    /**
-     * 定时任务状态修改
-     */
-    @PreAuthorize("@ss.hasPermi('monitor:job:changeStatus')")
-    @Log(title = "定时任务", businessType = BusinessType.UPDATE)
-    @PutMapping("/changeStatus")
-    public AjaxResult changeStatus(@RequestBody SysJob job) throws SchedulerException
-    {
-        SysJob newJob = jobService.selectJobById(job.getJobId());
-        newJob.setStatus(job.getStatus());
-        return toAjax(jobService.changeStatus(newJob));
-    }
-
-    /**
-     * 定时任务立即执行一次
-     */
-    @PreAuthorize("@ss.hasPermi('monitor:job:changeStatus')")
-    @Log(title = "定时任务", businessType = BusinessType.UPDATE)
-    @PutMapping("/run")
-    public AjaxResult run(@RequestBody SysJob job) throws SchedulerException
-    {
-        jobService.run(job);
-        return AjaxResult.success();
-    }
-
-    /**
-     * 删除定时任务
-     */
-    @PreAuthorize("@ss.hasPermi('monitor:job:remove')")
-    @Log(title = "定时任务", businessType = BusinessType.DELETE)
-    @DeleteMapping("/{jobIds}")
-    public AjaxResult remove(@PathVariable Long[] jobIds) throws SchedulerException, TaskException
-    {
-        jobService.deleteJobByIds(jobIds);
-        return AjaxResult.success();
-    }
-}

+ 0 - 165
fs-quartz/src/main/java/com/fs/quartz/controller/SysJobLogController.java

@@ -1,165 +0,0 @@
-package com.fs.quartz.controller;
-
-import java.util.List;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-import com.fs.common.annotation.Log;
-import com.fs.common.core.controller.BaseController;
-import com.fs.common.core.domain.AjaxResult;
-import com.fs.common.core.page.TableDataInfo;
-import com.fs.common.enums.BusinessType;
-import com.fs.common.utils.poi.ExcelUtil;
-import com.fs.common.utils.spring.SpringUtils;
-import com.fs.quartz.domain.SysJobLog;
-import com.fs.quartz.service.ISysJobLogService;
-
-/**
- * 调度日志操作处理
- * 
-
- */
-@RestController
-@RequestMapping("/monitor/jobLog")
-public class SysJobLogController extends BaseController
-{
-    @Autowired
-    private ISysJobLogService jobLogService;
-
-    /**
-     * 查询定时任务调度日志列表
-     * 支持 SaaS 平台后台跨租户查询:传入 tenantId 时自动切换到对应租户数据源执行查询,查询完成后自动还原。
-     */
-    @PreAuthorize("@ss.hasPermi('monitor:job:list')")
-    @GetMapping("/list")
-    public TableDataInfo list(SysJobLog sysJobLog, @RequestParam(value = "tenantId", required = false) Long tenantId)
-    {
-        try {
-            switchIfTenant(tenantId);
-            startPage();
-            List<SysJobLog> list = jobLogService.selectJobLogList(sysJobLog);
-            return getDataTable(list);
-        } finally {
-            clearIfSwitched(tenantId);
-        }
-    }
-
-    /**
-     * 导出定时任务调度日志列表
-     * 支持传入 tenantId 切换租户库导出。
-     */
-    @PreAuthorize("@ss.hasPermi('monitor:job:export')")
-    @Log(title = "任务调度日志", businessType = BusinessType.EXPORT)
-    @GetMapping("/export")
-    public AjaxResult export(SysJobLog sysJobLog, @RequestParam(value = "tenantId", required = false) Long tenantId)
-    {
-        try {
-            switchIfTenant(tenantId);
-            List<SysJobLog> list = jobLogService.selectJobLogList(sysJobLog);
-            ExcelUtil<SysJobLog> util = new ExcelUtil<SysJobLog>(SysJobLog.class);
-            return util.exportExcel(list, "调度日志");
-        } finally {
-            clearIfSwitched(tenantId);
-        }
-    }
-    
-    /**
-     * 根据调度编号获取详细信息
-     * 支持 tenantId 切换到对应租户库查询。
-     */
-    @PreAuthorize("@ss.hasPermi('monitor:job:query')")
-    @GetMapping(value = "/{jobLogId}")
-    public AjaxResult getInfo(@PathVariable Long jobLogId, @RequestParam(value = "tenantId", required = false) Long tenantId)
-    {
-        try {
-            switchIfTenant(tenantId);
-            return AjaxResult.success(jobLogService.selectJobLogById(jobLogId));
-        } finally {
-            clearIfSwitched(tenantId);
-        }
-    }
-
-
-    /**
-     * 删除定时任务调度日志
-     * 支持 tenantId,删除操作会在对应租户库执行(避免跨库误删)。
-     */
-    @PreAuthorize("@ss.hasPermi('monitor:job:remove')")
-    @Log(title = "定时任务调度日志", businessType = BusinessType.DELETE)
-    @DeleteMapping("/{jobLogIds}")
-    public AjaxResult remove(@PathVariable Long[] jobLogIds, @RequestParam(value = "tenantId", required = false) Long tenantId)
-    {
-        try {
-            switchIfTenant(tenantId);
-            return toAjax(jobLogService.deleteJobLogByIds(jobLogIds));
-        } finally {
-            clearIfSwitched(tenantId);
-        }
-    }
-
-    /**
-     * 清空定时任务调度日志
-     * 支持 tenantId:若指定则仅清空该租户库的日志;未指定则清空当前数据源(通常为主库平台日志)。
-     */
-    @PreAuthorize("@ss.hasPermi('monitor:job:remove')")
-    @Log(title = "调度日志", businessType = BusinessType.CLEAN)
-    @DeleteMapping("/clean")
-    public AjaxResult clean(@RequestParam(value = "tenantId", required = false) Long tenantId)
-    {
-        try {
-            switchIfTenant(tenantId);
-            jobLogService.cleanJobLog();
-            return AjaxResult.success();
-        } finally {
-            clearIfSwitched(tenantId);
-        }
-    }
-
-    // ==================== 内部辅助:SaaS 租户数据源临时切换(运行时通过 SpringUtils 获取,避免 fs-quartz 模块直接依赖 framework 导致循环) ====================
-
-    private Object getTenantDataSourceManager() {
-        try {
-            return SpringUtils.getBean("tenantDataSourceManager");
-        } catch (Exception e) {
-            return null;
-        }
-    }
-
-    private void switchIfTenant(Long tenantId) {
-        if (tenantId == null) return;
-        Object mgr = getTenantDataSourceManager();
-        if (mgr == null) return;
-        try {
-            // 调用 ensureSwitchByTenantId(Long)
-            java.lang.reflect.Method m = mgr.getClass().getMethod("ensureSwitchByTenantId", Long.class);
-            m.invoke(mgr, tenantId);
-        } catch (Exception ignore) {
-            // 切换失败则继续用当前 ds(不影响主流程)
-        }
-    }
-
-    private void clearIfSwitched(Long tenantId) {
-        if (tenantId == null) return;
-        Object mgr = getTenantDataSourceManager();
-        if (mgr == null) return;
-        try {
-            // 优先用 mgr.clear() 如果有,否则直接清 holder
-            try {
-                java.lang.reflect.Method clearM = mgr.getClass().getMethod("clear");
-                clearM.invoke(mgr);
-                return;
-            } catch (NoSuchMethodException nsme) {
-                // fallback
-            }
-            // fallback: 直接清 ThreadLocal
-            Class<?> holder = Class.forName("com.fs.framework.datasource.DynamicDataSourceContextHolder");
-            java.lang.reflect.Method clearHolder = holder.getMethod("clearDataSourceType");
-            clearHolder.invoke(null);
-        } catch (Exception ignore) {}
-    }
-}

+ 0 - 95
fs-quartz/src/main/java/com/fs/quartz/util/CronUtils.java

@@ -1,95 +0,0 @@
-package com.fs.quartz.util;
-
-import java.text.ParseException;
-import java.util.Calendar;
-import java.util.Date;
-import org.quartz.CronExpression;
-
-/**
- * cron表达式工具类
- * 
-
- *
- */
-public class CronUtils
-{
-    /**
-     * 返回一个布尔值代表一个给定的Cron表达式的有效性
-     *
-     * @param cronExpression Cron表达式
-     * @return boolean 表达式是否有效
-     */
-    public static boolean isValid(String cronExpression)
-    {
-        return CronExpression.isValidExpression(cronExpression);
-    }
-
-    /**
-     * 返回一个字符串值,表示该消息无效Cron表达式给出有效性
-     *
-     * @param cronExpression Cron表达式
-     * @return String 无效时返回表达式错误描述,如果有效返回null
-     */
-    public static String getInvalidMessage(String cronExpression)
-    {
-        try
-        {
-            new CronExpression(cronExpression);
-            return null;
-        }
-        catch (ParseException pe)
-        {
-            return pe.getMessage();
-        }
-    }
-
-    /**
-     * 返回下一个执行时间根据给定的Cron表达式
-     *
-     * @param cronExpression Cron表达式
-     * @return Date 下次Cron表达式执行时间
-     */
-    public static Date getNextExecution(String cronExpression)
-    {
-        try
-        {
-            CronExpression cron = new CronExpression(cronExpression);
-            return cron.getNextValidTimeAfter(new Date(System.currentTimeMillis()));
-        }
-        catch (ParseException e)
-        {
-            throw new IllegalArgumentException(e.getMessage());
-        }
-    }
-
-    /**
-     * 判断 cron 表达式是否在当前这一分钟内会触发(用于 SaaS 租户任务分发器)
-     *
-     * @param cronExpression cron 表达式
-     * @return 当前分钟内会触发返回 true
-     */
-    public static boolean isDueInThisMinute(String cronExpression) {
-        if (cronExpression == null || cronExpression.isEmpty()) {
-            return false;
-        }
-        try {
-            CronExpression cron = new CronExpression(cronExpression);
-
-            Calendar cal = Calendar.getInstance();
-            cal.set(Calendar.SECOND, 0);
-            cal.set(Calendar.MILLISECOND, 0);
-
-            Date startOfMinute = cal.getTime();
-            cal.add(Calendar.MINUTE, 1);
-            Date startOfNextMinute = cal.getTime();
-
-            // 关键:用 startOfMinute 往前挪一点,才能把 “刚好等于 startOfMinute(00秒)” 的触发点算进来
-            Date base = new Date(startOfMinute.getTime() - 1);
-
-            Date next = cron.getNextValidTimeAfter(base);
-            return next != null && !next.before(startOfMinute) && next.before(startOfNextMinute);
-        } catch (ParseException e) {
-            return false;
-        }
-    }
-}

+ 0 - 6
fs-service/pom.xml

@@ -43,12 +43,6 @@
             <artifactId>IJPay-All</artifactId>
         </dependency>
 
-        <!-- 定时任务(统一使用 fs-quartz,避免与 fs-service 内重复拷贝的 com.fs.quartz.* 冲突) -->
-        <dependency>
-            <groupId>com.fs</groupId>
-            <artifactId>fs-quartz</artifactId>
-        </dependency>
-
         <dependency>
             <groupId>cn.jpush.api</groupId>
             <artifactId>jpush-client</artifactId>

+ 7 - 6
fs-quartz/src/main/java/com/fs/quartz/domain/SysJob.java → fs-service/src/main/java/com/fs/quartz/domain/SysJob.java

@@ -1,17 +1,18 @@
 package com.fs.quartz.domain;
 
-import java.util.Date;
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.Size;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fs.common.annotation.Excel;
 import com.fs.common.annotation.Excel.ColumnType;
 import com.fs.common.constant.ScheduleConstants;
 import com.fs.common.core.domain.BaseEntity;
+import com.fs.common.utils.CronUtils;
 import com.fs.common.utils.StringUtils;
-import com.fs.quartz.util.CronUtils;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Size;
+import java.util.Date;
 
 /**
  * 定时任务调度表 sys_job

+ 4 - 3
fs-quartz/src/main/java/com/fs/quartz/domain/SysJobLog.java → fs-service/src/main/java/com/fs/quartz/domain/SysJobLog.java

@@ -1,10 +1,11 @@
 package com.fs.quartz.domain;
 
-import java.util.Date;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
 import com.fs.common.annotation.Excel;
 import com.fs.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
 
 /**
  * 定时任务调度日志表 sys_job_log

+ 2 - 1
fs-quartz/src/main/java/com/fs/quartz/mapper/SysJobLogMapper.java → fs-service/src/main/java/com/fs/quartz/mapper/SysJobLogMapper.java

@@ -1,8 +1,9 @@
 package com.fs.quartz.mapper;
 
-import java.util.List;
 import com.fs.quartz.domain.SysJobLog;
 
+import java.util.List;
+
 /**
  * 调度任务日志信息 数据层
  * 

+ 2 - 1
fs-quartz/src/main/java/com/fs/quartz/mapper/SysJobMapper.java → fs-service/src/main/java/com/fs/quartz/mapper/SysJobMapper.java

@@ -1,8 +1,9 @@
 package com.fs.quartz.mapper;
 
-import java.util.List;
 import com.fs.quartz.domain.SysJob;
 
+import java.util.List;
+
 /**
  * 调度任务信息 数据层
  *

+ 0 - 65
fs-service/src/main/java/com/fs/quartz/saas/QuartzSaaSConfig.java

@@ -1,65 +0,0 @@
-package com.fs.quartz.saas;
-
-import com.fs.common.constant.ScheduleConstants;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.quartz.CronScheduleBuilder;
-import org.quartz.CronTrigger;
-import org.quartz.JobBuilder;
-import org.quartz.JobDetail;
-import org.quartz.Scheduler;
-import org.quartz.TriggerBuilder;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.DependsOn;
-
-import javax.annotation.PostConstruct;
-import javax.annotation.Resource;
-
-/**
- * SaaS mode: register only tenant job dispatcher; it runs tenant sys_job per tenant DB.
- */
-@Configuration
-@DependsOn("sysJobServiceImpl")
-public class QuartzSaaSConfig {
-
-    private static final Logger log = LoggerFactory.getLogger(QuartzSaaSConfig.class);
-
-    private static final String DISPATCHER_JOB_NAME = "TenantJobDispatcher";
-    private static final String DISPATCHER_GROUP = "SAAS_DISPATCHER";
-    private static final String DEFAULT_DISPATCHER_CRON = "0 * * * * ?";
-
-    @Value("${saas.quartz.tenant-dispatcher-only:false}")
-    private boolean tenantDispatcherOnly;
-
-    @Value("${saas.quartz.dispatcher-cron:" + DEFAULT_DISPATCHER_CRON + "}")
-    private String dispatcherCron;
-
-    @Resource
-    private Scheduler scheduler;
-
-    @PostConstruct
-    public void registerDispatcherIfSaaS() {
-        if (!tenantDispatcherOnly) {
-            return;
-        }
-        try {
-            if (scheduler.checkExists(org.quartz.JobKey.jobKey(DISPATCHER_JOB_NAME, DISPATCHER_GROUP))) {
-                log.info("[SaaS Quartz] tenant dispatcher already registered");
-                return;
-            }
-            JobDetail jobDetail = JobBuilder.newJob(TenantJobDispatcherJob.class)
-                    .withIdentity(DISPATCHER_JOB_NAME, DISPATCHER_GROUP)
-                    .build();
-            CronTrigger trigger = TriggerBuilder.newTrigger()
-                    .withIdentity(ScheduleConstants.TASK_CLASS_NAME + DISPATCHER_JOB_NAME, DISPATCHER_GROUP)
-                    .withSchedule(CronScheduleBuilder.cronSchedule(dispatcherCron))
-                    .build();
-            scheduler.scheduleJob(jobDetail, trigger);
-            log.info("[SaaS Quartz] tenant dispatcher registered, cron={}", dispatcherCron);
-        } catch (Exception e) {
-            log.error("[SaaS Quartz] register tenant dispatcher failed", e);
-            throw new IllegalStateException("register tenant dispatcher failed", e);
-        }
-    }
-}

+ 0 - 115
fs-service/src/main/java/com/fs/quartz/saas/TenantJobDispatcherJob.java

@@ -1,115 +0,0 @@
-package com.fs.quartz.saas;
-
-import com.fs.common.config.RedisTenantContext;
-import com.fs.common.core.domain.model.TenantPrincipal;
-import com.fs.common.enums.DataSourceType;
-import com.fs.config.saas.ProjectConfig;
-import com.fs.core.config.TenantConfigContext;
-import com.fs.framework.datasource.DynamicDataSourceContextHolder;
-import com.fs.framework.datasource.TenantDataSourceManager;
-import com.fs.quartz.domain.SysJob;
-import com.fs.quartz.mapper.SysJobMapper;
-import com.fs.quartz.util.CronUtils;
-import com.fs.quartz.util.JobInvokeUtil;
-import com.fs.system.domain.SysConfig;
-import com.fs.system.mapper.SysConfigMapper;
-import com.fs.tenant.domain.TenantInfo;
-import com.fs.tenant.service.TenantInfoService;
-import com.fs.common.utils.spring.SpringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.quartz.Job;
-import org.quartz.JobExecutionContext;
-import org.quartz.JobExecutionException;
-import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-import org.springframework.security.core.context.SecurityContextHolder;
-
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * SaaS tenant job dispatcher: load active tenants from master, switch DB, run due sys_job in tenant library.
- */
-public class TenantJobDispatcherJob implements Job {
-
-    private static final Logger log = LoggerFactory.getLogger(TenantJobDispatcherJob.class);
-
-    @Override
-    public void execute(JobExecutionContext context) throws JobExecutionException {
-        TenantDataSourceManager tenantDataSourceManager = SpringUtils.getBean(TenantDataSourceManager.class);
-        TenantInfoService tenantInfoService = SpringUtils.getBean(TenantInfoService.class);
-        SysJobMapper sysJobMapper = SpringUtils.getBean(SysJobMapper.class);
-        SysConfigMapper sysConfigMapper = SpringUtils.getBean(SysConfigMapper.class);
-
-        try {
-            DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
-            TenantInfo query = new TenantInfo();
-            query.setStatus(1);
-            List<TenantInfo> tenants = tenantInfoService.selectTenantInfoList(query);
-            if (tenants == null || tenants.isEmpty()) {
-                return;
-            }
-            Date now = new Date();
-            List<TenantInfo> validTenants = tenants.stream()
-                    .filter(t -> t.getExpireTime() == null || !t.getExpireTime().before(now))
-                    .collect(Collectors.toList());
-
-            for (TenantInfo tenant : validTenants) {
-                try {
-                    dispatchForTenant(tenant, tenantDataSourceManager, sysJobMapper, sysConfigMapper);
-                } catch (Exception e) {
-                    log.error("[SaaS Quartz] tenant tenantId={}, tenantCode={} dispatch error",
-                            tenant.getId(), tenant.getTenantCode(), e);
-                } finally {
-                    ProjectConfig.clearTenantConfigs();
-                    TenantConfigContext.clear();
-                    RedisTenantContext.clear();
-                    SecurityContextHolder.clearContext();
-                    DynamicDataSourceContextHolder.clearDataSourceType();
-                }
-            }
-        } finally {
-            DynamicDataSourceContextHolder.clearDataSourceType();
-        }
-    }
-
-    private void dispatchForTenant(TenantInfo tenant, TenantDataSourceManager tenantDataSourceManager,
-                                   SysJobMapper sysJobMapper, SysConfigMapper sysConfigMapper) throws Exception {
-        tenantDataSourceManager.switchTenant(tenant);
-        RedisTenantContext.setTenantId(tenant.getId());
-        SecurityContextHolder.getContext().setAuthentication(
-                new UsernamePasswordAuthenticationToken(
-                        new TenantPrincipal(tenant.getId()), null, Collections.emptyList()));
-
-        SysConfig cfg = sysConfigMapper.selectConfigByConfigKey("projectConfig");
-        ProjectConfig.safeLoadTenantConfigFromValue(cfg != null ? cfg.getConfigValue() : null);
-
-        List<SysJob> allJobs = sysJobMapper.selectJobAll();
-        if (allJobs == null || allJobs.isEmpty()) {
-            return;
-        }
-        List<SysJob> dueJobs = allJobs.stream()
-                .filter(j -> "0".equals(j.getStatus()))
-                .filter(j -> CronUtils.isDueInThisMinute(j.getCronExpression()))
-                .collect(Collectors.toList());
-
-        for (SysJob job : dueJobs) {
-            String taskName = job.getJobName() != null ? job.getJobName() : job.getInvokeTarget();
-            log.info("[SaaS Quartz] dataSource=tenant:{}, tenantId={}, tenantCode={}, task={}",
-                    tenant.getId(), tenant.getId(), tenant.getTenantCode(), taskName);
-            try {
-                if (!JobInvokeUtil.isInvokeTargetAvailable(job)) {
-                    log.debug("[SaaS Quartz] tenantId={} skip jobId={}, bean unavailable: {}",
-                            tenant.getId(), job.getJobId(), job.getInvokeTarget());
-                    continue;
-                }
-                JobInvokeUtil.invokeMethod(job);
-            } catch (Exception e) {
-                log.error("[SaaS Quartz] tenantId={} jobId={}, invokeTarget={} failed",
-                        tenant.getId(), job.getJobId(), job.getInvokeTarget(), e);
-            }
-        }
-    }
-}

+ 2 - 1
fs-quartz/src/main/java/com/fs/quartz/service/ISysJobLogService.java → fs-service/src/main/java/com/fs/quartz/service/ISysJobLogService.java

@@ -1,8 +1,9 @@
 package com.fs.quartz.service;
 
-import java.util.List;
 import com.fs.quartz.domain.SysJobLog;
 
+import java.util.List;
+
 /**
  * 定时任务调度日志信息信息 服务层
  * 

+ 10 - 11
fs-quartz/src/main/java/com/fs/quartz/service/ISysJobService.java → fs-service/src/main/java/com/fs/quartz/service/ISysJobService.java

@@ -1,10 +1,10 @@
 package com.fs.quartz.service;
 
-import java.util.List;
-import org.quartz.SchedulerException;
 import com.fs.common.exception.job.TaskException;
 import com.fs.quartz.domain.SysJob;
 
+import java.util.List;
+
 /**
  * 定时任务调度信息信息 服务层
  * 
@@ -34,7 +34,7 @@ public interface ISysJobService
      * @param job 调度信息
      * @return 结果
      */
-    public int pauseJob(SysJob job) throws SchedulerException;
+    public int pauseJob(SysJob job);
 
     /**
      * 恢复任务
@@ -42,7 +42,7 @@ public interface ISysJobService
      * @param job 调度信息
      * @return 结果
      */
-    public int resumeJob(SysJob job) throws SchedulerException;
+    public int resumeJob(SysJob job);
 
     /**
      * 删除任务后,所对应的trigger也将被删除
@@ -50,7 +50,7 @@ public interface ISysJobService
      * @param job 调度信息
      * @return 结果
      */
-    public int deleteJob(SysJob job) throws SchedulerException;
+    public int deleteJob(SysJob job);
 
     /**
      * 批量删除调度信息
@@ -58,7 +58,7 @@ public interface ISysJobService
      * @param jobIds 需要删除的任务ID
      * @return 结果
      */
-    public void deleteJobByIds(Long[] jobIds) throws SchedulerException;
+    public void deleteJobByIds(Long[] jobIds);
 
     /**
      * 任务调度状态修改
@@ -66,7 +66,7 @@ public interface ISysJobService
      * @param job 调度信息
      * @return 结果
      */
-    public int changeStatus(SysJob job) throws SchedulerException;
+    public int changeStatus(SysJob job);
 
     /**
      * 立即运行任务
@@ -74,15 +74,14 @@ public interface ISysJobService
      * @param job 调度信息
      * @return 结果
      */
-    public void run(SysJob job) throws SchedulerException;
-
+    public void run(SysJob job);
     /**
      * 新增任务
      * 
      * @param job 调度信息
      * @return 结果
      */
-    public int insertJob(SysJob job) throws SchedulerException, TaskException;
+    public int insertJob(SysJob job);
 
     /**
      * 更新任务
@@ -90,7 +89,7 @@ public interface ISysJobService
      * @param job 调度信息
      * @return 结果
      */
-    public int updateJob(SysJob job) throws SchedulerException, TaskException;
+    public int updateJob(SysJob job);
 
     /**
      * 校验cron表达式是否有效

+ 4 - 3
fs-quartz/src/main/java/com/fs/quartz/service/impl/SysJobLogServiceImpl.java → fs-service/src/main/java/com/fs/quartz/service/impl/SysJobLogServiceImpl.java

@@ -1,11 +1,12 @@
 package com.fs.quartz.service.impl;
 
-import java.util.List;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
 import com.fs.quartz.domain.SysJobLog;
 import com.fs.quartz.mapper.SysJobLogMapper;
 import com.fs.quartz.service.ISysJobLogService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
 
 /**
  * 定时任务调度日志信息 服务层

+ 51 - 81
fs-quartz/src/main/java/com/fs/quartz/service/impl/SysJobServiceImpl.java → fs-service/src/main/java/com/fs/quartz/service/impl/SysJobServiceImpl.java

@@ -1,22 +1,14 @@
 package com.fs.quartz.service.impl;
 
-import java.util.List;
-import javax.annotation.PostConstruct;
-import org.quartz.JobDataMap;
-import org.quartz.JobKey;
-import org.quartz.Scheduler;
-import org.quartz.SchedulerException;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 import com.fs.common.constant.ScheduleConstants;
-import com.fs.common.exception.job.TaskException;
+import com.fs.common.utils.CronUtils;
 import com.fs.quartz.domain.SysJob;
 import com.fs.quartz.mapper.SysJobMapper;
 import com.fs.quartz.service.ISysJobService;
-import com.fs.quartz.util.CronUtils;
-import com.fs.quartz.util.ScheduleUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
 
 /**
  * 定时任务调度信息 服务层
@@ -26,40 +18,26 @@ import com.fs.quartz.util.ScheduleUtils;
 @Service
 public class SysJobServiceImpl implements ISysJobService
 {
-    @Autowired
-    private Scheduler scheduler;
+//    @Autowired
+//    private Scheduler scheduler;
 
     @Autowired
     private SysJobMapper jobMapper;
 
-    /** SaaS 模式:仅清空调度器,不从当前库加载任务;由 fs-admin 的 QuartzSaaSConfig 注册租户任务分发器,由分发器按租户执行各库 sys_job */
-    @Value("${saas.quartz.tenant-dispatcher-only:false}")
-    private boolean tenantDispatcherOnly;
-
-    /**
-     * 项目启动时,初始化定时器 主要是防止手动修改数据库导致未同步到定时任务处理(注:不能手动修改数据库ID和任务组名,否则会导致脏数据)
-     * SaaS 模式下仅清空调度器,具体任务由租户分发器按租户执行。
-     */
-    @PostConstruct
-    public void init() throws SchedulerException, TaskException
-    {
-        scheduler.clear();
-        if (tenantDispatcherOnly)
-        {
-            // Master sys_job = platform-only tasks; tenant tasks run via TenantJobDispatcherJob in tenant DB
-            List<SysJob> jobList = jobMapper.selectJobAll();
-            for (SysJob job : jobList)
-            {
-                ScheduleUtils.createScheduleJob(scheduler, job);
-            }
-            return;
-        }
-        List<SysJob> jobList = jobMapper.selectJobAll();
-        for (SysJob job : jobList)
-        {
-            ScheduleUtils.createScheduleJob(scheduler, job);
-        }
-    }
+//    /**
+//     * 项目启动时,初始化定时器 主要是防止手动修改数据库导致未同步到定时任务处理(注:不能手动修改数据库ID和任务组名,否则会导致脏数据)
+//     * SaaS 模式下仅清空调度器,具体任务由租户分发器按租户执行。
+//     */
+//    @PostConstruct
+//    public void init() throws SchedulerException, TaskException
+//    {
+//        scheduler.clear();
+//        List<SysJob> jobList = jobMapper.selectJobAll();
+//        for (SysJob job : jobList)
+//        {
+//            ScheduleUtils.createScheduleJob(scheduler, job);
+//        }
+//    }
 
     /**
      * 获取quartz调度器的计划任务列表
@@ -91,8 +69,7 @@ public class SysJobServiceImpl implements ISysJobService
      * @param job 调度信息
      */
     @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int pauseJob(SysJob job) throws SchedulerException
+    public int pauseJob(SysJob job)
     {
         Long jobId = job.getJobId();
         String jobGroup = job.getJobGroup();
@@ -100,7 +77,7 @@ public class SysJobServiceImpl implements ISysJobService
         int rows = jobMapper.updateJob(job);
         if (rows > 0)
         {
-            scheduler.pauseJob(ScheduleUtils.getJobKey(jobId, jobGroup));
+//            scheduler.pauseJob(ScheduleUtils.getJobKey(jobId, jobGroup));
         }
         return rows;
     }
@@ -111,8 +88,7 @@ public class SysJobServiceImpl implements ISysJobService
      * @param job 调度信息
      */
     @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int resumeJob(SysJob job) throws SchedulerException
+    public int resumeJob(SysJob job)
     {
         Long jobId = job.getJobId();
         String jobGroup = job.getJobGroup();
@@ -120,7 +96,7 @@ public class SysJobServiceImpl implements ISysJobService
         int rows = jobMapper.updateJob(job);
         if (rows > 0)
         {
-            scheduler.resumeJob(ScheduleUtils.getJobKey(jobId, jobGroup));
+//            scheduler.resumeJob(ScheduleUtils.getJobKey(jobId, jobGroup));
         }
         return rows;
     }
@@ -131,15 +107,14 @@ public class SysJobServiceImpl implements ISysJobService
      * @param job 调度信息
      */
     @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int deleteJob(SysJob job) throws SchedulerException
+    public int deleteJob(SysJob job)
     {
         Long jobId = job.getJobId();
         String jobGroup = job.getJobGroup();
         int rows = jobMapper.deleteJobById(jobId);
         if (rows > 0)
         {
-            scheduler.deleteJob(ScheduleUtils.getJobKey(jobId, jobGroup));
+//            scheduler.deleteJob(ScheduleUtils.getJobKey(jobId, jobGroup));
         }
         return rows;
     }
@@ -151,13 +126,12 @@ public class SysJobServiceImpl implements ISysJobService
      * @return 结果
      */
     @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void deleteJobByIds(Long[] jobIds) throws SchedulerException
+    public void deleteJobByIds(Long[] jobIds)
     {
         for (Long jobId : jobIds)
         {
             SysJob job = jobMapper.selectJobById(jobId);
-            deleteJob(job);
+//            deleteJob(job);
         }
     }
 
@@ -167,8 +141,7 @@ public class SysJobServiceImpl implements ISysJobService
      * @param job 调度信息
      */
     @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int changeStatus(SysJob job) throws SchedulerException
+    public int changeStatus(SysJob job)
     {
         int rows = 0;
         String status = job.getStatus();
@@ -189,16 +162,15 @@ public class SysJobServiceImpl implements ISysJobService
      * @param job 调度信息
      */
     @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void run(SysJob job) throws SchedulerException
+    public void run(SysJob job)
     {
-        Long jobId = job.getJobId();
-        String jobGroup = job.getJobGroup();
-        SysJob properties = selectJobById(job.getJobId());
-        // 参数
-        JobDataMap dataMap = new JobDataMap();
-        dataMap.put(ScheduleConstants.TASK_PROPERTIES, properties);
-        scheduler.triggerJob(ScheduleUtils.getJobKey(jobId, jobGroup), dataMap);
+//        Long jobId = job.getJobId();
+//        String jobGroup = job.getJobGroup();
+//        SysJob properties = selectJobById(job.getJobId());
+//        // 参数
+//        JobDataMap dataMap = new JobDataMap();
+//        dataMap.put(ScheduleConstants.TASK_PROPERTIES, properties);
+//        scheduler.triggerJob(ScheduleUtils.getJobKey(jobId, jobGroup), dataMap);
     }
 
     /**
@@ -207,14 +179,13 @@ public class SysJobServiceImpl implements ISysJobService
      * @param job 调度信息 调度信息
      */
     @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int insertJob(SysJob job) throws SchedulerException, TaskException
+    public int insertJob(SysJob job)
     {
-        job.setStatus(ScheduleConstants.Status.PAUSE.getValue());
+//        job.setStatus(ScheduleConstants.Status.PAUSE.getValue());
         int rows = jobMapper.insertJob(job);
         if (rows > 0)
         {
-            ScheduleUtils.createScheduleJob(scheduler, job);
+//            ScheduleUtils.createScheduleJob(scheduler, job);
         }
         return rows;
     }
@@ -225,8 +196,7 @@ public class SysJobServiceImpl implements ISysJobService
      * @param job 调度信息
      */
     @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int updateJob(SysJob job) throws SchedulerException, TaskException
+    public int updateJob(SysJob job)
     {
         SysJob properties = selectJobById(job.getJobId());
         int rows = jobMapper.updateJob(job);
@@ -243,17 +213,17 @@ public class SysJobServiceImpl implements ISysJobService
      * @param job 任务对象
      * @param jobGroup 任务组名
      */
-    public void updateSchedulerJob(SysJob job, String jobGroup) throws SchedulerException, TaskException
+    public void updateSchedulerJob(SysJob job, String jobGroup)
     {
         Long jobId = job.getJobId();
-        // 判断是否存在
-        JobKey jobKey = ScheduleUtils.getJobKey(jobId, jobGroup);
-        if (scheduler.checkExists(jobKey))
-        {
-            // 防止创建时存在数据问题 先移除,然后在执行创建操作
-            scheduler.deleteJob(jobKey);
-        }
-        ScheduleUtils.createScheduleJob(scheduler, job);
+//        // 判断是否存在
+//        JobKey jobKey = ScheduleUtils.getJobKey(jobId, jobGroup);
+//        if (scheduler.checkExists(jobKey))
+//        {
+//            // 防止创建时存在数据问题 先移除,然后在执行创建操作
+//            scheduler.deleteJob(jobKey);
+//        }
+//        ScheduleUtils.createScheduleJob(scheduler, job);
     }
 
     /**

+ 44 - 3
fs-service/src/main/java/com/fs/quartz/service/impl/SysJobTemplateServiceImpl.java

@@ -3,9 +3,13 @@ package com.fs.quartz.service.impl;
 import com.fs.common.annotation.DataSource;
 import com.fs.common.enums.DataSourceType;
 import com.fs.common.utils.StringUtils;
+import com.fs.common.utils.bean.BeanUtils;
+import com.fs.quartz.domain.SysJob;
 import com.fs.quartz.domain.SysJobTemplate;
 import com.fs.quartz.mapper.SysJobTemplateMapper;
+import com.fs.quartz.service.ISysJobService;
 import com.fs.quartz.service.ISysJobTemplateService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -17,6 +21,9 @@ public class SysJobTemplateServiceImpl implements ISysJobTemplateService {
     @Resource
     private SysJobTemplateMapper sysJobTemplateMapper;
 
+    @Autowired
+    private ISysJobService sysJobService;
+
     @Override
     @DataSource(DataSourceType.MASTER)
     public List<SysJobTemplate> selectTemplateList(SysJobTemplate query) {
@@ -41,18 +48,52 @@ public class SysJobTemplateServiceImpl implements ISysJobTemplateService {
         if (StringUtils.isEmpty(template.getScope())) {
             template.setScope("TENANT");
         }
-        return sysJobTemplateMapper.insertTemplate(template);
+        int rows = sysJobTemplateMapper.insertTemplate(template);
+
+        // 写入Job表
+        if (rows > 0) {
+            SysJob sysJob = new SysJob();
+            BeanUtils.copyProperties(template, sysJob);
+            sysJob.setJobId(template.getTemplateId());
+            sysJobService.insertJob(sysJob);
+        }
+
+        return rows;
     }
 
     @Override
     @DataSource(DataSourceType.MASTER)
     public int updateTemplate(SysJobTemplate template) {
-        return sysJobTemplateMapper.updateTemplate(template);
+        int rows = sysJobTemplateMapper.updateTemplate(template);
+
+        // 修改同步Job表
+        if (rows > 0) {
+            SysJob old = sysJobService.selectJobById(template.getTemplateId());
+            SysJob sysJob = new SysJob();
+            BeanUtils.copyProperties(template, sysJob);
+            sysJob.setJobId(template.getTemplateId());
+            if (old != null) {
+                sysJobService.updateJob(sysJob);
+            } else {
+                sysJobService.insertJob(sysJob);
+            }
+        }
+
+        return rows;
     }
 
     @Override
     @DataSource(DataSourceType.MASTER)
     public int deleteTemplateById(Long templateId) {
-        return sysJobTemplateMapper.deleteTemplateById(templateId);
+        SysJobTemplate template = sysJobTemplateMapper.selectTemplateById(templateId);
+        int rows = sysJobTemplateMapper.deleteTemplateById(templateId);
+
+        // 删除同步
+        if (rows > 0) {
+            SysJob sysJob = new SysJob();
+            sysJob.setJobId(template.getTemplateId());
+            sysJobService.deleteJob(sysJob);
+        }
+        return rows;
     }
 }

+ 7 - 5
fs-service/src/main/java/com/fs/quartz/service/impl/TenantJobConfigServiceImpl.java

@@ -115,11 +115,13 @@ public class TenantJobConfigServiceImpl implements ITenantJobConfigService {
             throw new CustomException("tenant not found: " + tenantId);
         }
 
-        // 1. 取全部 TENANT 用的活跃模板
-        List<SysJobTemplate> templates = sysJobTemplateMapper.selectTenantScopeTemplates();
-
-        // 2. 为缺失的模板自动创建 tenant_job_config(使用模板的 defaultStatus)
-        List<TenantJobConfig> configs = ensureConfigsForTemplates(tenantId, templates);
+        // 1. 从 tenant_job_config 取该租户已分配的模板配置(不再自动补全)
+        List<TenantJobConfig> configs = tenantJobConfigMapper.selectByTenantId(tenantId);
+        if (configs == null) {
+            configs = new ArrayList<>();
+        }
+        // 只同步已启用的配置
+        configs.removeIf(c -> !"0".equals(c.getStatus()));
 
         int synced = 0;
         String syncStatus = "1";

+ 0 - 0
fs-quartz/src/main/resources/mapper/quartz/SysJobLogMapper.xml → fs-service/src/main/resources/mapper/quartz/SysJobLogMapper.xml


+ 0 - 0
fs-quartz/src/main/resources/mapper/quartz/SysJobMapper.xml → fs-service/src/main/resources/mapper/quartz/SysJobMapper.xml


+ 8 - 66
fs-task/pom.xml

@@ -32,82 +32,24 @@
             </exclusions>
         </dependency>
 
-        <!-- spring-boot-devtools -->
+        <!-- 测试 -->
         <dependency>
             <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-devtools</artifactId>
-            <optional>true</optional>
-        </dependency>
-
-        <!-- swagger2 -->
-        <dependency>
-            <groupId>io.springfox</groupId>
-            <artifactId>springfox-swagger2</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>io.springfox</groupId>
-            <artifactId>springfox-swagger-ui</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.github.xiaoymin</groupId>
-            <artifactId>swagger-bootstrap-ui</artifactId>
-            <version>1.9.3</version>
-        </dependency>
-
-        <!-- Mysql驱动包 -->
-        <dependency>
-            <groupId>mysql</groupId>
-            <artifactId>mysql-connector-java</artifactId>
-        </dependency>
-
-        <!-- clickhouse -->
-        <dependency>
-            <groupId>com.clickhouse</groupId>
-            <artifactId>clickhouse-jdbc</artifactId>
-            <version>0.4.6</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework.retry</groupId>
-            <artifactId>spring-retry</artifactId>
-            <version>1.3.1</version>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
         </dependency>
 
-        <!-- 验证码 -->
+        <!-- 定时任务 -->
         <dependency>
-            <groupId>com.github.penggle</groupId>
-            <artifactId>kaptcha</artifactId>
+            <groupId>org.quartz-scheduler</groupId>
+            <artifactId>quartz</artifactId>
             <exclusions>
                 <exclusion>
-                    <artifactId>javax.servlet-api</artifactId>
-                    <groupId>javax.servlet</groupId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.apache.tomcat</groupId>
-                    <artifactId>annotations-api</artifactId>
+                    <groupId>com.mchange</groupId>
+                    <artifactId>c3p0</artifactId>
                 </exclusion>
             </exclusions>
         </dependency>
-
-        <!-- 获取系统信息 -->
-        <dependency>
-            <groupId>com.github.oshi</groupId>
-            <artifactId>oshi-core</artifactId>
-        </dependency>
-
-        <!-- lombok -->
-        <dependency>
-            <groupId>org.projectlombok</groupId>
-            <artifactId>lombok</artifactId>
-            <version>${lombok.version}</version>
-        </dependency>
-
-        <!-- 测试 -->
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-test</artifactId>
-            <scope>test</scope>
-        </dependency>
     </dependencies>
 
     <build>

+ 1 - 6
fs-task/src/main/java/com/fs/FsTaskApplication.java

@@ -7,11 +7,7 @@ import org.springframework.scheduling.annotation.EnableAsync;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
 
 /**
- * fs-task 模块启动类(用于独立运行任务模块、调用手动触发接口、调试 Bean 注册表等)
- * 注意:正式环境定时任务统一由 fs-admin (Quartz) 调度,此模块主要用于:
- *  - 提供 Task Bean(通过 fs-admin 依赖 fs-task 时由 TaskModuleConfiguration 扫描注册)
- *  - 提供 /monitor/taskRegistry Bean 注册表 API
- *  - 提供 /app/common 下的手动任务触发接口(调试用)
+ * fs-task 模块启动类
  */
 @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
 @EnableTransactionManagement
@@ -19,7 +15,6 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
 public class FsTaskApplication {
 
     public static void main(String[] args) {
-        // System.setProperty("spring.devtools.restart.enabled", "false");
         SpringApplication.run(FsTaskApplication.class, args);
         System.out.println("fs-task启动成功");
     }

+ 71 - 0
fs-task/src/main/java/com/fs/quartz/service/SysJobInitService.java

@@ -0,0 +1,71 @@
+package com.fs.quartz.service;
+
+import com.fs.quartz.domain.SysJob;
+import com.fs.quartz.mapper.SysJobMapper;
+import com.fs.quartz.util.ScheduleUtils;
+import org.quartz.Scheduler;
+import org.quartz.SchedulerException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.util.List;
+
+/**
+ * 项目启动时,从 sys_job 表初始化定时任务到 Quartz 调度器。
+ * <p>
+ * 作用:确保 Quartz 内部任务与 sys_job 配置表保持一致,
+ * 防止手动修改数据库导致未同步到定时任务处理。
+ * (注:不能手动修改数据库 job_id 和任务组名,否则会导致脏数据)
+ * </p>
+ */
+@Component
+public class SysJobInitService {
+
+    private static final Logger log = LoggerFactory.getLogger(SysJobInitService.class);
+
+    @Autowired
+    private Scheduler scheduler;
+
+    @Autowired
+    private SysJobMapper jobMapper;
+
+    /**
+     * 启动时清空调度器,将 sys_job 表中所有任务重新加载到 Quartz。
+     */
+    @PostConstruct
+    public void init() {
+        try {
+            log.info("开始从 sys_job 表加载定时任务到 Quartz 调度器...");
+
+            // 清空现有调度器中的所有任务
+            scheduler.clear();
+            log.info("已清空 Quartz 调度器中的所有任务");
+
+            // 从 sys_job 表加载所有任务
+            List<SysJob> jobList = jobMapper.selectJobAll();
+            if (jobList == null || jobList.isEmpty()) {
+                log.info("sys_job 表中无定时任务,初始化完成");
+                return;
+            }
+
+            int successCount = 0;
+            int failCount = 0;
+            for (SysJob job : jobList) {
+                try {
+                    ScheduleUtils.createScheduleJob(scheduler, job);
+                    successCount++;
+                } catch (Exception e) {
+                    failCount++;
+                    log.error("注册定时任务失败 - jobId: {}, jobName: {}, 错误: {}", job.getJobId(), job.getJobName(), e.getMessage());
+                }
+            }
+
+            log.info("定时任务初始化完成 - 总数: {}, 成功: {}, 失败: {}", jobList.size(), successCount, failCount);
+        } catch (SchedulerException e) {
+            log.error("定时任务初始化失败 - 清空调度器异常", e);
+        }
+    }
+}

+ 1 - 1
fs-quartz/src/main/java/com/fs/quartz/task/RyTask.java → fs-task/src/main/java/com/fs/quartz/task/RyTask.java

@@ -1,7 +1,7 @@
 package com.fs.quartz.task;
 
-import org.springframework.stereotype.Component;
 import com.fs.common.utils.StringUtils;
+import org.springframework.stereotype.Component;
 
 /**
  * 定时任务调度测试

+ 7 - 7
fs-quartz/src/main/java/com/fs/quartz/util/AbstractQuartzJob.java → fs-task/src/main/java/com/fs/quartz/util/AbstractQuartzJob.java

@@ -1,11 +1,5 @@
 package com.fs.quartz.util;
 
-import java.util.Date;
-import org.quartz.Job;
-import org.quartz.JobExecutionContext;
-import org.quartz.JobExecutionException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import com.fs.common.constant.Constants;
 import com.fs.common.constant.ScheduleConstants;
 import com.fs.common.utils.ExceptionUtil;
@@ -15,11 +9,17 @@ import com.fs.common.utils.spring.SpringUtils;
 import com.fs.quartz.domain.SysJob;
 import com.fs.quartz.domain.SysJobLog;
 import com.fs.quartz.service.ISysJobLogService;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Date;
 
 /**
  * 抽象quartz调用
  *
-
  */
 public abstract class AbstractQuartzJob implements Job
 {

+ 4 - 3
fs-quartz/src/main/java/com/fs/quartz/util/JobInvokeUtil.java → fs-task/src/main/java/com/fs/quartz/util/JobInvokeUtil.java

@@ -1,12 +1,13 @@
 package com.fs.quartz.util;
 
+import com.fs.common.utils.StringUtils;
+import com.fs.common.utils.spring.SpringUtils;
+import com.fs.quartz.domain.SysJob;
+
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.LinkedList;
 import java.util.List;
-import com.fs.common.utils.StringUtils;
-import com.fs.common.utils.spring.SpringUtils;
-import com.fs.quartz.domain.SysJob;
 
 /**
  * 任务执行工具

+ 1 - 1
fs-quartz/src/main/java/com/fs/quartz/util/QuartzDisallowConcurrentExecution.java → fs-task/src/main/java/com/fs/quartz/util/QuartzDisallowConcurrentExecution.java

@@ -1,8 +1,8 @@
 package com.fs.quartz.util;
 
+import com.fs.quartz.domain.SysJob;
 import org.quartz.DisallowConcurrentExecution;
 import org.quartz.JobExecutionContext;
-import com.fs.quartz.domain.SysJob;
 
 /**
  * 定时任务处理(禁止并发执行)

+ 9 - 4
fs-quartz/src/main/java/com/fs/quartz/util/QuartzJobExecution.java → fs-task/src/main/java/com/fs/quartz/util/QuartzJobExecution.java

@@ -1,19 +1,24 @@
 package com.fs.quartz.util;
 
-import org.quartz.JobExecutionContext;
+import com.fs.common.utils.spring.SpringUtils;
 import com.fs.quartz.domain.SysJob;
+import com.fs.quartz.service.ISysJobService;
+import org.quartz.JobExecutionContext;
 
 /**
  * 定时任务处理(允许并发执行)
- * 
-
- *
  */
 public class QuartzJobExecution extends AbstractQuartzJob
 {
     @Override
     protected void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception
     {
+        // 检查Job状态是否正常
+        ISysJobService jobService = SpringUtils.getBean(ISysJobService.class);
+
+        // 检查Job与租户关系是否正常
+
+        // 线程池并发执行
         JobInvokeUtil.invokeMethod(sysJob);
     }
 }

+ 1 - 10
fs-quartz/src/main/java/com/fs/quartz/util/ScheduleUtils.java → fs-task/src/main/java/com/fs/quartz/util/ScheduleUtils.java

@@ -1,19 +1,10 @@
 package com.fs.quartz.util;
 
-import org.quartz.CronScheduleBuilder;
-import org.quartz.CronTrigger;
-import org.quartz.Job;
-import org.quartz.JobBuilder;
-import org.quartz.JobDetail;
-import org.quartz.JobKey;
-import org.quartz.Scheduler;
-import org.quartz.SchedulerException;
-import org.quartz.TriggerBuilder;
-import org.quartz.TriggerKey;
 import com.fs.common.constant.ScheduleConstants;
 import com.fs.common.exception.job.TaskException;
 import com.fs.common.exception.job.TaskException.Code;
 import com.fs.quartz.domain.SysJob;
+import org.quartz.*;
 
 /**
  * 定时任务工具类

+ 114 - 0
fs-task/src/main/java/com/fs/quartz/util/TenantJobDispatcherJob.java

@@ -0,0 +1,114 @@
+//package com.fs.quartz.util;
+//
+//import com.fs.common.config.RedisTenantContext;
+//import com.fs.common.core.domain.model.TenantPrincipal;
+//import com.fs.common.enums.DataSourceType;
+//import com.fs.common.utils.CronUtils;
+//import com.fs.config.saas.ProjectConfig;
+//import com.fs.core.config.TenantConfigContext;
+//import com.fs.framework.datasource.DynamicDataSourceContextHolder;
+//import com.fs.framework.datasource.TenantDataSourceManager;
+//import com.fs.quartz.domain.SysJob;
+//import com.fs.quartz.mapper.SysJobMapper;
+//import com.fs.system.domain.SysConfig;
+//import com.fs.system.mapper.SysConfigMapper;
+//import com.fs.tenant.domain.TenantInfo;
+//import com.fs.tenant.service.TenantInfoService;
+//import com.fs.common.utils.spring.SpringUtils;
+//import org.slf4j.Logger;
+//import org.slf4j.LoggerFactory;
+//import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+//import org.springframework.security.core.context.SecurityContextHolder;
+//import org.quartz.Job;
+//import org.quartz.JobExecutionContext;
+//import org.quartz.JobExecutionException;
+//
+//import java.util.Collections;
+//import java.util.Date;
+//import java.util.List;
+//import java.util.stream.Collectors;
+//
+///**
+// * SaaS tenant job dispatcher: load active tenants from master, switch DB, run due sys_job in tenant library.
+// */
+//public class TenantJobDispatcherJob implements Job {
+//
+//    private static final Logger log = LoggerFactory.getLogger(TenantJobDispatcherJob.class);
+//
+//    @Override
+//    public void execute(JobExecutionContext context) throws JobExecutionException {
+//        TenantDataSourceManager tenantDataSourceManager = SpringUtils.getBean(TenantDataSourceManager.class);
+//        TenantInfoService tenantInfoService = SpringUtils.getBean(TenantInfoService.class);
+//        SysJobMapper sysJobMapper = SpringUtils.getBean(SysJobMapper.class);
+//        SysConfigMapper sysConfigMapper = SpringUtils.getBean(SysConfigMapper.class);
+//
+//        try {
+//            DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
+//            TenantInfo query = new TenantInfo();
+//            query.setStatus(1);
+//            List<TenantInfo> tenants = tenantInfoService.selectTenantInfoList(query);
+//            if (tenants == null || tenants.isEmpty()) {
+//                return;
+//            }
+//            Date now = new Date();
+//            List<TenantInfo> validTenants = tenants.stream()
+//                    .filter(t -> t.getExpireTime() == null || !t.getExpireTime().before(now))
+//                    .collect(Collectors.toList());
+//
+//            for (TenantInfo tenant : validTenants) {
+//                try {
+//                    dispatchForTenant(tenant, tenantDataSourceManager, sysJobMapper, sysConfigMapper);
+//                } catch (Exception e) {
+//                    log.error("[SaaS Quartz] tenant tenantId={}, tenantCode={} dispatch error",
+//                            tenant.getId(), tenant.getTenantCode(), e);
+//                } finally {
+//                    ProjectConfig.clearTenantConfigs();
+//                    TenantConfigContext.clear();
+//                    RedisTenantContext.clear();
+//                    SecurityContextHolder.clearContext();
+//                    DynamicDataSourceContextHolder.clearDataSourceType();
+//                }
+//            }
+//        } finally {
+//            DynamicDataSourceContextHolder.clearDataSourceType();
+//        }
+//    }
+//
+//    private void dispatchForTenant(TenantInfo tenant, TenantDataSourceManager tenantDataSourceManager,
+//                                   SysJobMapper sysJobMapper, SysConfigMapper sysConfigMapper) throws Exception {
+//        tenantDataSourceManager.switchTenant(tenant);
+//        RedisTenantContext.setTenantId(tenant.getId());
+//        SecurityContextHolder.getContext().setAuthentication(
+//                new UsernamePasswordAuthenticationToken(
+//                        new TenantPrincipal(tenant.getId()), null, Collections.emptyList()));
+//
+//        SysConfig cfg = sysConfigMapper.selectConfigByConfigKey("projectConfig");
+//        ProjectConfig.safeLoadTenantConfigFromValue(cfg != null ? cfg.getConfigValue() : null);
+//
+//        List<SysJob> allJobs = sysJobMapper.selectJobAll();
+//        if (allJobs == null || allJobs.isEmpty()) {
+//            return;
+//        }
+//        List<SysJob> dueJobs = allJobs.stream()
+//                .filter(j -> "0".equals(j.getStatus()))
+//                .filter(j -> CronUtils.isDueInThisMinute(j.getCronExpression()))
+//                .collect(Collectors.toList());
+//
+//        for (SysJob job : dueJobs) {
+//            String taskName = job.getJobName() != null ? job.getJobName() : job.getInvokeTarget();
+//            log.info("[SaaS Quartz] dataSource=tenant:{}, tenantId={}, tenantCode={}, task={}",
+//                    tenant.getId(), tenant.getId(), tenant.getTenantCode(), taskName);
+//            try {
+//                if (!JobInvokeUtil.isInvokeTargetAvailable(job)) {
+//                    log.debug("[SaaS Quartz] tenantId={} skip jobId={}, bean unavailable: {}",
+//                            tenant.getId(), job.getJobId(), job.getInvokeTarget());
+//                    continue;
+//                }
+//                JobInvokeUtil.invokeMethod(job);
+//            } catch (Exception e) {
+//                log.error("[SaaS Quartz] tenantId={} jobId={}, invokeTarget={} failed",
+//                        tenant.getId(), job.getJobId(), job.getInvokeTarget(), e);
+//            }
+//        }
+//    }
+//}

+ 0 - 47
fs-task/src/main/java/com/fs/task/TaskPackages.java

@@ -1,47 +0,0 @@
-package com.fs.task;
-
-/**
- * Central list of base packages containing @Component / task beans for fs-task.
- *
- * Used by:
- *  - TaskModuleConfiguration for @ComponentScan (so beans are discovered when this module or dependents start).
- *  - TaskRegistryService (reflection scan) to list invocable methods for the admin "Bean registry" UI.
- *
- * When you introduce new schedulable task classes in a new package, ADD the package here.
- *
- * Note on history:
- *  - hisStore.task and his.task were moved out of fs-task into fs-service (to make them visible to fs-admin-saas which depends on fs-service but not fs-task directly).
- *  - Old com.fs.app.task* packages were reorganized under com.fs.task.jobs and com.fs.task.support for clarity.
- */
-public final class TaskPackages {
-
-    private TaskPackages() {}
-
-    /**
-     * The packages that contain the actual @Component task entry points and supporting services.
-     * These are scanned by TaskRegistryService to build the list of classes/methods available
-     * for configuration as sys_job.invoke_target (e.g. "qWTask.定时拉取群聊").
-     *
-     * Current layout after reorganization:
-     *   com.fs.task.jobs          -- top-level entry schedulers (QwTask, CourseWatchLogScheduler, ...)
-     *   com.fs.task.support       -- the actual business logic implementations (was taskService)
-     *   com.fs.his.task           -- his-domain specific tasks (now lives in fs-service)
-     *   com.fs.hisStore.task      -- hisStore specific tasks (now lives in fs-service)
-     *   com.fs.course.task etc.   -- other vertical domain tasks
-     *   com.fs.tenant.task        -- tenant-level orchestration
-     *   com.fs.task               -- shared config / registry / controller inside fs-task
-     *   com.fs.admin.sync         -- sync jobs
-     *   com.fs.ad.controller.task -- ad related scheduled tasks
-     */
-    public static final String[] TASK_BASE_PACKAGES = {
-            "com.fs.task.jobs",         // entry points / facade schedulers
-            "com.fs.task.support",      // impls (SOP, rating, watch log, external contact sync, etc.)
-            "com.fs.his.task",
-            "com.fs.hisStore.task",     // NOTE: actually provided by fs-service now
-            "com.fs.course.task",
-            "com.fs.tenant.task",
-            "com.fs.task",              // TaskPackages + config + manual controller + registry
-            "com.fs.admin.sync",
-            "com.fs.ad.controller.task"
-    };
-}

+ 0 - 28
fs-task/src/main/java/com/fs/task/config/TaskModuleConfiguration.java

@@ -1,28 +0,0 @@
-package com.fs.task.config;
-
-import com.fs.task.TaskPackages;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * fs-task 模块的 Spring 配置类。
- *
- * 作用:
- * - 当 fs-task 出现在 classpath 上时(fs-admin 依赖 fs-task,或独立运行 fs-task),自动触发 @ComponentScan,
- *   将 com.fs.*.task / support 下的 @Component / @Service 等任务 Bean 注册到容器。
- * - 配合 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 实现自动装配。
- *
- * 注意:hisStore 相关任务类位于 fs-service 模块,由 fs-admin 自身的组件扫描或 fs-service 引入时加载。
- */
-@Configuration
-@ComponentScan(basePackages = {
-        "com.fs.task.jobs",     // 主要任务入口(QwTask、CourseWatchLogScheduler 等)
-        "com.fs.task.support",  // 复杂任务的支撑服务与实现
-        "com.fs.his.task",
-        "com.fs.course.task",
-        "com.fs.tenant.task",
-        "com.fs.task",
-        "com.fs.admin.sync",
-})
-public class TaskModuleConfiguration {
-}

+ 0 - 577
fs-task/src/main/java/com/fs/task/controller/TaskManualController.java

@@ -1,577 +0,0 @@
-package com.fs.task.controller;
-
-
-import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.util.ObjectUtil;
-import com.fs.task.jobs.QwTask;
-import com.fs.task.support.*;
-import com.fs.common.config.RedisTenantContext;
-import com.fs.common.core.domain.R;
-import com.fs.common.core.domain.ResponseResult;
-import com.fs.common.core.redis.RedisCache;
-import com.fs.common.utils.StringUtils;
-import com.fs.company.service.ICompanyService;
-import com.fs.company.vo.RedPacketMoneyVO;
-import com.fs.course.mapper.FsCourseRedPacketLogMapper;
-import com.fs.course.mapper.FsCourseWatchLogMapper;
-import com.fs.course.param.newfs.FsUserCourseAddCompanyUserParam;
-import com.fs.course.service.*;
-import com.fs.course.vo.FsUserCourseVideoQVO;
-import com.fs.framework.datasource.TenantDataSourceManager;
-import com.fs.his.domain.FsUser;
-import com.fs.his.service.IFsInquiryOrderService;
-import com.fs.his.utils.qrcode.QRCodeUtils;
-import com.fs.qw.domain.QwCompany;
-import com.fs.qw.domain.QwIpadServerLog;
-import com.fs.qw.domain.QwUser;
-import com.fs.qw.mapper.QwExternalContactMapper;
-import com.fs.qw.mapper.QwUserMapper;
-import com.fs.qw.service.*;
-import com.fs.qwApi.service.QwApiService;
-import com.fs.sop.mapper.QwSopLogsMapper;
-import com.fs.sop.mapper.QwSopMapper;
-import com.fs.sop.mapper.SopUserLogsMapper;
-import com.fs.sop.service.*;
-import com.fs.sop.vo.QwSopLogsDoSendListTVO;
-import com.fs.store.service.IFsUserCourseCountService;
-import com.fs.tenant.domain.TenantInfo;
-import com.fs.tenant.service.TenantInfoService;
-import com.fs.wxwork.dto.WxWorkGetQrCodeDTO;
-import com.fs.wxwork.service.WxWorkService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.time.Duration;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.ZoneId;
-import java.time.format.DateTimeFormatter;
-import java.util.*;
-
-@Api("公共接口")
-@RestController
-@RequestMapping(value="/app/common")
-public class TaskManualController {
-
-    private static final Logger log = LoggerFactory.getLogger(TaskManualController.class);
-
-    @Autowired
-    private SopLogsTaskService service;
-    @Autowired
-    private IFsUserCourseVideoService courseVideoService;
-    @Autowired
-    private SopLogsTaskService sopLogsTaskService;
-    @Autowired
-    private SopWxLogsService sopWxLogsService;
-    @Autowired
-    private IQwExternalContactService qwExternalContactService;
-    @Autowired
-    private QwTask qwTask1;
-    @Autowired
-    private IFsUserVideoService fsUserVideoService;
-    @Autowired
-    private IHuaweiObsService huaweiObsService;
-    @Autowired
-    private IFsCourseWatchLogService watchLogService;
-    @Autowired
-    private QwExternalContactMapper qwExternalContactMapper;
-    @Autowired
-    private IFsCourseRedPacketLogService fsCourseRedPacketLogService;
-
-    @Autowired
-    private IQwSopLogsService qwSopLogsService;
-
-    @Autowired
-    private QwSopMapper qwSopMapper;
-
-    @Autowired
-    private FsCourseWatchLogMapper fsCourseWatchLogMapper;
-
-    @Autowired
-    private IFsCourseLinkService courseLinkService;
-    @Autowired
-    private FsCourseRedPacketLogMapper fsCourseRedPacketLogMapper;
-    @Autowired
-    private ICompanyService companyService;
-
-    @Autowired
-    private SopUserLogsMapper sopUserLogsMapper;
-
-    @Autowired
-    private QwSopLogsMapper qwSopLogsMapper;
-    @Autowired
-    private IQwSopTempRulesService tempRulesService;
-    @Autowired
-    private IQwSopTempVoiceService qwSopTempVoiceService;
-
-    @Autowired
-    private QwExternalContactRatingService qwExternalContactRatingService;
-
-    @Autowired
-    private ISopUserLogsService iSopUserLogsService;
-
-    @Autowired
-    private IFsUserCourseCountService userCourseCountService;
-
-    @Autowired
-    private ISopUserLogsInfoService iSopUserLogsInfoService;
-
-    @Autowired
-    private IFsInquiryOrderService inquiryOrderService;
-
-    @Autowired
-    private IQwMaterialService iQwMaterialService;
-
-    @Autowired
-    private IFsCourseLinkService iFsCourseLinkService;
-
-    @Autowired
-    private SyncQwExternalContactService syncQwExternalContactService;
-    @Autowired
-    private IFsUserCourseVideoService fsUserCourseVideoService;
-
-    @Autowired
-    public RedisCache redisCache;
-
-    @Autowired
-    private QwUserMapper qwUserMapper;
-
-
-    @Autowired
-    IQwIpadServerService ipadServerService;
-
-    @Autowired
-    IQwIpadServerLogService qwIpadServerLogService;
-    @Autowired
-    IQwIpadServerUserService qwIpadServerUserService;
-
-    @Autowired
-    IQwExternalContactService externalContactService;
-    @Autowired
-    WxWorkService wxWorkService;
-    @Autowired
-    private IQwUserService qwUserService;
-    @Autowired
-    private IQwDeptService qwDeptService;
-    @Autowired
-    private TenantInfoService tenantInfoService;
-
-    @Autowired
-    private IQwCompanyService qwCompanyService;
-    @Autowired
-    private TenantDataSourceManager tenantDataSourceManager;
-
-    @RequestMapping("/syncQwUserAsync")
-    public void syncQwUserAsync(String corpId) {
-        QwCompany qwCompany = qwCompanyService.selectQwCompanyByCorpId(corpId);
-        if (ObjectUtil.isEmpty(corpId)) {
-            return; // 跳过无效租户,继续下一个
-        }
-
-        TenantInfo tenantInfo = null;
-        try {
-            tenantInfo = tenantInfoService.getById(qwCompany.getTenantId());
-            if (ObjectUtil.isEmpty(tenantInfo)) {
-                log.warn("租户信息不存在,tenantId={}", qwCompany.getTenantId());
-                return;
-            }
-
-            // 切换到租户数据源
-            tenantDataSourceManager.switchTenant(tenantInfo);
-            // 切换Redis租户上下文
-            RedisTenantContext.setTenantId(tenantInfo.getId());
-
-            log.info("开始同步企微用户,租户={}, corpId={}", tenantInfo.getId(), qwCompany.getCorpId());
-
-            // 执行同步操作
-            qwUserService.syncQwUser(qwCompany.getCorpId(),tenantInfo.getId());
-
-            log.info("同步完成,租户={}", tenantInfo.getId());
-
-        } catch (Exception e) {
-            log.error("同步企微员工和部门失败,租户={}, corpId={}",
-                    qwCompany.getTenantId(), qwCompany.getCorpId(), e);
-        } finally {
-            // 清理租户上下文(数据源和Redis)
-            try {
-                tenantDataSourceManager.clear(); // 假设有此方法,请根据实际API调整
-            } catch (Exception ignored) {}
-
-            try {
-                RedisTenantContext.clear(); // 或 RedisTenantContext.removeTenantId()
-            } catch (Exception ignored) {}
-        }
-    }
-    /**
-     *
-     */
-    @GetMapping("/selectQwUserByTest")
-    public void selectQwUserByTest() {
-        try {
-            List<QwUser> list = qwUserMapper.selectQwUserByTest();
-            for (QwUser qwUser : list) {
-                try {
-
-                     Long serverId = qwUser.getServerId();
-
-                    if (serverId==null){
-                        System.out.println("serverId不存在");
-                    }else {
-                        //没绑定销售 或者 已经离职
-                        if (qwUser.getStatus()==0 || qwUser.getIsDel()==2){
-
-                            updateIpadStatus(qwUser,serverId);
-                        }
-
-                        //绑定了销售-也绑定了ipad,但是长时间离线的(离线状态,无操作超过2天的,也自动解绑)
-                        if(qwUser.getUpdateTime()!=null){
-                            Date createTime = qwUser.getUpdateTime();
-                            Integer serverStatus = qwUser.getServerStatus();
-                            Integer ipadStatus = qwUser.getIpadStatus();
-
-                            boolean result = isCreateTimeMoreThanDaysWithOptional(createTime, 2);
-                            //大于2天 ,绑定了ipad,离线
-                            if(result && serverStatus==1 && ipadStatus==0){
-                                updateIpadStatus(qwUser,serverId);
-
-                            }
-                        }
-
-
-                    }
-
-
-                } catch (Exception e) {
-                    System.out.println("解绑ipad报错"+e);
-
-                }
-            }
-        } catch (Exception e) {
-            log.error("定时处理未绑定员工企微异常",e);
-        }
-
-    }
-
-
-    public void updateIpadStatus(QwUser qwUser,Long serverId){
-        QwUser u = new QwUser();
-        u.setId(qwUser.getId());
-        u.setServerId(null);
-        u.setServerStatus(0);
-        qwUserMapper.updateQwUser(u);
-        ipadServerService.addServer(serverId);
-        QwIpadServerLog qwIpadServerLog = new QwIpadServerLog();
-        qwIpadServerLog.setType(2);
-        qwIpadServerLog.setTilie("解绑");
-        qwIpadServerLog.setServerId(serverId);
-        qwIpadServerLog.setQwUserId(qwUser.getId());
-        qwIpadServerLog.setCompanyUserId(qwUser.getCompanyUserId());
-        qwIpadServerLog.setCompanyId(qwUser.getCompanyId());
-        qwIpadServerLog.setCreateTime(new Date());
-        qwIpadServerLogService.insertQwIpadServerLog(qwIpadServerLog);
-        qwIpadServerUserService.deleteQwIpadServerUserByQwUserId(qwUser.getId());
-        WxWorkGetQrCodeDTO wxWorkGetQrCodeDTO = new WxWorkGetQrCodeDTO();
-        wxWorkGetQrCodeDTO.setUuid(qwUser.getUid());
-        wxWorkService.LoginOut(wxWorkGetQrCodeDTO,qwUser.getServerId());
-        updateIpadStatus(qwUser.getId(),0);
-    }
-
-    public static boolean isCreateTimeMoreThanDaysWithOptional(Date createTime, int days) {
-        return Optional.ofNullable(createTime)
-                .map(time -> {
-                    LocalDateTime createDateTime = time.toInstant()
-                            .atZone(ZoneId.systemDefault())
-                            .toLocalDateTime();
-                    LocalDateTime now = LocalDateTime.now();
-                    Duration duration = Duration.between(createDateTime, now);
-                    return duration.toDays() > days;
-                })
-                .orElse(false); // 为null时返回false,可根据需求调整
-    }
-
-    void updateIpadStatus(Long id ,Integer status){
-        QwUser u = new QwUser();
-        u.setId(id);
-        u.setIpadStatus(status);
-        qwUserMapper.updateQwUser(u);
-    }
-    /**
-     *
-     */
-    @GetMapping("/countQwApiAopLogToken")
-    public void countQwApiAopLogToken() {
-
-        DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-        // 获取当前日期(只包含年月日)
-        LocalDate currentDate = LocalDate.now();
-
-        String todayStr = currentDate.format(dateFormatter);
-        qwSopLogsService.countQwApiAopLogToken(todayStr);
-
-    }
-
-    /**
-     * 查询视频时长
-     */
-    @GetMapping("/getVideoDuration")
-    public Long getVideoDuration(Long videoId) {
-
-            String redisKey = "h5user:video:duration:" + videoId;
-            Long duration = redisCache.getCacheObject(redisKey);
-
-            if (duration == null) {
-                FsUserCourseVideoQVO videoInfo = fsUserCourseVideoService.selectFsUserCourseVideoByVideoIdVO(videoId,null);
-                if (videoInfo == null || videoInfo.getDuration() == null) {
-                    throw new IllegalArgumentException("视频时长信息不存在");
-                }
-                duration = videoInfo.getDuration();
-
-                // 将查询结果缓存到Redis,设置适当过期时间
-                redisCache.setCacheObject(redisKey, duration);
-            }
-
-            return duration;
-
-    }
-
-
-
-    /**
-     * 获取跳转微信小程序的链接地址
-     */
-    @GetMapping("/getGotoWxAppLink")
-    @ApiOperation("获取跳转微信小程序的链接地址")
-    public ResponseResult<String> getGotoWxAppLink(String linkStr,String appid) {
-        return ResponseResult.ok(courseLinkService.getGotoWxAppLink(linkStr,appid));
-    }
-
-    /**
-    * 发官方通连
-    */
-    @GetMapping("/sopguanfanone")
-    public R sopguanfanone(String dateTime) throws Exception {
-
-        LocalDateTime localDateTime = DateUtil.parseLocalDateTime(dateTime);
-
-        int currentHour = localDateTime.getHour();
-        LocalDate localDate = localDateTime.toLocalDate();
-
-        String taskStartTime = localDate.atTime(currentHour, 0, 0)
-                .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
-        String taskEndTime = localDate.atTime(currentHour, 59, 59)
-                .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
-
-        qwSopLogsService.createCorpMassSendingByUserLogs( taskStartTime, taskEndTime);
-        return R.ok();
-    }
-
-    /**
-    * 发一对一
-    */
-    @GetMapping("/sopguanfantwo")
-    public R sopguanfantwo(String dateTime) throws Exception {
-
-        LocalDateTime localDateTime = DateUtil.parseLocalDateTime(dateTime);
-
-
-        LocalDate localDate = localDateTime.toLocalDate();
-        String date = localDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
-
-        qwSopLogsService.createCorpMassSending(date);
-        return R.ok();
-    }
-
-    /**
-     * 查官方的执行结果
-     */
-    @GetMapping("/sopguanfantResult")
-    public R sopguanfantResult() throws Exception {
-        qwSopLogsService.qwSopLogsResultNew();
-        return R.ok();
-    }
-
-
-    @GetMapping("/testMaterial")
-    public void testMaterial() throws Exception {
-
-        iQwMaterialService.updateQwMaterialByQw();
-
-    }
-
-    @GetMapping("/testSop")
-    public R testSop() throws Exception {
-
-        return iFsCourseLinkService.getWxaCodeGenerateScheme("/pages_course/video.html?course={\"companyId\":100,\"companyUserId\":2020,\"corpId\":\"wweb0666cc79d79da5\",\"courseId\":61,\"link\":\"1950497651577323520\",\"linkType\":3,\"qwExternalId\":2356946,\"qwUserId\":\"1682\",\"uNo\":\"b8b010e1-ee0f-42ec-8ad8-06681d1b449a\",\"videoId\":366}","wx34bba1ae94d34986");
-    }
-
-    @GetMapping("/testRatingSop")
-    public R testRatingSop(String sopId) throws Exception {
-
-        long startTimeMillis = System.currentTimeMillis();
-        log.info("====== 开始选择和处理 sop营期-用户分级 ======");
-
-        iSopUserLogsService.ratingUserLogs(sopId);
-
-        long endTimeMillis = System.currentTimeMillis();
-        log.info("====== sop营期-用户分级处理完成,耗时 {} 毫秒 ======", (endTimeMillis - startTimeMillis));
-        return R.ok();
-    }
-
-    // 定义一个方法来批量处理插入逻辑,支持每 500 条数据一次的批量插入
-    private void processAndInsertQwSopLogs(List<QwSopLogsDoSendListTVO> logsByJsApiNotExtId) {
-        // 定义批量插入的大小
-        int batchSize = 500;
-
-        // 循环处理外部用户 ID,每次处理批量大小的子集
-        for (int i = 0; i < logsByJsApiNotExtId.size(); i += batchSize) {
-
-            int endIndex = Math.min(i + batchSize, logsByJsApiNotExtId.size());
-            List<QwSopLogsDoSendListTVO> batchList = logsByJsApiNotExtId.subList(i, endIndex);  // 获取当前批次的子集
-
-            // 直接使用批次数据进行批量更新,不需要额外的 List
-            try {
-                qwSopLogsMapper.batchUpdateQwSopLogsBySendTime(batchList);
-            } catch (Exception e) {
-                // 记录异常日志,方便后续排查问题
-                log.error("批量更新数据时发生异常,处理的批次起始索引为: " + i, e);
-            }
-        }
-    }
-
-    @GetMapping("/test")
-    public R test(String time, String sopId) throws Exception {
-        log.info("进入sop任务");
-//        LocalDateTime currentTime = DateUtil.parseLocalDateTime(time);
-//        // 计算下一个整点时间
-//        LocalDateTime nextHourTime = currentTime.withMinute(0).withSecond(0).withNano(0).plusHours(1);
-//
-//        // 打印日志,确认时间
-//        log.info("任务实际执行时间: {}", currentTime);
-//        log.info("传递给任务的时间参数: {}", nextHourTime);
-        List<String> sopidList = new ArrayList<>();
-        if(StringUtils.isNotEmpty(sopId)){
-            sopidList = Arrays.asList(sopId.split(","));
-        }
-        sopLogsTaskService.selectSopUserLogsListByTime(DateUtil.parseLocalDateTime(time), sopidList);
-        return R.ok();
-    }
-    @GetMapping("/testWx")
-    public R testWx(String time) throws Exception {
-        sopWxLogsService.wxSopLogsByTime(DateUtil.parseLocalDateTime(time));
-        return R.ok();
-    }
-
-
-    @GetMapping("/testVideo")
-    public R testVideo(String sopId) throws Exception {
-        qwSopTempVoiceService.synchronous(sopId, Arrays.asList(Arrays.asList(2020L, 100L), Arrays.asList(2758L, 170L)));
-        return R.ok();
-    }
-
-    @Autowired
-    IQwCompanyService iQwCompanyService;
-    @GetMapping("/testSop2")
-    public R testSop2() throws Exception {
-
-        String cropId="ww401085d7b785aae8";
-
-        QwCompany qwCompany = iQwCompanyService.getQwCompanyByRedis(cropId);
-
-        String status="100_asddas_6666";
-
-        String url="https://open.weixin.qq.com/connect/oauth2/authorize?appid="+cropId+"&redirect_uri=" +
-                "http://"+qwCompany.getRealmNameUrl()+"/qwh5/pages/user/index?corpId="+cropId +
-                "&response_type=code&scope=snsapi_base&state="+status+"&agentid="+qwCompany.getServerAgentId()+"#wechat_redirect";
-
-        R andUpload = QRCodeUtils.createAndUpload(url);
-
-        return R.ok().put("data",andUpload);
-    }
-
-    @Autowired
-    private QwApiService qwApiService;
-
-    @GetMapping("/testSop3")
-    public R testSop3(String date) throws Exception {
-//        qwSopLogsService.createCorpMassSending(date);
-//        QwGetGroupmsgSendParam qwGetGroupmsgSendParam = new QwGetGroupmsgSendParam();
-//        qwGetGroupmsgSendParam.setMsgid("msg7tWFCgAAjJC-HqurNKsOJif5oUHQiA");
-//        qwGetGroupmsgSendParam.setUserid("ZhangZhanYue");
-//
-//        QwGroupmsgSendResult groupmsgSendResult = qwApiService.getGroupmsgSendResult(qwGetGroupmsgSendParam, "ww5a88c4f879f204c5");
-        return R.ok();
-    }
-
-    @Autowired
-    IQwSopTagService qwSopTagService;
-    @GetMapping("/tag")
-    public R tag() throws Exception {
-        qwSopTagService.addTag();
-        return R.ok();
-    }
-
-
-    @Autowired
-    private SopLogsChatTaskService sopLogsChatTaskService;
-    @GetMapping("/test2")
-    public String selectChatSopUserLogsListByTime() throws Exception {
-        userCourseCountService.insertFsUserCourseCountTask();
-        return "s";
-    }
-    @GetMapping("/isAddkf")
-    public ResponseResult<FsUser> isAddkf(FsUserCourseAddCompanyUserParam param) throws Exception {
-        return courseVideoService.isAddCompanyUser(param);
-    }
-
-    @PostMapping("/updateUrl")
-    public R updateUrl()
-    {
-        log.info("开始更新URL");
-        try {
-            fsUserVideoService.updateVideoUrl();
-            huaweiObsService.uploadByCOS();
-            log.info("更新URL成功完成");
-
-
-        } catch (Exception e) {
-            log.error("开始更新URL执行失败", e);
-        }
-        return R.ok();
-    }
-    @GetMapping("/updateRedPack")
-    public R updateRedPack(String start , String end    ){
-        LocalDateTime startTime = DateUtil.parseLocalDateTime(start);
-        LocalDateTime endTime = DateUtil.parseLocalDateTime(end);
-        List<RedPacketMoneyVO> redPacketMoneyVOS = fsCourseRedPacketLogMapper.selectFsCourseRedPacketLogHourseByCompany(startTime, endTime);
-        for (RedPacketMoneyVO redPacketMoneyVO : redPacketMoneyVOS) {
-            companyService.subtractCompanyMoneyHourse(redPacketMoneyVO.getMoney(),redPacketMoneyVO.getCompanyId(), startTime.toLocalTime(), endTime.toLocalTime());
-        }
-        return R.ok();
-    }
-
-    @GetMapping("/syncQwExternalContactUnionid")
-    public R syncQwExternalContactUnionid(){
-        return syncQwExternalContactService.syncQwExternalContactUnionid();
-    }
-
-
-    @GetMapping("/queryRedPacketResult")
-    public R queryRedPacketResult(String startTime , String  endTime) {
-        fsCourseRedPacketLogService.queryRedPacketResult(startTime, endTime);
-        return R.ok();
-    }
-
-    @GetMapping("/autoPullGroup")
-    public R autoPullGroup(){
-        qwTask1.autoPullGroup();
-        return R.ok();
-    }
-
-}

+ 0 - 56
fs-task/src/main/java/com/fs/task/controller/TaskRegistryController.java

@@ -1,56 +0,0 @@
-package com.fs.task.controller;
-
-import com.fs.common.core.controller.BaseController;
-import com.fs.common.core.domain.AjaxResult;
-import com.fs.common.core.page.TableDataInfo;
-import com.fs.task.service.TaskRegistryService;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Task bean registry for adminUI when configuring sys_job.invoke_target.
- */
-@RestController
-@RequestMapping("/monitor/taskRegistry")
-public class TaskRegistryController extends BaseController {
-
-    private final TaskRegistryService taskRegistryService;
-
-    public TaskRegistryController(TaskRegistryService taskRegistryService) {
-        this.taskRegistryService = taskRegistryService;
-    }
-
-    @PreAuthorize("@ss.hasPermi('monitor:job:list')")
-    @GetMapping("/list")
-    public TableDataInfo list(String beanName, String methodName, String invokeTarget,
-                              Integer pageNum, Integer pageSize) {
-        List<Map<String, String>> filtered = taskRegistryService.query(beanName, methodName, invokeTarget);
-        int currentPage = pageNum == null || pageNum < 1 ? 1 : pageNum;
-        int size = pageSize == null || pageSize < 1 ? 10 : Math.min(pageSize, 200);
-        int from = (currentPage - 1) * size;
-        int to = Math.min(filtered.size(), from + size);
-        List<Map<String, String>> pageRows = from >= filtered.size()
-                ? Collections.emptyList()
-                : filtered.subList(from, to);
-        TableDataInfo data = new TableDataInfo();
-        data.setCode(200);
-        data.setMsg("success");
-        data.setRows(pageRows);
-        data.setTotal(filtered.size());
-        return data;
-    }
-
-    @PreAuthorize("@ss.hasPermi('monitor:job:list')")
-    @PostMapping("/refresh")
-    public AjaxResult refresh() {
-        taskRegistryService.refreshCache();
-        return AjaxResult.success();
-    }
-}

+ 0 - 114
fs-task/src/main/java/com/fs/task/service/TaskRegistryService.java

@@ -1,114 +0,0 @@
-package com.fs.task.service;
-
-import com.fs.common.utils.StringUtils;
-import com.fs.task.TaskPackages;
-import org.springframework.context.ApplicationContext;
-import org.springframework.stereotype.Component;
-import org.springframework.stereotype.Service;
-
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-/**
- * Scans fs-task beans and exposes invokable no-arg methods for Quartz invoke_target.
- */
-@Service
-public class TaskRegistryService {
-
-    private final ApplicationContext applicationContext;
-    private volatile List<Map<String, String>> cachedRows;
-
-    public TaskRegistryService(ApplicationContext applicationContext) {
-        this.applicationContext = applicationContext;
-    }
-
-    public List<Map<String, String>> listAll() {
-        List<Map<String, String>> rows = cachedRows;
-        if (rows == null) {
-            synchronized (this) {
-                rows = cachedRows;
-                if (rows == null) {
-                    rows = buildRegistry();
-                    cachedRows = rows;
-                }
-            }
-        }
-        return rows;
-    }
-
-    public void refreshCache() {
-        synchronized (this) {
-            cachedRows = buildRegistry();
-        }
-    }
-
-    public List<Map<String, String>> query(String beanName, String methodName, String invokeTarget) {
-        return listAll().stream()
-                .filter(row -> match(row.get("beanName"), beanName))
-                .filter(row -> match(row.get("methodName"), methodName))
-                .filter(row -> match(row.get("invokeTarget"), invokeTarget))
-                .collect(Collectors.toList());
-    }
-
-    private boolean match(String value, String keyword) {
-        if (StringUtils.isEmpty(keyword)) {
-            return true;
-        }
-        return value != null && value.toLowerCase(Locale.ROOT).contains(keyword.toLowerCase(Locale.ROOT));
-    }
-
-    private List<Map<String, String>> buildRegistry() {
-        Map<String, Object> beans = applicationContext.getBeansWithAnnotation(Component.class);
-        List<Map<String, String>> rows = new ArrayList<>();
-        for (Map.Entry<String, Object> entry : beans.entrySet()) {
-            String beanName = entry.getKey();
-            Object bean = entry.getValue();
-            Class<?> clazz = bean.getClass();
-            if (clazz.getName().contains("CGLIB") || clazz.getName().contains("$$")) {
-                clazz = clazz.getSuperclass();
-            }
-            String pkg = clazz.getPackage() != null ? clazz.getPackage().getName() : "";
-            if (!isTaskPackage(pkg)) {
-                continue;
-            }
-            for (Method method : clazz.getMethods()) {
-                if (method.getDeclaringClass() == Object.class) {
-                    continue;
-                }
-                if (method.getParameterCount() > 0) {
-                    continue;
-                }
-                if (!Modifier.isPublic(method.getModifiers())) {
-                    continue;
-                }
-                Map<String, String> row = new LinkedHashMap<>();
-                row.put("beanName", beanName);
-                row.put("methodName", method.getName());
-                row.put("invokeTarget", beanName + "." + method.getName() + "()");
-                row.put("className", clazz.getSimpleName());
-                rows.add(row);
-            }
-        }
-        rows.sort(Comparator.comparing(r -> r.get("invokeTarget")));
-        return rows;
-    }
-
-    private boolean isTaskPackage(String pkg) {
-        if (StringUtils.isEmpty(pkg)) {
-            return false;
-        }
-        for (String base : TaskPackages.TASK_BASE_PACKAGES) {
-            if (pkg.startsWith(base)) {
-                return true;
-            }
-        }
-        return false;
-    }
-}

+ 0 - 1
fs-task/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

@@ -1 +0,0 @@
-com.fs.task.config.TaskModuleConfiguration

+ 7 - 8
pom.xml

@@ -34,6 +34,7 @@
         <lombok.version>1.18.30</lombok.version>
         <gson-version>2.10</gson-version>
         <ijpay-version>2.7.8</ijpay-version>
+        <cron-utils.version>9.2.1</cron-utils.version>
     </properties>
 
     <!-- 依赖声明 -->
@@ -199,13 +200,6 @@
                 <version>${kaptcha.version}</version>
             </dependency>
 
-            <!-- 定时任务-->
-            <dependency>
-                <groupId>com.fs</groupId>
-                <artifactId>fs-quartz</artifactId>
-                <version>${fs.version}</version>
-            </dependency>
-
             <!-- 统一定时任务业务-->
             <dependency>
                 <groupId>com.fs</groupId>
@@ -274,6 +268,12 @@
                 <artifactId>spring-retry</artifactId>
                 <version>1.3.1</version>
             </dependency>
+
+            <dependency>
+                <groupId>com.cronutils</groupId>
+                <artifactId>cron-utils</artifactId>
+                <version>${cron-utils.version}</version>
+            </dependency>
         </dependencies>
     </dependencyManagement>
 
@@ -283,7 +283,6 @@
         <module>fs-agent</module>
         <module>fs-framework</module>
         <module>fs-service</module>
-        <module>fs-quartz</module>
         <module>fs-task</module>
         <module>fs-generator</module>
         <module>fs-common</module>