yaoyi před 1 týdnem
revize
505110660f
37 změnil soubory, kde provedl 2103 přidání a 0 odebrání
  1. 38 0
      .gitignore
  2. 10 0
      .idea/.gitignore
  3. 7 0
      .idea/encodings.xml
  4. 65 0
      .idea/inspectionProfiles/Project_Default.xml
  5. 6 0
      .idea/jpa-buddy.xml
  6. 14 0
      .idea/misc.xml
  7. 525 0
      pom.xml
  8. 27 0
      src/main/java/com/hr/BaseApplication.java
  9. 352 0
      src/main/java/com/hr/controller/DemoController.java
  10. 46 0
      src/main/java/com/hr/dto/DemoExcelDto.java
  11. 23 0
      src/main/java/com/hr/dto/MyDto.java
  12. 12 0
      src/main/java/com/hr/dto/MyParmDto.java
  13. 15 0
      src/main/java/com/hr/dto/QueryDto.java
  14. 24 0
      src/main/java/com/hr/dto/TestDemoDto.java
  15. 20 0
      src/main/java/com/hr/fegin/Demo1FeginServer.java
  16. 26 0
      src/main/java/com/hr/fegin/demo2/Demo2FeginServer.java
  17. 18 0
      src/main/java/com/hr/fegin/dto/MyDemoDto.java
  18. 10 0
      src/main/java/com/hr/fegin/dto/MyDto.java
  19. 27 0
      src/main/java/com/hr/repository/domain/Demo1Entity.java
  20. 25 0
      src/main/java/com/hr/repository/domain/TestEntity.java
  21. 29 0
      src/main/java/com/hr/repository/jpa/Demo1Jpa.java
  22. 33 0
      src/main/java/com/hr/repository/jpa/TestJpa.java
  23. 57 0
      src/main/java/com/hr/repository/service/DemoAsyncServer.java
  24. 55 0
      src/main/java/com/hr/repository/service/DemoService.java
  25. 102 0
      src/main/java/com/hr/repository/service/TransServer.java
  26. 188 0
      src/main/java/com/hr/util/ClientHelper.java
  27. 171 0
      src/main/java/com/hr/util/SnowflakeIdWorker.java
  28. 2 0
      src/main/resources/banner.txt
  29. 0 0
      src/main/resources/bootstrap-dev.yml
  30. 17 0
      src/main/resources/bootstrap.yml
  31. 1 0
      src/main/resources/fonts/pd4fonts.properties
  32. binární
      src/main/resources/fonts/simsun.ttf
  33. 69 0
      src/main/resources/logback.xml
  34. 22 0
      src/main/resources/mapper/Demo1Mapper.xml
  35. 39 0
      src/main/resources/mapper/TestMapper.xml
  36. 13 0
      src/test/java/Test1.java
  37. 15 0
      src/test/resources/bootstrap.yml

+ 38 - 0
.gitignore

@@ -0,0 +1,38 @@
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### IntelliJ IDEA ###
+.idea/modules.xml
+.idea/jarRepositories.xml
+.idea/compiler.xml
+.idea/libraries/
+*.iws
+*.iml
+*.ipr
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store

+ 10 - 0
.idea/.gitignore

@@ -0,0 +1,10 @@
+# 默认忽略的文件
+/shelf/
+/workspace.xml
+# 基于编辑器的 HTTP 客户端请求
+/httpRequests/
+# 依赖于环境的 Maven 主目录路径
+/mavenHomeManager.xml
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml

+ 7 - 0
.idea/encodings.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Encoding">
+    <file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
+  </component>
+</project>

+ 65 - 0
.idea/inspectionProfiles/Project_Default.xml

@@ -0,0 +1,65 @@
+<component name="InspectionProjectProfileManager">
+  <profile version="1.0">
+    <option name="myName" value="Project Default" />
+    <inspection_tool class="JpaQlInspection" enabled="true" level="WARNING" enabled_by_default="true" editorAttributes="WARNING_ATTRIBUTES" />
+    <inspection_tool class="JpaQueryApiInspection" enabled="true" level="WARNING" enabled_by_default="true" editorAttributes="WARNING_ATTRIBUTES" />
+    <inspection_tool class="MsBuiltinInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="MsOrderByInspection" enabled="false" level="WARNING" enabled_by_default="false" editorAttributes="WARNING_ATTRIBUTES" />
+    <inspection_tool class="MysqlSpaceAfterFunctionNameInspection" enabled="true" level="WARNING" enabled_by_default="true" editorAttributes="WARNING_ATTRIBUTES" />
+    <inspection_tool class="SpringDataJdbcAssociatedDbElementsInspection" enabled="false" level="ERROR" enabled_by_default="false" />
+    <inspection_tool class="SpringDataMethodInconsistencyInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SpringDataModifyingAnnotationMissing" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SpringDataMongoDBJsonFieldInspection" enabled="false" level="WARNING" enabled_by_default="false" editorAttributes="WARNING_ATTRIBUTES" />
+    <inspection_tool class="SpringDataPageableParameterMissing" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SpringDataRepositoryMethodParametersInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SpringDataRepositoryMethodReturnTypeInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlAddNotNullColumnInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlAggregatesInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlAmbiguousColumnInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlAutoIncrementDuplicateInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlCallNotationInspection" enabled="false" level="WARNING" enabled_by_default="false" editorAttributes="WARNING_ATTRIBUTES" />
+    <inspection_tool class="SqlCaseVsCoalesceInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlCaseVsIfInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlCheckUsingColumnsInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlConstantExpressionInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlCurrentSchemaInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlDeprecateTypeInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlDerivedTableAliasInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlDialectInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlDropIndexedColumnInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlDtInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlDuplicateColumnInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlIdentifierInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlIllegalCursorStateInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlInsertIntoGeneratedColumnInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlInsertNullIntoNotNullInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlInsertValuesInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlJoinWithoutOnInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlMisleadingReferenceInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlMissingReturnInspection" enabled="false" level="WARNING" enabled_by_default="false" editorAttributes="WARNING_ATTRIBUTES" />
+    <inspection_tool class="SqlMultipleLimitClausesInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlNoDataSourceInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlRedundantAliasInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlRedundantCodeInCoalesceInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlRedundantElseNullInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlRedundantLimitInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlRedundantOrderingDirectionInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlResolveInspection" enabled="false" level="WARNING" enabled_by_default="false" editorAttributes="WARNING_ATTRIBUTES" />
+    <inspection_tool class="SqlShadowingAliasInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlShouldBeInGroupByInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlSideEffectsInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlSignatureInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlSingleSessionModeInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlStorageInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlStringLengthExceededInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlTransactionStatementInTriggerInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlTriggerTransitionInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlTypeInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlUnicodeStringLiteralInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlUnreachableCodeInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlUnusedCteInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlUnusedSubqueryItemInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlUnusedVariableInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+    <inspection_tool class="SqlWithoutWhereInspection" enabled="false" level="WARNING" enabled_by_default="false" />
+  </profile>
+</component>

+ 6 - 0
.idea/jpa-buddy.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="JpaBuddyIdeaProjectConfig">
+    <option name="renamerInitialized" value="true" />
+  </component>
+</project>

+ 14 - 0
.idea/misc.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ExternalStorageConfigurationManager" enabled="true" />
+  <component name="MavenProjectsManager">
+    <option name="originalFiles">
+      <list>
+        <option value="$PROJECT_DIR$/pom.xml" />
+      </list>
+    </option>
+  </component>
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_21" project-jdk-name="ms-21" project-jdk-type="JavaSDK">
+    <output url="file://$PROJECT_DIR$/out" />
+  </component>
+</project>

+ 525 - 0
pom.xml

@@ -0,0 +1,525 @@
+<?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">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>3.2.12</version>
+
+    </parent>
+    <groupId>com.hr</groupId>
+    <artifactId>basic_framework</artifactId>
+    <version>1.0</version>
+
+    <description>基础框架</description>
+
+    <properties>
+        <maven.compiler.source>17</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <xiaohh-cloud.version>xiaohh-1.0.0</xiaohh-cloud.version>
+        <spring-boot.version>3.2.12</spring-boot.version>
+        <spring-cloud.version>2023.0.4</spring-cloud.version>
+        <spring-cloud-alibaba.version>2023.0.1.0</spring-cloud-alibaba.version>
+        <mybatis-starter.version>3.0.4</mybatis-starter.version>
+        <!--        <spring-cloud-openfeign.version>4.2.0</spring-cloud-openfeign.version>-->
+        <micrometer-tracing.version>1.4.1</micrometer-tracing.version>
+        <java.version>21</java.version>
+    </properties>
+
+    <repositories>
+        <repository>
+            <id>aliyun-public</id>
+            <url>https://maven.aliyun.com/repository/public</url>
+            <releases><enabled>true</enabled></releases>
+            <snapshots><enabled>false</enabled></snapshots>
+        </repository>
+        <repository>
+            <id>releases</id>
+            <url>https://nexus.hrsk.com/repository/maven-releases/</url>
+            <releases><enabled>true</enabled></releases>
+            <snapshots><enabled>false</enabled></snapshots>
+        </repository>
+        <repository>
+            <id>snapshots</id>
+            <url>https://nexus.hrsk.com/repository/maven-snapshots/</url>
+            <releases><enabled>false</enabled></releases>
+            <snapshots><enabled>true</enabled></snapshots>
+        </repository>
+    </repositories>
+
+    <pluginRepositories>
+        <pluginRepository>
+            <id>aliyun-public</id>
+            <url>https://maven.aliyun.com/repository/public</url>
+        </pluginRepository>
+    </pluginRepositories>
+
+
+    <dependencies>
+        <dependency>
+            <groupId>com.fasterxml.jackson.module</groupId>
+            <artifactId>jackson-module-jaxb-annotations</artifactId>
+            <version>2.15.2</version>
+        </dependency>
+
+
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter</artifactId>
+            <version>5.9.3</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>com.alibaba.fastjson2</groupId>
+            <artifactId>fastjson2</artifactId>
+            <version>2.0.57</version>
+        </dependency>
+
+
+
+        <dependency>
+            <groupId>com.google.protobuf</groupId>
+            <artifactId>protobuf-java</artifactId>
+            <version>2.5.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.aliyun.openservices</groupId>
+            <artifactId>aliyun-log-logback-appender</artifactId>
+            <version>0.1.15</version>
+        </dependency>
+
+
+
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>1.18.34</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>2.0.57</version>
+        </dependency>
+
+
+        <dependency>
+            <groupId>com.basedevelop</groupId>
+            <artifactId>basedevelop</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-jpa</artifactId>
+        </dependency>
+
+
+
+
+        <dependency>
+            <groupId>org.mybatis.spring.boot</groupId>
+            <artifactId>mybatis-spring-boot-starter</artifactId>
+            <version>3.0.4</version>
+        </dependency>
+
+        <!-- E签宝 -->
+        <dependency>
+            <groupId>esign-cn</groupId>
+            <artifactId>paas-sdk</artifactId>
+            <version>3.0.20</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-freemarker</artifactId>
+            <version>3.1.5</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.itextpdf</groupId>
+            <artifactId>kernel</artifactId>
+            <version>8.0.4</version>
+        </dependency>
+        <dependency>
+            <groupId>com.itextpdf</groupId>
+            <artifactId>io</artifactId>
+            <version>8.0.4</version>
+        </dependency>
+        <dependency>
+            <groupId>com.itextpdf</groupId>
+            <artifactId>layout</artifactId>
+            <version>8.0.4</version>
+        </dependency>
+        <dependency>
+            <groupId>com.itextpdf</groupId>
+            <artifactId>pdfa</artifactId>
+            <version>8.0.4</version>
+        </dependency>
+
+
+        <dependency>
+            <groupId>org.zefer</groupId>
+            <artifactId>pd4ml</artifactId>
+            <version>3.7.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.zefer</groupId>
+            <artifactId>css</artifactId>
+            <version>2.0.0</version>
+        </dependency>
+
+
+        <!-- 链路追踪依赖 -->
+        <dependency>
+            <groupId>io.micrometer</groupId>
+            <artifactId>micrometer-tracing-bom</artifactId>
+            <version>1.4.1</version>
+            <type>pom</type>
+            <scope>import</scope>
+        </dependency>
+
+
+
+
+
+
+        <!-- Seata 分布式事务 -->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
+        </dependency>
+        <!-- SpringWeb 依赖 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <!-- Spring 健康检查依赖 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+        </dependency>
+
+        <!-- Bootstrap 配置文件支持 -->
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-bootstrap</artifactId>
+            <version>4.1.5</version>
+        </dependency>
+
+        <!-- Nacos 注册中心 -->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+            <version>2023.0.1.0</version>
+        </dependency>
+
+        <!-- Nacos 注册中心 -->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+            <version>2023.0.1.0</version>
+        </dependency>
+
+        <!-- Seata 分布式事务 -->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
+            <version>2023.0.1.0</version>
+        </dependency>
+
+        <!-- SpringCloud 负载均衡启动器 -->
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
+            <version>4.1.5</version>
+        </dependency>
+
+        <!-- MySQL 数据库驱动 -->
+        <dependency>
+            <groupId>com.mysql</groupId>
+            <artifactId>mysql-connector-j</artifactId>
+        </dependency>
+
+        <!-- MyBatis 整合启动器 -->
+        <dependency>
+            <groupId>org.mybatis.spring.boot</groupId>
+            <artifactId>mybatis-spring-boot-starter</artifactId>
+            <version>3.0.4</version>
+        </dependency>
+
+
+
+        <!-- Micrometer 整合 Brave 追踪器 -->
+        <dependency>
+            <groupId>io.micrometer</groupId>
+            <artifactId>micrometer-tracing-bridge-brave</artifactId>
+        </dependency>
+        <!-- Micrometer 指标追踪 -->
+        <dependency>
+            <groupId>io.micrometer</groupId>
+            <artifactId>micrometer-tracing</artifactId>
+        </dependency>
+        <!-- Micrometer 观察者 -->
+        <dependency>
+            <groupId>io.micrometer</groupId>
+            <artifactId>micrometer-observation</artifactId>
+        </dependency>
+        <!-- 整合 Openfeign -->
+        <!-- OpenFeign 依赖 -->
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-openfeign</artifactId>
+            <version>4.1.4</version>
+        </dependency>
+
+
+        <!-- E签宝 start -->
+
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpmime</artifactId>
+            <version>4.5.14</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient</artifactId>
+            <version>4.5.14</version>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.module</groupId>
+            <artifactId>jackson-module-jaxb-annotations</artifactId>
+            <version>2.15.2</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-freemarker</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>esign-cn</groupId>
+            <artifactId>paas-sdk</artifactId>
+            <version>3.0.20</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.itextpdf</groupId>
+            <artifactId>kernel</artifactId>
+            <version>8.0.4</version>
+        </dependency>
+        <dependency>
+            <groupId>com.itextpdf</groupId>
+            <artifactId>io</artifactId>
+            <version>8.0.4</version>
+        </dependency>
+        <dependency>
+            <groupId>com.itextpdf</groupId>
+            <artifactId>layout</artifactId>
+            <version>8.0.4</version>
+        </dependency>
+        <dependency>
+            <groupId>com.itextpdf</groupId>
+            <artifactId>pdfa</artifactId>
+            <version>8.0.4</version>
+        </dependency>
+
+
+        <dependency>
+            <groupId>org.zefer</groupId>
+            <artifactId>pd4ml</artifactId>
+            <version>3.7.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.zefer</groupId>
+            <artifactId>css</artifactId>
+            <version>2.0.0</version>
+        </dependency>
+
+        <!-- E签宝  end -->
+
+        <dependency>
+            <groupId>org.codehaus.janino</groupId>
+            <artifactId>janino</artifactId>
+            <version>3.1.10</version>
+        </dependency>
+
+    </dependencies>
+
+
+    <build>
+        <finalName>${project.artifactId}</finalName>
+        <plugins>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.8.1</version>
+                <configuration>
+                    <source>21</source>
+                    <target>21</target>
+                </configuration>
+            </plugin>
+
+            <!-- Spring Boot 插件(全局生效) -->
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>3.2.12</version>
+            </plugin>
+
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>exec-maven-plugin</artifactId>
+                <version>3.0.0</version>
+                <executions>
+                    <execution>
+                        <id>prepare-package</id>
+                        <phase>prepare-package</phase>
+                        <goals>
+                            <goal>java</goal>
+                        </goals>
+                        <configuration>
+                            <mainClass>com.yy.basedevelop.common.util.Codepackage</mainClass>
+                            <arguments>
+
+                            </arguments>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+        </plugins>
+
+
+    </build>
+
+
+    <profiles>
+        <profile>
+            <id>deploy</id>
+
+            <build>
+                <finalName>${project.artifactId}</finalName>
+                <plugins>
+                    <plugin>
+                        <groupId>org.springframework.boot</groupId>
+                        <artifactId>spring-boot-maven-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <goals>
+                                    <goal>repackage</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+        <profile>
+            <id>dev</id>
+            <build>
+                <finalName>${project.artifactId}-dev</finalName>
+                <plugins>
+                    <plugin>
+                        <groupId>org.springframework.boot</groupId>
+                        <artifactId>spring-boot-maven-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <goals>
+                                    <goal>repackage</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-compiler-plugin</artifactId>
+                        <version>3.8.1</version> <!-- 使用最新版本 -->
+                        <configuration>
+                            <source>21</source> <!-- 设置源代码的 JDK 版本 -->
+                            <target>21</target> <!-- 设置目标字节码的 JDK 版本 -->
+                        </configuration>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+        <profile>
+            <id>test</id>
+            <build>
+                <finalName>${project.artifactId}-test</finalName>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-deploy-plugin</artifactId>
+                        <version>3.1.2</version>
+                        <configuration>
+                            <skip>false</skip>
+                        </configuration>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.springframework.boot</groupId>
+                        <artifactId>spring-boot-maven-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <goals>
+                                    <goal>repackage</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+        <profile>
+            <id>prod</id>
+            <build>
+                <finalName>${project.artifactId}-prod</finalName>
+                <plugins>
+                    <plugin>
+                        <groupId>org.springframework.boot</groupId>
+                        <artifactId>spring-boot-maven-plugin</artifactId>
+                        <version>3.2.12</version>
+                        <configuration>
+                            <mainClass>com.hr.BaseApplication</mainClass>
+                        </configuration>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-deploy-plugin</artifactId>
+                        <version>3.1.2</version>
+                        <configuration>
+                            <skip>false</skip>
+                        </configuration>
+                    </plugin>
+
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+
+
+    <distributionManagement>
+        <repository>
+            <id>releases</id>
+            <url>https://nexus.hrsk.com:8081/repository/maven-releases/</url>
+        </repository>
+        <snapshotRepository>
+            <id>snapshots</id>
+            <url>https://nexus.hrsk.com:8081/repository/maven-snapshots/</url>
+        </snapshotRepository>
+    </distributionManagement>
+
+
+</project>

+ 27 - 0
src/main/java/com/hr/BaseApplication.java

@@ -0,0 +1,27 @@
+package com.hr;
+
+import lombok.extern.slf4j.Slf4j;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+
+@EnableTransactionManagement
+@EnableFeignClients
+@EnableDiscoveryClient
+@MapperScan({"com.hr.repository.jpa"})
+@SpringBootApplication(exclude = {TaskExecutionAutoConfiguration.class})
+@Slf4j
+public class BaseApplication
+{
+    public static void main(String[] args)
+    {
+
+        SpringApplication.run(BaseApplication.class, args);
+        log.info("(♥◠‿◠)ノ゙  启动成功   ლ(´ڡ`ლ)゙  \n" );
+    }
+}

+ 352 - 0
src/main/java/com/hr/controller/DemoController.java

@@ -0,0 +1,352 @@
+package com.hr.controller;
+
+
+import com.alibaba.fastjson2.JSONObject;
+
+import com.hr.dto.*;
+
+import com.hr.fegin.dto.MyDemoDto;
+import com.hr.repository.jpa.TestJpa;
+import com.hr.repository.domain.TestEntity;
+import com.hr.repository.service.DemoService;
+import com.hr.repository.service.TransServer;
+import com.github.pagehelper.PageHelper;
+
+import com.hr.system.api.domain.SysDictData;
+import com.yy.basedevelop.common.data.BasePageResult;
+import com.yy.basedevelop.common.data.BaseReturnDto;
+
+
+import com.yy.basedevelop.common.http.config.RedisService;
+import com.yy.basedevelop.common.http.config.ThreadLocalContext;
+import com.yy.basedevelop.common.util.DictUtil;
+import com.yy.basedevelop.common.util.ExcelUtil;
+import com.yy.basedevelop.common.util.HttpClientUtils;
+import com.yy.basedevelop.common.util.OSSUtil;
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import org.springframework.http.codec.multipart.FilePart;
+import org.springframework.http.server.reactive.ServerHttpResponse;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.server.ServerWebExchange;
+import reactor.core.publisher.Mono;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+import java.util.random.RandomGenerator;
+
+
+@Slf4j
+@RestController
+@RequestMapping("/test")
+public class DemoController {
+
+    @Autowired
+    private TestJpa testJpa;
+    @Autowired
+    private DemoService sv;
+
+    @Autowired
+    private TransServer transServer;
+    @Autowired
+    private DemoService demoService;
+    @Autowired
+    private RedisService redisService;
+    @Autowired
+    private OSSUtil oSSUtil;
+
+
+    /**
+     * 测试字典
+     * @param dto
+     * @return
+     */
+    @PostMapping("listdict")
+    public TestDemoDto listdict(@RequestBody TestDemoDto dto) {
+        log.info("listdict=:{}", dto);
+
+        TestDemoDto dto1 = new TestDemoDto();
+        //将中文的 字典类型,字典标签转换为字典的value
+        //比如 用户性别,男 转换为 1
+        dto1.setDictValue(DictUtil.getDictCodeStr(dto.getDictTypeNameCn(),dto.getDictNameCn()));
+        Integer val=DictUtil.getDictCodeInt(dto.getDictTypeNameCn(),dto.getDictNameCn());
+        log.info("val=:{}", val);
+        return dto1;
+    }
+
+    /**
+     * 测试Oss
+     * @param filePart
+     * @param description
+     * @param path
+     * @return
+     */
+    @PostMapping("ossTest")
+    public TestDemoDto ossTest(@RequestPart("file") FilePart filePart,
+                               @RequestPart("description") String description,
+                               @RequestPart("path") String path) {
+        log.info("接收的listoss=:{},path={}", description,path);
+
+
+        String ossstr=oSSUtil.upLoadInputStream(filePart, "esgin" + path);
+
+
+        TestDemoDto dto1 = new TestDemoDto();
+        dto1.setName("返回名字oss");
+        dto1.setAge(25);
+        dto1.setOssUrl(ossstr);
+        return dto1;
+    }
+
+    /**
+     * 测试Mono
+     * @param dto
+     * @return
+     */
+    @PostMapping("MonoTest")
+    public Mono<TestDemoDto> MonoTest(@RequestBody TestDemoDto dto) {
+        log.info("接收的DTO777=:{}", dto);
+
+
+        TestDemoDto dto1 = new TestDemoDto();
+        dto1.setName("返回的名字1");
+        dto1.setAge(18);
+        return Mono.just(dto1);
+    }
+
+    /**
+     * 测试redis
+     * @param dto
+     * @return
+     */
+    @PostMapping("redisTest")
+    public TestDemoDto list5668(@RequestBody TestDemoDto dto) {
+        log.info("接收的DTO8=:{}", dto);
+
+        Boolean baaa=redisService.hasKey("aaa");
+        log.info("在redis中aaa的key是否存在={}", baaa);
+
+        TestDemoDto dto1 = new TestDemoDto();
+        dto1.setName("直接返回Dto");
+        dto1.setAge(26);
+        return dto1;
+    }
+
+
+    /***
+     * 通过http请求访问,一定要使用封装的HttpClientUtils,因为日志中同步了TraceId过去的,在日志追踪非常有用
+     * @param response
+     * @return
+     */
+    @GetMapping("httpClientDemo")
+    public Mono<TestDemoDto> listname6(ServerHttpResponse response) {
+        JSONObject json = new JSONObject();
+        json.put("name", "传输名字");
+        json.put("age", "20");
+
+
+
+        Mono<TestDemoDto> js=HttpClientUtils.post("http://localhost:9700/test/listname7",json,TestDemoDto.class);
+        js.subscribe(js1->{
+           log.info("当前返回的Dto:{}",js1);
+        });
+        TestDemoDto d=js.block();
+        log.info("在Mono外部打印日志,返回值:{}",d);
+
+        String returnstr=HttpClientUtils.post("http://localhost:9700/test/listname8",json);
+        log.info("直接返回String:{}",returnstr);
+
+
+        return js;
+
+    }
+
+    /**
+     * 测试Excel导出
+     * @param response
+     * @return
+     */
+    @GetMapping("exportExcel")
+    public Mono<Void> exportExcel(ServerHttpResponse response) {
+
+        ExcelUtil<DemoExcelDto> util = new ExcelUtil<DemoExcelDto>(DemoExcelDto.class);
+        List<DemoExcelDto> list = new ArrayList<>();
+        DemoExcelDto d1 = new DemoExcelDto();
+        d1.setName("名字1");
+        d1.setTestCode("test1");
+        d1.setMydate(new Date());
+        d1.setSex("1");
+        list.add(d1);
+        DemoExcelDto d2 = new DemoExcelDto();
+        d2.setName("名字2");
+        d2.setTestCode("test2");
+        d2.setMydate(new Date());
+        d2.setSex("2");
+        list.add(d2);
+        DemoExcelDto d3 = new DemoExcelDto();
+        d3.setName("名字3");
+        d3.setTestCode("test3");
+        d3.setMydate(new Date());
+        d3.setSex("2");
+        list.add(d3);
+
+        DemoExcelDto d4 = new DemoExcelDto();
+        d4.setName("名字4");
+        d4.setTestCode("test4");//没有值则导出来是空白
+        d4.setMydate(new Date());
+        d4.setSex("2");
+        list.add(d4);
+
+        return util.exportExcel(response, list, "字典数据");
+    }
+
+
+    /**
+     * 返回标准Dto数据
+     * @param sysDictData
+     * @return
+     */
+    @PostMapping("normReturn")
+    public BaseReturnDto normReturn(@RequestBody SysDictData sysDictData) {
+
+        List<SysDictData> list=DictUtil.getSysDictDataByKey(sysDictData.getDictType());
+        return BaseReturnDto.success(list);
+    }
+
+    /***
+     * 查询例子
+     * sql写在Jpa中
+     * @param dto
+     * @return
+     */
+    @PostMapping("listPage")
+    public BasePageResult<MyDemoDto> listPage(@RequestBody QueryDto dto) {
+        BasePageResult<MyDemoDto> lst=demoService.qyeryList(dto);
+
+        return  lst.success();
+    }
+
+    /***
+     * 查询例子,直接传Dto查询
+     * sql写在mapper.xml中
+     * @param dto
+     * @return
+     */
+    @PostMapping("listpage2")
+    public BasePageResult<MyDemoDto> listpage2(@RequestBody QueryDto dto) {
+        BasePageResult<MyDemoDto> lst=demoService.qyeryList3(dto);
+
+        return  lst.success();
+    }
+
+    /**
+     * 分页查询
+     * @param name
+     * @return
+     */
+    @GetMapping("listname2")
+    public BasePageResult<MyDemoDto> select1(@RequestParam("name") String name) {
+        PageHelper.startPage(2, 10);
+        return demoService.selectList1(name);
+    }
+
+
+
+    /**
+     * 多线程测试1,子线程中的TraceId和主线程日志的TraceId保持一直,这样便于追踪日志
+     * @return
+     */
+    @GetMapping("threadTest1")
+    public MyDto threadTest1() {
+
+        log.info("当前访问了threadTest1");
+        transServer.testsubThread();
+
+
+        return  MyDto.success();
+    }
+
+    /**
+     * 返回自定义Json
+      * @return
+     */
+    @GetMapping("retunJson")
+    public MyDto<JSONObject> retunJson() {
+
+        log.info("list1");
+
+        return MyDto.success(JSONObject.parseObject("{\"a\":1}"));
+    }
+
+    /**
+     * 多线程测试
+     * @param dto
+     * @return
+     */
+    @PostMapping("/mothod1")
+    public MyDto threadTest(@RequestBody MyParmDto dto) {
+        log.info("当前访问了mothod1");
+
+
+        transServer.threadTest1(dto.getName());
+
+
+        return   MyDto.success();
+    }
+
+    /**
+     * 接收参数
+     * @param name
+     * @return
+     */
+    @GetMapping("username")
+    public MyDto username(@RequestParam(value = "name", required = false) String name) {
+        if (name == null || name.trim().isEmpty()) {
+            JSONObject error = new JSONObject();
+            error.put("error", "Name parameter is required and cannot be empty");
+            MyDto d= MyDto.success(error);
+
+            return  d;
+        }
+
+
+        JSONObject response = new JSONObject();
+        response.put("name", name);
+        MyDto d= MyDto.error(response);
+
+        return d;
+    }
+
+    /**
+     * 返回JSON对象
+     * @return
+     */
+    @GetMapping("returnJson")
+    public BaseReturnDto<JSONObject> anniu1(){
+        JSONObject response = new JSONObject();
+        response.put("name", "按钮1,编辑权限");
+        return BaseReturnDto.success(response);
+    }
+
+
+    /**
+     * 分布式事务测试,注意要在service方法上面加@GlobalTransactional
+     * 如果只是本地事务那么只加@Transactional
+     * @return
+     */
+    @GetMapping("remotCall")
+    public BaseReturnDto<JSONObject> remotCall(){
+        JSONObject response = new JSONObject();
+        transServer.remotCall();
+        return BaseReturnDto.success(response);
+    }
+
+
+
+
+}

+ 46 - 0
src/main/java/com/hr/dto/DemoExcelDto.java

@@ -0,0 +1,46 @@
+package com.hr.dto;
+
+import com.yy.basedevelop.common.util.ruoyi.annotation.Excel;
+import lombok.Data;
+import org.apache.poi.ss.usermodel.IndexedColors;
+
+import java.util.Date;
+
+/**
+ * @author yaoy
+ * @createTime 2025/10/13 14:11
+ **/
+@Data
+public class DemoExcelDto {
+
+    @Excel(
+            name = "名字",
+            cellType = Excel.ColumnType.STRING,
+            headerColor= IndexedColors.BLUE1
+    )
+    private String name;
+
+    @Excel(
+            name = "名字",
+            cellType = Excel.ColumnType.STRING,
+            headerColor= IndexedColors.CORAL,
+            dictName="test_code"
+    )
+    private String testCode;
+    @Excel(
+            name = "日期",
+            cellType = Excel.ColumnType.STRING,
+            headerColor= IndexedColors.LAVENDER,
+            dateFormat = "yyyy-MM-dd HH:mm:ss"
+    )
+    private Date mydate;
+
+    @Excel(
+            name = "性别",
+            cellType = Excel.ColumnType.STRING,
+            headerColor= IndexedColors.GREY_40_PERCENT,
+            dictName = "sex"
+
+    )
+    private String sex;
+}

+ 23 - 0
src/main/java/com/hr/dto/MyDto.java

@@ -0,0 +1,23 @@
+package com.hr.dto;
+
+//import com.yy.basedevelop.common.data.BaseDto;
+import com.yy.basedevelop.common.data.BaseReturnDto;
+import lombok.Data;
+
+@Data
+public class  MyDto<T> extends BaseReturnDto<T> {
+
+   public MyDto(int code, String msg, T data) {
+      super(code, msg,data);
+   }
+   public static <T>  MyDto<T> success(T data) {
+      return new MyDto<T>(200, "success",data);
+   }
+   public static <T> MyDto<T> error( Object data) {
+      return new MyDto(0, "error",data);
+   }
+   public static <T> MyDto<T> success( ) {
+      return new MyDto(200, "success",null);
+   }
+
+}

+ 12 - 0
src/main/java/com/hr/dto/MyParmDto.java

@@ -0,0 +1,12 @@
+package com.hr.dto;
+
+import lombok.Data;
+
+/**
+ * @author yaoy
+ * @createTime 2025/9/28 15:55
+ **/
+@Data
+public class MyParmDto {
+    private String name;
+}

+ 15 - 0
src/main/java/com/hr/dto/QueryDto.java

@@ -0,0 +1,15 @@
+package com.hr.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author yaoy
+ * @createTime 2025/10/15 15:31
+ **/
+@Data
+public class QueryDto {
+    private String name;
+    private List<Integer> ids;
+}

+ 24 - 0
src/main/java/com/hr/dto/TestDemoDto.java

@@ -0,0 +1,24 @@
+package com.hr.dto;
+
+import com.yy.basedevelop.common.data.BaseReturnDto;
+import lombok.Data;
+
+/**
+ * @author yaoy
+ * @createTime 2025/10/14 09:39
+ **/
+@Data
+public class TestDemoDto extends BaseReturnDto {
+
+    private String name;
+
+    private String ossUrl;
+
+    private String dictNameCn;
+
+    private String dictTypeNameCn;
+
+    private String dictValue;
+
+    private int age;
+}

+ 20 - 0
src/main/java/com/hr/fegin/Demo1FeginServer.java

@@ -0,0 +1,20 @@
+package com.hr.fegin;
+
+
+import com.alibaba.fastjson2.JSONObject;
+import com.hr.fegin.dto.MyDto;
+import com.yy.basedevelop.common.data.BaseReturnDto;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+
+@FeignClient(name = "demo1", contextId = "demo1Remote")
+public interface Demo1FeginServer {
+
+
+    @GetMapping("testSetaRmote1")
+    public BaseReturnDto<JSONObject> testSetaRmote1(@RequestParam(value = "name", required = true) String name);
+    @GetMapping("testSetaRmote2")
+    public MyDto testSetaRmote2(@RequestParam(value = "name", required = true) String name);
+}

+ 26 - 0
src/main/java/com/hr/fegin/demo2/Demo2FeginServer.java

@@ -0,0 +1,26 @@
+package com.hr.fegin.demo2;
+
+import com.yy.basedevelop.common.data.BasePageResult;
+import com.yy.basedevelop.common.data.BaseReturnDto;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+
+/**
+ * @author AAA
+ * @createTime 2025/9/24 17:48
+ **/
+@FeignClient(name = "demo2")
+public interface Demo2FeginServer {
+    @GetMapping("test1")
+    public BaseReturnDto testremote1();
+
+    @GetMapping("test2")
+    public BasePageResult testremote2();
+
+
+    @GetMapping("trans1")
+    public BaseReturnDto trans1();
+
+    @GetMapping("trans2")
+    public BasePageResult trans2();
+}

+ 18 - 0
src/main/java/com/hr/fegin/dto/MyDemoDto.java

@@ -0,0 +1,18 @@
+package com.hr.fegin.dto;
+
+import com.yy.basedevelop.common.data.BaseReturnDto;
+import jakarta.persistence.Column;
+import lombok.Data;
+
+/**
+ * @author yaoy
+ * @createTime 2025/10/9 16:37
+ **/
+@Data
+public class MyDemoDto {
+
+    private Long fid;
+
+
+    private String fname;
+}

+ 10 - 0
src/main/java/com/hr/fegin/dto/MyDto.java

@@ -0,0 +1,10 @@
+package com.hr.fegin.dto;
+
+
+import com.yy.basedevelop.common.data.BaseReturnDto;
+import lombok.Data;
+
+@Data
+public class MyDto extends BaseReturnDto {
+
+}

+ 27 - 0
src/main/java/com/hr/repository/domain/Demo1Entity.java

@@ -0,0 +1,27 @@
+package com.hr.repository.domain;
+
+import com.yy.basedevelop.common.entity.BaseHrEntity;
+import jakarta.persistence.*;
+import lombok.Data;
+
+/**
+ * @author yaoy
+ * @createTime 2025/9/28 15:15
+ **/
+@Data
+@Entity(name="demo1")
+public class Demo1Entity extends BaseHrEntity {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "fid", nullable = false, updatable = false, columnDefinition = "BIGINT AUTO_INCREMENT COMMENT '主键ID'")
+    private Long fid;
+
+    @Column(name = "fname", columnDefinition = "varchar(80)  NULL comment 'fname'")
+    private String fname;
+
+    @Column
+    private String addrRemark;
+
+    @Version
+    protected Long version = 0L;
+}

+ 25 - 0
src/main/java/com/hr/repository/domain/TestEntity.java

@@ -0,0 +1,25 @@
+package com.hr.repository.domain;
+
+import com.yy.basedevelop.common.entity.BaseDeptEntity;
+import jakarta.persistence.*;
+import lombok.Data;
+
+@Data
+@Entity(name="test")
+//@Table(name="test")
+public class TestEntity extends BaseDeptEntity {
+
+//    @Id
+//    @GeneratedValue(strategy = GenerationType.UUID)
+//    private String id;
+
+    @Column(name = "name",columnDefinition = "varchar(255)")
+    private String name;
+
+    @Column(name = "auth_cs_depId",columnDefinition = "bigint")
+    private Long authCSDepId;
+
+    @Column(name = "auth_cs_depcode",columnDefinition = "varchar(50)")
+    private String authCSDepCode;
+
+}

+ 29 - 0
src/main/java/com/hr/repository/jpa/Demo1Jpa.java

@@ -0,0 +1,29 @@
+package com.hr.repository.jpa;
+
+import com.hr.dto.QueryDto;
+import com.hr.fegin.dto.MyDemoDto;
+import com.hr.repository.domain.Demo1Entity;
+import com.hr.repository.domain.TestEntity;
+import com.yy.basedevelop.common.data.BasePageResult;
+import org.hibernate.annotations.processing.SQL;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+
+import java.util.List;
+
+
+
+public interface Demo1Jpa extends JpaRepository<Demo1Entity, String> {
+
+
+    public List<TestEntity> findByFname(String name);
+
+//    @Query(nativeQuery=true,value="select t.* from demo1 t where t.fname like '%'||:#{#d.name}||'%' and fid in (:#{#d.ids})")
+    public BasePageResult<MyDemoDto> queryList3(QueryDto dto);
+
+    @Query(nativeQuery=true,value="select t.* from demo1 t where t.fname like '%'||:name||'%' and fid in (:ids)")
+    public BasePageResult<MyDemoDto> queryList(@Param("name")   String name, @Param("ids") List<Integer> ids);
+
+    public BasePageResult<MyDemoDto> select1(@Param("name") String fname,@Param("id") String id);
+}

+ 33 - 0
src/main/java/com/hr/repository/jpa/TestJpa.java

@@ -0,0 +1,33 @@
+package com.hr.repository.jpa;
+
+import com.hr.repository.domain.TestEntity;
+import com.yy.basedevelop.common.data.BasePageResult;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+
+import java.util.List;
+
+
+
+public interface TestJpa extends JpaRepository<TestEntity, String> {
+
+
+    public List<TestEntity> findByName(String name);
+
+    public BasePageResult<TestEntity> queryMylist(@Param("id")  String id2);
+
+    public List<TestEntity> queryMylist2(@Param("id2")  String id2);
+
+
+
+    @Query("select t from test t where t.id = :id2")
+    public List<TestEntity> queryMylist3(@Param("id2")  String id2);
+
+
+
+
+
+
+}

+ 57 - 0
src/main/java/com/hr/repository/service/DemoAsyncServer.java

@@ -0,0 +1,57 @@
+package com.hr.repository.service;
+
+import com.hr.repository.domain.Demo1Entity;
+import com.hr.repository.jpa.Demo1Jpa;
+import io.seata.core.context.RootContext;
+import io.seata.spring.annotation.GlobalTransactional;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.concurrent.CompletableFuture;
+
+/**
+ * @author AAA
+ * @createTime 2025/9/25 09:28
+ **/
+@Component
+@Slf4j
+public class DemoAsyncServer {
+    @Autowired
+    private Demo1Jpa demo1Jpa;
+    @Async("asyncExecutor")
+    @GlobalTransactional
+    public CompletableFuture<String> inserttest1(String name,int i){
+
+        Demo1Entity e = new Demo1Entity();
+        e.setFname(name+i);
+        demo1Jpa.save(e);
+
+        return CompletableFuture.completedFuture(String.valueOf(i));
+    }
+
+//    @GlobalTransactional
+    @Transactional
+    @Async("asyncExecutor")
+    public CompletableFuture<String> testAsyncThread(int i){
+        try {
+            log.info("开始计算: " + i + " + " + i);
+
+//            String currentThreadName = Thread.currentThread().getName();
+//            System.out.println("当前虚拟线程名称: " + currentThreadName);
+
+            java.util.Random random = new java.util.Random();
+            Thread.sleep(4900); // 模拟计算时间
+//            Thread.sleep(random.nextInt(500));
+
+            int result = i + i;
+            log.info("计算完成: " + result);
+            return CompletableFuture.completedFuture(String.valueOf(result));
+        } catch (InterruptedException e) {
+            Thread.currentThread().interrupt();
+            return CompletableFuture.failedFuture(e);
+        }
+    }
+}

+ 55 - 0
src/main/java/com/hr/repository/service/DemoService.java

@@ -0,0 +1,55 @@
+package com.hr.repository.service;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.hr.dto.QueryDto;
+import com.hr.fegin.dto.MyDemoDto;
+import com.hr.repository.domain.TestEntity;
+import com.hr.repository.jpa.Demo1Jpa;
+import com.hr.repository.jpa.TestJpa;
+import com.yy.basedevelop.common.data.BasePageResult;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Component
+@Slf4j
+public class DemoService {
+
+    @Autowired
+    private TestJpa testJpa;
+    @Autowired
+    private Demo1Jpa demo1Jpa;
+
+    @Transactional
+    public void insertLog(){
+        TestEntity tt1=new TestEntity();
+        tt1.setName("测试日志2");
+        testJpa.save(tt1);
+        log.info("===完成了一个日志的插入===={}",tt1);
+
+//        if(1==1){
+//            throw new RuntimeException("测试事务");
+//        }
+    }
+
+    public BasePageResult<MyDemoDto> qyeryList(QueryDto dto){
+        BasePageResult<MyDemoDto> list= demo1Jpa.queryList(dto.getName(),dto.getIds());
+        return list;
+    }
+
+    public BasePageResult<MyDemoDto> qyeryList3(QueryDto dto){
+        BasePageResult<MyDemoDto> list= demo1Jpa.queryList3(dto);
+        return list;
+    }
+
+    public BasePageResult<MyDemoDto> selectList1(String name){
+       return demo1Jpa.select1(name,null);
+
+    }
+
+
+}

+ 102 - 0
src/main/java/com/hr/repository/service/TransServer.java

@@ -0,0 +1,102 @@
+package com.hr.repository.service;
+
+import com.hr.fegin.Demo1FeginServer;
+import com.hr.fegin.demo2.Demo2FeginServer;
+import com.hr.repository.domain.TestEntity;
+import com.hr.repository.jpa.Demo1Jpa;
+import com.hr.repository.jpa.TestJpa;
+import com.yy.basedevelop.common.data.BasePageResult;
+import com.yy.basedevelop.common.data.BaseReturnDto;
+import io.seata.core.context.RootContext;
+import io.seata.spring.annotation.GlobalTransactional;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.*;
+
+/**
+ * @author AAA
+ * @createTime 2025/9/25 08:55
+ **/
+@Component
+@Slf4j
+public class TransServer {
+    @Autowired
+    private TestJpa testJpa;
+    @Autowired
+    private Demo1Jpa demo1Jpa;
+    @Autowired
+    private Demo2FeginServer demo2FeginServer;
+    @Autowired
+    private DemoAsyncServer demoAsyncServer;
+    @Autowired
+    private Demo1FeginServer demo1FeginServer;
+
+
+    public void testsubThread(){
+        log.info("==processDataAsync---开始异步处理虚拟线程,name:{}");
+
+
+        try {
+
+//            Thread.sleep(300);
+            List<CompletableFuture<String>> futures = new ArrayList<>();
+
+            for (int i = 1; i <= 10; i++) {
+                CompletableFuture<String> future = demoAsyncServer.testAsyncThread( i);
+                futures.add(future);
+            }
+            for(CompletableFuture<String> s1 :futures){
+                String s = s1.get();
+                log.info("====虚拟线程执行完成后返回值:{}", s);
+            }
+
+
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+
+
+    }
+
+    public void threadTest1(String name){
+
+
+        List<CompletableFuture<String>> futures = new ArrayList<>();
+        try {
+            for (int i = 1; i <= 2; i++) {
+                CompletableFuture<String> future = demoAsyncServer.inserttest1(name, i);
+                futures.add(future);
+            }
+            for (CompletableFuture<String> s1 : futures) {
+                String s = s1.get();
+                log.info("====虚拟线程执行完成后返回值:{}", s);
+            }
+        }catch (Exception e){
+            throw new RuntimeException(e);
+        }
+
+    }
+
+
+
+
+    @GlobalTransactional
+    public void remotCall(){
+        //假设远程服务保存了数据
+        demo1FeginServer.testSetaRmote1("aa");
+        //本地也保存了数据-
+        TestEntity tt1=new TestEntity();
+        tt1.setName("demo1测试");
+        testJpa.save(tt1);
+        log.info("===完成了一个日志的插入===={}",tt1);
+
+        if(1==1){
+            //异常后,系统会自动回滚本地和远程数据
+            throw new RuntimeException("测试事务");
+        }
+    }
+}

+ 188 - 0
src/main/java/com/hr/util/ClientHelper.java

@@ -0,0 +1,188 @@
+package com.hr.util;
+
+/**
+ * @author yaoy
+ * @createTime 2025/10/17 12:05
+ **/
+
+import java.text.MessageFormat;
+import com.timevale.esign.paas.tech.bean.result.Result;
+import com.timevale.esign.paas.tech.client.ServiceClient;
+import com.timevale.esign.paas.tech.client.ServiceClientManager;
+import com.yy.basedevelop.common.util.ruoyi.exception.ServiceException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.timevale.tech.sdk.bean.HttpConnectionConfig;
+import com.timevale.tech.sdk.bean.ProjectConfig;
+import com.timevale.tech.sdk.bean.SignatureConfig;
+import com.timevale.tech.sdk.constants.AlgorithmType;
+
+
+
+/**
+ * description SDK客户端辅助类
+ */
+public class ClientHelper {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(ClientHelper.class);
+    public static final AlgorithmType ALGORITHM_TYPE = AlgorithmType.HMACSHA256;
+    private static String PROJECT_ID ;
+    //e签宝公钥,可从开放平台获取,若算法类型为RSA,此项必填
+    public static final String ESIGN_PUB_KEY = null;
+
+    //e签宝私钥,可从开放平台下载密钥生成工具生成,若算法为RSA,此项必填
+    public static final String ESIGN_PRI_KEY = null;
+
+    //应用Secret
+    private static String PROJECT_SECRET ;
+
+    private static String API_URL;
+
+    public static String getProjectId() {
+        return PROJECT_ID;
+    }
+
+    public static void setProjectId(String projectId) {
+        PROJECT_ID = projectId;
+    }
+
+    public static void initProps(String prjid, String secret, String url){
+        PROJECT_ID=prjid;
+        PROJECT_SECRET=secret;
+        API_URL=url;
+    }
+
+    //----------------------------------------公有方法 start-------------------------------------------
+
+    /**
+     *
+     * description 注册客户端
+     */
+    public static void registClient() throws ServiceException {
+
+        /**1、进行项目配置,从开放平台获取*/
+        ProjectConfig proCfg = getProjectCfg();
+
+        /**2、Http配置*/
+        HttpConnectionConfig httpConCfg = getHttpConCfg();
+
+        /**3、签名配置*/
+        SignatureConfig signCfg = getSignatureCfg();
+
+        /**4、注册客户端*/
+        Result rst = ServiceClientManager.registClient(proCfg, httpConCfg, signCfg);
+
+        if(rst.getErrCode() != 0){
+            String rstMsg = MessageFormat.format("注册[{0}]的客户端失败:errorCode={1},msg={2}",
+                    PROJECT_ID,rst.getErrCode(),rst.getMsg());
+            throw new ServiceException(rstMsg);
+        }
+
+        LOGGER.info("注册[{}]的客户端成功",PROJECT_ID);
+    }
+
+
+
+    /**
+     *
+     * description 获取客户端
+     */
+    public static ServiceClient getServiceClient(String projectId)throws ServiceException{
+        ServiceClient serviceClient = ServiceClientManager.get(projectId);
+        if(serviceClient == null){
+            throw new ServiceException(MessageFormat.format(
+                    "ServiceClient为空,获取[{0}]的客户端失败,请重新注册客户端", projectId));
+        }
+
+        LOGGER.info("获取[{}]的客户端成功", projectId);
+        return serviceClient;
+    }
+
+
+
+    /**
+     *
+     * description 关闭客户端
+     */
+    public static void shutDownServiceClient(String projectId) throws ServiceException{
+        try {
+            ServiceClientManager.shutdown(projectId);
+        } catch (Exception e) {
+            throw new ServiceException(MessageFormat.format(
+                    "[{0}]的客户端关闭异常,请检查[{0}]的客户端是否注册成功或已关闭", projectId));
+        }
+
+        ServiceClient serviceClient = ServiceClientManager.get(projectId);
+        if(serviceClient != null){
+            throw new ServiceException(MessageFormat.format("关闭[{0}]的客户端失败,请检查原因", projectId));
+        }
+
+        LOGGER.info("[{}]的客户端关闭成功", projectId);
+    }
+
+    //----------------------------------------公有方法 end--------------------------------------------
+
+    //----------------------------------------私有方法 start------------------------------------------
+
+    /**
+     *
+     * description 项目配置
+     */
+    private static ProjectConfig getProjectCfg(){
+        ProjectConfig proCfg = new ProjectConfig();
+        //项目ID(应用ID)
+        proCfg.setProjectId(PROJECT_ID);
+        //项目Secret(应用Secret)
+        proCfg.setProjectSecret(PROJECT_SECRET);
+        //开放平台地址
+        proCfg.setItsmApiUrl(API_URL);
+        return proCfg;
+    }
+
+
+
+    /**
+     *
+     * description http配置
+     */
+    private static HttpConnectionConfig getHttpConCfg(){
+        HttpConnectionConfig httpConCfg = new HttpConnectionConfig();
+        //代理服务IP配置
+        //httpConCfg.setProxyIp(null);
+        //代理服务端口
+        //httpConCfg.setProxyPort(null);
+        //协议类型,默认Https
+        //httpConCfg.setHttpType(null);
+        //请求失败重试次数,默认5次
+        //httpConCfg.setRetry(null);
+        //连接超时时间配置,最大不能超过30秒
+        //httpConCfg.setTimeoutConnect(30);
+        //请求超时时间,最大不能超过30
+        //httpConCfg.setTimeoutRequest(30);
+        //代理服务器登录用户名
+        //httpConCfg.setUsername(null);
+        //代理服务器登录密码
+        //httpConCfg.setPassword(null);
+        return httpConCfg;
+    }
+
+
+
+    /**
+     *
+     * description 签名配置
+     */
+    private static SignatureConfig getSignatureCfg(){
+        SignatureConfig signCfg = new SignatureConfig();
+        signCfg.setAlgorithm(ALGORITHM_TYPE);
+
+        //若算法类型是RSA,需要设置e签宝公钥和平台私钥
+        if(AlgorithmType.RSA == ALGORITHM_TYPE){
+            signCfg.setEsignPublicKey(ESIGN_PUB_KEY);
+            signCfg.setPrivateKey(ESIGN_PRI_KEY);
+        }
+        return signCfg;
+    }
+    //----------------------------------------私有方法 end--------------------------------------------
+
+}

+ 171 - 0
src/main/java/com/hr/util/SnowflakeIdWorker.java

@@ -0,0 +1,171 @@
+package com.hr.util;
+
+import java.util.concurrent.TimeUnit;
+/**
+ * <p>TODO</p>
+ *
+ * @author cheng.jin.peng
+ * @version V1.0.0
+ * @date 2023/5/11 11:17
+ */
+
+public class SnowflakeIdWorker {
+    private static final SnowflakeIdWorker singleBean = new SnowflakeIdWorker(2);
+    /**
+     * 开始时间截 (本次时间戳为:Thu Nov 04 2010 09:42:54 GMT+0800 (中国标准时间)----1288834974657L---1656543015264587776--19 )
+     */
+    private final long startTime = 1546300800L;
+
+    /** 机器id所占的位数 */
+    private final long workerIdBits = 3L;
+
+    /** 支持的最大机器id,结果是31 (这个移位算法可以很快的计算出几位二进制数所能表示的最大十进制数) */
+    private final long maxWorkerId = -1L ^ (-1L << workerIdBits);
+
+    /** 序列在id中占的位数 */
+    private final long sequenceBits = 5L;
+
+    /** 机器ID向左移12位 */
+    private final long workerIdShift = sequenceBits;
+
+    /** 时间截向左移22位(10+12) */
+    private final long timestampLeftShift = sequenceBits + workerIdBits;
+
+    /** 生成序列的掩码,这里为4095 (0b111111111111=0xfff=4095) */
+    private final long sequenceMask = -1L ^ (-1L << sequenceBits);
+
+    /** 工作机器ID(0~1024) */
+    private long workerId;
+
+    /** 毫秒内序列(0~4095) */
+    private long sequence = 0L;
+
+    /** 上次生成ID的时间截 */
+    private long lastTimestamp = -1L;
+
+    //==============================Constructors=====================================
+
+
+    private SnowflakeIdWorker(){
+    /**
+     * 构造函数
+     * @param workerId 工作ID (0~1024)
+     */
+
+    }
+    private SnowflakeIdWorker(long workerId) {
+        if (workerId > maxWorkerId || workerId < 0) {
+            throw new IllegalArgumentException(String.format("workerId can't be greater than %d or less than 0", maxWorkerId));
+        }
+        this.workerId = workerId;
+    }
+
+    // ==============================Methods==========================================
+    /**
+     * 获得下一个ID (该方法是线程安全的)
+     * @return SnowflakeId
+     */
+    public static long nextId() {
+        return singleBean.generateNextId();
+    }
+    public synchronized long generateNextId() {
+        long timestamp = timeGen();
+
+        //如果当前时间小于上一次ID生成的时间戳,说明系统时钟回退过这个时候应当抛出异常
+        if (timestamp < lastTimestamp) {
+            throw new RuntimeException(
+                    String.format("Clock moved backwards.  Refusing to generate id for %d milliseconds", lastTimestamp - timestamp));
+        }
+
+        //如果是同一时间生成的,则进行毫秒内序列
+        if (lastTimestamp == timestamp) {
+            sequence = (sequence + 1) & sequenceMask;
+            //毫秒内序列溢出
+            if (sequence == 0) {
+                //阻塞到下一个毫秒,获得新的时间戳
+                timestamp = tilNextMillis(lastTimestamp);
+            }
+        }
+        //时间戳改变,毫秒内序列重置
+        else {
+            sequence = 0L;
+        }
+
+        //上次生成ID的时间截
+        lastTimestamp = timestamp;
+
+        //移位并通过或运算拼到一起组成64位的ID
+        return ((timestamp - startTime) << timestampLeftShift)
+                | (workerId << workerIdShift)
+                | sequence;
+    }
+
+    /**
+     * 阻塞到下一个毫秒,直到获得新的时间戳
+     * @param lastTimestamp 上次生成ID的时间截
+     * @return 当前时间戳
+     */
+    protected long tilNextMillis(long lastTimestamp) {
+        long timestamp = timeGen();
+        while (timestamp <= lastTimestamp) {
+            timestamp = timeGen();
+        }
+        return timestamp;
+    }
+
+    /**
+     * 返回以毫秒为单位的当前时间
+     * @return 当前时间(毫秒)
+     */
+    protected long timeGen() {
+        return System.currentTimeMillis();
+    }
+
+    /**
+     * 测试
+     */
+    public static void main(String[] args) {
+        System.out.println("开始:"+System.currentTimeMillis());
+
+
+
+//        for (int i = 0; i < 50; i++) {
+//            try {
+//                Thread.sleep(1000);
+//            } catch (InterruptedException e) {
+//                throw new RuntimeException(e);
+//            }
+//            long id = idWorker.nextId();
+//            System.out.println(id+"长度="+String.valueOf(id).length());
+//
+//        }
+        //SnowflakeIdWorker idWorker = new SnowflakeIdWorker(2);
+        for(int i=0; i<10; i++){
+            try {
+                TimeUnit.MILLISECONDS.sleep(1000);
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+
+        }
+
+        /*System.out.println("结束:"+System.currentTimeMillis());
+
+        Set<Long> set = new HashSet<>();
+
+        for (int i = 0; i < 100000;i++){
+            long id = idWorker.nextId();
+            try {
+                TimeUnit.MILLISECONDS.sleep(1000);
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+            System.out.println(id);
+            set.add(id);
+        }
+//        for (Long aLong : set) {
+//            System.out.println(aLong);
+//        }
+        System.out.println(set.size());*/
+    }
+}

+ 2 - 0
src/main/resources/banner.txt

@@ -0,0 +1,2 @@
+========== Spring Boot Version: ${spring-boot.version} ==============
+========== starting Spring Application Name: ${spring.application.name} ==============

+ 0 - 0
src/main/resources/bootstrap-dev.yml


+ 17 - 0
src/main/resources/bootstrap.yml

@@ -0,0 +1,17 @@
+server:
+  port: 9700
+# Spring
+spring:
+  profiles:
+    # 环境配置
+    active: dev
+  application:
+    # 应用名称
+    name: base
+  cloud:
+    nacos:
+      config:
+        namespace: public
+      discovery:
+        # 自动获取本机 IP(优先 IPv4)
+        ip: ${spring.cloud.client.ip-address}

+ 1 - 0
src/main/resources/fonts/pd4fonts.properties

@@ -0,0 +1 @@
+SimSun = simsun.ttf

binární
src/main/resources/fonts/simsun.ttf


+ 69 - 0
src/main/resources/logback.xml

@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="false"  debug="true" >
+    <shutdownHook class="ch.qos.logback.core.hook.DelayingShutdownHook"/>
+    <property name="log.path" value="logs" />
+    <property name="log.pattern" value="%d{HH:mm:ss.SSS} [traceId:%X{traceId}] [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
+    <springProperty scope="context" name="appName" source="spring.application.name" />
+    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+    </appender>
+
+
+    <!-- Info 日志文件 appender (仅在 appName 定义后启用) -->
+    <if condition='isDefined("appName")'>
+        <then>
+            <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
+<!--                <file>${log.path}/${appName}.log</file>-->
+                <encoder>
+                    <charset>UTF-8</charset>
+                    <pattern>${log.pattern}</pattern>
+                </encoder>
+                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+                    <fileNamePattern>${log.path}/${appName}.log.%d{yyyy-MM-dd}.log</fileNamePattern>
+                    <maxHistory>30</maxHistory>
+                </rollingPolicy>
+            </appender>
+        </then>
+    </if>
+
+    <!-- Error 日志文件 appender (仅在 appName 定义后启用) -->
+    <if condition='isDefined("appName")'>
+        <then>
+            <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
+                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+                    <!--日志文件输出的文件名-->
+                    <fileNamePattern>${log.path}/${appName}.error.log.%d{yyyy-MM-dd}.log</fileNamePattern>
+                    <!--日志文件保留天数-->
+                    <MaxHistory>30</MaxHistory>
+                </rollingPolicy>
+                <!-- 所有error日志都在这里-->
+                <filter class="ch.qos.logback.classic.filter.LevelFilter">
+                    <level>ERROR</level>
+                    <onMatch>ACCEPT</onMatch>
+                    <onMismatch>DENY</onMismatch>
+                </filter>
+                <encoder>
+                    <!-- 格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
+                    <pattern>${log.pattern}</pattern>
+                    <!-- 记录日志的编码 -->
+                    <charset>UTF-8</charset> <!-- 此处设置字符集 -->
+<!--                    <immediateFlush>true</immediateFlush>-->
+                </encoder>
+            </appender>
+        </then>
+    </if>
+
+    <logger name="com.hr" level="info" />
+    <logger name="com.ruoyi" level="info" />
+    <logger name="com.yy.basedevelop.common.config" level="info" />
+    <logger name="org.springframework" level="info" />
+
+    <root level="info">
+        <appender-ref ref="console"/>
+        <appender-ref ref="file_info"/>
+        <appender-ref ref="file_error"/>
+    </root>
+
+</configuration>

+ 22 - 0
src/main/resources/mapper/Demo1Mapper.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+		PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+		"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.hr.repository.jpa.Demo1Jpa">
+
+	<resultMap type="com.hr.repository.domain.Demo1Entity" id="Demo1Result">
+		<id     property="fid"         column="fid"        />
+		<result property="fname"       column="fname"      />
+
+	</resultMap>
+	<select id="queryList3">
+		select t.* from demo1 t where 1=1 and t.fname like '%'||#{name}||'%' and fid in (#{ids})
+	</select>
+	<select id="select1">
+		select t.* from demo1 t where t.fname like '%'||:name||'%' and t.fid=:id
+	</select>
+
+
+
+
+</mapper> 

+ 39 - 0
src/main/resources/mapper/TestMapper.xml

@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+		PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+		"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.hr.repository.jpa.TestJpa">
+
+	<resultMap type="com.hr.repository.domain.TestEntity" id="TestResult">
+		<id     property="id"         column="id"        />
+		<result property="name"       column="name"      />
+
+	</resultMap>
+
+
+
+	<select id="queryMylist">
+		select id,name
+		from test
+		<where>
+			<if test="id != null and id != ''">
+				AND id !=  #{id}
+			</if>
+
+		</where>
+	</select>
+
+	<select id="queryMylist2">
+		select id,name
+		from test
+		<where>
+			<if test="id2 != null and id2 != ''">
+				AND id !=  #{id2}
+			</if>
+
+		</where>
+	</select>
+
+
+
+</mapper> 

+ 13 - 0
src/test/java/Test1.java

@@ -0,0 +1,13 @@
+
+import com.hr.BaseApplication;
+import com.hr.generate.generateClass;
+import org.springframework.boot.test.context.SpringBootTest;
+
+
+/***
+ * 生成类,运行就根据当前数据库表生成类
+ */
+@SpringBootTest(classes = BaseApplication.class)
+public class Test1 extends generateClass {
+
+}

+ 15 - 0
src/test/resources/bootstrap.yml

@@ -0,0 +1,15 @@
+server:
+  port: 9700
+# Spring
+spring:
+  profiles:
+    # 环境配置
+    active: dev
+  application:
+    # 应用名称
+    name: InterfacePlatform
+
+  cloud:
+    nacos:
+      config:
+        namespace: Auth