yin_yu820 1 year ago
commit
625e796e6e
100 changed files with 8984 additions and 0 deletions
  1. 8 0
      jp-console/.idea/.gitignore
  2. 60 0
      jp-console/.idea/compiler.xml
  3. 27 0
      jp-console/.idea/encodings.xml
  4. 30 0
      jp-console/.idea/jarRepositories.xml
  5. 12 0
      jp-console/.idea/misc.xml
  6. 6 0
      jp-console/.idea/vcs.xml
  7. 1816 0
      jp-console/01.uml
  8. 2004 0
      jp-console/02.uml
  9. 44 0
      jp-console/jeeplus-modules/jeeplus-test/pom.xml
  10. 84 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/activiti/controller/TestActivitiAuditController.java
  11. 66 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/activiti/domain/TestActivitiAudit.java
  12. 37 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/activiti/mapper/TestActivitiAuditMapper.java
  13. 54 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/activiti/mapper/xml/TestActivitiAuditMapper.xml
  14. 69 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/activiti/service/TestActivitiAuditService.java
  15. 72 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/activiti/service/dto/TestActivitiAuditDTO.java
  16. 40 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/activiti/service/mapstruct/TestActivitiAuditWrapper.java
  17. 154 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/grid/controller/TestContinentController.java
  18. 153 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/grid/controller/TestCountryController.java
  19. 33 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/grid/domain/TestContinent.java
  20. 43 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/grid/domain/TestCountry.java
  21. 17 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/grid/mapper/TestContinentMapper.java
  22. 37 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/grid/mapper/TestCountryMapper.java
  23. 6 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/grid/mapper/xml/TestContinentMapper.xml
  24. 43 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/grid/mapper/xml/TestCountryMapper.xml
  25. 21 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/grid/service/TestContinentService.java
  26. 45 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/grid/service/TestCountryService.java
  27. 37 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/grid/service/dto/TestContinentDTO.java
  28. 53 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/grid/service/dto/TestCountryDTO.java
  29. 24 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/grid/service/mapstruct/TestContinentWrapper.java
  30. 38 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/grid/service/mapstruct/TestCountryWrapper.java
  31. 154 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/controller/TestCourseController.java
  32. 154 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/controller/TestStudentController.java
  33. 153 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/controller/TestStudentCourseController.java
  34. 47 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/domain/TestCourse.java
  35. 47 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/domain/TestStudent.java
  36. 57 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/domain/TestStudentCourse.java
  37. 17 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/mapper/TestCourseMapper.java
  38. 37 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/mapper/TestStudentCourseMapper.java
  39. 17 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/mapper/TestStudentMapper.java
  40. 6 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/mapper/xml/TestCourseMapper.xml
  41. 45 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/mapper/xml/TestStudentCourseMapper.xml
  42. 6 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/mapper/xml/TestStudentMapper.xml
  43. 21 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/service/TestCourseService.java
  44. 45 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/service/TestStudentCourseService.java
  45. 21 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/service/TestStudentService.java
  46. 53 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/service/dto/TestCourseDTO.java
  47. 73 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/service/dto/TestStudentCourseDTO.java
  48. 53 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/service/dto/TestStudentDTO.java
  49. 24 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/service/mapstruct/TestCourseWrapper.java
  50. 40 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/service/mapstruct/TestStudentCourseWrapper.java
  51. 24 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/service/mapstruct/TestStudentWrapper.java
  52. 146 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/mobile/controller/TestMobileController.java
  53. 22 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/mobile/controller/app/AppTestMobileController.java
  54. 101 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/mobile/domain/TestMobile.java
  55. 37 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/mobile/mapper/TestMobileMapper.java
  56. 56 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/mobile/mapper/xml/TestMobileMapper.xml
  57. 45 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/mobile/service/TestMobileService.java
  58. 128 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/mobile/service/dto/TestMobileDTO.java
  59. 40 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/mobile/service/mapstruct/TestMobileWrapper.java
  60. 154 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/note/controller/TestNoteController.java
  61. 38 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/note/domain/TestNote.java
  62. 17 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/note/mapper/TestNoteMapper.java
  63. 6 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/note/mapper/xml/TestNoteMapper.xml
  64. 21 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/note/service/TestNoteService.java
  65. 43 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/note/service/dto/TestNoteDTO.java
  66. 24 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/note/service/mapstruct/TestNoteWrapper.java
  67. 153 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/one/controller/TestFormLeaveController.java
  68. 49 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/one/domain/TestFormLeave.java
  69. 37 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/one/mapper/TestFormLeaveMapper.java
  70. 46 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/one/mapper/xml/TestFormLeaveMapper.xml
  71. 45 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/one/service/TestFormLeaveService.java
  72. 66 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/one/service/dto/TestFormLeaveDTO.java
  73. 40 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/one/service/mapstruct/TestFormLeaveWrapper.java
  74. 154 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/controller/TestDataMainController.java
  75. 59 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/domain/TestDataChild1.java
  76. 59 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/domain/TestDataChild2.java
  77. 74 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/domain/TestDataChild3.java
  78. 64 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/domain/TestDataMain.java
  79. 17 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/mapper/TestDataChild1Mapper.java
  80. 17 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/mapper/TestDataChild2Mapper.java
  81. 17 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/mapper/TestDataChild3Mapper.java
  82. 37 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/mapper/TestDataMainMapper.java
  83. 6 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/mapper/xml/TestDataChild1Mapper.xml
  84. 6 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/mapper/xml/TestDataChild2Mapper.xml
  85. 6 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/mapper/xml/TestDataChild3Mapper.xml
  86. 51 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/mapper/xml/TestDataMainMapper.xml
  87. 34 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/service/TestDataChild1Service.java
  88. 34 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/service/TestDataChild2Service.java
  89. 34 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/service/TestDataChild3Service.java
  90. 125 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/service/TestDataMainService.java
  91. 60 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/service/dto/TestDataChild1DTO.java
  92. 60 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/service/dto/TestDataChild2DTO.java
  93. 76 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/service/dto/TestDataChild3DTO.java
  94. 100 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/service/dto/TestDataMainDTO.java
  95. 38 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/service/mapstruct/TestDataChild1Wrapper.java
  96. 38 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/service/mapstruct/TestDataChild2Wrapper.java
  97. 38 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/service/mapstruct/TestDataChild3Wrapper.java
  98. 40 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/service/mapstruct/TestDataMainWrapper.java
  99. 154 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/pic/controller/TestPicController.java
  100. 45 0
      jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/pic/domain/TestPic.java

+ 8 - 0
jp-console/.idea/.gitignore

@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml

+ 60 - 0
jp-console/.idea/compiler.xml

@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="CompilerConfiguration">
+    <annotationProcessing>
+      <profile name="Annotation profile for jeeplus cloud" enabled="true">
+        <sourceOutputDir name="target/generated-sources/annotations" />
+        <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
+        <outputRelativeToContentRoot value="true" />
+        <processorPath useClasspath="false">
+          <entry name="$MAVEN_REPOSITORY$/org/mapstruct/mapstruct-processor/1.4.1.Final/mapstruct-processor-1.4.1.Final.jar" />
+          <entry name="$MAVEN_REPOSITORY$/org/mapstruct/mapstruct/1.4.1.Final/mapstruct-1.4.1.Final.jar" />
+          <entry name="$MAVEN_REPOSITORY$/org/projectlombok/lombok/1.18.20/lombok-1.18.20.jar" />
+          <entry name="$MAVEN_REPOSITORY$/org/projectlombok/lombok-mapstruct-binding/0.2.0/lombok-mapstruct-binding-0.2.0.jar" />
+        </processorPath>
+        <module name="jeeplus-calendar" />
+        <module name="jeeplus-test" />
+        <module name="jeeplus-monitor" />
+        <module name="jeeplus-notify" />
+        <module name="jeeplus-ureport" />
+        <module name="jeeplus-web" />
+        <module name="jeeplus-datascreen" />
+        <module name="jeeplus-datasource" />
+        <module name="jeeplus-wps" />
+        <module name="jeeplus-admin" />
+        <module name="jeeplus-flowable" />
+        <module name="jeeplus-mail" />
+        <module name="jeeplus-file" />
+        <module name="jeeplus-common" />
+        <module name="jeeplus-tools" />
+        <module name="jeeplus-quartz" />
+        <module name="jeeplus-echarts" />
+        <module name="jeeplus-form" />
+      </profile>
+    </annotationProcessing>
+  </component>
+  <component name="JavacSettings">
+    <option name="ADDITIONAL_OPTIONS_OVERRIDE">
+      <module name="jeeplus-admin" options="-parameters" />
+      <module name="jeeplus-calendar" options="-parameters" />
+      <module name="jeeplus-common" options="-parameters" />
+      <module name="jeeplus-datascreen" options="-parameters" />
+      <module name="jeeplus-datasource" options="-parameters" />
+      <module name="jeeplus-echarts" options="-parameters" />
+      <module name="jeeplus-file" options="-parameters" />
+      <module name="jeeplus-flowable" options="-parameters" />
+      <module name="jeeplus-form" options="-parameters" />
+      <module name="jeeplus-mail" options="-parameters" />
+      <module name="jeeplus-modules" options="" />
+      <module name="jeeplus-monitor" options="-parameters" />
+      <module name="jeeplus-notify" options="-parameters" />
+      <module name="jeeplus-plugins" options="-parameters" />
+      <module name="jeeplus-quartz" options="-parameters" />
+      <module name="jeeplus-test" options="-parameters" />
+      <module name="jeeplus-tools" options="-parameters" />
+      <module name="jeeplus-ureport" options="-parameters" />
+      <module name="jeeplus-web" options="-parameters" />
+      <module name="jeeplus-wps" options="-parameters" />
+    </option>
+  </component>
+</project>

+ 27 - 0
jp-console/.idea/encodings.xml

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Encoding">
+    <file url="file://$PROJECT_DIR$/jeeplus-modules/jeeplus-test/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/jeeplus-modules/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/jeeplus-platform/jeeplus-admin/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/jeeplus-platform/jeeplus-common/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/jeeplus-platform/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/jeeplus-plugins/jeeplus-calendar/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/jeeplus-plugins/jeeplus-datascreen/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/jeeplus-plugins/jeeplus-datasource/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/jeeplus-plugins/jeeplus-echarts/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/jeeplus-plugins/jeeplus-file/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/jeeplus-plugins/jeeplus-flowable/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/jeeplus-plugins/jeeplus-form/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/jeeplus-plugins/jeeplus-mail/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/jeeplus-plugins/jeeplus-monitor/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/jeeplus-plugins/jeeplus-notify/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/jeeplus-plugins/jeeplus-quartz/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/jeeplus-plugins/jeeplus-tools/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/jeeplus-plugins/jeeplus-ureport/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/jeeplus-plugins/jeeplus-wps/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/jeeplus-plugins/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/jeeplus-web/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
+  </component>
+</project>

+ 30 - 0
jp-console/.idea/jarRepositories.xml

@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="RemoteRepositoriesConfiguration">
+    <remote-repository>
+      <option name="id" value="aliyun-repos" />
+      <option name="name" value="aliyun-repos" />
+      <option name="url" value="https://maven.aliyun.com/repository/public" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Central Repository" />
+      <option name="url" value="https://repo.maven.apache.org/maven2" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Maven Central repository" />
+      <option name="url" value="https://repo1.maven.org/maven2" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="sonatype-repos-s" />
+      <option name="name" value="Sonatype Repository" />
+      <option name="url" value="https://oss.sonatype.org/content/repositories/snapshots" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="jboss.community" />
+      <option name="name" value="JBoss Community repository" />
+      <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
+    </remote-repository>
+  </component>
+</project>

+ 12 - 0
jp-console/.idea/misc.xml

@@ -0,0 +1,12 @@
+<?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_11" default="true" project-jdk-name="jbr-11" project-jdk-type="JavaSDK" />
+</project>

+ 6 - 0
jp-console/.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$/.." vcs="Git" />
+  </component>
+</project>

+ 1816 - 0
jp-console/01.uml

@@ -0,0 +1,1816 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Diagram>
+  <ID>MAVEN</ID>
+  <OriginalElement>org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0</OriginalElement>
+  <nodes>
+    <node x="4774.8065192656495" y="1460.0">org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0</node>
+    <node x="1607.9379295220592" y="1190.0">org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE</node>
+    <node x="2628.8545961887257" y="840.0">org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE</node>
+    <node x="2131.3685897435903" y="590.0">org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot:jar:2.1.3.RELEASE</node>
+    <node x="3958.5629295220597" y="680.0">org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE</node>
+    <node x="3855.5629295220597" y="590.0">org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE/ch.qos.logback:logback-classic:jar:1.2.3</node>
+    <node x="2740.785256410257" y="490.0">org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE/ch.qos.logback:logback-classic:jar:1.2.3/ch.qos.logback:logback-core:jar:1.2.3</node>
+    <node x="4004.5629295220597" y="590.0">org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE/org.apache.logging.log4j:log4j-to-slf4j:jar:2.11.2</node>
+    <node x="3989.3129295220597" y="490.0">org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE/org.apache.logging.log4j:log4j-to-slf4j:jar:2.11.2/org.apache.logging.log4j:log4j-api:jar:2.11.2</node>
+    <node x="5305.8065192656495" y="490.0">org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE/org.slf4j:jul-to-slf4j:jar:1.7.25</node>
+    <node x="2876.785256410257" y="680.0">org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/javax.annotation:javax.annotation-api:jar:1.3.2</node>
+    <node x="2406.0546004168395" y="80.0">org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework:spring-core:jar:5.1.5.RELEASE</node>
+    <node x="2413.0546004168395" y="0.0">org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework:spring-core:jar:5.1.5.RELEASE/org.springframework:spring-jcl:jar:5.1.5.RELEASE</node>
+    <node x="3057.785256410257" y="680.0">org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.yaml:snakeyaml:jar:1.23</node>
+    <node x="2582.0592853600656" y="340.0">org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE</node>
+    <node x="3548.346267083506" y="230.0">org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE/org.springframework:spring-beans:jar:5.1.5.RELEASE</node>
+    <node x="1186.7916666666674" y="1020.0">org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.aspectj:aspectjweaver:jar:1.9.2</node>
+    <node x="3023.4342853600656" y="1020.0">org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE</node>
+    <node x="3230.5629295220597" y="590.0">org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE/org.springframework:spring-context-support:jar:5.1.5.RELEASE</node>
+    <node x="2594.785256410257" y="490.0">org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE/org.springframework:spring-context-support:jar:5.1.5.RELEASE/org.springframework:spring-context:jar:5.1.5.RELEASE</node>
+    <node x="4770.8065192656495" y="1190.0">org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE</node>
+    <node x="4720.767618693399" y="1020.0">org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE</node>
+    <node x="4846.8065192656495" y="840.0">org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework.data:spring-data-keyvalue:jar:2.1.5.RELEASE</node>
+    <node x="5106.8065192656495" y="490.0">org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework.data:spring-data-keyvalue:jar:2.1.5.RELEASE/org.springframework.data:spring-data-commons:jar:2.1.5.RELEASE</node>
+    <node x="4811.8273525989825" y="680.0">org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework:spring-tx:jar:5.1.5.RELEASE</node>
+    <node x="4980.8065192656495" y="340.0">org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework:spring-oxm:jar:5.1.5.RELEASE</node>
+    <node x="8867.39875198809" y="1020.0">org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE</node>
+    <node x="9150.35360141584" y="340.0">org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-common:jar:4.1.33.Final</node>
+    <node x="8770.292618693398" y="840.0">org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-handler:jar:4.1.33.Final</node>
+    <node x="8673.042618693398" y="490.0">org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-handler:jar:4.1.33.Final/io.netty:netty-buffer:jar:4.1.33.Final</node>
+    <node x="8673.542618693398" y="680.0">org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-handler:jar:4.1.33.Final/io.netty:netty-codec:jar:4.1.33.Final</node>
+    <node x="8527.542618693398" y="590.0">org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-transport:jar:4.1.33.Final</node>
+    <node x="8532.042618693398" y="490.0">org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-transport:jar:4.1.33.Final/io.netty:netty-resolver:jar:4.1.33.Final</node>
+    <node x="5727.450863272232" y="840.0">org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.projectreactor:reactor-core:jar:3.2.6.RELEASE</node>
+    <node x="5714.450863272232" y="680.0">org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.projectreactor:reactor-core:jar:3.2.6.RELEASE/org.reactivestreams:reactive-streams:jar:1.0.2</node>
+    <node x="2418.562929522059" y="1190.0">org.springframework.boot:spring-boot-starter-freemarker:jar:2.1.3.RELEASE</node>
+    <node x="2363.1769230769237" y="1020.0">org.springframework.boot:spring-boot-starter-freemarker:jar:2.1.3.RELEASE/org.freemarker:freemarker:jar:2.3.28</node>
+    <node x="4045.184285360065" y="1020.0">org.springframework.boot:spring-boot-starter-jdbc:jar:2.1.3.RELEASE</node>
+    <node x="5425.8065192656495" y="490.0">org.springframework.boot:spring-boot-starter-jdbc:jar:2.1.3.RELEASE/com.zaxxer:HikariCP:jar:3.2.0</node>
+    <node x="4125.0565192656495" y="840.0">org.springframework.boot:spring-boot-starter-jdbc:jar:2.1.3.RELEASE/org.springframework:spring-jdbc:jar:5.1.5.RELEASE</node>
+    <node x="3232.6879295220597" y="1190.0">com.baomidou:mybatis-plus-boot-starter:jar:3.4.2</node>
+    <node x="3273.6879295220597" y="1020.0">com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2</node>
+    <node x="3375.035256410257" y="840.0">com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2/com.baomidou:mybatis-plus-extension:jar:3.4.2</node>
+    <node x="3510.850952026732" y="680.0">com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2/com.baomidou:mybatis-plus-extension:jar:3.4.2/com.baomidou:mybatis-plus-core:jar:3.4.2</node>
+    <node x="3431.5629295220597" y="590.0">com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2/com.baomidou:mybatis-plus-extension:jar:3.4.2/com.baomidou:mybatis-plus-core:jar:3.4.2/com.baomidou:mybatis-plus-annotation:jar:3.4.2</node>
+    <node x="3638.5629295220597" y="590.0">com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2/com.baomidou:mybatis-plus-extension:jar:3.4.2/com.baomidou:mybatis-plus-core:jar:3.4.2/com.github.jsqlparser:jsqlparser:jar:4.0</node>
+    <node x="3752.5629295220597" y="590.0">com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2/com.baomidou:mybatis-plus-extension:jar:3.4.2/com.baomidou:mybatis-plus-core:jar:3.4.2/org.mybatis:mybatis:jar:3.5.6</node>
+    <node x="3289.535256410257" y="680.0">com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2/com.baomidou:mybatis-plus-extension:jar:3.4.2/org.mybatis:mybatis-spring:jar:2.0.5</node>
+    <node x="2000.8685897435903" y="680.0">com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/org.springframework.boot:spring-boot-autoconfigure:jar:2.1.3.RELEASE</node>
+    <node x="4434.8065192656495" y="1190.0">org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE</node>
+    <node x="4471.767618693399" y="1020.0">org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE/org.apache.tomcat.embed:tomcat-embed-el:jar:9.0.16</node>
+    <node x="5760.4898568270955" y="1020.0">org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE/org.hibernate.validator:hibernate-validator:jar:6.0.14.Final</node>
+    <node x="5590.450863272232" y="840.0">org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE/org.hibernate.validator:hibernate-validator:jar:6.0.14.Final/javax.validation:validation-api:jar:2.0.1.Final</node>
+    <node x="6096.367529938899" y="840.0">org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE/org.hibernate.validator:hibernate-validator:jar:6.0.14.Final/com.fasterxml:classmate:jar:1.4.0</node>
+    <node x="1946.8129295220592" y="1190.0">org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE</node>
+    <node x="1327.7916666666674" y="1020.0">org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE</node>
+    <node x="724.875" y="840.0">org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.core:jackson-databind:jar:2.9.8</node>
+    <node x="885.875" y="840.0">org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.9.8</node>
+    <node x="1066.1073622831436" y="680.0">org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.9.8/com.fasterxml.jackson.core:jackson-databind:jar:2.9.6</node>
+    <node x="1344.8750000000005" y="840.0">org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.9.8</node>
+    <node x="1787.6185897435903" y="680.0">org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.9.8/com.fasterxml.jackson.core:jackson-databind:jar:2.9.6</node>
+    <node x="1078.8750000000005" y="840.0">org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.9.8</node>
+    <node x="1625.6185897435903" y="680.0">org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.9.8/com.fasterxml.jackson.core:jackson-databind:jar:2.9.6</node>
+    <node x="1721.4379295220592" y="840.0">org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-web:jar:5.1.5.RELEASE</node>
+    <node x="1975.3129295220592" y="1020.0">org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-webmvc:jar:5.1.5.RELEASE</node>
+    <node x="2416.0592853600656" y="340.0">org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-webmvc:jar:5.1.5.RELEASE/org.springframework:spring-expression:jar:5.1.5.RELEASE</node>
+    <node x="10014.671102598983" y="1190.0">com.microsoft.sqlserver:mssql-jdbc:jar:6.4.0.jre8</node>
+    <node x="0.0" y="1190.0">mysql:mysql-connector-java:jar:8.0.15</node>
+    <node x="10136.671102598983" y="1190.0">org.postgresql:postgresql:jar:42.2.5</node>
+    <node x="4078.6815192656495" y="1190.0">com.alibaba:druid-spring-boot-starter:jar:1.1.10</node>
+    <node x="4288.017618693399" y="1020.0">com.alibaba:druid-spring-boot-starter:jar:1.1.10/com.alibaba:druid:jar:1.1.10</node>
+    <node x="5433.450863272232" y="340.0">com.alibaba:druid-spring-boot-starter:jar:1.1.10/org.slf4j:slf4j-api:jar:1.7.25</node>
+    <node x="189.0" y="1190.0">cglib:cglib:jar:3.1</node>
+    <node x="191.0" y="1020.0">cglib:cglib:jar:3.1/org.ow2.asm:asm:jar:4.2</node>
+    <node x="4674.8065192656495" y="1190.0">javax.servlet.jsp:jsp-api:jar:2.1</node>
+    <node x="7199.725863272232" y="1190.0">commons-dbcp:commons-dbcp:jar:1.4</node>
+    <node x="7301.750952026732" y="1020.0">commons-dbcp:commons-dbcp:jar:1.4/commons-pool:commons-pool:jar:1.6</node>
+    <node x="6355.08709073268" y="840.0">org.apache.shiro:shiro-core:jar:1.4.0-RC2</node>
+    <node x="6229.148779938899" y="490.0">org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-lang:jar:1.4.0-RC2</node>
+    <node x="5949.4627692656495" y="680.0">org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-cache:jar:1.4.0-RC2</node>
+    <node x="6077.4627692656495" y="680.0">org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-crypto-hash:jar:1.4.0-RC2</node>
+    <node x="6138.2127692656495" y="590.0">org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-crypto-hash:jar:1.4.0-RC2/org.apache.shiro:shiro-crypto-core:jar:1.4.0-RC2</node>
+    <node x="6449.3898525989825" y="680.0">org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-crypto-cipher:jar:1.4.0-RC2</node>
+    <node x="6579.1398525989825" y="590.0">org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-config-core:jar:1.4.0-RC2</node>
+    <node x="6733.83709073268" y="680.0">org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-config-ogdl:jar:1.4.0-RC2</node>
+    <node x="6742.1398525989825" y="590.0">org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-config-ogdl:jar:1.4.0-RC2/commons-beanutils:commons-beanutils:jar:1.9.3</node>
+    <node x="6412.6398525989825" y="590.0">org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-event:jar:1.4.0-RC2</node>
+    <node x="6335.6398525989825" y="1190.0">org.apache.shiro:shiro-spring:jar:1.4.0-RC2</node>
+    <node x="6623.0877692656495" y="1190.0">org.apache.shiro:shiro-cas:jar:1.4.0-RC2</node>
+    <node x="6628.5877692656495" y="1020.0">org.apache.shiro:shiro-cas:jar:1.4.0-RC2/org.jasig.cas.client:cas-client-core:jar:3.2.2</node>
+    <node x="6413.742529938899" y="1020.0">org.apache.shiro:shiro-web:jar:1.4.0-RC2</node>
+    <node x="5886.0565192656495" y="840.0">org.apache.shiro:shiro-ehcache:jar:1.4.0-RC2</node>
+    <node x="5869.4315192656495" y="490.0">org.apache.shiro:shiro-ehcache:jar:1.4.0-RC2/net.sf.ehcache:ehcache-core:jar:2.6.11</node>
+    <node x="10256.671102598983" y="1190.0">commons-io:commons-io:jar:2.4</node>
+    <node x="639.5833333333339" y="1190.0">com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.1</node>
+    <node x="733.3156956164767" y="680.0">com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.1/com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0</node>
+    <node x="599.3156956164767" y="680.0">com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.1/com.fasterxml.jackson.core:jackson-core:jar:2.9.8</node>
+    <node x="819.0416666666679" y="1020.0">com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.1/com.fasterxml.jackson.core:jackson-databind:jar:2.9.6</node>
+    <node x="10651.671102598983" y="1190.0">com.alibaba:fastjson:jar:1.2.45</node>
+    <node x="8768.046102598983" y="1190.0">net.sf.dozer:dozer:jar:5.5.1</node>
+    <node x="9077.939607860975" y="1020.0">net.sf.dozer:dozer:jar:5.5.1/commons-beanutils:commons-beanutils:jar:1.9.1</node>
+    <node x="8920.042618693398" y="840.0">net.sf.dozer:dozer:jar:5.5.1/commons-beanutils:commons-beanutils:jar:1.9.1/commons-collections:commons-collections:jar:3.2.1</node>
+    <node x="9253.939607860975" y="1020.0">net.sf.dozer:dozer:jar:5.5.1/org.apache.commons:commons-lang3:jar:3.8.1</node>
+    <node x="7235.250952026732" y="490.0">net.sf.dozer:dozer:jar:5.5.1/org.slf4j:jcl-over-slf4j:jar:1.7.25</node>
+    <node x="4291.6815192656495" y="1190.0">com.google.guava:guava:jar:20.0</node>
+    <node x="1328.4795961887257" y="1190.0">commons-lang:commons-lang:jar:2.6</node>
+    <node x="9486.197888313269" y="1190.0">org.apache.commons:commons-lang3:jar:3.5</node>
+    <node x="10387.671102598983" y="1190.0">javax.servlet:javax.servlet-api:jar:3.1.0</node>
+    <node x="5941.242529938899" y="1190.0">net.sf.json-lib:json-lib:jar:jdk15:2.4</node>
+    <node x="5957.242529938899" y="1020.0">net.sf.json-lib:json-lib:jar:jdk15:2.4/net.sf.ezmorph:ezmorph:jar:1.0.6</node>
+    <node x="1041.2916666666674" y="1190.0">com.mchange:c3p0:jar:0.9.2.1</node>
+    <node x="980.7916666666674" y="1020.0">com.mchange:c3p0:jar:0.9.2.1/com.mchange:mchange-commons-java:jar:0.2.3.4</node>
+    <node x="6081.242529938899" y="1190.0">com.google.code.maven-play-plugin.com.mchange:c3p0-oracle-thin-extras:jar:0.9.5</node>
+    <node x="6139.742529938899" y="1020.0">com.google.code.maven-play-plugin.com.mchange:c3p0-oracle-thin-extras:jar:0.9.5/com.mchange:c3p0:jar:0.9.5</node>
+    <node x="949.2916666666674" y="1190.0">dom4j:dom4j:jar:1.6</node>
+    <node x="7350.725863272232" y="1190.0">org.hibernate:hibernate-ehcache:jar:5.2.12.Final</node>
+    <node x="7500.168429487179" y="680.0">org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.jboss.logging:jboss-logging:jar:3.3.2.Final</node>
+    <node x="7839.261577557947" y="1020.0">org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final</node>
+    <node x="8157.875952026732" y="840.0">org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/javax.persistence:javax.persistence-api:jar:2.2</node>
+    <node x="8467.875952026732" y="840.0">org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/org.javassist:javassist:jar:3.23.1-GA</node>
+    <node x="8341.875952026732" y="840.0">org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/net.bytebuddy:byte-buddy:jar:1.9.10</node>
+    <node x="7476.875952026732" y="840.0">org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/antlr:antlr:jar:2.7.7</node>
+    <node x="7817.875952026732" y="840.0">org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:jar:1.1.1.Final</node>
+    <node x="8063.875952026732" y="840.0">org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/org.jboss:jandex:jar:2.0.5.Final</node>
+    <node x="7130.350863272232" y="840.0">org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/org.dom4j:dom4j:jar:2.1.1</node>
+    <node x="7559.875952026732" y="840.0">org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/org.hibernate.common:hibernate-commons-annotations:jar:5.0.4.Final</node>
+    <node x="7129.250952026732" y="1020.0">org.hibernate:hibernate-ehcache:jar:5.2.12.Final/net.sf.ehcache:ehcache:jar:2.10.6</node>
+    <node x="512.0" y="840.0">com.fasterxml.jackson.core:jackson-databind:jar:2.9.6</node>
+    <node x="308.0" y="1190.0">com.fasterxml.jackson.datatype:jackson-datatype-hibernate5:jar:2.9.6</node>
+    <node x="270.0" y="1020.0">com.fasterxml.jackson.datatype:jackson-datatype-hibernate5:jar:2.9.6/javax.transaction:jta:jar:1.1</node>
+    <node x="339.0" y="1020.0">com.fasterxml.jackson.datatype:jackson-datatype-hibernate5:jar:2.9.6/com.fasterxml.jackson.core:jackson-databind:jar:2.9.6</node>
+    <node x="7057.250952026732" y="490.0">com.zaxxer:HikariCP-java7:jar:2.4.13</node>
+    <node x="9201.197888313269" y="1190.0">org.springframework.boot:spring-boot-configuration-processor:jar:2.1.3.RELEASE</node>
+    <node x="2202.187929522059" y="1190.0">org.projectlombok:lombok:jar:1.18.6</node>
+    <node x="1854.8129295220592" y="1190.0">p6spy:p6spy:jar:3.8.0</node>
+    <node x="9915.671102598983" y="1190.0">org.apache.ddlutils:ddlutils:jar:1.0</node>
+    <node x="10433.14875198809" y="1020.0">org.apache.ddlutils:ddlutils:jar:1.0/commons-beanutils:commons-beanutils:jar:1.7.0</node>
+    <node x="10724.230118693398" y="1020.0">org.apache.ddlutils:ddlutils:jar:1.0/commons-betwixt:commons-betwixt:jar:0.8</node>
+    <node x="10702.230118693398" y="840.0">org.apache.ddlutils:ddlutils:jar:1.0/commons-betwixt:commons-betwixt:jar:0.8/commons-beanutils:commons-beanutils-core:jar:1.7.0</node>
+    <node x="10635.730118693398" y="680.0">org.apache.ddlutils:ddlutils:jar:1.0/commons-betwixt:commons-betwixt:jar:0.8/commons-beanutils:commons-beanutils-core:jar:1.7.0/commons-logging:commons-logging:jar:1.0</node>
+    <node x="10801.730118693398" y="680.0">org.apache.ddlutils:ddlutils:jar:1.0/commons-betwixt:commons-betwixt:jar:0.8/commons-beanutils:commons-beanutils-core:jar:1.7.0/commons-collections:commons-collections:jar:2.0</node>
+    <node x="9407.939607860975" y="1020.0">org.apache.ddlutils:ddlutils:jar:1.0/commons-codec:commons-codec:jar:1.11</node>
+    <node x="9715.939607860975" y="1020.0">org.apache.ddlutils:ddlutils:jar:1.0/commons-collections:commons-collections:jar:3.1</node>
+    <node x="9564.939607860975" y="1020.0">org.apache.ddlutils:ddlutils:jar:1.0/commons-dbcp:commons-dbcp:jar:1.2.1</node>
+    <node x="9846.171102598983" y="840.0">org.apache.ddlutils:ddlutils:jar:1.0/commons-digester:commons-digester:jar:1.7</node>
+    <node x="9913.671102598983" y="680.0">org.apache.ddlutils:ddlutils:jar:1.0/commons-digester:commons-digester:jar:1.7/commons-beanutils:commons-beanutils:jar:1.6</node>
+    <node x="9205.751762820513" y="680.0">org.apache.ddlutils:ddlutils:jar:1.0/commons-digester:commons-digester:jar:1.7/commons-logging:commons-logging:jar:1.0.4</node>
+    <node x="10089.671102598983" y="680.0">org.apache.ddlutils:ddlutils:jar:1.0/commons-digester:commons-digester:jar:1.7/commons-collections:commons-collections:jar:2.1</node>
+    <node x="9807.671102598983" y="680.0">org.apache.ddlutils:ddlutils:jar:1.0/commons-digester:commons-digester:jar:1.7/xml-apis:xml-apis:jar:1.4.01</node>
+    <node x="9901.939607860975" y="1020.0">org.apache.ddlutils:ddlutils:jar:1.0/commons-lang:commons-lang:jar:2.1</node>
+    <node x="10047.939607860975" y="1020.0">org.apache.ddlutils:ddlutils:jar:1.0/commons-logging:commons-logging-api:jar:1.0.4</node>
+    <node x="10911.230118693398" y="840.0">org.apache.ddlutils:ddlutils:jar:1.0/commons-logging:commons-logging:jar:1.0.4</node>
+    <node x="11189.730118693398" y="1020.0">org.apache.ddlutils:ddlutils:jar:1.0/dom4j:dom4j:jar:1.6.1</node>
+    <node x="11108.730118693398" y="1020.0">org.apache.ddlutils:ddlutils:jar:1.0/junit:junit:jar:4.12</node>
+    <node x="11077.230118693398" y="840.0">org.apache.ddlutils:ddlutils:jar:1.0/junit:junit:jar:4.12/org.hamcrest:hamcrest-core:jar:1.3</node>
+    <node x="10329.14875198809" y="1020.0">org.apache.ddlutils:ddlutils:jar:1.0/stax:stax-api:jar:1.0.1</node>
+    <node x="10254.14875198809" y="1020.0">org.apache.ddlutils:ddlutils:jar:1.0/oro:oro:jar:2.0.8</node>
+    <node x="6775.5877692656495" y="1020.0">javax.xml.bind:jaxb-api:jar:2.3.1</node>
+    <node x="6778.8377692656495" y="840.0">javax.xml.bind:jaxb-api:jar:2.3.1/javax.activation:javax.activation-api:jar:1.2.0</node>
+    <node x="1216.4795961887257" y="1190.0">com.sun.xml.bind:jaxb-core:jar:2.3.0.1</node>
+    <node x="10541.671102598983" y="1190.0">com.sun.xml.bind:jaxb-impl:jar:2.3.0.1</node>
+  </nodes>
+  <notes />
+  <edges>
+    <edge source="com.google.code.maven-play-plugin.com.mchange:c3p0-oracle-thin-extras:jar:0.9.5" target="com.google.code.maven-play-plugin.com.mchange:c3p0-oracle-thin-extras:jar:0.9.5/com.mchange:c3p0:jar:0.9.5">
+      <point x="0.0" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE/org.slf4j:jul-to-slf4j:jar:1.7.25" target="com.alibaba:druid-spring-boot-starter:jar:1.1.10/org.slf4j:slf4j-api:jar:1.7.25">
+      <point x="0.0" y="-15.0" />
+      <point x="5355.3065192656495" y="460.0" />
+      <point x="5454.450863272232" y="460.0" />
+      <point x="-21.0" y="15.0" />
+    </edge>
+    <edge source="com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2/com.baomidou:mybatis-plus-extension:jar:3.4.2" target="com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2/com.baomidou:mybatis-plus-extension:jar:3.4.2/org.mybatis:mybatis-spring:jar:2.0.5">
+      <point x="-45.0" y="-15.0" />
+      <point x="3420.035256410257" y="810.0" />
+      <point x="3353.035256410257" y="810.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="javax.xml.bind:jaxb-api:jar:2.3.1">
+      <point x="40.186046511627865" y="-15.0" />
+      <point x="4922.992565777277" y="1310.0" />
+      <point x="6817.0877692656495" y="1310.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.ddlutils:ddlutils:jar:1.0/commons-betwixt:commons-betwixt:jar:0.8" target="org.apache.ddlutils:ddlutils:jar:1.0/commons-betwixt:commons-betwixt:jar:0.8/commons-beanutils:commons-beanutils-core:jar:1.7.0">
+      <point x="0.0" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-handler:jar:4.1.33.Final/io.netty:netty-codec:jar:4.1.33.Final" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-handler:jar:4.1.33.Final/io.netty:netty-buffer:jar:4.1.33.Final">
+      <point x="0.0" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="com.sun.xml.bind:jaxb-impl:jar:2.3.0.1">
+      <point x="100.46511627906966" y="-15.0" />
+      <point x="4983.271635544719" y="1430.0" />
+      <point x="10586.671102598983" y="1430.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE/org.hibernate.validator:hibernate-validator:jar:6.0.14.Final">
+      <point x="73.33333333333348" y="-15.0" />
+      <point x="4618.1398525989825" y="1140.0" />
+      <point x="5873.7398568270955" y="1140.0" />
+      <point x="37.75" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework:spring-core:jar:5.1.5.RELEASE">
+      <point x="-27.0" y="-15.0" />
+      <point x="2158.3685897435903" y="210.0" />
+      <point x="2434.593061955301" y="210.0" />
+      <point x="-24.461538461538566" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.9.8" target="com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.1/com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0">
+      <point x="0.0" y="-15.0" />
+      <point x="1436.8750000000005" y="770.0" />
+      <point x="867.4823622831436" y="770.0" />
+      <point x="53.66666666666663" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-transport:jar:4.1.33.Final">
+      <point x="-13.625" y="-15.0" />
+      <point x="8908.27375198809" y="900.0" />
+      <point x="8565.375952026732" y="900.0" />
+      <point x="8565.375952026732" y="660.0" />
+      <point x="8549.209285360066" y="660.0" />
+      <point x="-43.33333333333303" y="15.0" />
+    </edge>
+    <edge source="javax.xml.bind:jaxb-api:jar:2.3.1" target="javax.xml.bind:jaxb-api:jar:2.3.1/javax.activation:javax.activation-api:jar:1.2.0">
+      <point x="0.0" y="-15.0" />
+      <point x="-38.25" y="15.0" />
+    </edge>
+    <edge source="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final" target="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/org.javassist:javassist:jar:3.23.1-GA">
+      <point x="56.81818181818198" y="-15.0" />
+      <point x="7958.579759376129" y="1000.0" />
+      <point x="8511.375952026732" y="1000.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="com.fasterxml.jackson.datatype:jackson-datatype-hibernate5:jar:2.9.6" target="com.fasterxml.jackson.datatype:jackson-datatype-hibernate5:jar:2.9.6/com.fasterxml.jackson.core:jackson-databind:jar:2.9.6">
+      <point x="0.0" y="-15.0" />
+      <point x="414.5" y="1170.0" />
+      <point x="409.5" y="1170.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="cglib:cglib:jar:3.1" target="cglib:cglib:jar:3.1/org.ow2.asm:asm:jar:4.2">
+      <point x="0.0" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-config-ogdl:jar:1.4.0-RC2" target="com.alibaba:druid-spring-boot-starter:jar:1.1.10/org.slf4j:slf4j-api:jar:1.7.25">
+      <point x="57.19999999999982" y="-15.0" />
+      <point x="6862.53709073268" y="660.0" />
+      <point x="6922.4211025989825" y="660.0" />
+      <point x="6922.4211025989825" y="420.0" />
+      <point x="5496.450863272232" y="420.0" />
+      <point x="21.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.ddlutils:ddlutils:jar:1.0/commons-betwixt:commons-betwixt:jar:0.8" target="org.apache.ddlutils:ddlutils:jar:1.0/commons-logging:commons-logging:jar:1.0.4">
+      <point x="48.33333333333394" y="-15.0" />
+      <point x="10845.063452026732" y="1000.0" />
+      <point x="10947.730118693398" y="1000.0" />
+      <point x="-36.5" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-spring:jar:1.4.0-RC2" target="org.apache.shiro:shiro-web:jar:1.4.0-RC2">
+      <point x="27.5" y="-15.0" />
+      <point x="6418.1398525989825" y="1140.0" />
+      <point x="6429.742529938899" y="1140.0" />
+      <point x="-32.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE/org.springframework:spring-context-support:jar:5.1.5.RELEASE">
+      <point x="-35.5" y="-15.0" />
+      <point x="4756.267618693399" y="940.0" />
+      <point x="3671.100952026732" y="940.0" />
+      <point x="3671.100952026732" y="640.0" />
+      <point x="3381.3962628553927" y="640.0" />
+      <point x="60.33333333333326" y="15.0" />
+    </edge>
+    <edge source="net.sf.dozer:dozer:jar:5.5.1" target="net.sf.dozer:dozer:jar:5.5.1/org.apache.commons:commons-lang3:jar:3.8.1">
+      <point x="25.875" y="-15.0" />
+      <point x="8828.421102598983" y="1170.0" />
+      <point x="9320.939607860975" y="1170.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="net.sf.dozer:dozer:jar:5.5.1/commons-beanutils:commons-beanutils:jar:1.9.1" target="net.sf.dozer:dozer:jar:5.5.1/commons-beanutils:commons-beanutils:jar:1.9.1/commons-collections:commons-collections:jar:3.2.1">
+      <point x="0.0" y="-15.0" />
+      <point x="9155.939607860975" y="990.0" />
+      <point x="9003.042618693398" y="990.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework.data:spring-data-keyvalue:jar:2.1.5.RELEASE/org.springframework.data:spring-data-commons:jar:2.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework:spring-core:jar:5.1.5.RELEASE">
+      <point x="0.0" y="-15.0" />
+      <point x="5192.8065192656495" y="130.0" />
+      <point x="2507.9776773399167" y="130.0" />
+      <point x="48.92307692307713" y="15.0" />
+    </edge>
+    <edge source="org.hibernate:hibernate-ehcache:jar:5.2.12.Final" target="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/net.sf.ehcache:ehcache:jar:2.10.6">
+      <point x="-49.66666666666697" y="-15.0" />
+      <point x="7375.559196605565" y="1130.0" />
+      <point x="7171.750952026732" y="1130.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.ddlutils:ddlutils:jar:1.0/commons-betwixt:commons-betwixt:jar:0.8/commons-beanutils:commons-beanutils-core:jar:1.7.0" target="org.apache.ddlutils:ddlutils:jar:1.0/commons-betwixt:commons-betwixt:jar:0.8/commons-beanutils:commons-beanutils-core:jar:1.7.0/commons-logging:commons-logging:jar:1.0">
+      <point x="-47.25" y="-15.0" />
+      <point x="10749.480118693398" y="820.0" />
+      <point x="10708.730118693398" y="820.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE/org.springframework:spring-context-support:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework:spring-core:jar:5.1.5.RELEASE">
+      <point x="60.33333333333326" y="-15.0" />
+      <point x="3381.3962628553927" y="550.0" />
+      <point x="4161.479596188727" y="550.0" />
+      <point x="4161.479596188727" y="170.0" />
+      <point x="2475.362292724532" y="170.0" />
+      <point x="16.307692307692378" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE">
+      <point x="-73.33333333333348" y="-15.0" />
+      <point x="4471.4731859323165" y="1080.0" />
+      <point x="2872.5592853600656" y="1080.0" />
+      <point x="2872.5592853600656" y="990.0" />
+      <point x="2716.0420961887257" y="990.0" />
+      <point x="9.6875" y="15.0" />
+    </edge>
+    <edge source="org.apache.ddlutils:ddlutils:jar:1.0/commons-betwixt:commons-betwixt:jar:0.8" target="org.apache.ddlutils:ddlutils:jar:1.0/commons-digester:commons-digester:jar:1.7">
+      <point x="-48.33333333333394" y="-15.0" />
+      <point x="10748.396785360064" y="980.0" />
+      <point x="9958.671102598983" y="980.0" />
+      <point x="37.5" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="org.projectlombok:lombok:jar:1.18.6">
+      <point x="-45.20930232558112" y="-15.0" />
+      <point x="4837.597216940068" y="1320.0" />
+      <point x="2241.687929522059" y="1320.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.ddlutils:ddlutils:jar:1.0" target="org.apache.ddlutils:ddlutils:jar:1.0/dom4j:dom4j:jar:1.6.1">
+      <point x="36.67857142857065" y="-15.0" />
+      <point x="9991.849674027553" y="1170.0" />
+      <point x="11225.730118693398" y="1170.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework.data:spring-data-keyvalue:jar:2.1.5.RELEASE" target="com.alibaba:druid-spring-boot-starter:jar:1.1.10/org.slf4j:slf4j-api:jar:1.7.25">
+      <point x="61.875" y="-15.0" />
+      <point x="4991.1815192656495" y="810.0" />
+      <point x="5415.3065192656495" y="810.0" />
+      <point x="5415.3065192656495" y="470.0" />
+      <point x="5460.450863272232" y="470.0" />
+      <point x="-15.0" y="15.0" />
+    </edge>
+    <edge source="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final" target="javax.xml.bind:jaxb-api:jar:2.3.1/javax.activation:javax.activation-api:jar:1.2.0">
+      <point x="-45.45454545454504" y="-15.0" />
+      <point x="7856.307032103401" y="960.0" />
+      <point x="6893.5877692656495" y="960.0" />
+      <point x="38.25" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE">
+      <point x="-59.16666666666697" y="-15.0" />
+      <point x="4732.600952026731" y="950.0" />
+      <point x="3160.1842853600656" y="950.0" />
+      <point x="3160.1842853600656" y="740.0" />
+      <point x="2584.2852564102564" y="740.0" />
+      <point x="2584.2852564102564" y="430.0" />
+      <point x="2645.8092853600656" y="430.0" />
+      <point x="12.75" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE">
+      <point x="61.333333333333485" y="-15.0" />
+      <point x="1761.2712628553927" y="1110.0" />
+      <point x="2217.937929522059" y="1110.0" />
+      <point x="2217.937929522059" y="970.0" />
+      <point x="2657.9170961887257" y="970.0" />
+      <point x="-48.4375" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-handler:jar:4.1.33.Final/io.netty:netty-codec:jar:4.1.33.Final" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-common:jar:4.1.33.Final">
+      <point x="36.33333333333303" y="-15.0" />
+      <point x="8764.37595202673" y="660.0" />
+      <point x="9250.85360141584" y="660.0" />
+      <point x="9250.85360141584" y="470.0" />
+      <point x="9223.270268082506" y="470.0" />
+      <point x="10.41666666666697" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE/org.springframework:spring-context-support:jar:5.1.5.RELEASE">
+      <point x="49.25" y="-15.0" />
+      <point x="3171.1842853600656" y="1000.0" />
+      <point x="3182.785256410257" y="1000.0" />
+      <point x="3182.785256410257" y="660.0" />
+      <point x="3321.0629295220597" y="660.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.ddlutils:ddlutils:jar:1.0/commons-betwixt:commons-betwixt:jar:0.8/commons-beanutils:commons-beanutils-core:jar:1.7.0" target="org.apache.ddlutils:ddlutils:jar:1.0/commons-betwixt:commons-betwixt:jar:0.8/commons-beanutils:commons-beanutils-core:jar:1.7.0/commons-collections:commons-collections:jar:2.0">
+      <point x="47.25" y="-15.0" />
+      <point x="10843.980118693398" y="820.0" />
+      <point x="10884.730118693398" y="820.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/org.hibernate.common:hibernate-commons-annotations:jar:5.0.4.Final" target="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.jboss.logging:jboss-logging:jar:3.3.2.Final">
+      <point x="0.0" y="-15.0" />
+      <point x="7678.875952026732" y="820.0" />
+      <point x="7604.293429487179" y="820.0" />
+      <point x="44.625" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework.data:spring-data-keyvalue:jar:2.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework.data:spring-data-keyvalue:jar:2.1.5.RELEASE/org.springframework.data:spring-data-commons:jar:2.1.5.RELEASE">
+      <point x="20.625" y="-15.0" />
+      <point x="4949.9315192656495" y="800.0" />
+      <point x="5192.8065192656495" y="800.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE/org.springframework:spring-beans:jar:5.1.5.RELEASE">
+      <point x="25.5" y="-15.0" />
+      <point x="2658.5592853600656" y="280.0" />
+      <point x="3554.7907115279504" y="280.0" />
+      <point x="-51.55555555555566" y="15.0" />
+    </edge>
+    <edge source="org.apache.ddlutils:ddlutils:jar:1.0" target="org.apache.ddlutils:ddlutils:jar:1.0/commons-codec:commons-codec:jar:1.11">
+      <point x="-31.035714285713766" y="-15.0" />
+      <point x="9924.135388313269" y="1090.0" />
+      <point x="9476.439607860975" y="1090.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.projectreactor:reactor-core:jar:3.2.6.RELEASE" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.projectreactor:reactor-core:jar:3.2.6.RELEASE/org.reactivestreams:reactive-streams:jar:1.0.2">
+      <point x="0.0" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="org.springframework.boot:spring-boot-configuration-processor:jar:2.1.3.RELEASE">
+      <point x="65.30232558139505" y="-15.0" />
+      <point x="4948.108844847045" y="1360.0" />
+      <point x="9333.697888313269" y="1360.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.ddlutils:ddlutils:jar:1.0/commons-digester:commons-digester:jar:1.7" target="org.apache.ddlutils:ddlutils:jar:1.0/commons-digester:commons-digester:jar:1.7/commons-beanutils:commons-beanutils:jar:1.6">
+      <point x="18.75" y="-15.0" />
+      <point x="9939.921102598983" y="810.0" />
+      <point x="9991.671102598983" y="810.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="com.alibaba:fastjson:jar:1.2.45">
+      <point x="105.48837209302292" y="-15.0" />
+      <point x="4988.294891358672" y="1440.0" />
+      <point x="10693.671102598983" y="1440.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE">
+      <point x="-74.66666666666697" y="-15.0" />
+      <point x="4808.1398525989825" y="1110.0" />
+      <point x="4622.267618693399" y="1110.0" />
+      <point x="4622.267618693399" y="960.0" />
+      <point x="2774.1670961887257" y="960.0" />
+      <point x="67.8125" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-jdbc:jar:2.1.3.RELEASE/org.springframework:spring-jdbc:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE/org.springframework:spring-beans:jar:5.1.5.RELEASE">
+      <point x="-35.0" y="-15.0" />
+      <point x="4142.5565192656495" y="810.0" />
+      <point x="3845.0629295220597" y="810.0" />
+      <point x="3845.0629295220597" y="320.0" />
+      <point x="3619.2351559723948" y="320.0" />
+      <point x="12.888888888888687" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-crypto-cipher:jar:1.4.0-RC2" target="org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-lang:jar:1.4.0-RC2">
+      <point x="38.75" y="-15.0" />
+      <point x="6565.6398525989825" y="560.0" />
+      <point x="6295.836279938899" y="560.0" />
+      <point x="18.1875" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-lang:jar:1.4.0-RC2" target="com.alibaba:druid-spring-boot-starter:jar:1.1.10/org.slf4j:slf4j-api:jar:1.7.25">
+      <point x="0.0" y="-15.0" />
+      <point x="6277.648779938899" y="430.0" />
+      <point x="5490.450863272232" y="430.0" />
+      <point x="15.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE" target="com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/org.springframework.boot:spring-boot-autoconfigure:jar:2.1.3.RELEASE">
+      <point x="-38.75" y="-15.0" />
+      <point x="2667.6045961887257" y="760.0" />
+      <point x="2168.3685897435903" y="760.0" />
+      <point x="67.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-handler:jar:4.1.33.Final" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-common:jar:4.1.33.Final">
+      <point x="44.25" y="-15.0" />
+      <point x="8873.542618693398" y="820.0" />
+      <point x="9362.251762820513" y="820.0" />
+      <point x="9362.251762820513" y="460.0" />
+      <point x="9244.10360141584" y="460.0" />
+      <point x="31.25" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="commons-dbcp:commons-dbcp:jar:1.4">
+      <point x="50.232558139535286" y="-15.0" />
+      <point x="4933.039077405185" y="1330.0" />
+      <point x="7265.225863272232" y="1330.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.ddlutils:ddlutils:jar:1.0" target="org.apache.ddlutils:ddlutils:jar:1.0/commons-logging:commons-logging-api:jar:1.0.4">
+      <point x="-8.464285714286234" y="-15.0" />
+      <point x="9946.706816884696" y="1090.0" />
+      <point x="10132.939607860975" y="1090.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-handler:jar:4.1.33.Final/io.netty:netty-buffer:jar:4.1.33.Final" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-common:jar:4.1.33.Final">
+      <point x="0.0" y="-15.0" />
+      <point x="8728.042618693398" y="470.0" />
+      <point x="9202.436934749174" y="470.0" />
+      <point x="-10.41666666666697" y="15.0" />
+    </edge>
+    <edge source="org.apache.ddlutils:ddlutils:jar:1.0" target="org.apache.ddlutils:ddlutils:jar:1.0/junit:junit:jar:4.12">
+      <point x="31.035714285713766" y="-15.0" />
+      <point x="9986.206816884696" y="1160.0" />
+      <point x="11139.230118693398" y="1160.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-cache:jar:1.4.0-RC2" target="org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-lang:jar:1.4.0-RC2">
+      <point x="0.0" y="-15.0" />
+      <point x="6002.9627692656495" y="540.0" />
+      <point x="6235.211279938899" y="540.0" />
+      <point x="-42.4375" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="javax.servlet.jsp:jsp-api:jar:2.1">
+      <point x="-5.023255813953256" y="-15.0" />
+      <point x="4877.783263451696" y="1240.0" />
+      <point x="4712.8065192656495" y="1240.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final" target="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:jar:1.1.1.Final">
+      <point x="11.363636363636033" y="-15.0" />
+      <point x="7913.125213921583" y="960.0" />
+      <point x="7930.875952026732" y="960.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-config-ogdl:jar:1.4.0-RC2" target="org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-config-core:jar:1.4.0-RC2">
+      <point x="-28.600000000000364" y="-15.0" />
+      <point x="6776.7370907326795" y="640.0" />
+      <point x="6686.3898525989825" y="640.0" />
+      <point x="35.75" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE">
+      <point x="0.0" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="com.fasterxml.jackson.core:jackson-databind:jar:2.9.6" target="com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.1/com.fasterxml.jackson.core:jackson-core:jar:2.9.8">
+      <point x="-35.25" y="-15.0" />
+      <point x="547.25" y="800.0" />
+      <point x="646.8156956164767" y="800.0" />
+      <point x="-9.5" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-webmvc:jar:5.1.5.RELEASE">
+      <point x="0.0" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="com.baomidou:mybatis-plus-boot-starter:jar:3.4.2" target="org.springframework.boot:spring-boot-starter-jdbc:jar:2.1.3.RELEASE">
+      <point x="65.33333333333348" y="-15.0" />
+      <point x="3396.021262855393" y="1120.0" />
+      <point x="4091.934285360065" y="1120.0" />
+      <point x="-46.75" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework:spring-core:jar:5.1.5.RELEASE">
+      <point x="-64.58333333333348" y="-15.0" />
+      <point x="2641.7712628553923" y="770.0" />
+      <point x="1990.3685897435903" y="770.0" />
+      <point x="1990.3685897435903" y="540.0" />
+      <point x="1950.1185897435903" y="540.0" />
+      <point x="1950.1185897435903" y="200.0" />
+      <point x="2426.439215801455" y="200.0" />
+      <point x="-32.615384615384755" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="org.postgresql:postgresql:jar:42.2.5">
+      <point x="85.39534883720899" y="-15.0" />
+      <point x="4968.2018681028585" y="1400.0" />
+      <point x="10186.671102598983" y="1400.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-crypto-hash:jar:1.4.0-RC2" target="org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-lang:jar:1.4.0-RC2">
+      <point x="-36.75" y="-15.0" />
+      <point x="6114.2127692656495" y="660.0" />
+      <point x="6127.7127692656495" y="660.0" />
+      <point x="6127.7127692656495" y="560.0" />
+      <point x="6259.461279938899" y="560.0" />
+      <point x="-18.1875" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE">
+      <point x="74.66666666666697" y="-15.0" />
+      <point x="4957.4731859323165" y="1150.0" />
+      <point x="8921.89875198809" y="1150.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.hibernate:hibernate-ehcache:jar:5.2.12.Final" target="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final">
+      <point x="49.66666666666697" y="-15.0" />
+      <point x="7474.892529938899" y="1140.0" />
+      <point x="7901.761577557947" y="1140.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-webmvc:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework:spring-core:jar:5.1.5.RELEASE">
+      <point x="-53.75" y="-15.0" />
+      <point x="1986.0629295220592" y="940.0" />
+      <point x="1592.7916666666674" y="940.0" />
+      <point x="1592.7916666666674" y="180.0" />
+      <point x="2410.1315234937624" y="180.0" />
+      <point x="-48.92307692307713" y="15.0" />
+    </edge>
+    <edge source="com.baomidou:mybatis-plus-boot-starter:jar:3.4.2" target="com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/org.springframework.boot:spring-boot-autoconfigure:jar:2.1.3.RELEASE">
+      <point x="-65.33333333333348" y="-15.0" />
+      <point x="3265.354596188726" y="1100.0" />
+      <point x="2352.6769230769237" y="1100.0" />
+      <point x="2352.6769230769237" y="820.0" />
+      <point x="2034.3685897435903" y="820.0" />
+      <point x="-67.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE/org.springframework:spring-context-support:jar:5.1.5.RELEASE/org.springframework:spring-context:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework:spring-core:jar:5.1.5.RELEASE">
+      <point x="15.75" y="-15.0" />
+      <point x="2673.535256410257" y="450.0" />
+      <point x="2694.5592853600656" y="450.0" />
+      <point x="2694.5592853600656" y="190.0" />
+      <point x="2459.0546004168395" y="190.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE">
+      <point x="64.58333333333348" y="-15.0" />
+      <point x="2770.937929522059" y="820.0" />
+      <point x="4062.0629295220597" y="820.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-webmvc:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE/org.springframework:spring-context-support:jar:5.1.5.RELEASE/org.springframework:spring-context:jar:5.1.5.RELEASE">
+      <point x="32.25" y="-15.0" />
+      <point x="2072.062929522059" y="940.0" />
+      <point x="2249.8685897435903" y="940.0" />
+      <point x="2249.8685897435903" y="570.0" />
+      <point x="2642.035256410257" y="570.0" />
+      <point x="-15.75" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework.data:spring-data-keyvalue:jar:2.1.5.RELEASE">
+      <point x="11.83333333333303" y="-15.0" />
+      <point x="4803.600952026731" y="970.0" />
+      <point x="4929.3065192656495" y="970.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE/org.apache.tomcat.embed:tomcat-embed-el:jar:9.0.16">
+      <point x="0.0" y="-15.0" />
+      <point x="4544.8065192656495" y="1110.0" />
+      <point x="4541.767618693399" y="1110.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="org.apache.shiro:shiro-cas:jar:1.4.0-RC2">
+      <point x="35.16279069767461" y="-15.0" />
+      <point x="4917.969309963324" y="1300.0" />
+      <point x="6669.0877692656495" y="1300.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE/org.hibernate.validator:hibernate-validator:jar:6.0.14.Final" target="org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE/org.hibernate.validator:hibernate-validator:jar:6.0.14.Final/javax.validation:validation-api:jar:2.0.1.Final">
+      <point x="-50.333333333333485" y="-15.0" />
+      <point x="5785.6565234937625" y="1000.0" />
+      <point x="5648.950863272232" y="1000.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-web:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE/org.springframework:spring-beans:jar:5.1.5.RELEASE">
+      <point x="26.0" y="-15.0" />
+      <point x="1799.4379295220592" y="820.0" />
+      <point x="1950.1185897435903" y="820.0" />
+      <point x="1950.1185897435903" y="560.0" />
+      <point x="2034.1185897435903" y="560.0" />
+      <point x="2034.1185897435903" y="460.0" />
+      <point x="2714.9759520267326" y="460.0" />
+      <point x="2714.9759520267326" y="290.0" />
+      <point x="3567.6796004168395" y="290.0" />
+      <point x="-38.666666666666515" y="15.0" />
+    </edge>
+    <edge source="org.apache.ddlutils:ddlutils:jar:1.0/commons-digester:commons-digester:jar:1.7" target="org.apache.ddlutils:ddlutils:jar:1.0/commons-digester:commons-digester:jar:1.7/commons-collections:commons-collections:jar:2.1">
+      <point x="56.25" y="-15.0" />
+      <point x="9977.421102598983" y="820.0" />
+      <point x="10172.671102598983" y="820.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-cas:jar:1.4.0-RC2" target="org.apache.shiro:shiro-web:jar:1.4.0-RC2">
+      <point x="-23.0" y="-15.0" />
+      <point x="6646.0877692656495" y="1140.0" />
+      <point x="6493.742529938899" y="1140.0" />
+      <point x="32.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.projectreactor:reactor-core:jar:3.2.6.RELEASE">
+      <point x="-40.875" y="-15.0" />
+      <point x="8881.02375198809" y="910.0" />
+      <point x="5782.950863272232" y="910.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="com.sun.xml.bind:jaxb-core:jar:2.3.0.1">
+      <point x="-70.32558139534831" y="-15.0" />
+      <point x="4812.480937870301" y="1370.0" />
+      <point x="1262.4795961887257" y="1370.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="org.springframework.boot:spring-boot-starter-freemarker:jar:2.1.3.RELEASE">
+      <point x="-40.186046511627865" y="-15.0" />
+      <point x="4842.620472754022" y="1310.0" />
+      <point x="2532.062929522059" y="1310.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-crypto-hash:jar:1.4.0-RC2/org.apache.shiro:shiro-crypto-core:jar:1.4.0-RC2" target="org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-lang:jar:1.4.0-RC2">
+      <point x="0.0" y="-15.0" />
+      <point x="6210.2127692656495" y="570.0" />
+      <point x="6271.586279938899" y="570.0" />
+      <point x="-6.0625" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE/org.hibernate.validator:hibernate-validator:jar:6.0.14.Final" target="org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE/org.hibernate.validator:hibernate-validator:jar:6.0.14.Final/com.fasterxml:classmate:jar:1.4.0">
+      <point x="0.0" y="-15.0" />
+      <point x="5835.9898568270955" y="990.0" />
+      <point x="6120.117529938899" y="990.0" />
+      <point x="-23.75" y="15.0" />
+    </edge>
+    <edge source="org.apache.ddlutils:ddlutils:jar:1.0" target="commons-dbcp:commons-dbcp:jar:1.4/commons-pool:commons-pool:jar:1.6">
+      <point x="-36.67857142857065" y="-15.0" />
+      <point x="9918.492531170412" y="1100.0" />
+      <point x="7397.000952026732" y="1100.0" />
+      <point x="31.75" y="15.0" />
+    </edge>
+    <edge source="com.baomidou:mybatis-plus-boot-starter:jar:3.4.2" target="com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2">
+      <point x="0.0" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-freemarker:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-freemarker:jar:2.1.3.RELEASE/org.freemarker:freemarker:jar:2.3.28">
+      <point x="-75.66666666666674" y="-15.0" />
+      <point x="2456.3962628553927" y="1110.0" />
+      <point x="2413.1769230769237" y="1110.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final" target="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/javax.persistence:javax.persistence-api:jar:2.2">
+      <point x="34.09090909090901" y="-15.0" />
+      <point x="7935.852486648855" y="980.0" />
+      <point x="8239.875952026732" y="980.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework.data:spring-data-keyvalue:jar:2.1.5.RELEASE/org.springframework.data:spring-data-commons:jar:2.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE/org.springframework:spring-beans:jar:5.1.5.RELEASE">
+      <point x="-57.33333333333303" y="-15.0" />
+      <point x="5135.4731859323165" y="470.0" />
+      <point x="4141.06292952206" y="470.0" />
+      <point x="4141.06292952206" y="300.0" />
+      <point x="3645.0129337501726" y="300.0" />
+      <point x="38.666666666666515" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.9.8">
+      <point x="-46.75" y="-15.0" />
+      <point x="1374.5416666666674" y="990.0" />
+      <point x="972.375" y="990.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE" target="com.alibaba:druid-spring-boot-starter:jar:1.1.10/org.slf4j:slf4j-api:jar:1.7.25">
+      <point x="59.16666666666697" y="-15.0" />
+      <point x="4850.934285360065" y="1000.0" />
+      <point x="5522.3065192656495" y="1000.0" />
+      <point x="5522.3065192656495" y="460.0" />
+      <point x="5472.450863272232" y="460.0" />
+      <point x="-3.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-jdbc:jar:2.1.3.RELEASE/org.springframework:spring-jdbc:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework:spring-tx:jar:5.1.5.RELEASE">
+      <point x="35.0" y="-15.0" />
+      <point x="4212.5565192656495" y="820.0" />
+      <point x="4826.99401926565" y="820.0" />
+      <point x="-30.33333333333303" y="15.0" />
+    </edge>
+    <edge source="com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2" target="com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2/com.baomidou:mybatis-plus-extension:jar:3.4.2">
+      <point x="0.0" y="-15.0" />
+      <point x="3330.6879295220597" y="1000.0" />
+      <point x="3465.035256410257" y="1000.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-transport:jar:4.1.33.Final" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-handler:jar:4.1.33.Final/io.netty:netty-buffer:jar:4.1.33.Final">
+      <point x="43.33333333333303" y="-15.0" />
+      <point x="8635.87595202673" y="570.0" />
+      <point x="8691.37595202673" y="570.0" />
+      <point x="-36.66666666666697" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="mysql:mysql-connector-java:jar:8.0.15">
+      <point x="-105.48837209302292" y="-15.0" />
+      <point x="4777.318147172627" y="1440.0" />
+      <point x="84.5" y="1440.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.0-RC2" target="org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-config-ogdl:jar:1.4.0-RC2">
+      <point x="42.0" y="-15.0" />
+      <point x="6446.08709073268" y="790.0" />
+      <point x="6805.33709073268" y="790.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-freemarker:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE">
+      <point x="0.0" y="-15.0" />
+      <point x="2532.062929522059" y="990.0" />
+      <point x="2696.6670961887257" y="990.0" />
+      <point x="-9.6875" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.9.8" target="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.9.8/com.fasterxml.jackson.core:jackson-databind:jar:2.9.6">
+      <point x="61.33333333333337" y="-15.0" />
+      <point x="1498.208333333334" y="800.0" />
+      <point x="1858.1185897435903" y="800.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.1" target="com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.1/com.fasterxml.jackson.core:jackson-core:jar:2.9.8">
+      <point x="-81.0" y="-15.0" />
+      <point x="680.0833333333339" y="1170.0" />
+      <point x="501.5" y="1170.0" />
+      <point x="501.5" y="790.0" />
+      <point x="627.8156956164767" y="790.0" />
+      <point x="-28.5" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-ehcache:jar:1.4.0-RC2/net.sf.ehcache:ehcache-core:jar:2.6.11" target="com.alibaba:druid-spring-boot-starter:jar:1.1.10/org.slf4j:slf4j-api:jar:1.7.25">
+      <point x="0.0" y="-15.0" />
+      <point x="5928.4315192656495" y="440.0" />
+      <point x="5484.450863272232" y="440.0" />
+      <point x="9.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE/org.apache.logging.log4j:log4j-to-slf4j:jar:2.11.2" target="com.alibaba:druid-spring-boot-starter:jar:1.1.10/org.slf4j:slf4j-api:jar:1.7.25">
+      <point x="28.75" y="-15.0" />
+      <point x="4090.8129295220597" y="570.0" />
+      <point x="5295.3065192656495" y="570.0" />
+      <point x="5295.3065192656495" y="450.0" />
+      <point x="5448.450863272232" y="450.0" />
+      <point x="-27.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-jdbc:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-jdbc:jar:2.1.3.RELEASE/org.springframework:spring-jdbc:jar:5.1.5.RELEASE">
+      <point x="0.0" y="-15.0" />
+      <point x="4138.684285360065" y="1000.0" />
+      <point x="4177.5565192656495" y="1000.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="org.apache.shiro:shiro-ehcache:jar:1.4.0-RC2">
+      <point x="15.069767441860677" y="-15.0" />
+      <point x="4897.87628670751" y="1260.0" />
+      <point x="6273.742529938899" y="1260.0" />
+      <point x="6273.742529938899" y="980.0" />
+      <point x="5947.0565192656495" y="980.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework:spring-oxm:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE/org.springframework:spring-beans:jar:5.1.5.RELEASE">
+      <point x="-26.25" y="-15.0" />
+      <point x="5007.0565192656495" y="290.0" />
+      <point x="3657.9018226390617" y="290.0" />
+      <point x="51.55555555555566" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-jdbc:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE">
+      <point x="-62.333333333333485" y="-15.0" />
+      <point x="4076.3509520267316" y="970.0" />
+      <point x="2754.7920961887257" y="970.0" />
+      <point x="48.4375" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE/org.springframework:spring-context-support:jar:5.1.5.RELEASE/org.springframework:spring-context:jar:5.1.5.RELEASE">
+      <point x="27.0" y="-15.0" />
+      <point x="2212.3685897435903" y="560.0" />
+      <point x="2610.535256410257" y="560.0" />
+      <point x="-47.25" y="15.0" />
+    </edge>
+    <edge source="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final" target="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/antlr:antlr:jar:2.7.7">
+      <point x="-22.727272727272975" y="-15.0" />
+      <point x="7879.034304830673" y="940.0" />
+      <point x="7507.875952026732" y="940.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.0-RC2" target="org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-crypto-hash:jar:1.4.0-RC2">
+      <point x="-14.0" y="-15.0" />
+      <point x="6390.08709073268" y="800.0" />
+      <point x="6150.9627692656495" y="800.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE/org.hibernate.validator:hibernate-validator:jar:6.0.14.Final" target="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.jboss.logging:jboss-logging:jar:3.3.2.Final">
+      <point x="50.333333333333485" y="-15.0" />
+      <point x="5886.323190160429" y="1000.0" />
+      <point x="6491.075863272232" y="1000.0" />
+      <point x="6491.075863272232" y="800.0" />
+      <point x="7515.043429487179" y="800.0" />
+      <point x="-44.625" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE">
+      <point x="-60.2790697674418" y="-15.0" />
+      <point x="4822.527449498208" y="1350.0" />
+      <point x="1699.9379295220592" y="1350.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-cas:jar:1.4.0-RC2" target="org.apache.shiro:shiro-cas:jar:1.4.0-RC2/org.jasig.cas.client:cas-client-core:jar:3.2.2">
+      <point x="23.0" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE/org.springframework:spring-context-support:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE/org.springframework:spring-context-support:jar:5.1.5.RELEASE/org.springframework:spring-context:jar:5.1.5.RELEASE">
+      <point x="-60.33333333333326" y="-15.0" />
+      <point x="3260.7295961887266" y="560.0" />
+      <point x="2705.035256410257" y="560.0" />
+      <point x="47.25" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE">
+      <point x="0.0" y="-15.0" />
+      <point x="1699.9379295220592" y="1160.0" />
+      <point x="1581.7916666666674" y="1160.0" />
+      <point x="1581.7916666666674" y="810.0" />
+      <point x="1939.1185897435903" y="810.0" />
+      <point x="1939.1185897435903" y="550.0" />
+      <point x="2023.1185897435903" y="550.0" />
+      <point x="2023.1185897435903" y="410.0" />
+      <point x="2594.8092853600656" y="410.0" />
+      <point x="-38.25" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="com.alibaba:druid-spring-boot-starter:jar:1.1.10">
+      <point x="-25.116279069767188" y="-15.0" />
+      <point x="4857.690240195882" y="1280.0" />
+      <point x="4175.1815192656495" y="1280.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE">
+      <point x="-49.25" y="-15.0" />
+      <point x="3072.6842853600656" y="980.0" />
+      <point x="2735.4170961887257" y="980.0" />
+      <point x="29.0625" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.9.8" target="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.9.8/com.fasterxml.jackson.core:jackson-databind:jar:2.9.6">
+      <point x="43.25" y="-15.0" />
+      <point x="1015.625" y="820.0" />
+      <point x="1136.6073622831436" y="820.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-config-ogdl:jar:1.4.0-RC2" target="org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-config-ogdl:jar:1.4.0-RC2/commons-beanutils:commons-beanutils:jar:1.9.3">
+      <point x="0.0" y="-15.0" />
+      <point x="6805.33709073268" y="660.0" />
+      <point x="6820.1398525989825" y="660.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-jdbc:jar:2.1.3.RELEASE/com.zaxxer:HikariCP:jar:3.2.0" target="com.alibaba:druid-spring-boot-starter:jar:1.1.10/org.slf4j:slf4j-api:jar:1.7.25">
+      <point x="0.0" y="-15.0" />
+      <point x="5468.8065192656495" y="470.0" />
+      <point x="5466.450863272232" y="470.0" />
+      <point x="-9.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE/org.hibernate.validator:hibernate-validator:jar:6.0.14.Final">
+      <point x="74.40000000000009" y="-15.0" />
+      <point x="2114.2129295220593" y="1130.0" />
+      <point x="5798.2398568270955" y="1130.0" />
+      <point x="-37.75" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE">
+      <point x="-10.046511627906511" y="-15.0" />
+      <point x="4872.760007637743" y="1250.0" />
+      <point x="4544.8065192656495" y="1250.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-handler:jar:4.1.33.Final" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-handler:jar:4.1.33.Final/io.netty:netty-buffer:jar:4.1.33.Final">
+      <point x="14.75" y="-15.0" />
+      <point x="8844.042618693398" y="800.0" />
+      <point x="8793.042618693398" y="800.0" />
+      <point x="8793.042618693398" y="570.0" />
+      <point x="8764.709285360066" y="570.0" />
+      <point x="36.66666666666697" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-transport:jar:4.1.33.Final/io.netty:netty-resolver:jar:4.1.33.Final" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-common:jar:4.1.33.Final">
+      <point x="0.0" y="-15.0" />
+      <point x="8592.542618693398" y="460.0" />
+      <point x="9181.60360141584" y="460.0" />
+      <point x="-31.25" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-web:jar:5.1.5.RELEASE">
+      <point x="-37.20000000000027" y="-15.0" />
+      <point x="2002.612929522059" y="1090.0" />
+      <point x="1773.4379295220592" y="1090.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2/com.baomidou:mybatis-plus-extension:jar:3.4.2" target="com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2/com.baomidou:mybatis-plus-extension:jar:3.4.2/com.baomidou:mybatis-plus-core:jar:3.4.2">
+      <point x="45.0" y="-15.0" />
+      <point x="3510.035256410257" y="810.0" />
+      <point x="3584.350952026732" y="810.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-webmvc:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE">
+      <point x="10.75" y="-15.0" />
+      <point x="2050.562929522059" y="910.0" />
+      <point x="1979.3685897435903" y="910.0" />
+      <point x="1979.3685897435903" y="570.0" />
+      <point x="2063.3685897435903" y="570.0" />
+      <point x="2063.3685897435903" y="420.0" />
+      <point x="2620.3092853600656" y="420.0" />
+      <point x="-12.75" y="15.0" />
+    </edge>
+    <edge source="net.sf.dozer:dozer:jar:5.5.1" target="com.alibaba:druid-spring-boot-starter:jar:1.1.10/org.slf4j:slf4j-api:jar:1.7.25">
+      <point x="-25.875" y="-15.0" />
+      <point x="8776.671102598983" y="1120.0" />
+      <point x="7224.750952026732" y="1120.0" />
+      <point x="7224.750952026732" y="400.0" />
+      <point x="5508.450863272232" y="400.0" />
+      <point x="33.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-crypto-cipher:jar:1.4.0-RC2" target="org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-crypto-hash:jar:1.4.0-RC2/org.apache.shiro:shiro-crypto-core:jar:1.4.0-RC2">
+      <point x="-38.75" y="-15.0" />
+      <point x="6488.1398525989825" y="660.0" />
+      <point x="6246.2127692656495" y="660.0" />
+      <point x="36.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework:spring-oxm:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework:spring-core:jar:5.1.5.RELEASE">
+      <point x="26.25" y="-15.0" />
+      <point x="5059.5565192656495" y="150.0" />
+      <point x="2491.6699850322243" y="150.0" />
+      <point x="32.615384615384755" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE/org.springframework:spring-beans:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework:spring-core:jar:5.1.5.RELEASE">
+      <point x="0.0" y="-15.0" />
+      <point x="3606.346267083506" y="180.0" />
+      <point x="2467.2084465706857" y="180.0" />
+      <point x="8.153846153846189" y="15.0" />
+    </edge>
+    <edge source="com.alibaba:druid-spring-boot-starter:jar:1.1.10" target="com.alibaba:druid-spring-boot-starter:jar:1.1.10/org.slf4j:slf4j-api:jar:1.7.25">
+      <point x="64.33333333333348" y="-15.0" />
+      <point x="4239.5148525989825" y="1120.0" />
+      <point x="5528.3065192656495" y="1120.0" />
+      <point x="5528.3065192656495" y="450.0" />
+      <point x="5478.450863272232" y="450.0" />
+      <point x="3.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-spring:jar:1.4.0-RC2" target="org.apache.shiro:shiro-core:jar:1.4.0-RC2">
+      <point x="-27.5" y="-15.0" />
+      <point x="6363.1398525989825" y="990.0" />
+      <point x="6371.420424066013" y="990.0" />
+      <point x="-32.66666666666697" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE">
+      <point x="-50.232558139534376" y="-15.0" />
+      <point x="4832.573961126115" y="1330.0" />
+      <point x="2039.8129295220592" y="1330.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final" target="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/org.jboss:jandex:jar:2.0.5.Final">
+      <point x="22.727272727272975" y="-15.0" />
+      <point x="7924.488850285219" y="970.0" />
+      <point x="8100.875952026732" y="970.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.0-RC2" target="org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-cache:jar:1.4.0-RC2">
+      <point x="-42.0" y="-15.0" />
+      <point x="6362.08709073268" y="820.0" />
+      <point x="6029.7127692656495" y="820.0" />
+      <point x="26.75" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="com.google.code.maven-play-plugin.com.mchange:c3p0-oracle-thin-extras:jar:0.9.5">
+      <point x="10.046511627907421" y="-15.0" />
+      <point x="4892.853030893557" y="1250.0" />
+      <point x="6172.242529938899" y="1250.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE/org.slf4j:jul-to-slf4j:jar:1.7.25">
+      <point x="69.0" y="-15.0" />
+      <point x="4131.06292952206" y="660.0" />
+      <point x="5355.3065192656495" y="660.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="com.alibaba:druid-spring-boot-starter:jar:1.1.10" target="com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/org.springframework.boot:spring-boot-autoconfigure:jar:2.1.3.RELEASE">
+      <point x="-64.33333333333348" y="-15.0" />
+      <point x="4110.8481859323165" y="1090.0" />
+      <point x="2554.062929522059" y="1090.0" />
+      <point x="2554.062929522059" y="810.0" />
+      <point x="2101.3685897435903" y="810.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="com.fasterxml.jackson.datatype:jackson-datatype-hibernate5:jar:2.9.6" target="com.fasterxml.jackson.datatype:jackson-datatype-hibernate5:jar:2.9.6/javax.transaction:jta:jar:1.1">
+      <point x="-71.0" y="-15.0" />
+      <point x="343.5" y="1170.0" />
+      <point x="294.5" y="1170.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.ddlutils:ddlutils:jar:1.0" target="org.apache.ddlutils:ddlutils:jar:1.0/commons-collections:commons-collections:jar:3.1">
+      <point x="-19.75" y="-15.0" />
+      <point x="9935.421102598983" y="1070.0" />
+      <point x="9798.939607860975" y="1070.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework.data:spring-data-keyvalue:jar:2.1.5.RELEASE/org.springframework.data:spring-data-commons:jar:2.1.5.RELEASE" target="com.alibaba:druid-spring-boot-starter:jar:1.1.10/org.slf4j:slf4j-api:jar:1.7.25">
+      <point x="57.33333333333303" y="-15.0" />
+      <point x="5250.1398525989825" y="430.0" />
+      <point x="5436.450863272232" y="430.0" />
+      <point x="-39.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.ddlutils:ddlutils:jar:1.0" target="org.apache.ddlutils:ddlutils:jar:1.0/commons-dbcp:commons-dbcp:jar:1.2.1">
+      <point x="-25.392857142856883" y="-15.0" />
+      <point x="9929.778245456126" y="1080.0" />
+      <point x="9630.439607860975" y="1080.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE">
+      <point x="37.20000000000027" y="-15.0" />
+      <point x="2077.0129295220595" y="1120.0" />
+      <point x="2473.6769230769237" y="1120.0" />
+      <point x="2473.6769230769237" y="980.0" />
+      <point x="2677.2920961887257" y="980.0" />
+      <point x="-29.0625" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-webmvc:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-webmvc:jar:5.1.5.RELEASE/org.springframework:spring-expression:jar:5.1.5.RELEASE">
+      <point x="-10.75" y="-15.0" />
+      <point x="2029.0629295220592" y="920.0" />
+      <point x="1881.8685897435903" y="920.0" />
+      <point x="1881.8685897435903" y="790.0" />
+      <point x="1777.1185897435903" y="790.0" />
+      <point x="1777.1185897435903" y="400.0" />
+      <point x="2452.5592853600656" y="400.0" />
+      <point x="-36.5" y="15.0" />
+    </edge>
+    <edge source="com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2/com.baomidou:mybatis-plus-extension:jar:3.4.2/com.baomidou:mybatis-plus-core:jar:3.4.2" target="com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2/com.baomidou:mybatis-plus-extension:jar:3.4.2/com.baomidou:mybatis-plus-core:jar:3.4.2/com.baomidou:mybatis-plus-annotation:jar:3.4.2">
+      <point x="-49.0" y="-15.0" />
+      <point x="3535.350952026732" y="660.0" />
+      <point x="3525.0629295220597" y="660.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="cglib:cglib:jar:3.1">
+      <point x="-100.46511627906966" y="-15.0" />
+      <point x="4782.34140298658" y="1430.0" />
+      <point x="220.5" y="1430.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-common:jar:4.1.33.Final">
+      <point x="40.875" y="-15.0" />
+      <point x="8962.77375198809" y="1000.0" />
+      <point x="10266.171102598983" y="1000.0" />
+      <point x="10266.171102598983" y="450.0" />
+      <point x="9264.936934749174" y="450.0" />
+      <point x="52.08333333333303" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-ehcache:jar:1.4.0-RC2" target="org.apache.shiro:shiro-ehcache:jar:1.4.0-RC2/net.sf.ehcache:ehcache-core:jar:2.6.11">
+      <point x="-30.5" y="-15.0" />
+      <point x="5916.5565192656495" y="820.0" />
+      <point x="5928.4315192656495" y="820.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.ddlutils:ddlutils:jar:1.0" target="org.apache.ddlutils:ddlutils:jar:1.0/commons-logging:commons-logging:jar:1.0.4">
+      <point x="25.392857142856883" y="-15.0" />
+      <point x="9980.56395974184" y="1150.0" />
+      <point x="11020.730118693398" y="1150.0" />
+      <point x="36.5" y="15.0" />
+    </edge>
+    <edge source="org.apache.ddlutils:ddlutils:jar:1.0" target="org.apache.ddlutils:ddlutils:jar:1.0/commons-betwixt:commons-betwixt:jar:0.8">
+      <point x="19.75" y="-15.0" />
+      <point x="9974.921102598983" y="1140.0" />
+      <point x="10796.730118693398" y="1140.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.9.8">
+      <point x="15.583333333333258" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE/org.springframework:spring-context-support:jar:5.1.5.RELEASE/org.springframework:spring-context:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE">
+      <point x="-15.75" y="-15.0" />
+      <point x="2642.035256410257" y="440.0" />
+      <point x="2671.3092853600656" y="440.0" />
+      <point x="38.25" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework:spring-core:jar:5.1.5.RELEASE">
+      <point x="-25.5" y="-15.0" />
+      <point x="2607.5592853600656" y="200.0" />
+      <point x="2450.9007542629934" y="200.0" />
+      <point x="-8.153846153846189" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-ehcache:jar:1.4.0-RC2" target="org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-cache:jar:1.4.0-RC2">
+      <point x="30.5" y="-15.0" />
+      <point x="5977.5565192656495" y="820.0" />
+      <point x="5976.2127692656495" y="820.0" />
+      <point x="-26.75" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="net.sf.json-lib:json-lib:jar:jdk15:2.4">
+      <point x="5.023255813953256" y="-15.0" />
+      <point x="4887.829775079603" y="1240.0" />
+      <point x="6001.242529938899" y="1240.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework.data:spring-data-keyvalue:jar:2.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE/org.springframework:spring-context-support:jar:5.1.5.RELEASE/org.springframework:spring-context:jar:5.1.5.RELEASE">
+      <point x="-61.875" y="-15.0" />
+      <point x="4867.4315192656495" y="730.0" />
+      <point x="3047.285256410257" y="730.0" />
+      <point x="3047.285256410257" y="570.0" />
+      <point x="2673.535256410257" y="570.0" />
+      <point x="15.75" y="15.0" />
+    </edge>
+    <edge source="net.sf.dozer:dozer:jar:5.5.1" target="net.sf.dozer:dozer:jar:5.5.1/commons-beanutils:commons-beanutils:jar:1.9.1">
+      <point x="8.625" y="-15.0" />
+      <point x="8811.171102598983" y="1160.0" />
+      <point x="9155.939607860975" y="1160.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-freemarker:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE/org.springframework:spring-context-support:jar:5.1.5.RELEASE">
+      <point x="75.66666666666652" y="-15.0" />
+      <point x="2607.7295961887257" y="1120.0" />
+      <point x="2543.062929522059" y="1120.0" />
+      <point x="2543.062929522059" y="1000.0" />
+      <point x="2861.562929522059" y="1000.0" />
+      <point x="2861.562929522059" y="810.0" />
+      <point x="3166.285256410257" y="810.0" />
+      <point x="3166.285256410257" y="650.0" />
+      <point x="3260.7295961887266" y="650.0" />
+      <point x="-60.33333333333326" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE/org.apache.logging.log4j:log4j-to-slf4j:jar:2.11.2" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE/org.apache.logging.log4j:log4j-to-slf4j:jar:2.11.2/org.apache.logging.log4j:log4j-api:jar:2.11.2">
+      <point x="-28.75" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="com.alibaba:druid-spring-boot-starter:jar:1.1.10" target="com.alibaba:druid-spring-boot-starter:jar:1.1.10/com.alibaba:druid:jar:1.1.10">
+      <point x="0.0" y="-15.0" />
+      <point x="4175.1815192656495" y="1110.0" />
+      <point x="4321.017618693399" y="1110.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-webmvc:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-web:jar:5.1.5.RELEASE">
+      <point x="-32.25" y="-15.0" />
+      <point x="2007.5629295220592" y="930.0" />
+      <point x="1808.1045961887257" y="930.0" />
+      <point x="34.66666666666674" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="com.google.guava:guava:jar:20.0">
+      <point x="-20.093023255813932" y="-15.0" />
+      <point x="4862.713496009836" y="1270.0" />
+      <point x="4327.1815192656495" y="1270.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.ddlutils:ddlutils:jar:1.0" target="org.apache.ddlutils:ddlutils:jar:1.0/stax:stax-api:jar:1.0.1">
+      <point x="8.464285714286234" y="-15.0" />
+      <point x="9963.635388313269" y="1120.0" />
+      <point x="10371.14875198809" y="1120.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-handler:jar:4.1.33.Final/io.netty:netty-codec:jar:4.1.33.Final" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-transport:jar:4.1.33.Final">
+      <point x="-36.33333333333303" y="-15.0" />
+      <point x="8691.709285360066" y="660.0" />
+      <point x="8635.87595202673" y="660.0" />
+      <point x="43.33333333333303" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE/org.springframework:spring-context-support:jar:5.1.5.RELEASE/org.springframework:spring-context:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE/org.springframework:spring-beans:jar:5.1.5.RELEASE">
+      <point x="47.25" y="-15.0" />
+      <point x="2705.035256410257" y="470.0" />
+      <point x="2809.9795961887266" y="470.0" />
+      <point x="2809.9795961887266" y="300.0" />
+      <point x="3580.5684893057282" y="300.0" />
+      <point x="-25.77777777777783" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="com.fasterxml.jackson.core:jackson-databind:jar:2.9.6">
+      <point x="-90.41860465116224" y="-15.0" />
+      <point x="4792.387914614487" y="1410.0" />
+      <point x="582.5" y="1410.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.core:jackson-databind:jar:2.9.8">
+      <point x="-77.91666666666674" y="-15.0" />
+      <point x="1343.375000000001" y="1000.0" />
+      <point x="795.375" y="1000.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2/com.baomidou:mybatis-plus-extension:jar:3.4.2/com.baomidou:mybatis-plus-core:jar:3.4.2" target="com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2/com.baomidou:mybatis-plus-extension:jar:3.4.2/com.baomidou:mybatis-plus-core:jar:3.4.2/com.github.jsqlparser:jsqlparser:jar:4.0">
+      <point x="0.0" y="-15.0" />
+      <point x="3584.350952026732" y="650.0" />
+      <point x="3685.5629295220597" y="650.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.ddlutils:ddlutils:jar:1.0/commons-digester:commons-digester:jar:1.7" target="org.apache.ddlutils:ddlutils:jar:1.0/commons-digester:commons-digester:jar:1.7/commons-logging:commons-logging:jar:1.0.4">
+      <point x="-56.25" y="-15.0" />
+      <point x="9864.921102598983" y="810.0" />
+      <point x="9278.751762820513" y="810.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.hibernate:hibernate-ehcache:jar:5.2.12.Final" target="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.jboss.logging:jboss-logging:jar:3.3.2.Final">
+      <point x="0.0" y="-15.0" />
+      <point x="7425.225863272232" y="1140.0" />
+      <point x="7466.375952026732" y="1140.0" />
+      <point x="7466.375952026732" y="810.0" />
+      <point x="7544.793429487179" y="810.0" />
+      <point x="-14.875" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.0-RC2" target="org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-config-core:jar:1.4.0-RC2">
+      <point x="28.0" y="-15.0" />
+      <point x="6432.08709073268" y="780.0" />
+      <point x="6614.8898525989825" y="780.0" />
+      <point x="-35.75" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.9.8" target="com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.1/com.fasterxml.jackson.core:jackson-core:jar:2.9.8">
+      <point x="-61.33333333333337" y="-15.0" />
+      <point x="1375.541666666667" y="780.0" />
+      <point x="703.8156956164767" y="780.0" />
+      <point x="47.5" y="15.0" />
+    </edge>
+    <edge source="org.apache.ddlutils:ddlutils:jar:1.0" target="org.apache.ddlutils:ddlutils:jar:1.0/commons-lang:commons-lang:jar:2.1">
+      <point x="-14.107142857143117" y="-15.0" />
+      <point x="9941.06395974184" y="1080.0" />
+      <point x="9964.939607860975" y="1080.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-web:jar:1.4.0-RC2" target="org.apache.shiro:shiro-core:jar:1.4.0-RC2">
+      <point x="0.0" y="-15.0" />
+      <point x="6461.742529938899" y="990.0" />
+      <point x="6404.08709073268" y="990.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE/ch.qos.logback:logback-classic:jar:1.2.3" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE/ch.qos.logback:logback-classic:jar:1.2.3/ch.qos.logback:logback-core:jar:1.2.3">
+      <point x="-32.25" y="-15.0" />
+      <point x="3887.8129295220597" y="540.0" />
+      <point x="2798.285256410257" y="540.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework.data:spring-data-keyvalue:jar:2.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework:spring-tx:jar:5.1.5.RELEASE">
+      <point x="-20.625" y="-15.0" />
+      <point x="4908.6815192656495" y="820.0" />
+      <point x="4887.6606859323165" y="820.0" />
+      <point x="30.33333333333303" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE/org.springframework:spring-context-support:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE/org.springframework:spring-beans:jar:5.1.5.RELEASE">
+      <point x="0.0" y="-15.0" />
+      <point x="3321.0629295220597" y="320.0" />
+      <point x="3606.346267083506" y="320.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.ddlutils:ddlutils:jar:1.0" target="org.apache.ddlutils:ddlutils:jar:1.0/commons-beanutils:commons-beanutils:jar:1.7.0">
+      <point x="14.107142857143117" y="-15.0" />
+      <point x="9969.278245456126" y="1130.0" />
+      <point x="10511.14875198809" y="1130.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.9.8" target="com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.1/com.fasterxml.jackson.core:jackson-core:jar:2.9.8">
+      <point x="-61.5" y="-15.0" />
+      <point x="1140.3750000000005" y="790.0" />
+      <point x="684.8156956164767" y="790.0" />
+      <point x="28.5" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.0-RC2" target="org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-lang:jar:1.4.0-RC2">
+      <point x="-28.0" y="-15.0" />
+      <point x="6376.08709073268" y="810.0" />
+      <point x="6066.9627692656495" y="810.0" />
+      <point x="6066.9627692656495" y="550.0" />
+      <point x="6247.336279938899" y="550.0" />
+      <point x="-30.3125" y="15.0" />
+    </edge>
+    <edge source="net.sf.dozer:dozer:jar:5.5.1/org.slf4j:jcl-over-slf4j:jar:1.7.25" target="com.alibaba:druid-spring-boot-starter:jar:1.1.10/org.slf4j:slf4j-api:jar:1.7.25">
+      <point x="0.0" y="-15.0" />
+      <point x="7291.250952026732" y="390.0" />
+      <point x="5514.450863272232" y="390.0" />
+      <point x="39.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE">
+      <point x="0.0" y="-15.0" />
+      <point x="4882.8065192656495" y="1100.0" />
+      <point x="4791.767618693399" y="1100.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.9.8">
+      <point x="-15.583333333333258" y="-15.0" />
+      <point x="1405.708333333334" y="980.0" />
+      <point x="1201.8750000000005" y="980.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="net.sf.dozer:dozer:jar:5.5.1" target="net.sf.dozer:dozer:jar:5.5.1/org.slf4j:jcl-over-slf4j:jar:1.7.25">
+      <point x="-8.625" y="-15.0" />
+      <point x="8793.921102598983" y="1110.0" />
+      <point x="7291.250952026732" y="1110.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="com.zaxxer:HikariCP-java7:jar:2.4.13">
+      <point x="45.20930232558112" y="-15.0" />
+      <point x="4928.015821591231" y="1320.0" />
+      <point x="7118.750952026732" y="1320.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.9.8" target="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.9.8/com.fasterxml.jackson.core:jackson-databind:jar:2.9.6">
+      <point x="61.5" y="-15.0" />
+      <point x="1263.3750000000005" y="790.0" />
+      <point x="1696.1185897435903" y="790.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE">
+      <point x="-35.16279069767461" y="-15.0" />
+      <point x="4847.643728567975" y="1300.0" />
+      <point x="3121.9342853600656" y="1300.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-handler:jar:4.1.33.Final" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-transport:jar:4.1.33.Final">
+      <point x="-44.25" y="-15.0" />
+      <point x="8785.042618693398" y="820.0" />
+      <point x="8576.375952026732" y="820.0" />
+      <point x="8576.375952026732" y="660.0" />
+      <point x="8592.542618693398" y="660.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.9.8" target="com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.1/com.fasterxml.jackson.core:jackson-core:jar:2.9.8">
+      <point x="-43.25" y="-15.0" />
+      <point x="929.125" y="800.0" />
+      <point x="665.8156956164767" y="800.0" />
+      <point x="9.5" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework:spring-tx:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE/org.springframework:spring-beans:jar:5.1.5.RELEASE">
+      <point x="-22.75" y="-15.0" />
+      <point x="4834.5773525989825" y="650.0" />
+      <point x="4130.06292952206" y="650.0" />
+      <point x="4130.06292952206" y="310.0" />
+      <point x="3632.124044861284" y="310.0" />
+      <point x="25.77777777777783" y="15.0" />
+    </edge>
+    <edge source="org.apache.ddlutils:ddlutils:jar:1.0/commons-digester:commons-digester:jar:1.7" target="org.apache.ddlutils:ddlutils:jar:1.0/commons-digester:commons-digester:jar:1.7/xml-apis:xml-apis:jar:1.4.01">
+      <point x="-18.75" y="-15.0" />
+      <point x="9902.421102598983" y="800.0" />
+      <point x="9850.671102598983" y="800.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-jdbc:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-jdbc:jar:2.1.3.RELEASE/com.zaxxer:HikariCP:jar:3.2.0">
+      <point x="62.333333333333485" y="-15.0" />
+      <point x="4201.017618693399" y="980.0" />
+      <point x="5022.3065192656495" y="980.0" />
+      <point x="5022.3065192656495" y="820.0" />
+      <point x="5468.8065192656495" y="820.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-event:jar:1.4.0-RC2" target="org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-lang:jar:1.4.0-RC2">
+      <point x="0.0" y="-15.0" />
+      <point x="6465.1398525989825" y="570.0" />
+      <point x="6283.711279938899" y="570.0" />
+      <point x="6.0625" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="org.apache.shiro:shiro-spring:jar:1.4.0-RC2">
+      <point x="20.093023255813932" y="-15.0" />
+      <point x="4902.899542521463" y="1270.0" />
+      <point x="6390.6398525989825" y="1270.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE/ch.qos.logback:logback-classic:jar:1.2.3" target="com.alibaba:druid-spring-boot-starter:jar:1.1.10/org.slf4j:slf4j-api:jar:1.7.25">
+      <point x="32.25" y="-15.0" />
+      <point x="3952.3129295220597" y="560.0" />
+      <point x="5289.3065192656495" y="560.0" />
+      <point x="5289.3065192656495" y="440.0" />
+      <point x="5442.450863272232" y="440.0" />
+      <point x="-33.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-config-ogdl:jar:1.4.0-RC2" target="org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-event:jar:1.4.0-RC2">
+      <point x="-57.19999999999982" y="-15.0" />
+      <point x="6748.13709073268" y="650.0" />
+      <point x="6491.3898525989825" y="650.0" />
+      <point x="26.25" y="15.0" />
+    </edge>
+    <edge source="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final" target="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/org.dom4j:dom4j:jar:2.1.1">
+      <point x="-34.09090909090901" y="-15.0" />
+      <point x="7867.670668467037" y="950.0" />
+      <point x="7166.350863272232" y="950.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="org.apache.shiro:shiro-core:jar:1.4.0-RC2">
+      <point x="30.139534883721353" y="-15.0" />
+      <point x="4912.946054149371" y="1290.0" />
+      <point x="6520.242529938899" y="1290.0" />
+      <point x="6520.242529938899" y="980.0" />
+      <point x="6436.753757399347" y="980.0" />
+      <point x="32.66666666666697" y="15.0" />
+    </edge>
+    <edge source="org.apache.ddlutils:ddlutils:jar:1.0/junit:junit:jar:4.12" target="org.apache.ddlutils:ddlutils:jar:1.0/junit:junit:jar:4.12/org.hamcrest:hamcrest-core:jar:1.3">
+      <point x="0.0" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-jdbc:jar:2.1.3.RELEASE/org.springframework:spring-jdbc:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework:spring-core:jar:5.1.5.RELEASE">
+      <point x="0.0" y="-15.0" />
+      <point x="4177.5565192656495" y="160.0" />
+      <point x="2483.516138878378" y="160.0" />
+      <point x="24.461538461538566" y="15.0" />
+    </edge>
+    <edge source="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final" target="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.jboss.logging:jboss-logging:jar:3.3.2.Final">
+      <point x="-11.363636363636033" y="-15.0" />
+      <point x="7890.397941194311" y="930.0" />
+      <point x="7549.375952026732" y="930.0" />
+      <point x="7549.375952026732" y="820.0" />
+      <point x="7574.543429487179" y="820.0" />
+      <point x="14.875" y="15.0" />
+    </edge>
+    <edge source="net.sf.json-lib:json-lib:jar:jdk15:2.4" target="net.sf.json-lib:json-lib:jar:jdk15:2.4/net.sf.ezmorph:ezmorph:jar:1.0.6">
+      <point x="0.0" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/javax.annotation:javax.annotation-api:jar:1.3.2">
+      <point x="12.916666666666515" y="-15.0" />
+      <point x="2719.2712628553923" y="790.0" />
+      <point x="2956.785256410257" y="790.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-handler:jar:4.1.33.Final" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-handler:jar:4.1.33.Final/io.netty:netty-codec:jar:4.1.33.Final">
+      <point x="-14.75" y="-15.0" />
+      <point x="8814.542618693398" y="810.0" />
+      <point x="8728.042618693398" y="810.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="commons-lang:commons-lang:jar:2.6">
+      <point x="-65.30232558139505" y="-15.0" />
+      <point x="4817.5041936842545" y="1360.0" />
+      <point x="1391.4795961887257" y="1360.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-transport:jar:4.1.33.Final" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-transport:jar:4.1.33.Final/io.netty:netty-resolver:jar:4.1.33.Final">
+      <point x="0.0" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="dom4j:dom4j:jar:1.6">
+      <point x="-80.37209302325573" y="-15.0" />
+      <point x="4802.434426242394" y="1390.0" />
+      <point x="985.2916666666674" y="1390.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="org.apache.commons:commons-lang3:jar:3.5">
+      <point x="70.32558139534922" y="-15.0" />
+      <point x="4953.132100660999" y="1370.0" />
+      <point x="9553.197888313269" y="1370.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.ddlutils:ddlutils:jar:1.0" target="org.apache.ddlutils:ddlutils:jar:1.0/oro:oro:jar:2.0.8">
+      <point x="2.821428571429351" y="-15.0" />
+      <point x="9957.992531170412" y="1110.0" />
+      <point x="10281.64875198809" y="1110.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework:spring-tx:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework:spring-core:jar:5.1.5.RELEASE">
+      <point x="22.75" y="-15.0" />
+      <point x="4880.0773525989825" y="650.0" />
+      <point x="5096.3065192656495" y="650.0" />
+      <point x="5096.3065192656495" y="140.0" />
+      <point x="2499.8238311860705" y="140.0" />
+      <point x="40.769230769230944" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="commons-io:commons-io:jar:2.4">
+      <point x="90.41860465116315" y="-15.0" />
+      <point x="4973.225123916813" y="1410.0" />
+      <point x="10312.171102598983" y="1410.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework:spring-core:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework:spring-core:jar:5.1.5.RELEASE/org.springframework:spring-jcl:jar:5.1.5.RELEASE">
+      <point x="0.0" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="net.sf.dozer:dozer:jar:5.5.1">
+      <point x="60.2790697674418" y="-15.0" />
+      <point x="4943.085589033091" y="1350.0" />
+      <point x="8802.546102598983" y="1350.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE">
+      <point x="77.91666666666674" y="-15.0" />
+      <point x="1499.208333333334" y="960.0" />
+      <point x="2638.5420961887257" y="960.0" />
+      <point x="-67.8125" y="15.0" />
+    </edge>
+    <edge source="commons-dbcp:commons-dbcp:jar:1.4" target="commons-dbcp:commons-dbcp:jar:1.4/commons-pool:commons-pool:jar:1.6">
+      <point x="0.0" y="-15.0" />
+      <point x="7265.225863272232" y="1140.0" />
+      <point x="7333.500952026732" y="1140.0" />
+      <point x="-31.75" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-handler:jar:4.1.33.Final">
+      <point x="13.625" y="-15.0" />
+      <point x="8935.52375198809" y="890.0" />
+      <point x="8829.292618693398" y="890.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-transport:jar:4.1.33.Final" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-common:jar:4.1.33.Final">
+      <point x="-43.33333333333303" y="-15.0" />
+      <point x="8549.209285360066" y="570.0" />
+      <point x="8480.66842948718" y="570.0" />
+      <point x="8480.66842948718" y="450.0" />
+      <point x="9160.770268082506" y="450.0" />
+      <point x="-52.08333333333303" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-crypto-hash:jar:1.4.0-RC2" target="org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-crypto-hash:jar:1.4.0-RC2/org.apache.shiro:shiro-crypto-core:jar:1.4.0-RC2">
+      <point x="36.75" y="-15.0" />
+      <point x="6187.7127692656495" y="660.0" />
+      <point x="6174.2127692656495" y="660.0" />
+      <point x="-36.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="com.baomidou:mybatis-plus-boot-starter:jar:3.4.2">
+      <point x="-30.139534883720444" y="-15.0" />
+      <point x="4852.666984381929" y="1290.0" />
+      <point x="3330.6879295220597" y="1290.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="com.fasterxml.jackson.datatype:jackson-datatype-hibernate5:jar:2.9.6">
+      <point x="-95.4418604651164" y="-15.0" />
+      <point x="4787.364658800533" y="1420.0" />
+      <point x="414.5" y="1420.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-web:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework:spring-core:jar:5.1.5.RELEASE">
+      <point x="-26.0" y="-15.0" />
+      <point x="1747.4379295220592" y="780.0" />
+      <point x="1615.1185897435903" y="780.0" />
+      <point x="1615.1185897435903" y="190.0" />
+      <point x="2418.2853696476086" y="190.0" />
+      <point x="-40.769230769230944" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE/org.springframework:spring-context-support:jar:5.1.5.RELEASE/org.springframework:spring-context:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-webmvc:jar:5.1.5.RELEASE/org.springframework:spring-expression:jar:5.1.5.RELEASE">
+      <point x="-47.25" y="-15.0" />
+      <point x="2610.535256410257" y="400.0" />
+      <point x="2525.5592853600656" y="400.0" />
+      <point x="36.5" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE">
+      <point x="-74.40000000000009" y="-15.0" />
+      <point x="1965.4129295220591" y="1100.0" />
+      <point x="1421.2916666666674" y="1100.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final" target="org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE/org.hibernate.validator:hibernate-validator:jar:6.0.14.Final/com.fasterxml:classmate:jar:1.4.0">
+      <point x="-56.81818181818198" y="-15.0" />
+      <point x="7844.943395739765" y="970.0" />
+      <point x="6167.617529938899" y="970.0" />
+      <point x="23.75" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot:jar:2.1.3.RELEASE">
+      <point x="-12.916666666666515" y="-15.0" />
+      <point x="2693.437929522059" y="750.0" />
+      <point x="2212.3685897435903" y="750.0" />
+      <point x="27.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.1">
+      <point x="-85.39534883720899" y="-15.0" />
+      <point x="4797.4111704284405" y="1400.0" />
+      <point x="761.0833333333339" y="1400.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/org.springframework.boot:spring-boot-autoconfigure:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot:jar:2.1.3.RELEASE">
+      <point x="0.0" y="-15.0" />
+      <point x="2101.3685897435903" y="660.0" />
+      <point x="2158.3685897435903" y="660.0" />
+      <point x="-27.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="org.hibernate:hibernate-ehcache:jar:5.2.12.Final">
+      <point x="55.25581395348854" y="-15.0" />
+      <point x="4938.062333219138" y="1340.0" />
+      <point x="7425.225863272232" y="1340.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.0-RC2" target="org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-crypto-cipher:jar:1.4.0-RC2">
+      <point x="14.0" y="-15.0" />
+      <point x="6418.08709073268" y="770.0" />
+      <point x="6526.8898525989825" y="770.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="org.apache.shiro:shiro-web:jar:1.4.0-RC2">
+      <point x="25.116279069767188" y="-15.0" />
+      <point x="4907.922798335417" y="1280.0" />
+      <point x="6461.742529938899" y="1280.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-webmvc:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE/org.springframework:spring-beans:jar:5.1.5.RELEASE">
+      <point x="53.75" y="-15.0" />
+      <point x="2093.562929522059" y="950.0" />
+      <point x="2565.062929522059" y="950.0" />
+      <point x="2565.062929522059" y="780.0" />
+      <point x="2866.285256410257" y="780.0" />
+      <point x="2866.285256410257" y="310.0" />
+      <point x="3593.4573781946174" y="310.0" />
+      <point x="-12.888888888888687" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="p6spy:p6spy:jar:3.8.0">
+      <point x="-55.25581395348854" y="-15.0" />
+      <point x="4827.550705312161" y="1340.0" />
+      <point x="1890.8129295220592" y="1340.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE/ch.qos.logback:logback-classic:jar:1.2.3">
+      <point x="-69.0" y="-15.0" />
+      <point x="3993.0629295220597" y="660.0" />
+      <point x="3920.0629295220597" y="660.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-config-core:jar:1.4.0-RC2" target="org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-lang:jar:1.4.0-RC2">
+      <point x="0.0" y="-15.0" />
+      <point x="6650.6398525989825" y="550.0" />
+      <point x="6307.961279938899" y="550.0" />
+      <point x="30.3125" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="com.microsoft.sqlserver:mssql-jdbc:jar:6.4.0.jre8">
+      <point x="80.37209302325573" y="-15.0" />
+      <point x="4963.178612288905" y="1390.0" />
+      <point x="10065.671102598983" y="1390.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-config-ogdl:jar:1.4.0-RC2" target="org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-lang:jar:1.4.0-RC2">
+      <point x="28.600000000000364" y="-15.0" />
+      <point x="6833.93709073268" y="650.0" />
+      <point x="6908.6398525989825" y="650.0" />
+      <point x="6908.6398525989825" y="540.0" />
+      <point x="6320.086279938899" y="540.0" />
+      <point x="42.4375" y="15.0" />
+    </edge>
+    <edge source="com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.1" target="com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.1/com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0">
+      <point x="0.0" y="-15.0" />
+      <point x="761.0833333333339" y="1170.0" />
+      <point x="714.375" y="1170.0" />
+      <point x="714.375" y="820.0" />
+      <point x="813.8156956164767" y="820.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="com.fasterxml.jackson.core:jackson-databind:jar:2.9.6" target="com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.1/com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0">
+      <point x="35.25" y="-15.0" />
+      <point x="617.75" y="810.0" />
+      <point x="760.1490289498097" y="810.0" />
+      <point x="-53.66666666666666" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE/org.apache.logging.log4j:log4j-to-slf4j:jar:2.11.2">
+      <point x="0.0" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework:spring-tx:jar:5.1.5.RELEASE">
+      <point x="-11.83333333333303" y="-15.0" />
+      <point x="4779.934285360065" y="960.0" />
+      <point x="4836.3065192656495" y="960.0" />
+      <point x="4836.3065192656495" y="820.0" />
+      <point x="4857.3273525989825" y="820.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.aspectj:aspectjweaver:jar:1.9.2">
+      <point x="-61.333333333333485" y="-15.0" />
+      <point x="1638.6045961887257" y="1170.0" />
+      <point x="1247.2916666666674" y="1170.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="org.springframework.boot:spring-boot-starter-jdbc:jar:2.1.3.RELEASE">
+      <point x="-15.069767441860677" y="-15.0" />
+      <point x="4867.736751823789" y="1260.0" />
+      <point x="4373.1815192656495" y="1260.0" />
+      <point x="4373.1815192656495" y="1100.0" />
+      <point x="4185.434285360065" y="1100.0" />
+      <point x="46.75" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework:spring-oxm:jar:5.1.5.RELEASE">
+      <point x="35.5" y="-15.0" />
+      <point x="4827.267618693399" y="990.0" />
+      <point x="5033.3065192656495" y="990.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2/com.baomidou:mybatis-plus-extension:jar:3.4.2/com.baomidou:mybatis-plus-core:jar:3.4.2" target="com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2/com.baomidou:mybatis-plus-extension:jar:3.4.2/com.baomidou:mybatis-plus-core:jar:3.4.2/org.mybatis:mybatis:jar:3.5.6">
+      <point x="49.0" y="-15.0" />
+      <point x="3633.350952026732" y="660.0" />
+      <point x="3793.5629295220597" y="660.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.0-RC2" target="org.apache.shiro:shiro-core:jar:1.4.0-RC2/org.apache.shiro:shiro-event:jar:1.4.0-RC2">
+      <point x="0.0" y="-15.0" />
+      <point x="6404.08709073268" y="760.0" />
+      <point x="6438.8898525989825" y="760.0" />
+      <point x="-26.25" y="15.0" />
+    </edge>
+    <edge source="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final" target="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/net.bytebuddy:byte-buddy:jar:1.9.10">
+      <point x="45.45454545454504" y="-15.0" />
+      <point x="7947.216123012491" y="990.0" />
+      <point x="8394.875952026732" y="990.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="javax.servlet:javax.servlet-api:jar:3.1.0">
+      <point x="95.4418604651164" y="-15.0" />
+      <point x="4978.248379730766" y="1420.0" />
+      <point x="10454.671102598983" y="1420.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-webmvc:jar:5.1.5.RELEASE/org.springframework:spring-expression:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework:spring-core:jar:5.1.5.RELEASE">
+      <point x="0.0" y="-15.0" />
+      <point x="2489.0592853600656" y="210.0" />
+      <point x="2442.746908109147" y="210.0" />
+      <point x="-16.307692307692378" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="com.mchange:c3p0:jar:0.9.2.1">
+      <point x="-75.34883720930247" y="-15.0" />
+      <point x="4807.457682056347" y="1380.0" />
+      <point x="1073.7916666666674" y="1380.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-web:jar:5.1.5.RELEASE">
+      <point x="46.75" y="-15.0" />
+      <point x="1468.0416666666674" y="950.0" />
+      <point x="1738.7712628553927" y="950.0" />
+      <point x="-34.66666666666674" y="15.0" />
+    </edge>
+    <edge source="com.fasterxml.jackson.datatype:jackson-datatype-hibernate5:jar:2.9.6" target="com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.1/com.fasterxml.jackson.core:jackson-core:jar:2.9.8">
+      <point x="71.0" y="-15.0" />
+      <point x="485.5" y="1170.0" />
+      <point x="490.5" y="1170.0" />
+      <point x="490.5" y="780.0" />
+      <point x="608.8156956164767" y="780.0" />
+      <point x="-47.5" y="15.0" />
+    </edge>
+    <edge source="com.mchange:c3p0:jar:0.9.2.1" target="com.mchange:c3p0:jar:0.9.2.1/com.mchange:mchange-commons-java:jar:0.2.3.4">
+      <point x="0.0" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:8.0" target="org.apache.ddlutils:ddlutils:jar:1.0">
+      <point x="75.34883720930247" y="-15.0" />
+      <point x="4958.155356474952" y="1380.0" />
+      <point x="9955.171102598983" y="1380.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.1" target="com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.1/com.fasterxml.jackson.core:jackson-databind:jar:2.9.6">
+      <point x="81.0" y="-15.0" />
+      <point x="842.0833333333339" y="1170.0" />
+      <point x="889.5416666666679" y="1170.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="com.zaxxer:HikariCP-java7:jar:2.4.13" target="com.alibaba:druid-spring-boot-starter:jar:1.1.10/org.slf4j:slf4j-api:jar:1.7.25">
+      <point x="0.0" y="-15.0" />
+      <point x="7118.750952026732" y="410.0" />
+      <point x="5502.450863272232" y="410.0" />
+      <point x="27.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.ddlutils:ddlutils:jar:1.0" target="org.apache.ddlutils:ddlutils:jar:1.0/commons-digester:commons-digester:jar:1.7">
+      <point x="-2.821428571429351" y="-15.0" />
+      <point x="9952.349674027553" y="1100.0" />
+      <point x="10228.439607860975" y="1100.0" />
+      <point x="10228.439607860975" y="990.0" />
+      <point x="9883.671102598983" y="990.0" />
+      <point x="-37.5" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.yaml:snakeyaml:jar:1.23">
+      <point x="38.75" y="-15.0" />
+      <point x="2745.1045961887257" y="800.0" />
+      <point x="3106.785256410257" y="800.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final" target="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/org.hibernate.common:hibernate-commons-annotations:jar:5.0.4.Final">
+      <point x="0.0" y="-15.0" />
+      <point x="7901.761577557947" y="920.0" />
+      <point x="7678.875952026732" y="920.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+  </edges>
+  <settings layout="Hierarchic Group" zoom="0.6792745231607629" x="9949.524882793892" y="1025.1877052673804" />
+  <SelectedNodes />
+  <Categories />
+  <VISIBILITY>All</VISIBILITY>
+</Diagram>
+

+ 2004 - 0
jp-console/02.uml

@@ -0,0 +1,2004 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Diagram>
+  <ID>MAVEN</ID>
+  <OriginalElement>org.jeeplus:jeeplus-gencode-vue:8.0</OriginalElement>
+  <nodes>
+    <node x="8908.159134656296" y="1750.0">org.jeeplus:jeeplus-gencode-vue:8.0</node>
+    <node x="8242.530894750218" y="1490.0">org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE</node>
+    <node x="7616.2875" y="920.0">org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE</node>
+    <node x="7675.120833333334" y="770.0">org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE</node>
+    <node x="7957.3055932090065" y="560.0">org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE/ch.qos.logback:logback-classic:jar:1.2.3</node>
+    <node x="7932.0555932090065" y="400.0">org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE/ch.qos.logback:logback-classic:jar:1.2.3/ch.qos.logback:logback-core:jar:1.2.3</node>
+    <node x="8106.3055932090065" y="560.0">org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE/org.apache.logging.log4j:log4j-to-slf4j:jar:2.11.2</node>
+    <node x="8091.0555932090065" y="400.0">org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE/org.apache.logging.log4j:log4j-to-slf4j:jar:2.11.2/org.apache.logging.log4j:log4j-api:jar:2.11.2</node>
+    <node x="8627.788926542338" y="560.0">org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE/org.slf4j:jul-to-slf4j:jar:1.7.25</node>
+    <node x="8178.8055932090065" y="80.0">org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework:spring-core:jar:5.1.5.RELEASE</node>
+    <node x="8185.8055932090065" y="0.0">org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework:spring-core:jar:5.1.5.RELEASE/org.springframework:spring-jcl:jar:5.1.5.RELEASE</node>
+    <node x="7557.120833333334" y="770.0">org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.yaml:snakeyaml:jar:1.23</node>
+    <node x="8242.305593209006" y="320.0">org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE</node>
+    <node x="8291.005593209005" y="210.0">org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE/org.springframework:spring-beans:jar:5.1.5.RELEASE</node>
+    <node x="8278.864228083552" y="1400.0">org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.aspectj:aspectjweaver:jar:1.9.2</node>
+    <node x="7708.030894750218" y="1400.0">org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE</node>
+    <node x="8362.43892654234" y="1090.0">org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE/org.springframework:spring-context-support:jar:5.1.5.RELEASE</node>
+    <node x="4825.538301322964" y="400.0">org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE/org.springframework:spring-context-support:jar:5.1.5.RELEASE/org.springframework:spring-context:jar:5.1.5.RELEASE</node>
+    <node x="8969.659134656296" y="1490.0">org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE</node>
+    <node x="8917.420833333334" y="1400.0">org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE</node>
+    <node x="8947.02672808355" y="920.0">org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework.data:spring-data-keyvalue:jar:2.1.5.RELEASE</node>
+    <node x="9010.33922808355" y="560.0">org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework.data:spring-data-keyvalue:jar:2.1.5.RELEASE/org.springframework.data:spring-data-commons:jar:2.1.5.RELEASE</node>
+    <node x="8797.780894750218" y="770.0">org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework:spring-tx:jar:5.1.5.RELEASE</node>
+    <node x="9281.31999731432" y="320.0">org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework:spring-oxm:jar:5.1.5.RELEASE</node>
+    <node x="9464.205593209006" y="1400.0">org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE</node>
+    <node x="9487.528330647654" y="400.0">org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-common:jar:4.1.33.Final</node>
+    <node x="9512.94499731432" y="1090.0">org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-handler:jar:4.1.33.Final</node>
+    <node x="9570.778330647654" y="560.0">org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-handler:jar:4.1.33.Final/io.netty:netty-buffer:jar:4.1.33.Final</node>
+    <node x="9520.44499731432" y="920.0">org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-handler:jar:4.1.33.Final/io.netty:netty-codec:jar:4.1.33.Final</node>
+    <node x="9650.44499731432" y="770.0">org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-transport:jar:4.1.33.Final</node>
+    <node x="9725.94499731432" y="560.0">org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-transport:jar:4.1.33.Final/io.netty:netty-resolver:jar:4.1.33.Final</node>
+    <node x="9357.31999731432" y="1090.0">org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.projectreactor:reactor-core:jar:3.2.6.RELEASE</node>
+    <node x="9344.31999731432" y="920.0">org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.projectreactor:reactor-core:jar:3.2.6.RELEASE/org.reactivestreams:reactive-streams:jar:1.0.2</node>
+    <node x="7995.530894750218" y="1490.0">org.springframework.boot:spring-boot-starter-freemarker:jar:2.1.3.RELEASE</node>
+    <node x="8051.447561416885" y="1400.0">org.springframework.boot:spring-boot-starter-freemarker:jar:2.1.3.RELEASE/org.freemarker:freemarker:jar:2.3.28</node>
+    <node x="7780.947561416885" y="1090.0">org.springframework.boot:spring-boot-starter-jdbc:jar:2.1.3.RELEASE</node>
+    <node x="9202.33922808355" y="560.0">org.springframework.boot:spring-boot-starter-jdbc:jar:2.1.3.RELEASE/com.zaxxer:HikariCP:jar:3.2.0</node>
+    <node x="7919.679166666667" y="920.0">org.springframework.boot:spring-boot-starter-jdbc:jar:2.1.3.RELEASE/org.springframework:spring-jdbc:jar:5.1.5.RELEASE</node>
+    <node x="7205.064228083552" y="1490.0">org.mybatis.spring.boot:mybatis-spring-boot-starter:jar:1.3.2</node>
+    <node x="7128.6805932090065" y="920.0">org.mybatis.spring.boot:mybatis-spring-boot-starter:jar:1.3.2/org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:jar:1.3.2</node>
+    <node x="7146.514228083552" y="1400.0">org.mybatis.spring.boot:mybatis-spring-boot-starter:jar:1.3.2/org.mybatis:mybatis:jar:3.4.6</node>
+    <node x="7267.014228083552" y="1400.0">org.mybatis.spring.boot:mybatis-spring-boot-starter:jar:1.3.2/org.mybatis:mybatis-spring:jar:1.3.2</node>
+    <node x="4302.914228083551" y="1490.0">org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE</node>
+    <node x="5297.0972598756725" y="1400.0">org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE/org.apache.tomcat.embed:tomcat-embed-el:jar:9.0.16</node>
+    <node x="3973.3389265423393" y="1090.0">org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE/org.hibernate.validator:hibernate-validator:jar:6.0.14.Final</node>
+    <node x="4108.854166666667" y="920.0">org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE/org.hibernate.validator:hibernate-validator:jar:6.0.14.Final/javax.validation:validation-api:jar:2.0.1.Final</node>
+    <node x="2908.297259875673" y="920.0">org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE/org.hibernate.validator:hibernate-validator:jar:6.0.14.Final/com.fasterxml:classmate:jar:1.4.0</node>
+    <node x="4636.247561416885" y="1400.0">org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE</node>
+    <node x="5418.172259875673" y="1090.0">org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE</node>
+    <node x="5133.538301322964" y="920.0">org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.core:jackson-databind:jar:2.9.8</node>
+    <node x="5501.413301322964" y="920.0">org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.9.8</node>
+    <node x="5671.830894750218" y="770.0">org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.9.8/com.fasterxml.jackson.core:jackson-databind:jar:2.9.9</node>
+    <node x="5294.538301322964" y="920.0">org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.9.8</node>
+    <node x="5510.830894750218" y="770.0">org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.9.8/com.fasterxml.jackson.core:jackson-databind:jar:2.9.9</node>
+    <node x="5799.788301322964" y="920.0">org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.9.8</node>
+    <node x="6012.788301322964" y="770.0">org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.9.8/com.fasterxml.jackson.core:jackson-databind:jar:2.9.9</node>
+    <node x="4522.538301322964" y="920.0">org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-web:jar:5.1.5.RELEASE</node>
+    <node x="4974.622561416885" y="1090.0">org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-webmvc:jar:5.1.5.RELEASE</node>
+    <node x="4647.538301322964" y="320.0">org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-webmvc:jar:5.1.5.RELEASE/org.springframework:spring-expression:jar:5.1.5.RELEASE</node>
+    <node x="4055.9142280835517" y="1490.0">org.springframework.boot:spring-boot-starter-websocket:jar:2.1.3.RELEASE</node>
+    <node x="3791.547259875673" y="320.0">org.springframework.boot:spring-boot-starter-websocket:jar:2.1.3.RELEASE/org.springframework:spring-messaging:jar:5.1.5.RELEASE</node>
+    <node x="4350.254666448418" y="1090.0">org.springframework.boot:spring-boot-starter-websocket:jar:2.1.3.RELEASE/org.springframework:spring-websocket:jar:5.1.5.RELEASE</node>
+    <node x="6756.164228083551" y="1490.0">org.springframework.boot:spring-boot-starter-mail:jar:2.1.3.RELEASE</node>
+    <node x="6742.580894750219" y="1400.0">org.springframework.boot:spring-boot-starter-mail:jar:2.1.3.RELEASE/com.sun.mail:javax.mail:jar:1.6.2</node>
+    <node x="6742.080894750219" y="1090.0">org.springframework.boot:spring-boot-starter-mail:jar:2.1.3.RELEASE/com.sun.mail:javax.mail:jar:1.6.2/javax.activation:activation:jar:1.1</node>
+    <node x="8236.272259875674" y="920.0">org.springframework.boot:spring-boot-devtools:jar:2.1.3.RELEASE</node>
+    <node x="7363.722259875673" y="560.0">org.springframework.boot:spring-boot-devtools:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot:jar:2.1.3.RELEASE</node>
+    <node x="7107.114228083552" y="770.0">org.springframework.boot:spring-boot-devtools:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-autoconfigure:jar:2.1.3.RELEASE</node>
+    <node x="6389.830894750218" y="1490.0">org.springframework.boot:spring-boot-starter-tomcat:jar:2.1.3.RELEASE</node>
+    <node x="6426.330894750218" y="770.0">org.springframework.boot:spring-boot-starter-tomcat:jar:2.1.3.RELEASE/javax.annotation:javax.annotation-api:jar:1.3.2</node>
+    <node x="6476.830894750218" y="1090.0">org.springframework.boot:spring-boot-starter-tomcat:jar:2.1.3.RELEASE/org.apache.tomcat.embed:tomcat-embed-core:jar:9.0.16</node>
+    <node x="6526.580894750218" y="1400.0">org.springframework.boot:spring-boot-starter-tomcat:jar:2.1.3.RELEASE/org.apache.tomcat.embed:tomcat-embed-websocket:jar:9.0.16</node>
+    <node x="8847.659134656296" y="1490.0">com.microsoft.sqlserver:mssql-jdbc:jar:6.4.0.jre8</node>
+    <node x="11899.644249781752" y="1490.0">mysql:mysql-connector-java:jar:8.0.15</node>
+    <node x="11148.980593209006" y="1490.0">org.postgresql:postgresql:jar:42.2.5</node>
+    <node x="6961.164228083551" y="1490.0">com.alibaba:druid-spring-boot-starter:jar:1.1.14</node>
+    <node x="6915.247561416885" y="1400.0">com.alibaba:druid-spring-boot-starter:jar:1.1.14/com.alibaba:druid:jar:1.1.14</node>
+    <node x="9233.31999731432" y="400.0">com.alibaba:druid-spring-boot-starter:jar:1.1.14/org.slf4j:slf4j-api:jar:1.7.25</node>
+    <node x="11639.644249781752" y="1490.0">cglib:cglib:jar:3.1</node>
+    <node x="11641.644249781752" y="1400.0">cglib:cglib:jar:3.1/org.ow2.asm:asm:jar:4.2</node>
+    <node x="10140.673061198635" y="1490.0">javax.servlet.jsp:jsp-api:jar:2.1</node>
+    <node x="4485.247561416885" y="1400.0">commons-dbcp:commons-dbcp:jar:1.4</node>
+    <node x="4144.338926542339" y="1090.0">commons-dbcp:commons-dbcp:jar:1.4/commons-pool:commons-pool:jar:1.6</node>
+    <node x="10382.24951923077" y="1090.0">org.apache.shiro:shiro-core:jar:1.4.1</node>
+    <node x="10263.830593209006" y="560.0">org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-lang:jar:1.4.1</node>
+    <node x="9977.858653887066" y="920.0">org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-cache:jar:1.4.1</node>
+    <node x="10279.858653887066" y="920.0">org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-crypto-hash:jar:1.4.1</node>
+    <node x="10196.858653887066" y="770.0">org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-crypto-hash:jar:1.4.1/org.apache.shiro:shiro-crypto-core:jar:1.4.1</node>
+    <node x="10104.858653887066" y="920.0">org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-crypto-cipher:jar:1.4.1</node>
+    <node x="10401.608653887066" y="770.0">org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-config-core:jar:1.4.1</node>
+    <node x="10696.108653887066" y="920.0">org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-config-ogdl:jar:1.4.1</node>
+    <node x="10689.608653887066" y="770.0">org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-config-ogdl:jar:1.4.1/commons-beanutils:commons-beanutils:jar:1.9.3</node>
+    <node x="10564.608653887066" y="770.0">org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-event:jar:1.4.1</node>
+    <node x="10316.858653887066" y="1490.0">org.apache.shiro:shiro-spring:jar:1.4.1</node>
+    <node x="12088.644249781752" y="1490.0">org.apache.shiro:shiro-cas:jar:1.4.0</node>
+    <node x="12109.644249781752" y="1400.0">org.apache.shiro:shiro-cas:jar:1.4.0/org.apache.shiro:shiro-web:jar:1.4.0</node>
+    <node x="11962.644249781752" y="1400.0">org.apache.shiro:shiro-cas:jar:1.4.0/org.jasig.cas.client:cas-client-core:jar:3.2.2</node>
+    <node x="10365.358653887066" y="1400.0">org.apache.shiro:shiro-web:jar:1.4.1</node>
+    <node x="9895.44499731432" y="1090.0">org.apache.shiro:shiro-ehcache:jar:1.4.1</node>
+    <node x="9866.94499731432" y="560.0">org.apache.shiro:shiro-ehcache:jar:1.4.1/net.sf.ehcache:ehcache-core:jar:2.6.11</node>
+    <node x="12389.644249781752" y="1490.0">commons-io:commons-io:jar:2.4</node>
+    <node x="5057.122561416885" y="1490.0">com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.9</node>
+    <node x="5262.797259875673" y="770.0">com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.9/com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0</node>
+    <node x="5878.788301322964" y="770.0">com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.9/com.fasterxml.jackson.core:jackson-core:jar:2.9.8</node>
+    <node x="5108.122561416885" y="1400.0">com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.9/com.fasterxml.jackson.core:jackson-databind:jar:2.9.9</node>
+    <node x="12200.644249781752" y="1490.0">com.alibaba:fastjson:jar:1.2.45</node>
+    <node x="11050.683477865303" y="1490.0">net.sf.dozer:dozer:jar:5.5.1</node>
+    <node x="11160.331749781752" y="1400.0">net.sf.dozer:dozer:jar:5.5.1/commons-beanutils:commons-beanutils:jar:1.9.1</node>
+    <node x="11155.331749781752" y="1090.0">net.sf.dozer:dozer:jar:5.5.1/commons-beanutils:commons-beanutils:jar:1.9.1/commons-collections:commons-collections:jar:3.2.1</node>
+    <node x="11006.331749781752" y="1400.0">net.sf.dozer:dozer:jar:5.5.1/org.apache.commons:commons-lang3:jar:3.8.1</node>
+    <node x="10939.831749781752" y="560.0">net.sf.dozer:dozer:jar:5.5.1/org.slf4j:jcl-over-slf4j:jar:1.7.25</node>
+    <node x="10576.916185897437" y="1490.0">com.google.guava:guava:jar:20.0</node>
+    <node x="11493.644249781752" y="1490.0">commons-lang:commons-lang:jar:2.6</node>
+    <node x="8693.659134656296" y="1490.0">org.apache.commons:commons-lang3:jar:3.5</node>
+    <node x="11353.644249781752" y="1490.0">net.sf.json-lib:json-lib:jar:jdk15:2.4</node>
+    <node x="11369.644249781752" y="1400.0">net.sf.json-lib:json-lib:jar:jdk15:2.4/net.sf.ezmorph:ezmorph:jar:1.0.6</node>
+    <node x="12304.644249781752" y="1490.0">com.mchange:c3p0:jar:0.9.2.1</node>
+    <node x="12244.144249781752" y="1400.0">com.mchange:c3p0:jar:0.9.2.1/com.mchange:mchange-commons-java:jar:0.2.3.4</node>
+    <node x="10667.916185897437" y="1490.0">com.google.code.maven-play-plugin.com.mchange:c3p0-oracle-thin-extras:jar:0.9.5</node>
+    <node x="10726.416185897437" y="1400.0">com.google.code.maven-play-plugin.com.mchange:c3p0-oracle-thin-extras:jar:0.9.5/com.mchange:c3p0:jar:0.9.5</node>
+    <node x="10447.858653887066" y="1490.0">dom4j:dom4j:jar:1.6</node>
+    <node x="2730.038301322965" y="1490.0">org.hibernate:hibernate-ehcache:jar:5.2.12.Final</node>
+    <node x="2758.1097598756724" y="920.0">org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.jboss.logging:jboss-logging:jar:3.3.2.Final</node>
+    <node x="2979.7883013229643" y="1400.0">org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final</node>
+    <node x="3582.547259875673" y="1090.0">org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/javax.persistence:javax.persistence-api:jar:2.2</node>
+    <node x="3766.547259875673" y="1090.0">org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/org.javassist:javassist:jar:3.23.1-GA</node>
+    <node x="3210.547259875673" y="1090.0">org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/net.bytebuddy:byte-buddy:jar:1.9.10</node>
+    <node x="3034.547259875673" y="1090.0">org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/antlr:antlr:jar:2.7.7</node>
+    <node x="3336.547259875673" y="1090.0">org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:jar:1.1.1.Final</node>
+    <node x="3116.547259875673" y="1090.0">org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/org.jboss:jandex:jar:2.0.5.Final</node>
+    <node x="2275.9620326029462" y="1090.0">org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/javax.activation:javax.activation-api:jar:1.2.0</node>
+    <node x="2942.547259875673" y="1090.0">org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/org.dom4j:dom4j:jar:2.1.1</node>
+    <node x="2633.8597598756724" y="1090.0">org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/org.hibernate.common:hibernate-commons-annotations:jar:5.0.4.Final</node>
+    <node x="2762.038301322965" y="1400.0">org.hibernate:hibernate-ehcache:jar:5.2.12.Final/net.sf.ehcache:ehcache:jar:2.10.6</node>
+    <node x="4972.538301322964" y="920.0">com.fasterxml.jackson.core:jackson-databind:jar:2.9.9</node>
+    <node x="6116.288301322964" y="1490.0">com.fasterxml.jackson.datatype:jackson-datatype-hibernate5:jar:2.9.9</node>
+    <node x="6198.288301322964" y="1400.0">com.fasterxml.jackson.datatype:jackson-datatype-hibernate5:jar:2.9.9/javax.transaction:jta:jar:1.1</node>
+    <node x="6037.288301322964" y="1400.0">com.fasterxml.jackson.datatype:jackson-datatype-hibernate5:jar:2.9.9/com.fasterxml.jackson.core:jackson-databind:jar:2.9.9</node>
+    <node x="1625.0189521627044" y="1490.0">org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0</node>
+    <node x="2376.5036992696123" y="1400.0">org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/com.baomidou:mybatis-plus-boot-starter:jar:3.4.2</node>
+    <node x="2141.9620326029462" y="1090.0">org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2</node>
+    <node x="2108.9620326029462" y="920.0">org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2/com.baomidou:mybatis-plus-extension:jar:3.4.2</node>
+    <node x="2046.9620326029462" y="770.0">org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2/com.baomidou:mybatis-plus-extension:jar:3.4.2/com.baomidou:mybatis-plus-core:jar:3.4.2</node>
+    <node x="2356.183167477492" y="560.0">org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2/com.baomidou:mybatis-plus-extension:jar:3.4.2/com.baomidou:mybatis-plus-core:jar:3.4.2/com.baomidou:mybatis-plus-annotation:jar:3.4.2</node>
+    <node x="2047.2120326029462" y="560.0">org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2/com.baomidou:mybatis-plus-extension:jar:3.4.2/com.baomidou:mybatis-plus-core:jar:3.4.2/com.github.jsqlparser:jsqlparser:jar:4.0</node>
+    <node x="1945.2120326029462" y="560.0">org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2/com.baomidou:mybatis-plus-extension:jar:3.4.2/com.baomidou:mybatis-plus-core:jar:3.4.2/org.mybatis:mybatis:jar:3.5.6</node>
+    <node x="2213.9620326029462" y="770.0">org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2/com.baomidou:mybatis-plus-extension:jar:3.4.2/org.mybatis:mybatis-spring:jar:2.0.5</node>
+    <node x="1710.7189521627051" y="1400.0">org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0</node>
+    <node x="1965.9620326029462" y="1090.0">org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-beanutils:commons-beanutils:jar:1.7.0</node>
+    <node x="188.0" y="1090.0">org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-betwixt:commons-betwixt:jar:0.8</node>
+    <node x="166.0" y="920.0">org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-betwixt:commons-betwixt:jar:0.8/commons-beanutils:commons-beanutils-core:jar:1.7.0</node>
+    <node x="99.5" y="770.0">org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-betwixt:commons-betwixt:jar:0.8/commons-beanutils:commons-beanutils-core:jar:1.7.0/commons-logging:commons-logging:jar:1.0</node>
+    <node x="265.5" y="770.0">org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-betwixt:commons-betwixt:jar:0.8/commons-beanutils:commons-beanutils-core:jar:1.7.0/commons-collections:commons-collections:jar:2.0</node>
+    <node x="1467.9620326029462" y="1090.0">org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-codec:commons-codec:jar:1.11</node>
+    <node x="968.9620326029462" y="1090.0">org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-collections:commons-collections:jar:3.1</node>
+    <node x="1624.9620326029462" y="1090.0">org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-dbcp:commons-dbcp:jar:1.2.1</node>
+    <node x="741.9620326029462" y="920.0">org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-digester:commons-digester:jar:1.7</node>
+    <node x="803.5" y="770.0">org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-digester:commons-digester:jar:1.7/commons-beanutils:commons-beanutils:jar:1.6</node>
+    <node x="637.5" y="770.0">org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-digester:commons-digester:jar:1.7/commons-logging:commons-logging:jar:1.0.4</node>
+    <node x="451.5" y="770.0">org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-digester:commons-digester:jar:1.7/commons-collections:commons-collections:jar:2.1</node>
+    <node x="1242.1831674774921" y="770.0">org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-digester:commons-digester:jar:1.7/xml-apis:xml-apis:jar:1.4.01</node>
+    <node x="1154.9620326029462" y="1090.0">org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-lang:commons-lang:jar:2.1</node>
+    <node x="1775.9620326029462" y="1090.0">org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-logging:commons-logging-api:jar:1.0.4</node>
+    <node x="0.0" y="920.0">org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-logging:commons-logging:jar:1.0.4</node>
+    <node x="1375.9620326029462" y="1090.0">org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/dom4j:dom4j:jar:1.6.1</node>
+    <node x="572.25" y="1090.0">org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/junit:junit:jar:4.12</node>
+    <node x="540.75" y="920.0">org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/junit:junit:jar:4.12/org.hamcrest:hamcrest-core:jar:1.3</node>
+    <node x="864.9620326029462" y="1090.0">org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/stax:stax-api:jar:1.0.1</node>
+    <node x="1300.9620326029462" y="1090.0">org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/oro:oro:jar:2.0.8</node>
+    <node x="1495.7189521627051" y="1400.0">org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/javax.xml.bind:jaxb-api:jar:2.3.1</node>
+    <node x="1598.7189521627051" y="1400.0">org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/com.sun.xml.bind:jaxb-core:jar:2.3.0.1</node>
+    <node x="1385.7189521627051" y="1400.0">org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/com.sun.xml.bind:jaxb-impl:jar:2.3.0.1</node>
+    <node x="11724.644249781752" y="1490.0">jakarta.xml.bind:jakarta.xml.bind-api:jar:2.3.3</node>
+    <node x="11720.644249781752" y="1400.0">jakarta.xml.bind:jakarta.xml.bind-api:jar:2.3.3/jakarta.activation:jakarta.activation-api:jar:1.2.2</node>
+  </nodes>
+  <notes />
+  <edges>
+    <edge source="com.google.code.maven-play-plugin.com.mchange:c3p0-oracle-thin-extras:jar:0.9.5" target="com.google.code.maven-play-plugin.com.mchange:c3p0-oracle-thin-extras:jar:0.9.5/com.mchange:c3p0:jar:0.9.5">
+      <point x="0.0" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-handler:jar:4.1.33.Final/io.netty:netty-codec:jar:4.1.33.Final" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-handler:jar:4.1.33.Final/io.netty:netty-buffer:jar:4.1.33.Final">
+      <point x="0.0" y="-15.0" />
+      <point x="9574.94499731432" y="900.0" />
+      <point x="9562.278330647654" y="900.0" />
+      <point x="9562.278330647654" y="750.0" />
+      <point x="9589.111663980988" y="750.0" />
+      <point x="-36.66666666666697" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-tomcat:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-tomcat:jar:2.1.3.RELEASE/org.apache.tomcat.embed:tomcat-embed-websocket:jar:9.0.16">
+      <point x="76.5" y="-15.0" />
+      <point x="6568.330894750218" y="1470.0" />
+      <point x="6624.580894750218" y="1470.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-cas:jar:1.4.0" target="org.apache.shiro:shiro-cas:jar:1.4.0/org.apache.shiro:shiro-web:jar:1.4.0">
+      <point x="23.0" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE">
+      <point x="-22.550000000000182" y="-15.0" />
+      <point x="8967.609134656297" y="1590.0" />
+      <point x="7806.530894750218" y="1590.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE/org.hibernate.validator:hibernate-validator:jar:6.0.14.Final">
+      <point x="-73.33333333333303" y="-15.0" />
+      <point x="4339.580894750219" y="1450.0" />
+      <point x="4259.997561416885" y="1450.0" />
+      <point x="4259.997561416885" y="1250.0" />
+      <point x="4011.0889265423393" y="1250.0" />
+      <point x="-37.75" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-transport:jar:4.1.33.Final">
+      <point x="40.875" y="-15.0" />
+      <point x="9559.580593209006" y="1380.0" />
+      <point x="9726.44499731432" y="1380.0" />
+      <point x="9726.44499731432" y="900.0" />
+      <point x="9758.778330647654" y="900.0" />
+      <point x="43.333333333333485" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE/ch.qos.logback:logback-classic:jar:1.2.3" target="com.alibaba:druid-spring-boot-starter:jar:1.1.14/org.slf4j:slf4j-api:jar:1.7.25">
+      <point x="32.25" y="-15.0" />
+      <point x="8054.0555932090065" y="500.0" />
+      <point x="9243.012305006629" y="500.0" />
+      <point x="-32.30769230769238" y="15.0" />
+    </edge>
+    <edge source="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final" target="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/org.javassist:javassist:jar:3.23.1-GA">
+      <point x="56.81818181818198" y="-15.0" />
+      <point x="3099.1064831411463" y="1250.0" />
+      <point x="3810.047259875673" y="1250.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-websocket:jar:2.1.3.RELEASE/org.springframework:spring-websocket:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework:spring-core:jar:5.1.5.RELEASE">
+      <point x="-48.33333333333394" y="-15.0" />
+      <point x="4374.421333115084" y="1070.0" />
+      <point x="4334.172259875673" y="1070.0" />
+      <point x="4334.172259875673" y="140.0" />
+      <point x="8189.405593209007" y="140.0" />
+      <point x="-42.399999999999636" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-digester:commons-digester:jar:1.7" target="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-digester:commons-digester:jar:1.7/commons-collections:commons-collections:jar:2.1">
+      <point x="-56.25" y="-15.0" />
+      <point x="760.7120326029462" y="900.0" />
+      <point x="534.5" y="900.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="cglib:cglib:jar:3.1" target="cglib:cglib:jar:3.1/org.ow2.asm:asm:jar:4.2">
+      <point x="0.0" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.mybatis.spring.boot:mybatis-spring-boot-starter:jar:1.3.2" target="org.mybatis.spring.boot:mybatis-spring-boot-starter:jar:1.3.2/org.mybatis:mybatis-spring:jar:1.3.2">
+      <point x="0.0" y="-15.0" />
+      <point x="7309.564228083552" y="1470.0" />
+      <point x="7330.514228083552" y="1470.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0" target="commons-dbcp:commons-dbcp:jar:1.4/commons-pool:commons-pool:jar:1.6">
+      <point x="36.67857142857156" y="-15.0" />
+      <point x="1786.8975235912767" y="1260.0" />
+      <point x="4176.088926542339" y="1260.0" />
+      <point x="-31.75" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-mail:jar:2.1.3.RELEASE/com.sun.mail:javax.mail:jar:1.6.2" target="org.springframework.boot:spring-boot-starter-mail:jar:2.1.3.RELEASE/com.sun.mail:javax.mail:jar:1.6.2/javax.activation:activation:jar:1.1">
+      <point x="0.0" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="com.alibaba:druid-spring-boot-starter:jar:1.1.14" target="com.alibaba:druid-spring-boot-starter:jar:1.1.14/org.slf4j:slf4j-api:jar:1.7.25">
+      <point x="0.0" y="-15.0" />
+      <point x="7057.664228083551" y="1470.0" />
+      <point x="7047.247561416885" y="1470.0" />
+      <point x="7047.247561416885" y="490.0" />
+      <point x="9236.55076654509" y="490.0" />
+      <point x="-38.769230769230944" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE/org.springframework:spring-context-support:jar:5.1.5.RELEASE">
+      <point x="-59.16666666666674" y="-15.0" />
+      <point x="8929.254166666668" y="1370.0" />
+      <point x="8520.81392654234" y="1370.0" />
+      <point x="67.875" y="15.0" />
+    </edge>
+    <edge source="net.sf.dozer:dozer:jar:5.5.1" target="net.sf.dozer:dozer:jar:5.5.1/org.apache.commons:commons-lang3:jar:3.8.1">
+      <point x="8.625" y="-15.0" />
+      <point x="11093.808477865303" y="1450.0" />
+      <point x="11073.331749781752" y="1450.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-betwixt:commons-betwixt:jar:0.8" target="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-betwixt:commons-betwixt:jar:0.8/commons-beanutils:commons-beanutils-core:jar:1.7.0">
+      <point x="0.0" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-config-core:jar:1.4.1" target="org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-lang:jar:1.4.1">
+      <point x="0.0" y="-15.0" />
+      <point x="10473.108653887066" y="740.0" />
+      <point x="10318.393093209006" y="740.0" />
+      <point x="6.0625" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-lang:jar:1.4.1" target="com.alibaba:druid-spring-boot-starter:jar:1.1.14/org.slf4j:slf4j-api:jar:1.7.25">
+      <point x="0.0" y="-15.0" />
+      <point x="10312.330593209006" y="500.0" />
+      <point x="9294.704612698937" y="500.0" />
+      <point x="19.384615384615472" y="15.0" />
+    </edge>
+    <edge source="net.sf.dozer:dozer:jar:5.5.1/commons-beanutils:commons-beanutils:jar:1.9.1" target="net.sf.dozer:dozer:jar:5.5.1/commons-beanutils:commons-beanutils:jar:1.9.1/commons-collections:commons-collections:jar:3.2.1">
+      <point x="0.0" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.hibernate:hibernate-ehcache:jar:5.2.12.Final" target="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/net.sf.ehcache:ehcache:jar:2.10.6">
+      <point x="0.0" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework.data:spring-data-keyvalue:jar:2.1.5.RELEASE/org.springframework.data:spring-data-commons:jar:2.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework:spring-core:jar:5.1.5.RELEASE">
+      <point x="0.0" y="-15.0" />
+      <point x="9096.33922808355" y="480.0" />
+      <point x="9073.172561416884" y="480.0" />
+      <point x="9073.172561416884" y="140.0" />
+      <point x="8274.205593209006" y="140.0" />
+      <point x="42.399999999999636" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.1" target="org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-crypto-hash:jar:1.4.1">
+      <point x="-14.0" y="-15.0" />
+      <point x="10417.24951923077" y="1050.0" />
+      <point x="10353.358653887066" y="1050.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-crypto-hash:jar:1.4.1" target="org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-lang:jar:1.4.1">
+      <point x="36.75" y="-15.0" />
+      <point x="10390.108653887066" y="900.0" />
+      <point x="10376.608653887066" y="900.0" />
+      <point x="10376.608653887066" y="750.0" />
+      <point x="10306.268093209006" y="750.0" />
+      <point x="-6.0625" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE/org.springframework:spring-context-support:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework:spring-core:jar:5.1.5.RELEASE">
+      <point x="60.333333333333485" y="-15.0" />
+      <point x="8513.272259875674" y="1070.0" />
+      <point x="8463.93892654234" y="1070.0" />
+      <point x="8463.93892654234" y="700.0" />
+      <point x="8759.288926542338" y="700.0" />
+      <point x="8759.288926542338" y="160.0" />
+      <point x="8260.072259875673" y="160.0" />
+      <point x="28.266666666666424" y="15.0" />
+    </edge>
+    <edge source="com.fasterxml.jackson.core:jackson-databind:jar:2.9.9" target="com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.9/com.fasterxml.jackson.core:jackson-core:jar:2.9.8">
+      <point x="35.25" y="-15.0" />
+      <point x="5078.288301322964" y="850.0" />
+      <point x="5888.288301322964" y="850.0" />
+      <point x="-47.5" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE">
+      <point x="0.0" y="-15.0" />
+      <point x="4412.914228083551" y="1450.0" />
+      <point x="4381.747561416885" y="1450.0" />
+      <point x="4381.747561416885" y="1280.0" />
+      <point x="5615.672259875673" y="1280.0" />
+      <point x="5615.672259875673" y="1030.0" />
+      <point x="7639.5375" y="1030.0" />
+      <point x="-54.25" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE">
+      <point x="-35.5" y="-15.0" />
+      <point x="8952.920833333334" y="1360.0" />
+      <point x="8642.772259875674" y="1360.0" />
+      <point x="8642.772259875674" y="720.0" />
+      <point x="8822.205593209006" y="720.0" />
+      <point x="8822.205593209006" y="370.0" />
+      <point x="8331.555593209006" y="370.0" />
+      <point x="38.25" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE">
+      <point x="-61.33333333333303" y="-15.0" />
+      <point x="8273.197561416884" y="1470.0" />
+      <point x="8226.864228083552" y="1470.0" />
+      <point x="8226.864228083552" y="1340.0" />
+      <point x="8259.280894750218" y="1340.0" />
+      <point x="8259.280894750218" y="1040.0" />
+      <point x="7748.0375" y="1040.0" />
+      <point x="54.25" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-handler:jar:4.1.33.Final/io.netty:netty-codec:jar:4.1.33.Final" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-common:jar:4.1.33.Final">
+      <point x="-36.333333333333485" y="-15.0" />
+      <point x="9538.611663980988" y="900.0" />
+      <point x="9529.778330647654" y="900.0" />
+      <point x="9529.778330647654" y="540.0" />
+      <point x="9539.611663980988" y="540.0" />
+      <point x="-10.41666666666697" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE/org.springframework:spring-context-support:jar:5.1.5.RELEASE">
+      <point x="49.25" y="-15.0" />
+      <point x="7855.780894750218" y="1360.0" />
+      <point x="8430.31392654234" y="1360.0" />
+      <point x="-22.625" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework.data:spring-data-keyvalue:jar:2.1.5.RELEASE/org.springframework.data:spring-data-commons:jar:2.1.5.RELEASE" target="com.alibaba:druid-spring-boot-starter:jar:1.1.14/org.slf4j:slf4j-api:jar:1.7.25">
+      <point x="57.33333333333326" y="-15.0" />
+      <point x="9153.672561416884" y="530.0" />
+      <point x="9262.396920391244" y="530.0" />
+      <point x="-12.923076923076906" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="org.apache.commons:commons-lang3:jar:3.5">
+      <point x="-6.149999999999636" y="-15.0" />
+      <point x="8984.009134656297" y="1550.0" />
+      <point x="8760.659134656296" y="1550.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/org.hibernate.common:hibernate-commons-annotations:jar:5.0.4.Final" target="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.jboss.logging:jboss-logging:jar:3.3.2.Final">
+      <point x="0.0" y="-15.0" />
+      <point x="2752.8597598756724" y="1070.0" />
+      <point x="2802.7347598756724" y="1070.0" />
+      <point x="-14.875" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework.data:spring-data-keyvalue:jar:2.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework.data:spring-data-keyvalue:jar:2.1.5.RELEASE/org.springframework.data:spring-data-commons:jar:2.1.5.RELEASE">
+      <point x="20.625" y="-15.0" />
+      <point x="9050.15172808355" y="890.0" />
+      <point x="9096.33922808355" y="890.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-websocket:jar:2.1.3.RELEASE/org.springframework:spring-websocket:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE/org.springframework:spring-context-support:jar:5.1.5.RELEASE/org.springframework:spring-context:jar:5.1.5.RELEASE">
+      <point x="0.0" y="-15.0" />
+      <point x="4422.754666448418" y="540.0" />
+      <point x="4838.138301322964" y="540.0" />
+      <point x="-50.399999999999636" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE/org.springframework:spring-beans:jar:5.1.5.RELEASE">
+      <point x="25.5" y="-15.0" />
+      <point x="8318.805593209006" y="300.0" />
+      <point x="8343.205593209006" y="300.0" />
+      <point x="-5.800000000000182" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2" target="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2/com.baomidou:mybatis-plus-extension:jar:3.4.2">
+      <point x="0.0" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="jakarta.xml.bind:jakarta.xml.bind-api:jar:2.3.3" target="jakarta.xml.bind:jakarta.xml.bind-api:jar:2.3.3/jakarta.activation:jakarta.activation-api:jar:1.2.2">
+      <point x="0.0" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.projectreactor:reactor-core:jar:3.2.6.RELEASE" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.projectreactor:reactor-core:jar:3.2.6.RELEASE/org.reactivestreams:reactive-streams:jar:1.0.2">
+      <point x="0.0" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.1" target="org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-crypto-cipher:jar:1.4.1">
+      <point x="-28.0" y="-15.0" />
+      <point x="10403.24951923077" y="1060.0" />
+      <point x="10182.358653887066" y="1060.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.mybatis.spring.boot:mybatis-spring-boot-starter:jar:1.3.2" target="org.springframework.boot:spring-boot-starter-jdbc:jar:2.1.3.RELEASE">
+      <point x="83.60000000000036" y="-15.0" />
+      <point x="7393.164228083552" y="1470.0" />
+      <point x="7686.530894750218" y="1470.0" />
+      <point x="7686.530894750218" y="1330.0" />
+      <point x="7874.447561416885" y="1330.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.1" target="org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-config-core:jar:1.4.1">
+      <point x="0.0" y="-15.0" />
+      <point x="10431.24951923077" y="1070.0" />
+      <point x="10437.358653887066" y="1070.0" />
+      <point x="-35.75" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-ehcache:jar:1.4.1" target="org.apache.shiro:shiro-ehcache:jar:1.4.1/net.sf.ehcache:ehcache-core:jar:2.6.11">
+      <point x="-30.5" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE">
+      <point x="-74.66666666666652" y="-15.0" />
+      <point x="9006.99246798963" y="1470.0" />
+      <point x="8614.272259875674" y="1470.0" />
+      <point x="8614.272259875674" y="1030.0" />
+      <point x="7763.5375" y="1030.0" />
+      <point x="69.75" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0" target="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/stax:stax-api:jar:1.0.1">
+      <point x="-14.107142857143117" y="-15.0" />
+      <point x="1736.111809305562" y="1200.0" />
+      <point x="906.9620326029462" y="1200.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-jdbc:jar:2.1.3.RELEASE/org.springframework:spring-jdbc:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE/org.springframework:spring-beans:jar:5.1.5.RELEASE">
+      <point x="-35.0" y="-15.0" />
+      <point x="7937.179166666667" y="900.0" />
+      <point x="7909.479166666668" y="900.0" />
+      <point x="7909.479166666668" y="660.0" />
+      <point x="8354.805593209006" y="660.0" />
+      <point x="5.800000000000182" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-handler:jar:4.1.33.Final" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-common:jar:4.1.33.Final">
+      <point x="-44.25" y="-15.0" />
+      <point x="9527.69499731432" y="1070.0" />
+      <point x="9509.94499731432" y="1070.0" />
+      <point x="9509.94499731432" y="540.0" />
+      <point x="9518.778330647654" y="540.0" />
+      <point x="-31.25" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-handler:jar:4.1.33.Final/io.netty:netty-buffer:jar:4.1.33.Final" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-common:jar:4.1.33.Final">
+      <point x="0.0" y="-15.0" />
+      <point x="9625.778330647654" y="540.0" />
+      <point x="9560.44499731432" y="540.0" />
+      <point x="10.416666666666742" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-devtools:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE/org.springframework:spring-context-support:jar:5.1.5.RELEASE/org.springframework:spring-context:jar:5.1.5.RELEASE">
+      <point x="27.0" y="-15.0" />
+      <point x="7444.722259875673" y="470.0" />
+      <point x="4888.538301322964" y="470.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="commons-io:commons-io:jar:2.4">
+      <point x="79.94999999999982" y="-15.0" />
+      <point x="9070.109134656297" y="1730.0" />
+      <point x="12445.144249781752" y="1730.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="org.postgresql:postgresql:jar:42.2.5">
+      <point x="43.05000000000018" y="-15.0" />
+      <point x="9033.209134656297" y="1640.0" />
+      <point x="11198.980593209006" y="1640.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="org.apache.shiro:shiro-core:jar:1.4.1">
+      <point x="26.649999999999636" y="-15.0" />
+      <point x="9016.809134656296" y="1600.0" />
+      <point x="10530.358653887066" y="1600.0" />
+      <point x="10530.358653887066" y="1380.0" />
+      <point x="10463.916185897437" y="1380.0" />
+      <point x="32.666666666666515" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-websocket:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-websocket:jar:2.1.3.RELEASE/org.springframework:spring-messaging:jar:5.1.5.RELEASE">
+      <point x="-75.66666666666606" y="-15.0" />
+      <point x="4093.7475614168857" y="1470.0" />
+      <point x="3864.047259875673" y="1470.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final" target="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:jar:1.1.1.Final">
+      <point x="34.09090909090992" y="-15.0" />
+      <point x="3076.3792104138743" y="1230.0" />
+      <point x="3449.547259875673" y="1230.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-crypto-hash:jar:1.4.1/org.apache.shiro:shiro-crypto-core:jar:1.4.1" target="org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-lang:jar:1.4.1">
+      <point x="0.0" y="-15.0" />
+      <point x="10268.858653887066" y="750.0" />
+      <point x="10294.143093209006" y="750.0" />
+      <point x="-18.1875" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE">
+      <point x="-14.350000000000364" y="-15.0" />
+      <point x="8975.809134656296" y="1570.0" />
+      <point x="8334.530894750218" y="1570.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="mysql:mysql-connector-java:jar:8.0.15">
+      <point x="63.55000000000018" y="-15.0" />
+      <point x="9053.709134656297" y="1690.0" />
+      <point x="11984.144249781752" y="1690.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.mybatis.spring.boot:mybatis-spring-boot-starter:jar:1.3.2" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE">
+      <point x="41.80000000000018" y="-15.0" />
+      <point x="7351.364228083552" y="1460.0" />
+      <point x="7473.764228083552" y="1460.0" />
+      <point x="7473.764228083552" y="1060.0" />
+      <point x="7686.0375" y="1060.0" />
+      <point x="-7.75" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="net.sf.json-lib:json-lib:jar:jdk15:2.4">
+      <point x="47.149999999999636" y="-15.0" />
+      <point x="9037.309134656296" y="1650.0" />
+      <point x="11413.644249781752" y="1650.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-webmvc:jar:5.1.5.RELEASE">
+      <point x="0.0" y="-15.0" />
+      <point x="4729.247561416885" y="1260.0" />
+      <point x="5039.122561416885" y="1260.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE">
+      <point x="74.66666666666652" y="-15.0" />
+      <point x="9156.325801322964" y="1470.0" />
+      <point x="9518.705593209006" y="1470.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework:spring-core:jar:5.1.5.RELEASE">
+      <point x="64.58333333333348" y="-15.0" />
+      <point x="7758.370833333334" y="900.0" />
+      <point x="7892.620833333334" y="900.0" />
+      <point x="7892.620833333334" y="650.0" />
+      <point x="8231.805593209006" y="650.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.hibernate:hibernate-ehcache:jar:5.2.12.Final" target="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final">
+      <point x="49.66666666666606" y="-15.0" />
+      <point x="2854.204967989631" y="1470.0" />
+      <point x="3042.2883013229643" y="1470.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="com.fasterxml.jackson.core:jackson-databind:jar:2.9.9">
+      <point x="-51.25" y="-15.0" />
+      <point x="8938.909134656296" y="1660.0" />
+      <point x="5473.122561416885" y="1660.0" />
+      <point x="5473.122561416885" y="1240.0" />
+      <point x="4869.713926542339" y="1240.0" />
+      <point x="4869.713926542339" y="1070.0" />
+      <point x="5043.038301322964" y="1070.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-webmvc:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework:spring-core:jar:5.1.5.RELEASE">
+      <point x="-32.25" y="-15.0" />
+      <point x="5006.872561416885" y="1040.0" />
+      <point x="4637.038301322964" y="1040.0" />
+      <point x="4637.038301322964" y="160.0" />
+      <point x="8203.53892654234" y="160.0" />
+      <point x="-28.266666666666424" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-config-ogdl:jar:1.4.1" target="com.alibaba:druid-spring-boot-starter:jar:1.1.14/org.slf4j:slf4j-api:jar:1.7.25">
+      <point x="57.19999999999982" y="-15.0" />
+      <point x="10824.808653887067" y="900.0" />
+      <point x="10875.952403887066" y="900.0" />
+      <point x="10875.952403887066" y="490.0" />
+      <point x="9301.166151160474" y="490.0" />
+      <point x="25.84615384615381" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE/org.springframework:spring-context-support:jar:5.1.5.RELEASE/org.springframework:spring-context:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework:spring-core:jar:5.1.5.RELEASE">
+      <point x="-15.75" y="-15.0" />
+      <point x="4872.788301322964" y="380.0" />
+      <point x="4883.038301322964" y="380.0" />
+      <point x="4883.038301322964" y="190.0" />
+      <point x="8224.73892654234" y="190.0" />
+      <point x="-7.066666666666606" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE">
+      <point x="38.75" y="-15.0" />
+      <point x="7732.5375" y="890.0" />
+      <point x="7778.620833333334" y="890.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-webmvc:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE/org.springframework:spring-context-support:jar:5.1.5.RELEASE/org.springframework:spring-context:jar:5.1.5.RELEASE">
+      <point x="32.25" y="-15.0" />
+      <point x="5071.372561416885" y="1010.0" />
+      <point x="4863.338301322964" y="1010.0" />
+      <point x="-25.199999999999818" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-ehcache:jar:1.4.1" target="org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-cache:jar:1.4.1">
+      <point x="30.5" y="-15.0" />
+      <point x="9986.94499731432" y="1070.0" />
+      <point x="10004.608653887066" y="1070.0" />
+      <point x="-26.75" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="org.springframework.boot:spring-boot-starter-websocket:jar:2.1.3.RELEASE">
+      <point x="-71.75" y="-15.0" />
+      <point x="8918.409134656296" y="1710.0" />
+      <point x="4169.414228083551" y="1710.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework.data:spring-data-keyvalue:jar:2.1.5.RELEASE">
+      <point x="11.833333333333258" y="-15.0" />
+      <point x="9000.254166666668" y="1360.0" />
+      <point x="9029.52672808355" y="1360.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE/org.apache.tomcat.embed:tomcat-embed-el:jar:9.0.16">
+      <point x="73.33333333333303" y="-15.0" />
+      <point x="4486.247561416885" y="1470.0" />
+      <point x="5332.0972598756725" y="1470.0" />
+      <point x="-35.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/junit:junit:jar:4.12" target="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/junit:junit:jar:4.12/org.hamcrest:hamcrest-core:jar:1.3">
+      <point x="0.0" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0" target="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/oro:oro:jar:2.0.8">
+      <point x="2.8214285714284415" y="-15.0" />
+      <point x="1753.0403807341336" y="1170.0" />
+      <point x="1328.4620326029462" y="1170.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.1" target="org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-cache:jar:1.4.1">
+      <point x="-42.0" y="-15.0" />
+      <point x="10389.24951923077" y="1070.0" />
+      <point x="10058.108653887066" y="1070.0" />
+      <point x="26.75" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-config-ogdl:jar:1.4.1" target="org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-lang:jar:1.4.1">
+      <point x="28.59999999999991" y="-15.0" />
+      <point x="10796.208653887066" y="890.0" />
+      <point x="10856.108653887066" y="890.0" />
+      <point x="10856.108653887066" y="720.0" />
+      <point x="10342.643093209006" y="720.0" />
+      <point x="30.3125" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-crypto-cipher:jar:1.4.1" target="org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-crypto-hash:jar:1.4.1/org.apache.shiro:shiro-crypto-core:jar:1.4.1">
+      <point x="38.75" y="-15.0" />
+      <point x="10221.108653887066" y="900.0" />
+      <point x="10232.858653887066" y="900.0" />
+      <point x="-36.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE/org.hibernate.validator:hibernate-validator:jar:6.0.14.Final" target="org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE/org.hibernate.validator:hibernate-validator:jar:6.0.14.Final/javax.validation:validation-api:jar:2.0.1.Final">
+      <point x="50.33333333333394" y="-15.0" />
+      <point x="4099.172259875673" y="1070.0" />
+      <point x="4167.354166666667" y="1070.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-web:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE/org.springframework:spring-beans:jar:5.1.5.RELEASE">
+      <point x="26.0" y="-15.0" />
+      <point x="4600.538301322964" y="880.0" />
+      <point x="4580.038301322964" y="880.0" />
+      <point x="4580.038301322964" y="270.0" />
+      <point x="8308.405593209005" y="270.0" />
+      <point x="-40.600000000000364" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="org.springframework.boot:spring-boot-devtools:jar:2.1.3.RELEASE">
+      <point x="-10.25" y="-15.0" />
+      <point x="8979.909134656296" y="1560.0" />
+      <point x="8437.030894750218" y="1560.0" />
+      <point x="8437.030894750218" y="1330.0" />
+      <point x="8248.280894750218" y="1330.0" />
+      <point x="8248.280894750218" y="1070.0" />
+      <point x="8319.772259875674" y="1070.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.projectreactor:reactor-core:jar:3.2.6.RELEASE">
+      <point x="-40.875" y="-15.0" />
+      <point x="9477.830593209006" y="1380.0" />
+      <point x="9412.81999731432" y="1380.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-jdbc:jar:2.1.3.RELEASE/com.zaxxer:HikariCP:jar:3.2.0" target="com.alibaba:druid-spring-boot-starter:jar:1.1.14/org.slf4j:slf4j-api:jar:1.7.25">
+      <point x="0.0" y="-15.0" />
+      <point x="9245.33922808355" y="540.0" />
+      <point x="9268.858458852781" y="540.0" />
+      <point x="-6.4615384615385665" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-spring:jar:1.4.1" target="org.apache.shiro:shiro-core:jar:1.4.1">
+      <point x="-27.5" y="-15.0" />
+      <point x="10344.358653887066" y="1380.0" />
+      <point x="10398.582852564105" y="1380.0" />
+      <point x="-32.666666666666515" y="15.0" />
+    </edge>
+    <edge source="com.fasterxml.jackson.datatype:jackson-datatype-hibernate5:jar:2.9.9" target="com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.9/com.fasterxml.jackson.core:jackson-core:jar:2.9.8">
+      <point x="71.0" y="-15.0" />
+      <point x="6293.788301322964" y="1470.0" />
+      <point x="6351.080894750218" y="1470.0" />
+      <point x="6351.080894750218" y="860.0" />
+      <point x="5983.288301322964" y="860.0" />
+      <point x="47.5" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE/org.hibernate.validator:hibernate-validator:jar:6.0.14.Final" target="org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE/org.hibernate.validator:hibernate-validator:jar:6.0.14.Final/com.fasterxml:classmate:jar:1.4.0">
+      <point x="0.0" y="-15.0" />
+      <point x="4048.8389265423393" y="1050.0" />
+      <point x="2979.547259875673" y="1050.0" />
+      <point x="23.75" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0" target="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-beanutils:commons-beanutils:jar:1.7.0">
+      <point x="31.035714285714675" y="-15.0" />
+      <point x="1781.2546664484198" y="1240.0" />
+      <point x="2043.9620326029462" y="1240.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0" target="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-digester:commons-digester:jar:1.7">
+      <point x="-19.75" y="-15.0" />
+      <point x="1730.4689521627051" y="1210.0" />
+      <point x="854.4620326029462" y="1210.0" />
+      <point x="37.5" y="15.0" />
+    </edge>
+    <edge source="net.sf.dozer:dozer:jar:5.5.1/org.slf4j:jcl-over-slf4j:jar:1.7.25" target="com.alibaba:druid-spring-boot-starter:jar:1.1.14/org.slf4j:slf4j-api:jar:1.7.25">
+      <point x="0.0" y="-15.0" />
+      <point x="10995.831749781752" y="470.0" />
+      <point x="9314.08922808355" y="470.0" />
+      <point x="38.76923076923072" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-freemarker:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-freemarker:jar:2.1.3.RELEASE/org.freemarker:freemarker:jar:2.3.28">
+      <point x="0.0" y="-15.0" />
+      <point x="8109.030894750218" y="1470.0" />
+      <point x="8101.447561416885" y="1470.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-websocket:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-websocket:jar:2.1.3.RELEASE/org.springframework:spring-websocket:jar:5.1.5.RELEASE">
+      <point x="0.0" y="-15.0" />
+      <point x="4169.414228083551" y="1460.0" />
+      <point x="4070.0472598756733" y="1460.0" />
+      <point x="4070.0472598756733" y="1270.0" />
+      <point x="4422.754666448418" y="1270.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final" target="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/javax.persistence:javax.persistence-api:jar:2.2">
+      <point x="45.45454545454595" y="-15.0" />
+      <point x="3087.7428467775103" y="1240.0" />
+      <point x="3664.547259875673" y="1240.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework.data:spring-data-keyvalue:jar:2.1.5.RELEASE/org.springframework.data:spring-data-commons:jar:2.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE/org.springframework:spring-beans:jar:5.1.5.RELEASE">
+      <point x="-57.33333333333326" y="-15.0" />
+      <point x="9039.005894750218" y="480.0" />
+      <point x="9024.922561416884" y="480.0" />
+      <point x="9024.922561416884" y="280.0" />
+      <point x="8389.605593209006" y="280.0" />
+      <point x="40.600000000000364" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0" target="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-lang:commons-lang:jar:2.1">
+      <point x="-2.8214285714284415" y="-15.0" />
+      <point x="1747.3975235912767" y="1180.0" />
+      <point x="1217.9620326029462" y="1180.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.9.8">
+      <point x="15.58333333333394" y="-15.0" />
+      <point x="5527.255593209007" y="1000.0" />
+      <point x="5587.913301322964" y="1000.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0" target="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/com.baomidou:mybatis-plus-boot-starter:jar:3.4.2">
+      <point x="86.39999999999964" y="-15.0" />
+      <point x="1819.418952162704" y="1470.0" />
+      <point x="2474.5036992696123" y="1470.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-jdbc:jar:2.1.3.RELEASE/org.springframework:spring-jdbc:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework:spring-tx:jar:5.1.5.RELEASE">
+      <point x="35.0" y="-15.0" />
+      <point x="8007.179166666667" y="900.0" />
+      <point x="8812.947561416886" y="900.0" />
+      <point x="-30.333333333333258" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-mail:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE">
+      <point x="0.0" y="-15.0" />
+      <point x="6848.664228083551" y="1470.0" />
+      <point x="6846.580894750219" y="1470.0" />
+      <point x="6846.580894750219" y="1050.0" />
+      <point x="7670.5375" y="1050.0" />
+      <point x="-23.25" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.9">
+      <point x="-55.350000000000364" y="-15.0" />
+      <point x="8934.809134656296" y="1670.0" />
+      <point x="5178.622561416885" y="1670.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-transport:jar:4.1.33.Final" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-handler:jar:4.1.33.Final/io.netty:netty-buffer:jar:4.1.33.Final">
+      <point x="-43.33333333333326" y="-15.0" />
+      <point x="9672.111663980988" y="750.0" />
+      <point x="9662.44499731432" y="750.0" />
+      <point x="36.66666666666674" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-websocket:jar:2.1.3.RELEASE/org.springframework:spring-messaging:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework:spring-core:jar:5.1.5.RELEASE">
+      <point x="-36.25" y="-15.0" />
+      <point x="3827.797259875673" y="130.0" />
+      <point x="8182.33892654234" y="130.0" />
+      <point x="-49.46666666666624" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.9.8" target="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.9.8/com.fasterxml.jackson.core:jackson-databind:jar:2.9.9">
+      <point x="0.0" y="-15.0" />
+      <point x="5386.538301322964" y="830.0" />
+      <point x="5581.330894750218" y="830.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-freemarker:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE">
+      <point x="-75.66666666666652" y="-15.0" />
+      <point x="8033.364228083552" y="1470.0" />
+      <point x="8040.947561416885" y="1470.0" />
+      <point x="8040.947561416885" y="1050.0" />
+      <point x="7732.5375" y="1050.0" />
+      <point x="38.75" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0" target="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-codec:commons-codec:jar:1.11">
+      <point x="14.107142857143117" y="-15.0" />
+      <point x="1764.3260950198483" y="1150.0" />
+      <point x="1536.4620326029462" y="1150.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-crypto-cipher:jar:1.4.1" target="org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-lang:jar:1.4.1">
+      <point x="-38.75" y="-15.0" />
+      <point x="10143.608653887066" y="900.0" />
+      <point x="10159.108653887066" y="900.0" />
+      <point x="10159.108653887066" y="740.0" />
+      <point x="10282.018093209006" y="740.0" />
+      <point x="-30.3125" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="org.apache.shiro:shiro-ehcache:jar:1.4.1">
+      <point x="6.149999999999636" y="-15.0" />
+      <point x="8996.309134656296" y="1550.0" />
+      <point x="9956.44499731432" y="1550.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-devtools:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework:spring-core:jar:5.1.5.RELEASE">
+      <point x="-27.0" y="-15.0" />
+      <point x="7390.722259875673" y="480.0" />
+      <point x="4815.038301322964" y="480.0" />
+      <point x="4815.038301322964" y="180.0" />
+      <point x="8217.672259875673" y="180.0" />
+      <point x="-14.133333333333212" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-betwixt:commons-betwixt:jar:0.8/commons-beanutils:commons-beanutils-core:jar:1.7.0" target="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-betwixt:commons-betwixt:jar:0.8/commons-beanutils:commons-beanutils-core:jar:1.7.0/commons-logging:commons-logging:jar:1.0">
+      <point x="-47.25" y="-15.0" />
+      <point x="213.25" y="900.0" />
+      <point x="172.5" y="900.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-tomcat:jar:2.1.3.RELEASE/org.apache.tomcat.embed:tomcat-embed-websocket:jar:9.0.16" target="org.springframework.boot:spring-boot-starter-tomcat:jar:2.1.3.RELEASE/org.apache.tomcat.embed:tomcat-embed-core:jar:9.0.16">
+      <point x="0.0" y="-15.0" />
+      <point x="6624.580894750218" y="1310.0" />
+      <point x="6594.580894750218" y="1310.0" />
+      <point x="39.25" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-digester:commons-digester:jar:1.7" target="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-digester:commons-digester:jar:1.7/commons-logging:commons-logging:jar:1.0.4">
+      <point x="-18.75" y="-15.0" />
+      <point x="798.2120326029462" y="890.0" />
+      <point x="710.5" y="890.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-jdbc:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-jdbc:jar:2.1.3.RELEASE/org.springframework:spring-jdbc:jar:5.1.5.RELEASE">
+      <point x="0.0" y="-15.0" />
+      <point x="7874.447561416885" y="1060.0" />
+      <point x="7972.179166666667" y="1060.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0" target="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/com.sun.xml.bind:jaxb-core:jar:2.3.0.1">
+      <point x="0.0" y="-15.0" />
+      <point x="1733.0189521627044" y="1450.0" />
+      <point x="1644.7189521627051" y="1450.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework:spring-oxm:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE/org.springframework:spring-beans:jar:5.1.5.RELEASE">
+      <point x="-26.25" y="-15.0" />
+      <point x="9307.56999731432" y="270.0" />
+      <point x="8401.205593209006" y="270.0" />
+      <point x="52.19999999999982" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="com.mchange:c3p0:jar:0.9.2.1">
+      <point x="75.85000000000036" y="-15.0" />
+      <point x="9066.009134656297" y="1720.0" />
+      <point x="12337.144249781752" y="1720.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-jdbc:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE">
+      <point x="-62.333333333333485" y="-15.0" />
+      <point x="7812.114228083552" y="1070.0" />
+      <point x="7717.0375" y="1070.0" />
+      <point x="23.25" y="15.0" />
+    </edge>
+    <edge source="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final" target="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/antlr:antlr:jar:2.7.7">
+      <point x="0.0" y="-15.0" />
+      <point x="3042.2883013229643" y="1200.0" />
+      <point x="3065.547259875673" y="1200.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE/org.hibernate.validator:hibernate-validator:jar:6.0.14.Final" target="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.jboss.logging:jboss-logging:jar:3.3.2.Final">
+      <point x="-50.33333333333394" y="-15.0" />
+      <point x="3998.5055932090054" y="1060.0" />
+      <point x="2862.2347598756724" y="1060.0" />
+      <point x="44.625" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-tomcat:jar:2.1.3.RELEASE/javax.annotation:javax.annotation-api:jar:1.3.2">
+      <point x="-64.58333333333348" y="-15.0" />
+      <point x="7629.204166666666" y="880.0" />
+      <point x="6546.330894750218" y="880.0" />
+      <point x="40.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE/org.springframework:spring-context-support:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE/org.springframework:spring-context-support:jar:5.1.5.RELEASE/org.springframework:spring-context:jar:5.1.5.RELEASE">
+      <point x="-60.333333333333485" y="-15.0" />
+      <point x="8392.605593209006" y="1070.0" />
+      <point x="8423.264727865302" y="1070.0" />
+      <point x="8423.264727865302" y="610.0" />
+      <point x="7946.8055932090065" y="610.0" />
+      <point x="7946.8055932090065" y="460.0" />
+      <point x="4913.738301322964" y="460.0" />
+      <point x="25.199999999999818" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.9.8" target="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.9.8/com.fasterxml.jackson.core:jackson-databind:jar:2.9.9">
+      <point x="-43.25" y="-15.0" />
+      <point x="5544.663301322964" y="840.0" />
+      <point x="5742.330894750218" y="840.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE">
+      <point x="61.33333333333303" y="-15.0" />
+      <point x="8395.864228083552" y="1470.0" />
+      <point x="8410.364228083552" y="1470.0" />
+      <point x="8410.364228083552" y="1380.0" />
+      <point x="8556.295833333334" y="1380.0" />
+      <point x="8556.295833333334" y="710.0" />
+      <point x="8785.122259875672" y="710.0" />
+      <point x="8785.122259875672" y="380.0" />
+      <point x="8306.055593209006" y="380.0" />
+      <point x="12.75" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE">
+      <point x="-49.25" y="-15.0" />
+      <point x="7757.280894750218" y="1310.0" />
+      <point x="7520.139228083552" y="1310.0" />
+      <point x="7520.139228083552" y="1070.0" />
+      <point x="7701.5375" y="1070.0" />
+      <point x="7.75" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework.data:spring-data-keyvalue:jar:2.1.5.RELEASE" target="com.alibaba:druid-spring-boot-starter:jar:1.1.14/org.slf4j:slf4j-api:jar:1.7.25">
+      <point x="61.875" y="-15.0" />
+      <point x="9091.40172808355" y="900.0" />
+      <point x="9298.83922808355" y="900.0" />
+      <point x="9298.83922808355" y="540.0" />
+      <point x="9275.31999731432" y="540.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="cglib:cglib:jar:3.1">
+      <point x="55.350000000000364" y="-15.0" />
+      <point x="9045.509134656297" y="1670.0" />
+      <point x="11671.144249781752" y="1670.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE/org.hibernate.validator:hibernate-validator:jar:6.0.14.Final">
+      <point x="-74.39999999999964" y="-15.0" />
+      <point x="4654.847561416886" y="1230.0" />
+      <point x="4086.5889265423393" y="1230.0" />
+      <point x="37.75" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-handler:jar:4.1.33.Final" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-handler:jar:4.1.33.Final/io.netty:netty-buffer:jar:4.1.33.Final">
+      <point x="14.75" y="-15.0" />
+      <point x="9586.69499731432" y="1060.0" />
+      <point x="9639.94499731432" y="1060.0" />
+      <point x="9639.94499731432" y="750.0" />
+      <point x="9625.778330647654" y="750.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-transport:jar:4.1.33.Final/io.netty:netty-resolver:jar:4.1.33.Final" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-common:jar:4.1.33.Final">
+      <point x="0.0" y="-15.0" />
+      <point x="9786.44499731432" y="520.0" />
+      <point x="9602.111663980988" y="520.0" />
+      <point x="52.08333333333326" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-websocket:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE">
+      <point x="75.66666666666606" y="-15.0" />
+      <point x="4245.080894750217" y="1460.0" />
+      <point x="4682.747561416885" y="1460.0" />
+      <point x="-46.5" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-web:jar:5.1.5.RELEASE">
+      <point x="-37.20000000000073" y="-15.0" />
+      <point x="4692.0475614168845" y="1250.0" />
+      <point x="4947.747561416885" y="1250.0" />
+      <point x="4947.747561416885" y="1060.0" />
+      <point x="4561.538301322964" y="1060.0" />
+      <point x="-13.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="net.sf.dozer:dozer:jar:5.5.1">
+      <point x="38.94999999999982" y="-15.0" />
+      <point x="9029.109134656297" y="1630.0" />
+      <point x="11085.183477865303" y="1630.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-webmvc:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE">
+      <point x="53.75" y="-15.0" />
+      <point x="5092.872561416885" y="1000.0" />
+      <point x="4962.038301322964" y="1000.0" />
+      <point x="4962.038301322964" y="380.0" />
+      <point x="8280.555593209006" y="380.0" />
+      <point x="-12.75" y="15.0" />
+    </edge>
+    <edge source="com.fasterxml.jackson.datatype:jackson-datatype-hibernate5:jar:2.9.9" target="com.fasterxml.jackson.datatype:jackson-datatype-hibernate5:jar:2.9.9/javax.transaction:jta:jar:1.1">
+      <point x="0.0" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="commons-lang:commons-lang:jar:2.6">
+      <point x="51.25" y="-15.0" />
+      <point x="9041.409134656296" y="1660.0" />
+      <point x="11556.644249781752" y="1660.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="net.sf.dozer:dozer:jar:5.5.1" target="com.alibaba:druid-spring-boot-starter:jar:1.1.14/org.slf4j:slf4j-api:jar:1.7.25">
+      <point x="-25.875" y="-15.0" />
+      <point x="11059.308477865303" y="1470.0" />
+      <point x="10929.331749781752" y="1470.0" />
+      <point x="10929.331749781752" y="480.0" />
+      <point x="9307.627689622013" y="480.0" />
+      <point x="32.30769230769238" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework:spring-oxm:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework:spring-core:jar:5.1.5.RELEASE">
+      <point x="26.25" y="-15.0" />
+      <point x="9360.06999731432" y="130.0" />
+      <point x="8281.272259875674" y="130.0" />
+      <point x="49.46666666666624" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE/org.springframework:spring-beans:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework:spring-core:jar:5.1.5.RELEASE">
+      <point x="0.0" y="-15.0" />
+      <point x="8349.005593209005" y="180.0" />
+      <point x="8245.93892654234" y="180.0" />
+      <point x="14.133333333333212" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-crypto-hash:jar:1.4.1" target="org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-crypto-hash:jar:1.4.1/org.apache.shiro:shiro-crypto-core:jar:1.4.1">
+      <point x="-36.75" y="-15.0" />
+      <point x="10316.608653887066" y="900.0" />
+      <point x="10304.858653887066" y="900.0" />
+      <point x="36.0" y="15.0" />
+    </edge>
+    <edge source="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final" target="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/org.jboss:jandex:jar:2.0.5.Final">
+      <point x="11.363636363636033" y="-15.0" />
+      <point x="3053.6519376866004" y="1210.0" />
+      <point x="3153.547259875673" y="1210.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE/org.slf4j:jul-to-slf4j:jar:1.7.25">
+      <point x="69.0" y="-15.0" />
+      <point x="7847.620833333334" y="680.0" />
+      <point x="8677.288926542338" y="680.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="org.hibernate:hibernate-ehcache:jar:5.2.12.Final">
+      <point x="-75.85000000000036" y="-15.0" />
+      <point x="8914.309134656296" y="1720.0" />
+      <point x="2804.538301322965" y="1720.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="org.apache.shiro:shiro-web:jar:1.4.1">
+      <point x="18.449999999999818" y="-15.0" />
+      <point x="9008.609134656297" y="1580.0" />
+      <point x="10437.358653887066" y="1580.0" />
+      <point x="24.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="com.microsoft.sqlserver:mssql-jdbc:jar:6.4.0.jre8">
+      <point x="-2.050000000000182" y="-15.0" />
+      <point x="8988.109134656297" y="1540.0" />
+      <point x="8898.659134656296" y="1540.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="com.fasterxml.jackson.datatype:jackson-datatype-hibernate5:jar:2.9.9" target="com.fasterxml.jackson.datatype:jackson-datatype-hibernate5:jar:2.9.9/com.fasterxml.jackson.core:jackson-databind:jar:2.9.9">
+      <point x="-71.0" y="-15.0" />
+      <point x="6151.788301322964" y="1470.0" />
+      <point x="6107.788301322964" y="1470.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-web:jar:1.4.1" target="org.apache.shiro:shiro-core:jar:1.4.1">
+      <point x="0.0" y="-15.0" />
+      <point x="10413.358653887066" y="1380.0" />
+      <point x="10431.24951923077" y="1380.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-devtools:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-autoconfigure:jar:2.1.3.RELEASE">
+      <point x="-38.75" y="-15.0" />
+      <point x="7655.0375" y="870.0" />
+      <point x="7247.814228083551" y="870.0" />
+      <point x="40.19999999999982" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0" target="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-logging:commons-logging:jar:1.0.4">
+      <point x="-36.67857142857156" y="-15.0" />
+      <point x="1713.5403807341336" y="1240.0" />
+      <point x="36.5" y="1240.0" />
+      <point x="-36.5" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-mail:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE/org.springframework:spring-context-support:jar:5.1.5.RELEASE">
+      <point x="61.666666666666515" y="-15.0" />
+      <point x="6910.330894750218" y="1470.0" />
+      <point x="6888.788301322964" y="1470.0" />
+      <point x="6888.788301322964" y="1350.0" />
+      <point x="8385.06392654234" y="1350.0" />
+      <point x="-67.875" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/com.baomidou:mybatis-plus-boot-starter:jar:3.4.2" target="org.springframework.boot:spring-boot-starter-jdbc:jar:2.1.3.RELEASE">
+      <point x="65.33333333333303" y="-15.0" />
+      <point x="2539.8370326029453" y="1320.0" />
+      <point x="7812.114228083552" y="1320.0" />
+      <point x="-62.333333333333485" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE">
+      <point x="74.39999999999964" y="-15.0" />
+      <point x="4803.647561416885" y="1290.0" />
+      <point x="5626.672259875673" y="1290.0" />
+      <point x="5626.672259875673" y="1040.0" />
+      <point x="7655.0375" y="1040.0" />
+      <point x="-38.75" y="15.0" />
+    </edge>
+    <edge source="com.alibaba:druid-spring-boot-starter:jar:1.1.14" target="org.springframework.boot:spring-boot-devtools:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-autoconfigure:jar:2.1.3.RELEASE">
+      <point x="64.33333333333303" y="-15.0" />
+      <point x="7121.997561416885" y="1470.0" />
+      <point x="7087.81392654234" y="1470.0" />
+      <point x="7087.81392654234" y="900.0" />
+      <point x="7167.414228083551" y="900.0" />
+      <point x="-40.19999999999982" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-webmvc:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-webmvc:jar:5.1.5.RELEASE/org.springframework:spring-expression:jar:5.1.5.RELEASE">
+      <point x="-10.75" y="-15.0" />
+      <point x="5028.372561416885" y="1030.0" />
+      <point x="4684.038301322964" y="1030.0" />
+      <point x="-36.5" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-devtools:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-autoconfigure:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-devtools:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot:jar:2.1.3.RELEASE">
+      <point x="0.0" y="-15.0" />
+      <point x="7207.614228083552" y="750.0" />
+      <point x="7381.722259875673" y="750.0" />
+      <point x="-36.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0" target="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/dom4j:dom4j:jar:1.6.1">
+      <point x="8.464285714285325" y="-15.0" />
+      <point x="1758.6832378769905" y="1160.0" />
+      <point x="1411.9620326029462" y="1160.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-common:jar:4.1.33.Final">
+      <point x="-13.625" y="-15.0" />
+      <point x="9505.080593209006" y="1380.0" />
+      <point x="9491.81999731432" y="1380.0" />
+      <point x="9491.81999731432" y="540.0" />
+      <point x="9497.94499731432" y="540.0" />
+      <point x="-52.08333333333303" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-betwixt:commons-betwixt:jar:0.8/commons-beanutils:commons-beanutils-core:jar:1.7.0" target="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-betwixt:commons-betwixt:jar:0.8/commons-beanutils:commons-beanutils-core:jar:1.7.0/commons-collections:commons-collections:jar:2.0">
+      <point x="47.25" y="-15.0" />
+      <point x="307.75" y="900.0" />
+      <point x="348.5" y="900.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="javax.servlet.jsp:jsp-api:jar:2.1">
+      <point x="10.25" y="-15.0" />
+      <point x="9000.409134656296" y="1560.0" />
+      <point x="10178.673061198635" y="1560.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.9.8">
+      <point x="-15.58333333333394" y="-15.0" />
+      <point x="5496.088926542339" y="970.0" />
+      <point x="5386.538301322964" y="970.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.9.8" target="com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.9/com.fasterxml.jackson.core:jackson-core:jar:2.9.8">
+      <point x="61.33333333333394" y="-15.0" />
+      <point x="5447.871634656298" y="860.0" />
+      <point x="5907.288301322964" y="860.0" />
+      <point x="-28.5" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE/org.springframework:spring-context-support:jar:5.1.5.RELEASE/org.springframework:spring-context:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE">
+      <point x="47.25" y="-15.0" />
+      <point x="4935.788301322964" y="370.0" />
+      <point x="8255.055593209006" y="370.0" />
+      <point x="-38.25" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="com.google.code.maven-play-plugin.com.mchange:c3p0-oracle-thin-extras:jar:0.9.5">
+      <point x="34.850000000000364" y="-15.0" />
+      <point x="9025.009134656297" y="1620.0" />
+      <point x="10758.916185897437" y="1620.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2/com.baomidou:mybatis-plus-extension:jar:3.4.2/com.baomidou:mybatis-plus-core:jar:3.4.2" target="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2/com.baomidou:mybatis-plus-extension:jar:3.4.2/com.baomidou:mybatis-plus-core:jar:3.4.2/org.mybatis:mybatis:jar:3.5.6">
+      <point x="-49.0" y="-15.0" />
+      <point x="2071.4620326029462" y="750.0" />
+      <point x="1986.2120326029462" y="750.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-tomcat:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-tomcat:jar:2.1.3.RELEASE/org.apache.tomcat.embed:tomcat-embed-core:jar:9.0.16">
+      <point x="25.5" y="-15.0" />
+      <point x="6517.330894750218" y="1470.0" />
+      <point x="6516.080894750218" y="1470.0" />
+      <point x="-39.25" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework:spring-core:jar:5.1.5.RELEASE">
+      <point x="-25.5" y="-15.0" />
+      <point x="8267.805593209006" y="190.0" />
+      <point x="8238.872259875672" y="190.0" />
+      <point x="7.066666666666606" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-digester:commons-digester:jar:1.7" target="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-digester:commons-digester:jar:1.7/xml-apis:xml-apis:jar:1.4.01">
+      <point x="56.25" y="-15.0" />
+      <point x="873.2120326029462" y="900.0" />
+      <point x="1285.1831674774921" y="900.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0" target="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/com.sun.xml.bind:jaxb-impl:jar:2.3.0.1">
+      <point x="-86.39999999999964" y="-15.0" />
+      <point x="1646.6189521627048" y="1470.0" />
+      <point x="1430.7189521627051" y="1470.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework.data:spring-data-keyvalue:jar:2.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE/org.springframework:spring-context-support:jar:5.1.5.RELEASE/org.springframework:spring-context:jar:5.1.5.RELEASE">
+      <point x="-20.625" y="-15.0" />
+      <point x="9008.90172808355" y="680.0" />
+      <point x="8737.288926542338" y="680.0" />
+      <point x="8737.288926542338" y="450.0" />
+      <point x="4938.9383013229635" y="450.0" />
+      <point x="50.399999999999636" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-event:jar:1.4.1" target="org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-lang:jar:1.4.1">
+      <point x="0.0" y="-15.0" />
+      <point x="10617.108653887066" y="730.0" />
+      <point x="10330.518093209006" y="730.0" />
+      <point x="18.1875" y="15.0" />
+    </edge>
+    <edge source="com.alibaba:druid-spring-boot-starter:jar:1.1.14" target="com.alibaba:druid-spring-boot-starter:jar:1.1.14/com.alibaba:druid:jar:1.1.14">
+      <point x="-64.33333333333303" y="-15.0" />
+      <point x="6993.330894750219" y="1470.0" />
+      <point x="6948.247561416885" y="1470.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-devtools:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-devtools:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-autoconfigure:jar:2.1.3.RELEASE">
+      <point x="-41.75" y="-15.0" />
+      <point x="8278.022259875674" y="840.0" />
+      <point x="7288.014228083552" y="840.0" />
+      <point x="80.39999999999964" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="org.springframework.boot:spring-boot-starter-jdbc:jar:2.1.3.RELEASE">
+      <point x="-26.649999999999636" y="-15.0" />
+      <point x="8963.509134656297" y="1600.0" />
+      <point x="7697.530894750218" y="1600.0" />
+      <point x="7697.530894750218" y="1340.0" />
+      <point x="7936.780894750218" y="1340.0" />
+      <point x="62.333333333333485" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE">
+      <point x="2.050000000000182" y="-15.0" />
+      <point x="8992.209134656297" y="1540.0" />
+      <point x="9081.659134656296" y="1540.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="net.sf.dozer:dozer:jar:5.5.1" target="net.sf.dozer:dozer:jar:5.5.1/commons-beanutils:commons-beanutils:jar:1.9.1">
+      <point x="25.875" y="-15.0" />
+      <point x="11111.058477865303" y="1470.0" />
+      <point x="11238.331749781752" y="1470.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-freemarker:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE/org.springframework:spring-context-support:jar:5.1.5.RELEASE">
+      <point x="75.66666666666652" y="-15.0" />
+      <point x="8184.697561416884" y="1470.0" />
+      <point x="8161.947561416885" y="1470.0" />
+      <point x="8161.947561416885" y="1370.0" />
+      <point x="8475.56392654234" y="1370.0" />
+      <point x="22.625" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE/org.apache.logging.log4j:log4j-to-slf4j:jar:2.11.2" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE/org.apache.logging.log4j:log4j-to-slf4j:jar:2.11.2/org.apache.logging.log4j:log4j-api:jar:2.11.2">
+      <point x="-28.75" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="com.fasterxml.jackson.datatype:jackson-datatype-hibernate5:jar:2.9.9">
+      <point x="-47.149999999999636" y="-15.0" />
+      <point x="8943.009134656297" y="1650.0" />
+      <point x="6222.788301322964" y="1650.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.mybatis.spring.boot:mybatis-spring-boot-starter:jar:1.3.2" target="org.mybatis.spring.boot:mybatis-spring-boot-starter:jar:1.3.2/org.mybatis:mybatis:jar:3.4.6">
+      <point x="-83.59999999999991" y="-15.0" />
+      <point x="7225.964228083552" y="1470.0" />
+      <point x="7187.514228083552" y="1470.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-webmvc:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-web:jar:5.1.5.RELEASE">
+      <point x="-53.75" y="-15.0" />
+      <point x="4985.372561416885" y="1050.0" />
+      <point x="4587.538301322964" y="1050.0" />
+      <point x="13.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-handler:jar:4.1.33.Final/io.netty:netty-codec:jar:4.1.33.Final" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-transport:jar:4.1.33.Final">
+      <point x="36.33333333333326" y="-15.0" />
+      <point x="9611.278330647654" y="900.0" />
+      <point x="9672.111663980988" y="900.0" />
+      <point x="-43.33333333333326" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE/org.springframework:spring-context-support:jar:5.1.5.RELEASE/org.springframework:spring-context:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE/org.springframework:spring-beans:jar:5.1.5.RELEASE">
+      <point x="15.75" y="-15.0" />
+      <point x="4904.288301322964" y="380.0" />
+      <point x="4894.038301322964" y="380.0" />
+      <point x="4894.038301322964" y="290.0" />
+      <point x="8331.605593209006" y="290.0" />
+      <point x="-17.399999999999636" y="15.0" />
+    </edge>
+    <edge source="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final" target="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/javax.activation:javax.activation-api:jar:1.2.0">
+      <point x="-56.81818181818198" y="-15.0" />
+      <point x="2985.4701195047824" y="1230.0" />
+      <point x="2390.7120326029462" y="1230.0" />
+      <point x="38.25" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.core:jackson-databind:jar:2.9.8">
+      <point x="-46.75" y="-15.0" />
+      <point x="5464.922259875673" y="980.0" />
+      <point x="5204.038301322964" y="980.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE">
+      <point x="-67.64999999999964" y="-15.0" />
+      <point x="8922.509134656297" y="1700.0" />
+      <point x="4412.914228083551" y="1700.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-config-ogdl:jar:1.4.1" target="org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-config-core:jar:1.4.1">
+      <point x="-57.19999999999999" y="-15.0" />
+      <point x="10710.408653887067" y="900.0" />
+      <point x="10508.858653887066" y="900.0" />
+      <point x="35.75" y="15.0" />
+    </edge>
+    <edge source="org.hibernate:hibernate-ehcache:jar:5.2.12.Final" target="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.jboss.logging:jboss-logging:jar:3.3.2.Final">
+      <point x="-49.66666666666606" y="-15.0" />
+      <point x="2754.8716346562987" y="1470.0" />
+      <point x="2621.8370326029462" y="1470.0" />
+      <point x="2621.8370326029462" y="1060.0" />
+      <point x="2772.9847598756724" y="1060.0" />
+      <point x="-44.625" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0" target="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/javax.xml.bind:jaxb-api:jar:2.3.1">
+      <point x="-43.19999999999982" y="-15.0" />
+      <point x="1689.8189521627046" y="1460.0" />
+      <point x="1537.2189521627051" y="1460.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE/ch.qos.logback:logback-classic:jar:1.2.3" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE/ch.qos.logback:logback-classic:jar:1.2.3/ch.qos.logback:logback-core:jar:1.2.3">
+      <point x="-32.25" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework.data:spring-data-keyvalue:jar:2.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework:spring-tx:jar:5.1.5.RELEASE">
+      <point x="-61.875" y="-15.0" />
+      <point x="8967.65172808355" y="900.0" />
+      <point x="8873.614228083552" y="900.0" />
+      <point x="30.333333333333485" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE/org.slf4j:jul-to-slf4j:jar:1.7.25" target="com.alibaba:druid-spring-boot-starter:jar:1.1.14/org.slf4j:slf4j-api:jar:1.7.25">
+      <point x="0.0" y="-15.0" />
+      <point x="8677.288926542338" y="520.0" />
+      <point x="9255.935381929705" y="520.0" />
+      <point x="-19.384615384615472" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="dom4j:dom4j:jar:1.6">
+      <point x="22.550000000000182" y="-15.0" />
+      <point x="9012.709134656297" y="1590.0" />
+      <point x="10483.858653887066" y="1590.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE/org.springframework:spring-context-support:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE/org.springframework:spring-beans:jar:5.1.5.RELEASE">
+      <point x="0.0" y="-15.0" />
+      <point x="8452.93892654234" y="690.0" />
+      <point x="8748.288926542338" y="690.0" />
+      <point x="8748.288926542338" y="300.0" />
+      <point x="8366.405593209005" y="300.0" />
+      <point x="17.399999999999636" y="15.0" />
+    </edge>
+    <edge source="com.fasterxml.jackson.core:jackson-databind:jar:2.9.9" target="com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.9/com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0">
+      <point x="-35.25" y="-15.0" />
+      <point x="5007.788301322964" y="840.0" />
+      <point x="5289.630593209005" y="840.0" />
+      <point x="-53.66666666666697" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE">
+      <point x="0.0" y="-15.0" />
+      <point x="9081.659134656296" y="1460.0" />
+      <point x="8988.420833333334" y="1460.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/javax.xml.bind:jaxb-api:jar:2.3.1" target="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/javax.activation:javax.activation-api:jar:1.2.0">
+      <point x="0.0" y="-15.0" />
+      <point x="1537.2189521627051" y="1250.0" />
+      <point x="2314.2120326029462" y="1250.0" />
+      <point x="-38.25" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE" target="com.alibaba:druid-spring-boot-starter:jar:1.1.14/org.slf4j:slf4j-api:jar:1.7.25">
+      <point x="35.5" y="-15.0" />
+      <point x="9023.920833333334" y="1370.0" />
+      <point x="9305.30076654509" y="1370.0" />
+      <point x="9305.30076654509" y="530.0" />
+      <point x="9281.781535775859" y="530.0" />
+      <point x="6.4615384615385665" y="15.0" />
+    </edge>
+    <edge source="com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.9" target="com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.9/com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0">
+      <point x="-81.0" y="-15.0" />
+      <point x="5097.622561416885" y="1460.0" />
+      <point x="5072.0972598756725" y="1460.0" />
+      <point x="5072.0972598756725" y="1300.0" />
+      <point x="5691.621634656297" y="1300.0" />
+      <point x="5691.621634656297" y="820.0" />
+      <point x="5396.963926542339" y="820.0" />
+      <point x="53.66666666666697" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.9.8">
+      <point x="46.75" y="-15.0" />
+      <point x="5558.422259875673" y="1010.0" />
+      <point x="5922.788301322964" y="1010.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-config-ogdl:jar:1.4.1" target="org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-event:jar:1.4.1">
+      <point x="-28.599999999999966" y="-15.0" />
+      <point x="10739.008653887067" y="890.0" />
+      <point x="10643.358653887066" y="890.0" />
+      <point x="26.25" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0" target="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-betwixt:commons-betwixt:jar:0.8">
+      <point x="-31.035714285714675" y="-15.0" />
+      <point x="1719.1832378769905" y="1230.0" />
+      <point x="260.5" y="1230.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="net.sf.dozer:dozer:jar:5.5.1" target="net.sf.dozer:dozer:jar:5.5.1/org.slf4j:jcl-over-slf4j:jar:1.7.25">
+      <point x="-8.625" y="-15.0" />
+      <point x="11076.558477865303" y="1460.0" />
+      <point x="10995.831749781752" y="1460.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-digester:commons-digester:jar:1.7" target="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-digester:commons-digester:jar:1.7/commons-beanutils:commons-beanutils:jar:1.6">
+      <point x="18.75" y="-15.0" />
+      <point x="835.7120326029462" y="890.0" />
+      <point x="881.5" y="890.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.9" target="com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.9/com.fasterxml.jackson.core:jackson-databind:jar:2.9.9">
+      <point x="0.0" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-cache:jar:1.4.1" target="org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-lang:jar:1.4.1">
+      <point x="0.0" y="-15.0" />
+      <point x="10031.358653887066" y="730.0" />
+      <point x="10269.893093209006" y="730.0" />
+      <point x="-42.4375" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-handler:jar:4.1.33.Final" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-transport:jar:4.1.33.Final">
+      <point x="44.25" y="-15.0" />
+      <point x="9616.19499731432" y="1070.0" />
+      <point x="9715.44499731432" y="1070.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.9.8" target="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.9.8/com.fasterxml.jackson.core:jackson-databind:jar:2.9.9">
+      <point x="61.5" y="-15.0" />
+      <point x="5984.288301322964" y="880.0" />
+      <point x="6083.288301322964" y="880.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework:spring-tx:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE/org.springframework:spring-beans:jar:5.1.5.RELEASE">
+      <point x="-22.75" y="-15.0" />
+      <point x="8820.530894750218" y="730.0" />
+      <point x="8988.83922808355" y="730.0" />
+      <point x="8988.83922808355" y="290.0" />
+      <point x="8378.005593209005" y="290.0" />
+      <point x="29.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="org.apache.shiro:shiro-cas:jar:1.4.0">
+      <point x="67.64999999999964" y="-15.0" />
+      <point x="9057.809134656296" y="1700.0" />
+      <point x="12134.644249781752" y="1700.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="org.springframework.boot:spring-boot-starter-mail:jar:2.1.3.RELEASE">
+      <point x="-38.94999999999982" y="-15.0" />
+      <point x="8951.209134656297" y="1630.0" />
+      <point x="6848.664228083551" y="1630.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2/com.baomidou:mybatis-plus-extension:jar:3.4.2/com.baomidou:mybatis-plus-core:jar:3.4.2" target="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2/com.baomidou:mybatis-plus-extension:jar:3.4.2/com.baomidou:mybatis-plus-core:jar:3.4.2/com.baomidou:mybatis-plus-annotation:jar:3.4.2">
+      <point x="49.0" y="-15.0" />
+      <point x="2169.4620326029462" y="750.0" />
+      <point x="2449.683167477492" y="750.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-jdbc:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-jdbc:jar:2.1.3.RELEASE/com.zaxxer:HikariCP:jar:3.2.0">
+      <point x="62.333333333333485" y="-15.0" />
+      <point x="7936.780894750218" y="1070.0" />
+      <point x="8035.179166666667" y="1070.0" />
+      <point x="8035.179166666667" y="750.0" />
+      <point x="9245.33922808355" y="750.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE/org.apache.logging.log4j:log4j-to-slf4j:jar:2.11.2" target="com.alibaba:druid-spring-boot-starter:jar:1.1.14/org.slf4j:slf4j-api:jar:1.7.25">
+      <point x="28.75" y="-15.0" />
+      <point x="8192.555593209006" y="510.0" />
+      <point x="9249.473843468168" y="510.0" />
+      <point x="-25.84615384615381" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="org.apache.shiro:shiro-spring:jar:1.4.1">
+      <point x="14.350000000000364" y="-15.0" />
+      <point x="9004.509134656297" y="1570.0" />
+      <point x="10371.858653887066" y="1570.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-devtools:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot:jar:2.1.3.RELEASE">
+      <point x="-12.916666666666515" y="-15.0" />
+      <point x="7680.870833333334" y="860.0" />
+      <point x="7494.729166666668" y="860.0" />
+      <point x="7494.729166666668" y="750.0" />
+      <point x="7417.722259875673" y="750.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-websocket:jar:2.1.3.RELEASE/org.springframework:spring-messaging:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE/org.springframework:spring-beans:jar:5.1.5.RELEASE">
+      <point x="36.25" y="-15.0" />
+      <point x="3900.297259875673" y="260.0" />
+      <point x="8296.805593209006" y="260.0" />
+      <point x="-52.19999999999982" y="15.0" />
+    </edge>
+    <edge source="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final" target="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/org.dom4j:dom4j:jar:2.1.1">
+      <point x="-11.363636363636033" y="-15.0" />
+      <point x="3030.9246649593283" y="1190.0" />
+      <point x="2978.547259875673" y="1190.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="com.alibaba:fastjson:jar:1.2.45">
+      <point x="71.75" y="-15.0" />
+      <point x="9061.909134656296" y="1710.0" />
+      <point x="12242.644249781752" y="1710.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final" target="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.jboss.logging:jboss-logging:jar:3.3.2.Final">
+      <point x="-34.09090909090992" y="-15.0" />
+      <point x="3008.1973922320544" y="1210.0" />
+      <point x="2882.3597598756724" y="1210.0" />
+      <point x="2882.3597598756724" y="1070.0" />
+      <point x="2832.4847598756724" y="1070.0" />
+      <point x="14.875" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-jdbc:jar:2.1.3.RELEASE/org.springframework:spring-jdbc:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework:spring-core:jar:5.1.5.RELEASE">
+      <point x="0.0" y="-15.0" />
+      <point x="7972.179166666667" y="670.0" />
+      <point x="8417.505593209005" y="670.0" />
+      <point x="8417.505593209005" y="170.0" />
+      <point x="8253.005593209007" y="170.0" />
+      <point x="21.199999999999818" y="15.0" />
+    </edge>
+    <edge source="org.mybatis.spring.boot:mybatis-spring-boot-starter:jar:1.3.2" target="org.mybatis.spring.boot:mybatis-spring-boot-starter:jar:1.3.2/org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:jar:1.3.2">
+      <point x="-41.80000000000018" y="-15.0" />
+      <point x="7267.764228083552" y="1470.0" />
+      <point x="7256.1805932090065" y="1470.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="net.sf.json-lib:json-lib:jar:jdk15:2.4" target="net.sf.json-lib:json-lib:jar:jdk15:2.4/net.sf.ezmorph:ezmorph:jar:1.0.6">
+      <point x="0.0" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-tomcat:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-tomcat:jar:2.1.3.RELEASE/javax.annotation:javax.annotation-api:jar:1.3.2">
+      <point x="-25.5" y="-15.0" />
+      <point x="-40.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0">
+      <point x="-79.94999999999982" y="-15.0" />
+      <point x="8910.209134656297" y="1730.0" />
+      <point x="1733.0189521627044" y="1730.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0" target="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-logging:commons-logging-api:jar:1.0.4">
+      <point x="25.392857142856883" y="-15.0" />
+      <point x="1775.611809305562" y="1230.0" />
+      <point x="1860.9620326029462" y="1230.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-handler:jar:4.1.33.Final" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-handler:jar:4.1.33.Final/io.netty:netty-codec:jar:4.1.33.Final">
+      <point x="-14.75" y="-15.0" />
+      <point x="9557.19499731432" y="1070.0" />
+      <point x="9574.94499731432" y="1070.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="com.alibaba:druid-spring-boot-starter:jar:1.1.14">
+      <point x="-34.850000000000364" y="-15.0" />
+      <point x="8955.309134656296" y="1620.0" />
+      <point x="7057.664228083551" y="1620.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.9.8" target="com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.9/com.fasterxml.jackson.core:jackson-core:jar:2.9.8">
+      <point x="-61.5" y="-15.0" />
+      <point x="5861.288301322964" y="880.0" />
+      <point x="5945.288301322964" y="880.0" />
+      <point x="9.5" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-transport:jar:4.1.33.Final" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-transport:jar:4.1.33.Final/io.netty:netty-resolver:jar:4.1.33.Final">
+      <point x="43.33333333333326" y="-15.0" />
+      <point x="9758.778330647654" y="750.0" />
+      <point x="9786.44499731432" y="750.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-spring:jar:1.4.1" target="org.apache.shiro:shiro-web:jar:1.4.1">
+      <point x="27.5" y="-15.0" />
+      <point x="10399.358653887066" y="1470.0" />
+      <point x="10389.358653887066" y="1470.0" />
+      <point x="-24.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="commons-dbcp:commons-dbcp:jar:1.4">
+      <point x="-63.55000000000018" y="-15.0" />
+      <point x="8926.609134656297" y="1690.0" />
+      <point x="4550.747561416885" y="1690.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework:spring-tx:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework:spring-core:jar:5.1.5.RELEASE">
+      <point x="22.75" y="-15.0" />
+      <point x="8866.030894750218" y="740.0" />
+      <point x="8999.83922808355" y="740.0" />
+      <point x="8999.83922808355" y="150.0" />
+      <point x="8267.138926542339" y="150.0" />
+      <point x="35.33333333333303" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-betwixt:commons-betwixt:jar:0.8" target="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-logging:commons-logging:jar:1.0.4">
+      <point x="-48.33333333333303" y="-15.0" />
+      <point x="212.16666666666697" y="1070.0" />
+      <point x="109.5" y="1070.0" />
+      <point x="36.5" y="15.0" />
+    </edge>
+    <edge source="org.mybatis.spring.boot:mybatis-spring-boot-starter:jar:1.3.2/org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:jar:1.3.2" target="org.springframework.boot:spring-boot-devtools:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-autoconfigure:jar:2.1.3.RELEASE">
+      <point x="0.0" y="-15.0" />
+      <point x="7256.1805932090065" y="900.0" />
+      <point x="7207.614228083552" y="900.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework:spring-core:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework:spring-core:jar:5.1.5.RELEASE/org.springframework:spring-jcl:jar:5.1.5.RELEASE">
+      <point x="0.0" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/com.baomidou:mybatis-plus-boot-starter:jar:3.4.2" target="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2">
+      <point x="-65.33333333333303" y="-15.0" />
+      <point x="2409.1703659362793" y="1240.0" />
+      <point x="2198.9620326029462" y="1240.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE">
+      <point x="77.91666666666606" y="-15.0" />
+      <point x="5589.588926542339" y="1020.0" />
+      <point x="7624.0375" y="1020.0" />
+      <point x="-69.75" y="15.0" />
+    </edge>
+    <edge source="commons-dbcp:commons-dbcp:jar:1.4" target="commons-dbcp:commons-dbcp:jar:1.4/commons-pool:commons-pool:jar:1.6">
+      <point x="0.0" y="-15.0" />
+      <point x="4550.747561416885" y="1240.0" />
+      <point x="4239.588926542339" y="1240.0" />
+      <point x="31.75" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-handler:jar:4.1.33.Final">
+      <point x="13.625" y="-15.0" />
+      <point x="9532.330593209006" y="1370.0" />
+      <point x="9571.94499731432" y="1370.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-transport:jar:4.1.33.Final" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/io.lettuce:lettuce-core:jar:5.1.4.RELEASE/io.netty:netty-common:jar:4.1.33.Final">
+      <point x="0.0" y="-15.0" />
+      <point x="9715.44499731432" y="530.0" />
+      <point x="9581.278330647654" y="530.0" />
+      <point x="31.25" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="org.mybatis.spring.boot:mybatis-spring-boot-starter:jar:1.3.2">
+      <point x="-30.75" y="-15.0" />
+      <point x="8959.409134656296" y="1610.0" />
+      <point x="7309.564228083552" y="1610.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-devtools:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-devtools:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot:jar:2.1.3.RELEASE">
+      <point x="41.75" y="-15.0" />
+      <point x="8361.522259875674" y="620.0" />
+      <point x="7453.722259875673" y="620.0" />
+      <point x="36.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.1" target="org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-lang:jar:1.4.1">
+      <point x="42.0" y="-15.0" />
+      <point x="10473.24951923077" y="1070.0" />
+      <point x="10886.952403887066" y="1070.0" />
+      <point x="10886.952403887066" y="710.0" />
+      <point x="10354.768093209006" y="710.0" />
+      <point x="42.4375" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="org.springframework.boot:spring-boot-starter-tomcat:jar:2.1.3.RELEASE">
+      <point x="-43.05000000000018" y="-15.0" />
+      <point x="8947.109134656297" y="1640.0" />
+      <point x="6491.830894750218" y="1640.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-web:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework:spring-core:jar:5.1.5.RELEASE">
+      <point x="-26.0" y="-15.0" />
+      <point x="4548.538301322964" y="880.0" />
+      <point x="4569.038301322964" y="880.0" />
+      <point x="4569.038301322964" y="150.0" />
+      <point x="8196.472259875674" y="150.0" />
+      <point x="-35.33333333333303" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-cache:jar:2.1.3.RELEASE/org.springframework:spring-context-support:jar:5.1.5.RELEASE/org.springframework:spring-context:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-webmvc:jar:5.1.5.RELEASE/org.springframework:spring-expression:jar:5.1.5.RELEASE">
+      <point x="-47.25" y="-15.0" />
+      <point x="4841.288301322964" y="380.0" />
+      <point x="4757.038301322964" y="380.0" />
+      <point x="36.5" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE">
+      <point x="37.20000000000073" y="-15.0" />
+      <point x="4766.447561416886" y="1270.0" />
+      <point x="5511.672259875673" y="1270.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final" target="org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE/org.hibernate.validator:hibernate-validator:jar:6.0.14.Final/com.fasterxml:classmate:jar:1.4.0">
+      <point x="-22.727272727272066" y="-15.0" />
+      <point x="3019.5610285956923" y="1200.0" />
+      <point x="2932.047259875673" y="1200.0" />
+      <point x="-23.75" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2/com.baomidou:mybatis-plus-extension:jar:3.4.2" target="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2/com.baomidou:mybatis-plus-extension:jar:3.4.2/org.mybatis:mybatis-spring:jar:2.0.5">
+      <point x="45.0" y="-15.0" />
+      <point x="2243.9620326029462" y="900.0" />
+      <point x="2277.4620326029462" y="900.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.9.8" target="com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.9/com.fasterxml.jackson.core:jackson-core:jar:2.9.8">
+      <point x="43.25" y="-15.0" />
+      <point x="5631.163301322964" y="870.0" />
+      <point x="5926.288301322964" y="870.0" />
+      <point x="-9.5" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-websocket:jar:2.1.3.RELEASE/org.springframework:spring-websocket:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-web:jar:5.1.5.RELEASE">
+      <point x="48.33333333333394" y="-15.0" />
+      <point x="4471.087999781752" y="1070.0" />
+      <point x="4535.538301322964" y="1070.0" />
+      <point x="-39.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-webmvc:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework:spring-aop:jar:5.1.5.RELEASE/org.springframework:spring-beans:jar:5.1.5.RELEASE">
+      <point x="10.75" y="-15.0" />
+      <point x="5049.872561416885" y="1020.0" />
+      <point x="4804.038301322964" y="1020.0" />
+      <point x="4804.038301322964" y="280.0" />
+      <point x="8320.005593209005" y="280.0" />
+      <point x="-29.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-betwixt:commons-betwixt:jar:0.8" target="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-digester:commons-digester:jar:1.7">
+      <point x="48.33333333333303" y="-15.0" />
+      <point x="308.83333333333303" y="1070.0" />
+      <point x="779.4620326029462" y="1070.0" />
+      <point x="-37.5" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0" target="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/junit:junit:jar:4.12">
+      <point x="-25.392857142856883" y="-15.0" />
+      <point x="1724.8260950198483" y="1220.0" />
+      <point x="602.75" y="1220.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE/ch.qos.logback:logback-classic:jar:1.2.3">
+      <point x="-69.0" y="-15.0" />
+      <point x="7709.620833333334" y="630.0" />
+      <point x="8021.8055932090065" y="630.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2/com.baomidou:mybatis-plus-extension:jar:3.4.2/com.baomidou:mybatis-plus-core:jar:3.4.2" target="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2/com.baomidou:mybatis-plus-extension:jar:3.4.2/com.baomidou:mybatis-plus-core:jar:3.4.2/com.github.jsqlparser:jsqlparser:jar:4.0">
+      <point x="0.0" y="-15.0" />
+      <point x="2120.4620326029462" y="750.0" />
+      <point x="2094.2120326029462" y="750.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="org.springframework.boot:spring-boot-starter-freemarker:jar:2.1.3.RELEASE">
+      <point x="-18.449999999999818" y="-15.0" />
+      <point x="8971.709134656297" y="1580.0" />
+      <point x="8109.030894750218" y="1580.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-config-ogdl:jar:1.4.1" target="org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-config-ogdl:jar:1.4.1/commons-beanutils:commons-beanutils:jar:1.9.3">
+      <point x="0.0" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0" target="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-dbcp:commons-dbcp:jar:1.2.1">
+      <point x="19.75" y="-15.0" />
+      <point x="1769.9689521627051" y="1140.0" />
+      <point x="1690.4620326029462" y="1140.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.9" target="com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.9/com.fasterxml.jackson.core:jackson-core:jar:2.9.8">
+      <point x="81.0" y="-15.0" />
+      <point x="5259.622561416885" y="1460.0" />
+      <point x="5286.5972598756725" y="1460.0" />
+      <point x="5286.5972598756725" y="1310.0" />
+      <point x="6056.288301322964" y="1310.0" />
+      <point x="6056.288301322964" y="870.0" />
+      <point x="5964.288301322964" y="870.0" />
+      <point x="28.5" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-logging:jar:2.1.3.RELEASE/org.apache.logging.log4j:log4j-to-slf4j:jar:2.11.2">
+      <point x="0.0" y="-15.0" />
+      <point x="7778.620833333334" y="640.0" />
+      <point x="8163.8055932090065" y="640.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0" target="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0/commons-collections:commons-collections:jar:3.1">
+      <point x="-8.464285714285325" y="-15.0" />
+      <point x="1741.7546664484198" y="1190.0" />
+      <point x="1051.9620326029462" y="1190.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-ehcache:jar:1.4.1/net.sf.ehcache:ehcache-core:jar:2.6.11" target="com.alibaba:druid-spring-boot-starter:jar:1.1.14/org.slf4j:slf4j-api:jar:1.7.25">
+      <point x="0.0" y="-15.0" />
+      <point x="9925.94499731432" y="510.0" />
+      <point x="9288.243074237398" y="510.0" />
+      <point x="12.923076923076906" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework:spring-tx:jar:5.1.5.RELEASE">
+      <point x="-11.833333333333258" y="-15.0" />
+      <point x="8976.587500000001" y="1350.0" />
+      <point x="8843.280894750218" y="1350.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="jakarta.xml.bind:jakarta.xml.bind-api:jar:2.3.3">
+      <point x="59.44999999999982" y="-15.0" />
+      <point x="9049.609134656297" y="1680.0" />
+      <point x="11802.144249781752" y="1680.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.aspectj:aspectjweaver:jar:1.9.2">
+      <point x="0.0" y="-15.0" />
+      <point x="8334.530894750218" y="1470.0" />
+      <point x="8339.364228083552" y="1470.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-tomcat:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-validation:jar:2.1.3.RELEASE/org.apache.tomcat.embed:tomcat-embed-el:jar:9.0.16">
+      <point x="-76.5" y="-15.0" />
+      <point x="6415.330894750218" y="1460.0" />
+      <point x="5402.0972598756725" y="1460.0" />
+      <point x="35.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-data-redis:jar:2.1.3.RELEASE/org.springframework.data:spring-data-redis:jar:2.1.5.RELEASE/org.springframework:spring-oxm:jar:5.1.5.RELEASE">
+      <point x="59.16666666666674" y="-15.0" />
+      <point x="9047.587500000001" y="1380.0" />
+      <point x="9333.81999731432" y="1380.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE">
+      <point x="-59.44999999999982" y="-15.0" />
+      <point x="8930.709134656297" y="1680.0" />
+      <point x="4775.747561416885" y="1680.0" />
+      <point x="46.5" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2/com.baomidou:mybatis-plus-extension:jar:3.4.2" target="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/com.baomidou:mybatis-plus-boot-starter:jar:3.4.2/com.baomidou:mybatis-plus:jar:3.4.2/com.baomidou:mybatis-plus-extension:jar:3.4.2/com.baomidou:mybatis-plus-core:jar:3.4.2">
+      <point x="-45.0" y="-15.0" />
+      <point x="2153.9620326029462" y="900.0" />
+      <point x="2120.4620326029462" y="900.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-cas:jar:1.4.0" target="org.apache.shiro:shiro-cas:jar:1.4.0/org.jasig.cas.client:cas-client-core:jar:3.2.2">
+      <point x="-23.0" y="-15.0" />
+      <point x="12111.644249781752" y="1470.0" />
+      <point x="12026.144249781752" y="1470.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-webmvc:jar:5.1.5.RELEASE/org.springframework:spring-expression:jar:5.1.5.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.springframework:spring-core:jar:5.1.5.RELEASE">
+      <point x="0.0" y="-15.0" />
+      <point x="4720.538301322964" y="170.0" />
+      <point x="8210.605593209006" y="170.0" />
+      <point x="-21.199999999999818" y="15.0" />
+    </edge>
+    <edge source="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final" target="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/net.bytebuddy:byte-buddy:jar:1.9.10">
+      <point x="22.727272727272066" y="-15.0" />
+      <point x="3065.0155740502364" y="1220.0" />
+      <point x="3263.547259875673" y="1220.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-mail:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-mail:jar:2.1.3.RELEASE/com.sun.mail:javax.mail:jar:1.6.2">
+      <point x="-61.666666666666515" y="-15.0" />
+      <point x="6786.997561416885" y="1470.0" />
+      <point x="6789.080894750219" y="1470.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.1" target="org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-event:jar:1.4.1">
+      <point x="14.0" y="-15.0" />
+      <point x="10445.24951923077" y="1050.0" />
+      <point x="10590.858653887066" y="1050.0" />
+      <point x="-26.25" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework:spring-web:jar:5.1.5.RELEASE">
+      <point x="-77.91666666666606" y="-15.0" />
+      <point x="5433.755593209007" y="990.0" />
+      <point x="4613.538301322964" y="990.0" />
+      <point x="39.0" y="15.0" />
+    </edge>
+    <edge source="com.mchange:c3p0:jar:0.9.2.1" target="com.mchange:c3p0:jar:0.9.2.1/com.mchange:mchange-commons-java:jar:0.2.3.4">
+      <point x="0.0" y="-15.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-gencode-vue:8.0" target="com.google.guava:guava:jar:20.0">
+      <point x="30.75" y="-15.0" />
+      <point x="9020.909134656296" y="1610.0" />
+      <point x="10612.416185897437" y="1610.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.apache.shiro:shiro-core:jar:1.4.1" target="org.apache.shiro:shiro-core:jar:1.4.1/org.apache.shiro:shiro-config-ogdl:jar:1.4.1">
+      <point x="28.0" y="-15.0" />
+      <point x="10459.24951923077" y="1060.0" />
+      <point x="10767.608653887066" y="1060.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/com.baomidou:mybatis-plus-boot-starter:jar:3.4.2" target="org.springframework.boot:spring-boot-devtools:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-autoconfigure:jar:2.1.3.RELEASE">
+      <point x="0.0" y="-15.0" />
+      <point x="2474.5036992696123" y="1250.0" />
+      <point x="2562.0870326029462" y="1250.0" />
+      <point x="2562.0870326029462" y="890.0" />
+      <point x="7127.214228083552" y="890.0" />
+      <point x="-80.39999999999964" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE" target="org.springframework.boot:spring-boot-starter-aop:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter:jar:2.1.3.RELEASE/org.yaml:snakeyaml:jar:1.23">
+      <point x="12.916666666666515" y="-15.0" />
+      <point x="7706.704166666666" y="850.0" />
+      <point x="7606.120833333334" y="850.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final" target="org.hibernate:hibernate-ehcache:jar:5.2.12.Final/org.hibernate:hibernate-core:jar:5.3.7.Final/org.hibernate.common:hibernate-commons-annotations:jar:5.0.4.Final">
+      <point x="-45.45454545454595" y="-15.0" />
+      <point x="2996.8337558684184" y="1220.0" />
+      <point x="2752.8597598756724" y="1220.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.springframework.boot:spring-boot-starter-web:jar:2.1.3.RELEASE/org.springframework.boot:spring-boot-starter-json:jar:2.1.3.RELEASE/com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.9.8" target="com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.9.9/com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0">
+      <point x="-61.33333333333394" y="-15.0" />
+      <point x="5325.20496798963" y="840.0" />
+      <point x="5343.297259875673" y="840.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+    <edge source="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0" target="org.jeeplus:jeeplus-mybatis-dynamic-vue:jar:8.0/org.apache.ddlutils:ddlutils:jar:1.0">
+      <point x="43.19999999999982" y="-15.0" />
+      <point x="1776.2189521627042" y="1470.0" />
+      <point x="1750.2189521627051" y="1470.0" />
+      <point x="0.0" y="15.0" />
+    </edge>
+  </edges>
+  <settings layout="Hierarchic Group" zoom="0.07991414183109057" x="6046.5" y="770.0" />
+  <SelectedNodes>
+    <node>jakarta.xml.bind:jakarta.xml.bind-api:jar:2.3.3/jakarta.activation:jakarta.activation-api:jar:1.2.2</node>
+    <node>org.jeeplus:jeeplus-gencode-vue:8.0</node>
+  </SelectedNodes>
+  <Categories />
+  <VISIBILITY>All</VISIBILITY>
+</Diagram>
+

+ 44 - 0
jp-console/jeeplus-modules/jeeplus-test/pom.xml

@@ -0,0 +1,44 @@
+<?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.jeeplus</groupId>
+        <artifactId>jeeplus-modules</artifactId>
+        <version>9.0</version>
+    </parent>
+
+
+    <artifactId>jeeplus-test</artifactId>
+    <packaging>jar</packaging>
+
+    <name>jeeplus-test</name>
+    <description>测试用例</description>
+
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+        <java.version>1.8</java.version>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.jeeplus</groupId>
+            <artifactId>jeeplus-admin</artifactId>
+            <version>${project.parent.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.jeeplus</groupId>
+            <artifactId>jeeplus-flowable</artifactId>
+            <version>${project.parent.version}</version>
+        </dependency>
+
+
+    </dependencies>
+
+
+
+
+</project>

+ 84 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/activiti/controller/TestActivitiAuditController.java

@@ -0,0 +1,84 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.activiti.controller;
+
+import javax.validation.Valid;
+import com.jeeplus.common.utils.ResponseUtil;
+import com.jeeplus.core.query.QueryWrapperGenerator;
+import com.jeeplus.aop.logging.annotation.ApiLog;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.http.ResponseEntity;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.activiti.service.dto.TestActivitiAuditDTO;
+import com.jeeplus.test.activiti.service.TestActivitiAuditService;
+
+/**
+ * 加薪申请Controller
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+@Api(tags ="加薪申请")
+@RestController
+@RequestMapping(value = "/test/activiti/testActivitiAudit")
+public class TestActivitiAuditController {
+
+	@Autowired
+	private TestActivitiAuditService testActivitiAuditService;
+
+	/**
+	 * 加薪申请列表数据
+	 */
+	@ApiLog("查询加薪申请列表数据")
+	@ApiOperation(value = "查询加薪申请列表数据")
+	@GetMapping("list")
+	public ResponseEntity<IPage<TestActivitiAuditDTO>> list(TestActivitiAuditDTO testActivitiAuditDTO, Page<TestActivitiAuditDTO> page) throws Exception {
+		QueryWrapper queryWrapper = QueryWrapperGenerator.buildQueryCondition (testActivitiAuditDTO, TestActivitiAuditDTO.class);
+		IPage<TestActivitiAuditDTO> result = testActivitiAuditService.findPage (page, queryWrapper);
+		return ResponseEntity.ok (result);
+	}
+
+
+	/**
+	 * 根据Id获取加薪申请数据
+	 */
+	@ApiLog("根据Id获取加薪申请数据")
+	@ApiOperation(value = "根据Id获取加薪申请数据")
+	@GetMapping("queryById")
+	public ResponseEntity<TestActivitiAuditDTO> queryById(String id) {
+		return ResponseEntity.ok ( testActivitiAuditService.findById ( id ) );
+	}
+
+	/**
+	 * 保存加薪申请
+	 */
+	@ApiLog("保存加薪申请")
+	@ApiOperation(value = "保存加薪申请")
+	@PostMapping("save")
+	public  ResponseEntity <String> save(@Valid @RequestBody TestActivitiAuditDTO testActivitiAuditDTO) {
+		//新增或编辑表单保存
+		testActivitiAuditService.saveOrUpdate (testActivitiAuditDTO);
+		return ResponseUtil.newInstance ( ).add("businessTable", "test_activiti_audit").add("businessId", testActivitiAuditDTO.getId()).ok ("保存加薪申请成功");
+	}
+
+
+	/**
+	 * 删除加薪申请
+	 */
+	@ApiLog("删除加薪申请")
+	@ApiOperation(value = "删除加薪申请")
+	@DeleteMapping("delete")
+	public ResponseEntity <String> delete(String ids) {
+		String idArray[] = ids.split(",");
+		for(String id: idArray){
+			testActivitiAuditService.removeById ( id );
+		}
+		return ResponseEntity.ok( "删除加薪申请成功" );
+	}
+
+}

+ 66 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/activiti/domain/TestActivitiAudit.java

@@ -0,0 +1,66 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.activiti.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+/**
+ * 加薪申请Entity
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("test_activiti_audit")
+public class TestActivitiAudit extends BaseEntity {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+     * 流程实例ID
+     */
+	private String procInsId;
+	/**
+     * 员工
+     */
+	private String userId;
+	/**
+     * 部门
+     */
+	private String officeId;
+	/**
+     * 岗位
+     */
+	private String post;
+	/**
+     * 性别
+     */
+	private String sex;
+	/**
+     * 调整原因
+     */
+	private String content;
+	/**
+     * 调整前薪水
+     */
+    @TableField("old_salary")
+	private String oldSalray;
+	/**
+     * 调整后薪水
+     */
+	private String newSalary;
+	/**
+     * 生效时间
+     */
+	private Date exeDate;
+	/**
+     * 备注信息
+     */
+	private String remarks;
+
+}

+ 37 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/activiti/mapper/TestActivitiAuditMapper.java

@@ -0,0 +1,37 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.activiti.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.activiti.service.dto.TestActivitiAuditDTO;
+import com.jeeplus.test.activiti.domain.TestActivitiAudit;
+
+/**
+ * 加薪申请MAPPER接口
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+public interface TestActivitiAuditMapper extends BaseMapper<TestActivitiAudit> {
+
+    /**
+     * 根据id获取加薪申请
+     * @param id
+     * @return
+     */
+    TestActivitiAuditDTO findById(String id);
+
+    /**
+     * 获取加薪申请列表
+     *
+     * @param queryWrapper
+     * @return
+     */
+    IPage <TestActivitiAuditDTO> findList(Page <TestActivitiAuditDTO> page, @Param(Constants.WRAPPER) QueryWrapper queryWrapper);
+
+}

+ 54 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/activiti/mapper/xml/TestActivitiAuditMapper.xml

@@ -0,0 +1,54 @@
+<?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.jeeplus.test.activiti.mapper.TestActivitiAuditMapper">
+
+	<sql id="testActivitiAuditColumns">
+		a.id AS "id",
+		a.proc_ins_id AS "procInsId",
+		a.user_id AS "user.id",
+		a.office_id AS "office.id",
+		a.post AS "post",
+		a.sex AS "sex",
+		a.content AS "content",
+		a.old_salary AS "oldSalray",
+		a.new_salary AS "newSalary",
+		a.exe_date AS "exeDate",
+		a.create_by_id AS "createBy.id",
+		a.create_time AS "createTime",
+		a.update_by_id AS "updateBy.id",
+		a.update_time AS "updateTime",
+		a.remarks AS "remarks",
+		a.del_flag AS "delFlag",
+		a.tenant_id AS "tenantId",
+
+
+		user.name AS "user.name",
+
+		office.name AS "office.name"
+	</sql>
+
+	<sql id="testActivitiAuditJoins">
+
+		LEFT JOIN sys_user user ON user.id = a.user_id
+		LEFT JOIN sys_office office ON office.id = a.office_id
+	</sql>
+
+
+
+	<select id="findById" resultType="com.jeeplus.test.activiti.service.dto.TestActivitiAuditDTO">
+		SELECT
+			<include refid="testActivitiAuditColumns"/>
+		FROM test_activiti_audit a
+		<include refid="testActivitiAuditJoins"/>
+		WHERE a.id = #{id} and a.del_flag = 0
+	</select>
+
+	<select id="findList" resultType="com.jeeplus.test.activiti.service.dto.TestActivitiAuditDTO" >
+		SELECT
+			<include refid="testActivitiAuditColumns"/>
+		FROM test_activiti_audit a
+		<include refid="testActivitiAuditJoins"/>
+	    ${ew.customSqlSegment}
+	</select>
+
+</mapper>

+ 69 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/activiti/service/TestActivitiAuditService.java

@@ -0,0 +1,69 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.activiti.service;
+
+import com.jeeplus.sys.constant.CommonConstants;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.activiti.service.dto.TestActivitiAuditDTO;
+import com.jeeplus.test.activiti.service.mapstruct.TestActivitiAuditWrapper;
+import com.jeeplus.test.activiti.domain.TestActivitiAudit;
+import com.jeeplus.test.activiti.mapper.TestActivitiAuditMapper;
+
+/**
+ * 加薪申请Service
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+@Service
+@Transactional
+public class TestActivitiAuditService extends ServiceImpl<TestActivitiAuditMapper, TestActivitiAudit> {
+
+	/**
+	 * 根据id查询
+	 * @param id
+	 * @return
+	 */
+	public TestActivitiAuditDTO findById(String id) {
+		TestActivitiAuditDTO testActivitiAuditDTO = baseMapper.findById ( id );
+		return testActivitiAuditDTO;
+	}
+
+	/**
+	 * 自定义分页检索
+	 * @param page
+	 * @param queryWrapper
+	 * @return
+	 */
+	public IPage <TestActivitiAuditDTO> findPage(Page <TestActivitiAuditDTO> page, QueryWrapper queryWrapper) {
+		queryWrapper.eq ("a.del_flag", 0 ); // 排除已经删除
+		return  baseMapper.findList (page, queryWrapper);
+	}
+
+	/**
+	* 保存或者更新
+	* @param  testActivitiAuditDTO
+	* @return
+	*/
+	public void saveOrUpdate(TestActivitiAuditDTO testActivitiAuditDTO) {
+		TestActivitiAudit testActivitiAudit =  TestActivitiAuditWrapper.INSTANCE.toEntity ( testActivitiAuditDTO );
+		super.saveOrUpdate (testActivitiAudit);
+		testActivitiAuditDTO.setId ( testActivitiAudit.getId () );
+	}
+
+	/**
+	 * 删除
+	 * @param  id
+	 * @return
+	 */
+	public void removeById(String id) {
+		super.removeById ( id );
+	}
+
+}

+ 72 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/activiti/service/dto/TestActivitiAuditDTO.java

@@ -0,0 +1,72 @@
+/**
+        * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+        */
+        package com.jeeplus.test.activiti.service.dto;
+
+import com.jeeplus.sys.service.dto.UserDTO;
+import javax.validation.constraints.NotNull;
+import com.jeeplus.sys.service.dto.OfficeDTO;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.core.query.Query;
+import com.jeeplus.core.query.QueryType;
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+/**
+ * 加薪申请Entity
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class TestActivitiAuditDTO extends BaseDTO {
+
+	private static final long serialVersionUID = 1L;
+
+	/**
+     * 流程实例ID
+     */
+	private String procInsId;
+	/**
+     * 员工
+     */
+	@NotNull(message="员工不能为空")
+    @Query(tableColumn = "a.user_id", javaField = "user.id", type = QueryType.EQ)
+	private UserDTO user;
+	/**
+     * 部门
+     */
+	@NotNull(message="部门不能为空")
+	private OfficeDTO office;
+	/**
+     * 岗位
+     */
+	private String post;
+	/**
+     * 性别
+     */
+	private String sex;
+	/**
+     * 调整原因
+     */
+	private String content;
+	/**
+     * 调整前薪水
+     */
+	private String oldSalray;
+	/**
+     * 调整后薪水
+     */
+	private String newSalary;
+	/**
+     * 生效时间
+     */
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date exeDate;
+	/**
+     * 备注信息
+     */
+	private String remarks;
+
+}

+ 40 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/activiti/service/mapstruct/TestActivitiAuditWrapper.java

@@ -0,0 +1,40 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.activiti.service.mapstruct;
+
+
+import com.jeeplus.core.mapstruct.EntityWrapper;
+import com.jeeplus.test.activiti.service.dto.TestActivitiAuditDTO;
+import com.jeeplus.test.activiti.domain.TestActivitiAudit;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.Mappings;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+/**
+ *  TestActivitiAuditWrapper
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {} )
+public interface TestActivitiAuditWrapper extends EntityWrapper<TestActivitiAuditDTO, TestActivitiAudit> {
+
+    TestActivitiAuditWrapper INSTANCE = Mappers.getMapper(TestActivitiAuditWrapper.class);
+     @Mappings({
+            @Mapping(source = "user.id", target = "userId"),
+            @Mapping(source = "office.id", target = "officeId"),
+            @Mapping(source = "createBy.id", target = "createById"),
+            @Mapping (source = "updateBy.id", target = "updateById")})
+    TestActivitiAudit toEntity(TestActivitiAuditDTO dto);
+
+
+    @Mappings({
+            @Mapping(source = "userId", target = "user.id"),
+            @Mapping(source = "officeId", target = "office.id"),
+            @Mapping (source = "createById", target = "createBy.id"),
+            @Mapping (source = "updateById", target = "updateBy.id")})
+    TestActivitiAuditDTO toDTO(TestActivitiAudit entity);
+}
+

+ 154 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/grid/controller/TestContinentController.java

@@ -0,0 +1,154 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.grid.controller;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import com.google.common.collect.Lists;
+import com.jeeplus.aop.logging.annotation.ApiLog;
+import com.jeeplus.core.excel.EasyExcelUtils;
+import com.jeeplus.core.excel.ExcelOptions;
+import com.jeeplus.core.excel.annotation.ExportMode;
+import com.jeeplus.core.query.QueryWrapperGenerator;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.grid.domain.TestContinent;
+import com.jeeplus.test.grid.service.dto.TestContinentDTO;
+import com.jeeplus.test.grid.service.mapstruct.TestContinentWrapper;
+import com.jeeplus.test.grid.service.TestContinentService;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * 洲Controller
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+
+@Api(tags ="洲")
+@RestController
+@RequestMapping(value = "/test/grid/testContinent")
+public class TestContinentController {
+
+	@Autowired
+	private TestContinentService testContinentService;
+
+	@Autowired
+	private TestContinentWrapper testContinentWrapper;
+
+	/**
+	 * 洲列表数据
+	 */
+	@ApiLog("查询洲列表数据")
+	@ApiOperation(value = "查询洲列表数据")
+	@PreAuthorize("hasAuthority('test:grid:testContinent:list')")
+	@GetMapping("list")
+	public ResponseEntity<IPage<TestContinentDTO>> list(TestContinentDTO testContinentDTO, Page<TestContinent> page) throws Exception {
+		QueryWrapper queryWrapper = QueryWrapperGenerator.buildQueryCondition (testContinentDTO, TestContinentDTO.class);
+		IPage<TestContinentDTO> result = testContinentWrapper.toDTO ( testContinentService.page (page, queryWrapper) );
+		return ResponseEntity.ok (result);
+	}
+
+
+	/**
+	 * 根据Id获取洲数据
+	 */
+	@ApiLog("根据Id获取洲数据")
+	@ApiOperation(value = "根据Id获取洲数据")
+	@PreAuthorize("hasAnyAuthority('test:grid:testContinent:view','test:grid:testContinent:add','test:grid:testContinent:edit')")
+	@GetMapping("queryById")
+	public ResponseEntity<TestContinentDTO> queryById(String id) {
+		return ResponseEntity.ok ( testContinentWrapper.toDTO ( testContinentService.getById ( id ) ) );
+	}
+
+	/**
+	 * 保存洲
+	 */
+	@ApiLog("保存洲")
+	@ApiOperation(value = "保存洲")
+	@PreAuthorize("hasAnyAuthority('test:grid:testContinent:add','test:grid:testContinent:edit')")
+	@PostMapping("save")
+	public  ResponseEntity <String> save(@Valid @RequestBody TestContinentDTO testContinentDTO) {
+		//新增或编辑表单保存
+		testContinentService.saveOrUpdate (testContinentWrapper.toEntity (testContinentDTO));
+        return ResponseEntity.ok ( "保存洲成功" );
+	}
+
+
+	/**
+	 * 删除洲
+	 */
+	@ApiLog("删除洲")
+	@ApiOperation(value = "删除洲")
+	@PreAuthorize("hasAuthority('test:grid:testContinent:del')")
+	@DeleteMapping("delete")
+	public ResponseEntity <String> delete(String ids) {
+		String idArray[] = ids.split(",");
+        testContinentService.removeByIds ( Lists.newArrayList ( idArray ) );
+		return ResponseEntity.ok( "删除洲成功" );
+	}
+	
+    /**
+     * 导出洲数据
+     *
+     * @param testContinentDTO
+     * @param page
+     * @param response
+     * @throws Exception
+     */
+    @ApiLog("导出洲数据")
+    @PreAuthorize("hasAnyAuthority('test:grid:testContinent:export')")
+    @GetMapping("export")
+    public void exportFile(TestContinentDTO testContinentDTO, Page <TestContinent> page, ExcelOptions options, HttpServletResponse response) throws Exception {
+        String fileName = options.getFilename ( );
+		QueryWrapper queryWrapper = QueryWrapperGenerator.buildQueryCondition (testContinentDTO, TestContinentDTO.class);
+        if ( ExportMode.current.equals ( options.getMode ( ) ) ) { // 导出当前页数据
+            
+        } else if ( ExportMode.selected.equals ( options.getMode ( ) ) ) { // 导出选中数据
+            queryWrapper.in ( "id", options.getSelectIds () );
+        } else { // 导出全部数据
+            page.setSize ( -1 );
+            page.setCurrent ( 0 );
+        }
+        List < TestContinent> result = testContinentService.page ( page, queryWrapper ).getRecords ( );
+        EasyExcelUtils.newInstance ( testContinentService, testContinentWrapper ).exportExcel ( result,  options.getSheetName ( ), TestContinentDTO.class, fileName,options.getExportFields (), response );
+    }
+
+    /**
+     * 导入洲数据
+     *
+     * @return
+     */
+    @PreAuthorize("hasAnyAuthority('test:grid:testContinent:import')")
+    @PostMapping("import")
+    public ResponseEntity importFile(MultipartFile file) throws IOException {
+        String result = EasyExcelUtils.newInstance ( testContinentService, testContinentWrapper ).importExcel ( file, TestContinentDTO.class );
+        return ResponseEntity.ok ( result );
+    }
+
+    /**
+     * 下载导入洲数据模板
+     *
+     * @param response
+     * @return
+     */
+    @PreAuthorize ("hasAnyAuthority('test:grid:testContinent:import')")
+    @GetMapping("import/template")
+    public void importFileTemplate(HttpServletResponse response) throws IOException {
+        String fileName = "洲数据导入模板.xlsx";
+        List<TestContinentDTO> list = Lists.newArrayList();
+        EasyExcelUtils.newInstance ( testContinentService, testContinentWrapper ).exportExcel ( list,  "洲数据", TestContinentDTO.class, fileName, null, response );
+    }
+
+
+}

+ 153 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/grid/controller/TestCountryController.java

@@ -0,0 +1,153 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.grid.controller;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import com.google.common.collect.Lists;
+import com.jeeplus.aop.logging.annotation.ApiLog;
+import com.jeeplus.core.excel.EasyExcelUtils;
+import com.jeeplus.core.excel.ExcelOptions;
+import com.jeeplus.core.excel.annotation.ExportMode;
+import com.jeeplus.core.query.QueryWrapperGenerator;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.grid.service.dto.TestCountryDTO;
+import com.jeeplus.test.grid.service.mapstruct.TestCountryWrapper;
+import com.jeeplus.test.grid.service.TestCountryService;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * 国家Controller
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+
+@Api(tags ="国家")
+@RestController
+@RequestMapping(value = "/test/grid/testCountry")
+public class TestCountryController {
+
+	@Autowired
+	private TestCountryService testCountryService;
+
+	@Autowired
+	private TestCountryWrapper testCountryWrapper;
+
+	/**
+	 * 国家列表数据
+	 */
+	@ApiLog("查询国家列表数据")
+	@ApiOperation(value = "查询国家列表数据")
+	@PreAuthorize("hasAuthority('test:grid:testCountry:list')")
+	@GetMapping("list")
+	public ResponseEntity<IPage<TestCountryDTO>> list(TestCountryDTO testCountryDTO, Page<TestCountryDTO> page) throws Exception {
+		QueryWrapper queryWrapper = QueryWrapperGenerator.buildQueryCondition (testCountryDTO, TestCountryDTO.class);
+		IPage<TestCountryDTO> result = testCountryService.findPage (page, queryWrapper);
+		return ResponseEntity.ok (result);
+	}
+
+
+	/**
+	 * 根据Id获取国家数据
+	 */
+	@ApiLog("根据Id获取国家数据")
+	@ApiOperation(value = "根据Id获取国家数据")
+	@PreAuthorize("hasAnyAuthority('test:grid:testCountry:view','test:grid:testCountry:add','test:grid:testCountry:edit')")
+	@GetMapping("queryById")
+	public ResponseEntity<TestCountryDTO> queryById(String id) {
+		return ResponseEntity.ok ( testCountryService.findById ( id ) );
+	}
+
+	/**
+	 * 保存国家
+	 */
+	@ApiLog("保存国家")
+	@ApiOperation(value = "保存国家")
+	@PreAuthorize("hasAnyAuthority('test:grid:testCountry:add','test:grid:testCountry:edit')")
+	@PostMapping("save")
+	public  ResponseEntity <String> save(@Valid @RequestBody TestCountryDTO testCountryDTO) {
+		//新增或编辑表单保存
+		testCountryService.saveOrUpdate (testCountryWrapper.toEntity (testCountryDTO));
+        return ResponseEntity.ok ( "保存国家成功" );
+	}
+
+
+	/**
+	 * 删除国家
+	 */
+	@ApiLog("删除国家")
+	@ApiOperation(value = "删除国家")
+	@PreAuthorize("hasAuthority('test:grid:testCountry:del')")
+	@DeleteMapping("delete")
+	public ResponseEntity <String> delete(String ids) {
+		String idArray[] = ids.split(",");
+        testCountryService.removeByIds ( Lists.newArrayList ( idArray ) );
+		return ResponseEntity.ok( "删除国家成功" );
+	}
+	
+    /**
+     * 导出国家数据
+     *
+     * @param testCountryDTO
+     * @param page
+     * @param response
+     * @throws Exception
+     */
+    @ApiLog("导出国家数据")
+    @PreAuthorize("hasAnyAuthority('test:grid:testCountry:export')")
+    @GetMapping("export")
+    public void exportFile(TestCountryDTO testCountryDTO, Page <TestCountryDTO> page, ExcelOptions options, HttpServletResponse response) throws Exception {
+        String fileName = options.getFilename ( );
+		QueryWrapper queryWrapper = QueryWrapperGenerator.buildQueryCondition (testCountryDTO, TestCountryDTO.class);
+        if ( ExportMode.current.equals ( options.getMode ( ) ) ) { // 导出当前页数据
+            
+        } else if ( ExportMode.selected.equals ( options.getMode ( ) ) ) { // 导出选中数据
+            queryWrapper.in ( "a.id", options.getSelectIds () );
+        } else { // 导出全部数据
+            page.setSize ( -1 );
+            page.setCurrent ( 0 );
+        }
+        List<TestCountryDTO> result = testCountryService.findPage ( page, queryWrapper ).getRecords ( );
+        EasyExcelUtils.newInstance ( testCountryService, testCountryWrapper ).exportExcel ( result,  options.getSheetName ( ), TestCountryDTO.class, fileName,options.getExportFields (), response );
+    }
+
+    /**
+     * 导入国家数据
+     *
+     * @return
+     */
+    @PreAuthorize("hasAnyAuthority('test:grid:testCountry:import')")
+    @PostMapping("import")
+    public ResponseEntity importFile(MultipartFile file) throws IOException {
+        String result = EasyExcelUtils.newInstance ( testCountryService, testCountryWrapper ).importExcel ( file, TestCountryDTO.class );
+        return ResponseEntity.ok ( result );
+    }
+
+    /**
+     * 下载导入国家数据模板
+     *
+     * @param response
+     * @return
+     */
+    @PreAuthorize ("hasAnyAuthority('test:grid:testCountry:import')")
+    @GetMapping("import/template")
+    public void importFileTemplate(HttpServletResponse response) throws IOException {
+        String fileName = "国家数据导入模板.xlsx";
+        List<TestCountryDTO> list = Lists.newArrayList();
+        EasyExcelUtils.newInstance ( testCountryService, testCountryWrapper ).exportExcel ( list,  "国家数据", TestCountryDTO.class, fileName, null, response );
+    }
+
+
+}

+ 33 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/grid/domain/TestContinent.java

@@ -0,0 +1,33 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.grid.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+/**
+ * 洲Entity
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("test_continent")
+public class TestContinent extends BaseEntity {
+
+	private static final long serialVersionUID = 1L;
+
+			
+	/**
+     * 洲名
+     */
+	private String name;
+			
+	/**
+     * 备注信息
+     */
+	private String remarks;
+
+}

+ 43 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/grid/domain/TestCountry.java

@@ -0,0 +1,43 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.grid.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+/**
+ * 国家Entity
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("test_country")
+public class TestCountry extends BaseEntity {
+
+	private static final long serialVersionUID = 1L;
+
+			
+	/**
+     * 国名
+     */
+	private String name;
+			
+	/**
+     * 人口
+     */
+	private String sum;
+			
+	/**
+     * 所属洲
+     */
+	private String continentId;
+			
+	/**
+     * 备注信息
+     */
+	private String remarks;
+
+}

+ 17 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/grid/mapper/TestContinentMapper.java

@@ -0,0 +1,17 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.grid.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.test.grid.domain.TestContinent;
+
+/**
+ * 洲MAPPER接口
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+public interface TestContinentMapper extends BaseMapper<TestContinent> {
+
+
+}

+ 37 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/grid/mapper/TestCountryMapper.java

@@ -0,0 +1,37 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.grid.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.grid.service.dto.TestCountryDTO;
+import com.jeeplus.test.grid.domain.TestCountry;
+
+/**
+ * 国家MAPPER接口
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+public interface TestCountryMapper extends BaseMapper<TestCountry> {
+
+    /**
+     * 根据id获取国家
+     * @param id
+     * @return
+     */
+    TestCountryDTO findById(String id);
+
+    /**
+     * 获取国家列表
+     *
+     * @param queryWrapper
+     * @return
+     */
+    IPage <TestCountryDTO> findList(Page <TestCountryDTO> page, @Param(Constants.WRAPPER) QueryWrapper queryWrapper);
+
+}

+ 6 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/grid/mapper/xml/TestContinentMapper.xml

@@ -0,0 +1,6 @@
+<?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.jeeplus.test.grid.mapper.TestContinentMapper">
+
+
+</mapper>

+ 43 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/grid/mapper/xml/TestCountryMapper.xml

@@ -0,0 +1,43 @@
+<?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.jeeplus.test.grid.mapper.TestCountryMapper">
+
+	<sql id="testCountryColumns">
+		a.id AS "id",
+		a.name AS "name",
+		a.sum AS "sum",
+		a.continent_id AS "continent.id",
+		a.tenant_id AS "tenantId",
+		a.create_by_id AS "createBy.id",
+		a.create_time AS "createTime",
+		a.update_by_id AS "updateBy.id",
+		a.update_time AS "updateTime",
+		a.remarks AS "remarks",
+		a.del_flag AS "delFlag",
+		continent.name AS "continent.name"
+	</sql>
+
+	<sql id="testCountryJoins">
+
+		LEFT JOIN test_continent continent ON continent.id = a.continent_id
+	</sql>
+
+
+
+	<select id="findById" resultType="com.jeeplus.test.grid.service.dto.TestCountryDTO">
+		SELECT
+			<include refid="testCountryColumns"/>
+		FROM test_country a
+		<include refid="testCountryJoins"/>
+		WHERE a.id = #{id} and a.del_flag = 0
+	</select>
+
+	<select id="findList" resultType="com.jeeplus.test.grid.service.dto.TestCountryDTO">
+		SELECT
+			<include refid="testCountryColumns"/>
+		FROM test_country a
+		<include refid="testCountryJoins"/>
+	    ${ew.customSqlSegment}
+	</select>
+
+</mapper>

+ 21 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/grid/service/TestContinentService.java

@@ -0,0 +1,21 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.grid.service;
+
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jeeplus.test.grid.domain.TestContinent;
+import com.jeeplus.test.grid.mapper.TestContinentMapper;
+
+/**
+ * 洲Service
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+@Service
+@Transactional
+public class TestContinentService extends ServiceImpl<TestContinentMapper, TestContinent> {
+
+}

+ 45 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/grid/service/TestCountryService.java

@@ -0,0 +1,45 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.grid.service;
+
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.grid.service.dto.TestCountryDTO;
+import com.jeeplus.test.grid.domain.TestCountry;
+import com.jeeplus.test.grid.mapper.TestCountryMapper;
+
+/**
+ * 国家Service
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+@Service
+@Transactional
+public class TestCountryService extends ServiceImpl<TestCountryMapper, TestCountry> {
+
+	/**
+	 * 根据id查询
+	 * @param id
+	 * @return
+	 */
+	public TestCountryDTO findById(String id) {
+		return baseMapper.findById ( id );
+	}
+
+	/**
+	 * 自定义分页检索
+	 * @param page
+	 * @param queryWrapper
+	 * @return
+	 */
+	public IPage <TestCountryDTO> findPage(Page <TestCountryDTO> page, QueryWrapper queryWrapper) {
+		queryWrapper.eq ("a.del_flag", 0 ); // 排除已经删除
+		return  baseMapper.findList (page, queryWrapper);
+	}
+
+}

+ 37 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/grid/service/dto/TestContinentDTO.java

@@ -0,0 +1,37 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.grid.service.dto;
+
+import com.jeeplus.core.query.Query;
+import com.jeeplus.core.query.QueryType;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+/**
+ * 洲DTO
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class TestContinentDTO extends BaseDTO {
+
+	private static final long serialVersionUID = 1L;
+
+	        
+	/**
+     * 洲名
+     */
+    @Query(type = QueryType.LIKE)
+	@ExcelProperty("洲名") 
+	private String name;
+	        
+	/**
+     * 备注信息
+     */
+	@ExcelProperty("备注信息") 
+	private String remarks;
+
+}

+ 53 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/grid/service/dto/TestCountryDTO.java

@@ -0,0 +1,53 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.grid.service.dto;
+
+import com.jeeplus.test.grid.service.dto.TestContinentDTO;
+import com.jeeplus.core.query.Query;
+import com.jeeplus.core.query.QueryType;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.jeeplus.core.excel.ExcelFieldDTOConverter;
+import com.jeeplus.core.excel.annotation.ExcelFieldProperty;
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+/**
+ * 国家DTO
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class TestCountryDTO extends BaseDTO {
+
+	private static final long serialVersionUID = 1L;
+
+	        
+	/**
+     * 国名
+     */
+    @Query(tableColumn = "a.name", javaField = "name", type = QueryType.LIKE)
+	@ExcelProperty("国名") 
+	private String name;
+	        
+	/**
+     * 人口
+     */
+	@ExcelProperty("人口") 
+	private String sum;
+	        
+	/**
+     * 所属洲
+     */
+	@ExcelProperty(value = "所属洲", converter = ExcelFieldDTOConverter.class)
+	@ExcelFieldProperty(value = "continent.name", service =  "com.jeeplus.test.grid.service.TestContinentService", wrapper= "com.jeeplus.test.grid.service.mapstruct.TestContinentWrapper")
+	private TestContinentDTO continent;
+	        
+	/**
+     * 备注信息
+     */
+	@ExcelProperty("备注信息") 
+	private String remarks;
+
+}

+ 24 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/grid/service/mapstruct/TestContinentWrapper.java

@@ -0,0 +1,24 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.grid.service.mapstruct;
+
+
+import com.jeeplus.core.mapstruct.EntityWrapper;
+import com.jeeplus.test.grid.service.dto.TestContinentDTO;
+import com.jeeplus.test.grid.domain.TestContinent;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+/**
+ *  TestContinentWrapper
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {} )
+public interface TestContinentWrapper extends EntityWrapper<TestContinentDTO, TestContinent> {
+
+    TestContinentWrapper INSTANCE = Mappers.getMapper(TestContinentWrapper.class);
+}
+

+ 38 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/grid/service/mapstruct/TestCountryWrapper.java

@@ -0,0 +1,38 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.grid.service.mapstruct;
+
+
+import com.jeeplus.core.mapstruct.EntityWrapper;
+import com.jeeplus.test.grid.service.dto.TestCountryDTO;
+import com.jeeplus.test.grid.domain.TestCountry;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.Mappings;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+/**
+ *  TestCountryWrapper
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {} )
+public interface TestCountryWrapper extends EntityWrapper<TestCountryDTO, TestCountry> {
+
+    TestCountryWrapper INSTANCE = Mappers.getMapper(TestCountryWrapper.class);
+     @Mappings({
+            @Mapping(source = "continent.id", target = "continentId"),
+            @Mapping(source = "createBy.id", target = "createById"),
+            @Mapping (source = "updateBy.id", target = "updateById")})
+    TestCountry toEntity(TestCountryDTO dto);
+
+
+    @Mappings({
+            @Mapping(source = "continentId", target = "continent.id"),
+            @Mapping (source = "createById", target = "createBy.id"),
+            @Mapping (source = "updateById", target = "updateBy.id")})
+    TestCountryDTO toDTO(TestCountry entity);
+}
+

+ 154 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/controller/TestCourseController.java

@@ -0,0 +1,154 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.manytomany.controller;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import com.google.common.collect.Lists;
+import com.jeeplus.aop.logging.annotation.ApiLog;
+import com.jeeplus.core.excel.EasyExcelUtils;
+import com.jeeplus.core.excel.ExcelOptions;
+import com.jeeplus.core.excel.annotation.ExportMode;
+import com.jeeplus.core.query.QueryWrapperGenerator;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.manytomany.domain.TestCourse;
+import com.jeeplus.test.manytomany.service.dto.TestCourseDTO;
+import com.jeeplus.test.manytomany.service.mapstruct.TestCourseWrapper;
+import com.jeeplus.test.manytomany.service.TestCourseService;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * 课程Controller
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+
+@Api(tags ="课程")
+@RestController
+@RequestMapping(value = "/test/manytomany/testCourse")
+public class TestCourseController {
+
+	@Autowired
+	private TestCourseService testCourseService;
+
+	@Autowired
+	private TestCourseWrapper testCourseWrapper;
+
+	/**
+	 * 课程列表数据
+	 */
+	@ApiLog("查询课程列表数据")
+	@ApiOperation(value = "查询课程列表数据")
+	@PreAuthorize("hasAuthority('test:manytomany:testCourse:list')")
+	@GetMapping("list")
+	public ResponseEntity<IPage<TestCourseDTO>> list(TestCourseDTO testCourseDTO, Page<TestCourse> page) throws Exception {
+		QueryWrapper queryWrapper = QueryWrapperGenerator.buildQueryCondition (testCourseDTO, TestCourseDTO.class);
+		IPage<TestCourseDTO> result = testCourseWrapper.toDTO ( testCourseService.page (page, queryWrapper) );
+		return ResponseEntity.ok (result);
+	}
+
+
+	/**
+	 * 根据Id获取课程数据
+	 */
+	@ApiLog("根据Id获取课程数据")
+	@ApiOperation(value = "根据Id获取课程数据")
+	@PreAuthorize("hasAnyAuthority('test:manytomany:testCourse:view','test:manytomany:testCourse:add','test:manytomany:testCourse:edit')")
+	@GetMapping("queryById")
+	public ResponseEntity<TestCourseDTO> queryById(String id) {
+		return ResponseEntity.ok ( testCourseWrapper.toDTO ( testCourseService.getById ( id ) ) );
+	}
+
+	/**
+	 * 保存课程
+	 */
+	@ApiLog("保存课程")
+	@ApiOperation(value = "保存课程")
+	@PreAuthorize("hasAnyAuthority('test:manytomany:testCourse:add','test:manytomany:testCourse:edit')")
+	@PostMapping("save")
+	public  ResponseEntity <String> save(@Valid @RequestBody TestCourseDTO testCourseDTO) {
+		//新增或编辑表单保存
+		testCourseService.saveOrUpdate (testCourseWrapper.toEntity (testCourseDTO));
+        return ResponseEntity.ok ( "保存课程成功" );
+	}
+
+
+	/**
+	 * 删除课程
+	 */
+	@ApiLog("删除课程")
+	@ApiOperation(value = "删除课程")
+	@PreAuthorize("hasAuthority('test:manytomany:testCourse:del')")
+	@DeleteMapping("delete")
+	public ResponseEntity <String> delete(String ids) {
+		String idArray[] = ids.split(",");
+        testCourseService.removeByIds ( Lists.newArrayList ( idArray ) );
+		return ResponseEntity.ok( "删除课程成功" );
+	}
+	
+    /**
+     * 导出课程数据
+     *
+     * @param testCourseDTO
+     * @param page
+     * @param response
+     * @throws Exception
+     */
+    @ApiLog("导出课程数据")
+    @PreAuthorize("hasAnyAuthority('test:manytomany:testCourse:export')")
+    @GetMapping("export")
+    public void exportFile(TestCourseDTO testCourseDTO, Page <TestCourse> page, ExcelOptions options, HttpServletResponse response) throws Exception {
+        String fileName = options.getFilename ( );
+		QueryWrapper queryWrapper = QueryWrapperGenerator.buildQueryCondition (testCourseDTO, TestCourseDTO.class);
+        if ( ExportMode.current.equals ( options.getMode ( ) ) ) { // 导出当前页数据
+            
+        } else if ( ExportMode.selected.equals ( options.getMode ( ) ) ) { // 导出选中数据
+            queryWrapper.in ( "id", options.getSelectIds () );
+        } else { // 导出全部数据
+            page.setSize ( -1 );
+            page.setCurrent ( 0 );
+        }
+        List < TestCourse> result = testCourseService.page ( page, queryWrapper ).getRecords ( );
+        EasyExcelUtils.newInstance ( testCourseService, testCourseWrapper ).exportExcel ( result,  options.getSheetName ( ), TestCourseDTO.class, fileName,options.getExportFields (), response );
+    }
+
+    /**
+     * 导入课程数据
+     *
+     * @return
+     */
+    @PreAuthorize("hasAnyAuthority('test:manytomany:testCourse:import')")
+    @PostMapping("import")
+    public ResponseEntity importFile(MultipartFile file) throws IOException {
+        String result = EasyExcelUtils.newInstance ( testCourseService, testCourseWrapper ).importExcel ( file, TestCourseDTO.class );
+        return ResponseEntity.ok ( result );
+    }
+
+    /**
+     * 下载导入课程数据模板
+     *
+     * @param response
+     * @return
+     */
+    @PreAuthorize ("hasAnyAuthority('test:manytomany:testCourse:import')")
+    @GetMapping("import/template")
+    public void importFileTemplate(HttpServletResponse response) throws IOException {
+        String fileName = "课程数据导入模板.xlsx";
+        List<TestCourseDTO> list = Lists.newArrayList();
+        EasyExcelUtils.newInstance ( testCourseService, testCourseWrapper ).exportExcel ( list,  "课程数据", TestCourseDTO.class, fileName, null, response );
+    }
+
+
+}

+ 154 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/controller/TestStudentController.java

@@ -0,0 +1,154 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.manytomany.controller;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import com.google.common.collect.Lists;
+import com.jeeplus.aop.logging.annotation.ApiLog;
+import com.jeeplus.core.excel.EasyExcelUtils;
+import com.jeeplus.core.excel.ExcelOptions;
+import com.jeeplus.core.excel.annotation.ExportMode;
+import com.jeeplus.core.query.QueryWrapperGenerator;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.manytomany.domain.TestStudent;
+import com.jeeplus.test.manytomany.service.dto.TestStudentDTO;
+import com.jeeplus.test.manytomany.service.mapstruct.TestStudentWrapper;
+import com.jeeplus.test.manytomany.service.TestStudentService;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * 学生Controller
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+
+@Api(tags ="学生")
+@RestController
+@RequestMapping(value = "/test/manytomany/testStudent")
+public class TestStudentController {
+
+	@Autowired
+	private TestStudentService testStudentService;
+
+	@Autowired
+	private TestStudentWrapper testStudentWrapper;
+
+	/**
+	 * 学生列表数据
+	 */
+	@ApiLog("查询学生列表数据")
+	@ApiOperation(value = "查询学生列表数据")
+	@PreAuthorize("hasAuthority('test:manytomany:testStudent:list')")
+	@GetMapping("list")
+	public ResponseEntity<IPage<TestStudentDTO>> list(TestStudentDTO testStudentDTO, Page<TestStudent> page) throws Exception {
+		QueryWrapper queryWrapper = QueryWrapperGenerator.buildQueryCondition (testStudentDTO, TestStudentDTO.class);
+		IPage<TestStudentDTO> result = testStudentWrapper.toDTO ( testStudentService.page (page, queryWrapper) );
+		return ResponseEntity.ok (result);
+	}
+
+
+	/**
+	 * 根据Id获取学生数据
+	 */
+	@ApiLog("根据Id获取学生数据")
+	@ApiOperation(value = "根据Id获取学生数据")
+	@PreAuthorize("hasAnyAuthority('test:manytomany:testStudent:view','test:manytomany:testStudent:add','test:manytomany:testStudent:edit')")
+	@GetMapping("queryById")
+	public ResponseEntity<TestStudentDTO> queryById(String id) {
+		return ResponseEntity.ok ( testStudentWrapper.toDTO ( testStudentService.getById ( id ) ) );
+	}
+
+	/**
+	 * 保存学生
+	 */
+	@ApiLog("保存学生")
+	@ApiOperation(value = "保存学生")
+	@PreAuthorize("hasAnyAuthority('test:manytomany:testStudent:add','test:manytomany:testStudent:edit')")
+	@PostMapping("save")
+	public  ResponseEntity <String> save(@Valid @RequestBody TestStudentDTO testStudentDTO) {
+		//新增或编辑表单保存
+		testStudentService.saveOrUpdate (testStudentWrapper.toEntity (testStudentDTO));
+        return ResponseEntity.ok ( "保存学生成功" );
+	}
+
+
+	/**
+	 * 删除学生
+	 */
+	@ApiLog("删除学生")
+	@ApiOperation(value = "删除学生")
+	@PreAuthorize("hasAuthority('test:manytomany:testStudent:del')")
+	@DeleteMapping("delete")
+	public ResponseEntity <String> delete(String ids) {
+		String idArray[] = ids.split(",");
+        testStudentService.removeByIds ( Lists.newArrayList ( idArray ) );
+		return ResponseEntity.ok( "删除学生成功" );
+	}
+	
+    /**
+     * 导出学生数据
+     *
+     * @param testStudentDTO
+     * @param page
+     * @param response
+     * @throws Exception
+     */
+    @ApiLog("导出学生数据")
+    @PreAuthorize("hasAnyAuthority('test:manytomany:testStudent:export')")
+    @GetMapping("export")
+    public void exportFile(TestStudentDTO testStudentDTO, Page <TestStudent> page, ExcelOptions options, HttpServletResponse response) throws Exception {
+        String fileName = options.getFilename ( );
+		QueryWrapper queryWrapper = QueryWrapperGenerator.buildQueryCondition (testStudentDTO, TestStudentDTO.class);
+        if ( ExportMode.current.equals ( options.getMode ( ) ) ) { // 导出当前页数据
+            
+        } else if ( ExportMode.selected.equals ( options.getMode ( ) ) ) { // 导出选中数据
+            queryWrapper.in ( "id", options.getSelectIds () );
+        } else { // 导出全部数据
+            page.setSize ( -1 );
+            page.setCurrent ( 0 );
+        }
+        List < TestStudent> result = testStudentService.page ( page, queryWrapper ).getRecords ( );
+        EasyExcelUtils.newInstance ( testStudentService, testStudentWrapper ).exportExcel ( result,  options.getSheetName ( ), TestStudentDTO.class, fileName,options.getExportFields (), response );
+    }
+
+    /**
+     * 导入学生数据
+     *
+     * @return
+     */
+    @PreAuthorize("hasAnyAuthority('test:manytomany:testStudent:import')")
+    @PostMapping("import")
+    public ResponseEntity importFile(MultipartFile file) throws IOException {
+        String result = EasyExcelUtils.newInstance ( testStudentService, testStudentWrapper ).importExcel ( file, TestStudentDTO.class );
+        return ResponseEntity.ok ( result );
+    }
+
+    /**
+     * 下载导入学生数据模板
+     *
+     * @param response
+     * @return
+     */
+    @PreAuthorize ("hasAnyAuthority('test:manytomany:testStudent:import')")
+    @GetMapping("import/template")
+    public void importFileTemplate(HttpServletResponse response) throws IOException {
+        String fileName = "学生数据导入模板.xlsx";
+        List<TestStudentDTO> list = Lists.newArrayList();
+        EasyExcelUtils.newInstance ( testStudentService, testStudentWrapper ).exportExcel ( list,  "学生数据", TestStudentDTO.class, fileName, null, response );
+    }
+
+
+}

+ 153 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/controller/TestStudentCourseController.java

@@ -0,0 +1,153 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.manytomany.controller;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import com.google.common.collect.Lists;
+import com.jeeplus.aop.logging.annotation.ApiLog;
+import com.jeeplus.core.excel.EasyExcelUtils;
+import com.jeeplus.core.excel.ExcelOptions;
+import com.jeeplus.core.excel.annotation.ExportMode;
+import com.jeeplus.core.query.QueryWrapperGenerator;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.manytomany.service.dto.TestStudentCourseDTO;
+import com.jeeplus.test.manytomany.service.mapstruct.TestStudentCourseWrapper;
+import com.jeeplus.test.manytomany.service.TestStudentCourseService;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * 学生课程记录Controller
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+
+@Api(tags ="学生课程记录")
+@RestController
+@RequestMapping(value = "/test/manytomany/testStudentCourse")
+public class TestStudentCourseController {
+
+	@Autowired
+	private TestStudentCourseService testStudentCourseService;
+
+	@Autowired
+	private TestStudentCourseWrapper testStudentCourseWrapper;
+
+	/**
+	 * 学生课程记录列表数据
+	 */
+	@ApiLog("查询学生课程记录列表数据")
+	@ApiOperation(value = "查询学生课程记录列表数据")
+	@PreAuthorize("hasAuthority('test:manytomany:testStudentCourse:list')")
+	@GetMapping("list")
+	public ResponseEntity<IPage<TestStudentCourseDTO>> list(TestStudentCourseDTO testStudentCourseDTO, Page<TestStudentCourseDTO> page) throws Exception {
+		QueryWrapper queryWrapper = QueryWrapperGenerator.buildQueryCondition (testStudentCourseDTO, TestStudentCourseDTO.class);
+		IPage<TestStudentCourseDTO> result = testStudentCourseService.findPage (page, queryWrapper);
+		return ResponseEntity.ok (result);
+	}
+
+
+	/**
+	 * 根据Id获取学生课程记录数据
+	 */
+	@ApiLog("根据Id获取学生课程记录数据")
+	@ApiOperation(value = "根据Id获取学生课程记录数据")
+	@PreAuthorize("hasAnyAuthority('test:manytomany:testStudentCourse:view','test:manytomany:testStudentCourse:add','test:manytomany:testStudentCourse:edit')")
+	@GetMapping("queryById")
+	public ResponseEntity<TestStudentCourseDTO> queryById(String id) {
+		return ResponseEntity.ok ( testStudentCourseService.findById ( id ) );
+	}
+
+	/**
+	 * 保存学生课程记录
+	 */
+	@ApiLog("保存学生课程记录")
+	@ApiOperation(value = "保存学生课程记录")
+	@PreAuthorize("hasAnyAuthority('test:manytomany:testStudentCourse:add','test:manytomany:testStudentCourse:edit')")
+	@PostMapping("save")
+	public  ResponseEntity <String> save(@Valid @RequestBody TestStudentCourseDTO testStudentCourseDTO) {
+		//新增或编辑表单保存
+		testStudentCourseService.saveOrUpdate (testStudentCourseWrapper.toEntity (testStudentCourseDTO));
+        return ResponseEntity.ok ( "保存学生课程记录成功" );
+	}
+
+
+	/**
+	 * 删除学生课程记录
+	 */
+	@ApiLog("删除学生课程记录")
+	@ApiOperation(value = "删除学生课程记录")
+	@PreAuthorize("hasAuthority('test:manytomany:testStudentCourse:del')")
+	@DeleteMapping("delete")
+	public ResponseEntity <String> delete(String ids) {
+		String idArray[] = ids.split(",");
+        testStudentCourseService.removeByIds ( Lists.newArrayList ( idArray ) );
+		return ResponseEntity.ok( "删除学生课程记录成功" );
+	}
+	
+    /**
+     * 导出学生课程记录数据
+     *
+     * @param testStudentCourseDTO
+     * @param page
+     * @param response
+     * @throws Exception
+     */
+    @ApiLog("导出学生课程记录数据")
+    @PreAuthorize("hasAnyAuthority('test:manytomany:testStudentCourse:export')")
+    @GetMapping("export")
+    public void exportFile(TestStudentCourseDTO testStudentCourseDTO, Page <TestStudentCourseDTO> page, ExcelOptions options, HttpServletResponse response) throws Exception {
+        String fileName = options.getFilename ( );
+		QueryWrapper queryWrapper = QueryWrapperGenerator.buildQueryCondition (testStudentCourseDTO, TestStudentCourseDTO.class);
+        if ( ExportMode.current.equals ( options.getMode ( ) ) ) { // 导出当前页数据
+            
+        } else if ( ExportMode.selected.equals ( options.getMode ( ) ) ) { // 导出选中数据
+            queryWrapper.in ( "a.id", options.getSelectIds () );
+        } else { // 导出全部数据
+            page.setSize ( -1 );
+            page.setCurrent ( 0 );
+        }
+        List<TestStudentCourseDTO> result = testStudentCourseService.findPage ( page, queryWrapper ).getRecords ( );
+        EasyExcelUtils.newInstance ( testStudentCourseService, testStudentCourseWrapper ).exportExcel ( result,  options.getSheetName ( ), TestStudentCourseDTO.class, fileName,options.getExportFields (), response );
+    }
+
+    /**
+     * 导入学生课程记录数据
+     *
+     * @return
+     */
+    @PreAuthorize("hasAnyAuthority('test:manytomany:testStudentCourse:import')")
+    @PostMapping("import")
+    public ResponseEntity importFile(MultipartFile file) throws IOException {
+        String result = EasyExcelUtils.newInstance ( testStudentCourseService, testStudentCourseWrapper ).importExcel ( file, TestStudentCourseDTO.class );
+        return ResponseEntity.ok ( result );
+    }
+
+    /**
+     * 下载导入学生课程记录数据模板
+     *
+     * @param response
+     * @return
+     */
+    @PreAuthorize ("hasAnyAuthority('test:manytomany:testStudentCourse:import')")
+    @GetMapping("import/template")
+    public void importFileTemplate(HttpServletResponse response) throws IOException {
+        String fileName = "学生课程记录数据导入模板.xlsx";
+        List<TestStudentCourseDTO> list = Lists.newArrayList();
+        EasyExcelUtils.newInstance ( testStudentCourseService, testStudentCourseWrapper ).exportExcel ( list,  "学生课程记录数据", TestStudentCourseDTO.class, fileName, null, response );
+    }
+
+
+}

+ 47 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/domain/TestCourse.java

@@ -0,0 +1,47 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.manytomany.domain;
+
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+/**
+ * 课程Entity
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("test_course")
+public class TestCourse extends BaseEntity {
+
+	private static final long serialVersionUID = 1L;
+
+			
+	/**
+     * 课程名
+     */
+	private String name;
+			
+	/**
+     * 备注信息
+     */
+	private String remarks;
+			
+	/**
+     * 创建时间
+     */
+    @TableField("create_time")
+	private Date createDate;
+			
+	/**
+     * 更新时间
+     */
+    @TableField("update_time")
+	private Date updateDate;
+
+}

+ 47 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/domain/TestStudent.java

@@ -0,0 +1,47 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.manytomany.domain;
+
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+/**
+ * 学生Entity
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("test_student")
+public class TestStudent extends BaseEntity {
+
+	private static final long serialVersionUID = 1L;
+
+			
+	/**
+     * 姓名
+     */
+	private String name;
+			
+	/**
+     * 创建时间
+     */
+    @TableField("create_time")
+	private Date createDate;
+			
+	/**
+     * 更新时间
+     */
+    @TableField("update_time")
+	private Date updateDate;
+			
+	/**
+     * 备注信息
+     */
+	private String remarks;
+
+}

+ 57 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/domain/TestStudentCourse.java

@@ -0,0 +1,57 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.manytomany.domain;
+
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+/**
+ * 学生课程记录Entity
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("test_student_course")
+public class TestStudentCourse extends BaseEntity {
+
+	private static final long serialVersionUID = 1L;
+
+			
+	/**
+     * 学生
+     */
+	private String studentId;
+			
+	/**
+     * 课程
+     */
+	private String courseId;
+			
+	/**
+     * 分数
+     */
+	private String score;
+			
+	/**
+     * 创建时间
+     */
+    @TableField("create_time")
+	private Date createDate;
+			
+	/**
+     * 更新时间
+     */
+    @TableField("update_time")
+	private Date updateDate;
+			
+	/**
+     * 备注信息
+     */
+	private String remarks;
+
+}

+ 17 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/mapper/TestCourseMapper.java

@@ -0,0 +1,17 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.manytomany.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.test.manytomany.domain.TestCourse;
+
+/**
+ * 课程MAPPER接口
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+public interface TestCourseMapper extends BaseMapper<TestCourse> {
+
+
+}

+ 37 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/mapper/TestStudentCourseMapper.java

@@ -0,0 +1,37 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.manytomany.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.manytomany.service.dto.TestStudentCourseDTO;
+import com.jeeplus.test.manytomany.domain.TestStudentCourse;
+
+/**
+ * 学生课程记录MAPPER接口
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+public interface TestStudentCourseMapper extends BaseMapper<TestStudentCourse> {
+
+    /**
+     * 根据id获取学生课程记录
+     * @param id
+     * @return
+     */
+    TestStudentCourseDTO findById(String id);
+
+    /**
+     * 获取学生课程记录列表
+     *
+     * @param queryWrapper
+     * @return
+     */
+    IPage <TestStudentCourseDTO> findList(Page <TestStudentCourseDTO> page, @Param(Constants.WRAPPER) QueryWrapper queryWrapper);
+
+}

+ 17 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/mapper/TestStudentMapper.java

@@ -0,0 +1,17 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.manytomany.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.test.manytomany.domain.TestStudent;
+
+/**
+ * 学生MAPPER接口
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+public interface TestStudentMapper extends BaseMapper<TestStudent> {
+
+
+}

+ 6 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/mapper/xml/TestCourseMapper.xml

@@ -0,0 +1,6 @@
+<?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.jeeplus.test.manytomany.mapper.TestCourseMapper">
+
+
+</mapper>

+ 45 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/mapper/xml/TestStudentCourseMapper.xml

@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.test.manytomany.mapper.TestStudentCourseMapper">
+
+	<sql id="testStudentCourseColumns">
+		a.id AS "id",
+		a.student_id AS "student.id",
+		a.course_id AS "course.id",
+		a.score AS "score",
+		a.create_by_id AS "createBy.id",
+		a.create_time AS "createDate",
+		a.update_by_id AS "updateBy.id",
+		a.update_time AS "updateDate",
+		a.remarks AS "remarks",
+		a.tenant_id AS "tenantId",
+		a.del_flag AS "delFlag",
+		student.name AS "student.name",
+		course.name AS "course.name"
+	</sql>
+
+	<sql id="testStudentCourseJoins">
+
+		LEFT JOIN test_student student ON student.id = a.student_id
+		LEFT JOIN test_course course ON course.id = a.course_id
+	</sql>
+
+
+
+	<select id="findById" resultType="com.jeeplus.test.manytomany.service.dto.TestStudentCourseDTO">
+		SELECT
+			<include refid="testStudentCourseColumns"/>
+		FROM test_student_course a
+		<include refid="testStudentCourseJoins"/>
+		WHERE a.id = #{id} and a.del_flag = 0
+	</select>
+
+	<select id="findList" resultType="com.jeeplus.test.manytomany.service.dto.TestStudentCourseDTO">
+		SELECT
+			<include refid="testStudentCourseColumns"/>
+		FROM test_student_course a
+		<include refid="testStudentCourseJoins"/>
+	    ${ew.customSqlSegment}
+	</select>
+
+</mapper>

+ 6 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/mapper/xml/TestStudentMapper.xml

@@ -0,0 +1,6 @@
+<?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.jeeplus.test.manytomany.mapper.TestStudentMapper">
+
+
+</mapper>

+ 21 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/service/TestCourseService.java

@@ -0,0 +1,21 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.manytomany.service;
+
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jeeplus.test.manytomany.domain.TestCourse;
+import com.jeeplus.test.manytomany.mapper.TestCourseMapper;
+
+/**
+ * 课程Service
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+@Service
+@Transactional
+public class TestCourseService extends ServiceImpl<TestCourseMapper, TestCourse> {
+
+}

+ 45 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/service/TestStudentCourseService.java

@@ -0,0 +1,45 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.manytomany.service;
+
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.manytomany.service.dto.TestStudentCourseDTO;
+import com.jeeplus.test.manytomany.domain.TestStudentCourse;
+import com.jeeplus.test.manytomany.mapper.TestStudentCourseMapper;
+
+/**
+ * 学生课程记录Service
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+@Service
+@Transactional
+public class TestStudentCourseService extends ServiceImpl<TestStudentCourseMapper, TestStudentCourse> {
+
+	/**
+	 * 根据id查询
+	 * @param id
+	 * @return
+	 */
+	public TestStudentCourseDTO findById(String id) {
+		return baseMapper.findById ( id );
+	}
+
+	/**
+	 * 自定义分页检索
+	 * @param page
+	 * @param queryWrapper
+	 * @return
+	 */
+	public IPage <TestStudentCourseDTO> findPage(Page <TestStudentCourseDTO> page, QueryWrapper queryWrapper) {
+		queryWrapper.eq ("a.del_flag", 0 ); // 排除已经删除
+		return  baseMapper.findList (page, queryWrapper);
+	}
+
+}

+ 21 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/service/TestStudentService.java

@@ -0,0 +1,21 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.manytomany.service;
+
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jeeplus.test.manytomany.domain.TestStudent;
+import com.jeeplus.test.manytomany.mapper.TestStudentMapper;
+
+/**
+ * 学生Service
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+@Service
+@Transactional
+public class TestStudentService extends ServiceImpl<TestStudentMapper, TestStudent> {
+
+}

+ 53 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/service/dto/TestCourseDTO.java

@@ -0,0 +1,53 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.manytomany.service.dto;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.core.query.Query;
+import com.jeeplus.core.query.QueryType;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+/**
+ * 课程DTO
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class TestCourseDTO extends BaseDTO {
+
+	private static final long serialVersionUID = 1L;
+
+	        
+	/**
+     * 课程名
+     */
+    @Query(type = QueryType.LIKE)
+	@ExcelProperty("课程名") 
+	private String name;
+	        
+	/**
+     * 备注信息
+     */
+	@ExcelProperty("备注信息") 
+	private String remarks;
+	        
+	/**
+     * 创建时间
+     */
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@ExcelProperty("创建时间") 
+	private Date createDate;
+	        
+	/**
+     * 更新时间
+     */
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@ExcelProperty("更新时间") 
+	private Date updateDate;
+
+}

+ 73 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/service/dto/TestStudentCourseDTO.java

@@ -0,0 +1,73 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.manytomany.service.dto;
+
+import com.jeeplus.test.manytomany.service.dto.TestStudentDTO;
+import com.jeeplus.test.manytomany.service.dto.TestCourseDTO;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.core.query.Query;
+import com.jeeplus.core.query.QueryType;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.jeeplus.core.excel.ExcelFieldDTOConverter;
+import com.jeeplus.core.excel.annotation.ExcelFieldProperty;
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+/**
+ * 学生课程记录DTO
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class TestStudentCourseDTO extends BaseDTO {
+
+	private static final long serialVersionUID = 1L;
+
+	        
+	/**
+     * 学生
+     */
+    @Query(tableColumn = "a.student_id", javaField = "student.id", type = QueryType.EQ)
+	@ExcelProperty(value = "学生", converter = ExcelFieldDTOConverter.class)
+	@ExcelFieldProperty(value = "student.name", service =  "com.jeeplus.test.manytomany.service.TestStudentService", wrapper= "com.jeeplus.test.manytomany.service.mapstruct.TestStudentWrapper")
+	private TestStudentDTO student;
+	        
+	/**
+     * 课程
+     */
+    @Query(tableColumn = "a.course_id", javaField = "course.id", type = QueryType.EQ)
+	@ExcelProperty(value = "课程", converter = ExcelFieldDTOConverter.class)
+	@ExcelFieldProperty(value = "course.name", service =  "com.jeeplus.test.manytomany.service.TestCourseService", wrapper= "com.jeeplus.test.manytomany.service.mapstruct.TestCourseWrapper")
+	private TestCourseDTO course;
+	        
+	/**
+     * 分数
+     */
+    @Query(tableColumn = "a.score", javaField = "score", type = QueryType.GT)
+	@ExcelProperty("分数") 
+	private String score;
+	        
+	/**
+     * 创建时间
+     */
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@ExcelProperty("创建时间") 
+	private Date createDate;
+	        
+	/**
+     * 更新时间
+     */
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@ExcelProperty("更新时间") 
+	private Date updateDate;
+	        
+	/**
+     * 备注信息
+     */
+	@ExcelProperty("备注信息") 
+	private String remarks;
+
+}

+ 53 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/service/dto/TestStudentDTO.java

@@ -0,0 +1,53 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.manytomany.service.dto;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.core.query.Query;
+import com.jeeplus.core.query.QueryType;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+/**
+ * 学生DTO
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class TestStudentDTO extends BaseDTO {
+
+	private static final long serialVersionUID = 1L;
+
+	        
+	/**
+     * 姓名
+     */
+    @Query(type = QueryType.LIKE)
+	@ExcelProperty("姓名") 
+	private String name;
+	        
+	/**
+     * 创建时间
+     */
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@ExcelProperty("创建时间") 
+	private Date createDate;
+	        
+	/**
+     * 更新时间
+     */
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@ExcelProperty("更新时间") 
+	private Date updateDate;
+	        
+	/**
+     * 备注信息
+     */
+	@ExcelProperty("备注信息") 
+	private String remarks;
+
+}

+ 24 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/service/mapstruct/TestCourseWrapper.java

@@ -0,0 +1,24 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.manytomany.service.mapstruct;
+
+
+import com.jeeplus.core.mapstruct.EntityWrapper;
+import com.jeeplus.test.manytomany.service.dto.TestCourseDTO;
+import com.jeeplus.test.manytomany.domain.TestCourse;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+/**
+ *  TestCourseWrapper
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {} )
+public interface TestCourseWrapper extends EntityWrapper<TestCourseDTO, TestCourse> {
+
+    TestCourseWrapper INSTANCE = Mappers.getMapper(TestCourseWrapper.class);
+}
+

+ 40 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/service/mapstruct/TestStudentCourseWrapper.java

@@ -0,0 +1,40 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.manytomany.service.mapstruct;
+
+
+import com.jeeplus.core.mapstruct.EntityWrapper;
+import com.jeeplus.test.manytomany.service.dto.TestStudentCourseDTO;
+import com.jeeplus.test.manytomany.domain.TestStudentCourse;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.Mappings;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+/**
+ *  TestStudentCourseWrapper
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {} )
+public interface TestStudentCourseWrapper extends EntityWrapper<TestStudentCourseDTO, TestStudentCourse> {
+
+    TestStudentCourseWrapper INSTANCE = Mappers.getMapper(TestStudentCourseWrapper.class);
+     @Mappings({
+            @Mapping(source = "student.id", target = "studentId"),
+            @Mapping(source = "course.id", target = "courseId"),
+            @Mapping(source = "createBy.id", target = "createById"),
+            @Mapping (source = "updateBy.id", target = "updateById")})
+    TestStudentCourse toEntity(TestStudentCourseDTO dto);
+
+
+    @Mappings({
+            @Mapping(source = "studentId", target = "student.id"),
+            @Mapping(source = "courseId", target = "course.id"),
+            @Mapping (source = "createById", target = "createBy.id"),
+            @Mapping (source = "updateById", target = "updateBy.id")})
+    TestStudentCourseDTO toDTO(TestStudentCourse entity);
+}
+

+ 24 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/manytomany/service/mapstruct/TestStudentWrapper.java

@@ -0,0 +1,24 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.manytomany.service.mapstruct;
+
+
+import com.jeeplus.core.mapstruct.EntityWrapper;
+import com.jeeplus.test.manytomany.service.dto.TestStudentDTO;
+import com.jeeplus.test.manytomany.domain.TestStudent;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+/**
+ *  TestStudentWrapper
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {} )
+public interface TestStudentWrapper extends EntityWrapper<TestStudentDTO, TestStudent> {
+
+    TestStudentWrapper INSTANCE = Mappers.getMapper(TestStudentWrapper.class);
+}
+

+ 146 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/mobile/controller/TestMobileController.java

@@ -0,0 +1,146 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.mobile.controller;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import com.google.common.collect.Lists;
+import com.jeeplus.aop.logging.annotation.ApiLog;
+import com.jeeplus.core.excel.EasyExcelUtils;
+import com.jeeplus.core.excel.ExcelOptions;
+import com.jeeplus.core.excel.annotation.ExportMode;
+import com.jeeplus.core.query.QueryWrapperGenerator;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.mobile.service.dto.TestMobileDTO;
+import com.jeeplus.test.mobile.service.mapstruct.TestMobileWrapper;
+import com.jeeplus.test.mobile.service.TestMobileService;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * 移动表单Controller
+ * @author 刘高峰
+ * @version 2023-03-11
+ */
+
+@Api(tags ="移动表单")
+@RestController
+@RequestMapping(value = "/test/mobile/testMobile")
+public class TestMobileController {
+
+	@Autowired
+	private TestMobileService testMobileService;
+
+	@Autowired
+	private TestMobileWrapper testMobileWrapper;
+
+	/**
+	 * 移动表单列表数据
+	 */
+	@ApiLog("查询移动表单列表数据")
+	@ApiOperation(value = "查询移动表单列表数据")
+	@GetMapping("list")
+	public ResponseEntity<IPage<TestMobileDTO>> list(TestMobileDTO testMobileDTO, Page<TestMobileDTO> page) throws Exception {
+		QueryWrapper queryWrapper = QueryWrapperGenerator.buildQueryCondition (testMobileDTO, TestMobileDTO.class);
+		IPage<TestMobileDTO> result = testMobileService.findPage (page, queryWrapper);
+		return ResponseEntity.ok (result);
+	}
+
+
+	/**
+	 * 根据Id获取移动表单数据
+	 */
+	@ApiLog("根据Id获取移动表单数据")
+	@ApiOperation(value = "根据Id获取移动表单数据")
+	@GetMapping("queryById")
+	public ResponseEntity<TestMobileDTO> queryById(String id) {
+		return ResponseEntity.ok ( testMobileService.findById ( id ) );
+	}
+
+	/**
+	 * 保存移动表单
+	 */
+	@ApiLog("保存移动表单")
+	@ApiOperation(value = "保存移动表单")
+	@PostMapping("save")
+	public  ResponseEntity <String> save(@Valid @RequestBody TestMobileDTO testMobileDTO) {
+		//新增或编辑表单保存
+		testMobileService.saveOrUpdate (testMobileWrapper.toEntity (testMobileDTO));
+        return ResponseEntity.ok ( "保存移动表单成功" );
+	}
+
+
+	/**
+	 * 删除移动表单
+	 */
+	@ApiLog("删除移动表单")
+	@ApiOperation(value = "删除移动表单")
+	@DeleteMapping("delete")
+	public ResponseEntity <String> delete(String ids) {
+		String idArray[] = ids.split(",");
+        testMobileService.removeByIds ( Lists.newArrayList ( idArray ) );
+		return ResponseEntity.ok( "删除移动表单成功" );
+	}
+	
+    /**
+     * 导出移动表单数据
+     *
+     * @param testMobileDTO
+     * @param page
+     * @param response
+     * @throws Exception
+     */
+    @ApiLog("导出移动表单数据")
+    @GetMapping("export")
+    public void exportFile(TestMobileDTO testMobileDTO, Page <TestMobileDTO> page, ExcelOptions options, HttpServletResponse response) throws Exception {
+        String fileName = options.getFilename ( );
+		QueryWrapper queryWrapper = QueryWrapperGenerator.buildQueryCondition (testMobileDTO, TestMobileDTO.class);
+        if ( ExportMode.current.equals ( options.getMode ( ) ) ) { // 导出当前页数据
+            
+        } else if ( ExportMode.selected.equals ( options.getMode ( ) ) ) { // 导出选中数据
+            queryWrapper.in ( "a.id", options.getSelectIds () );
+        } else { // 导出全部数据
+            page.setSize ( -1 );
+            page.setCurrent ( 0 );
+        }
+        List<TestMobileDTO> result = testMobileService.findPage ( page, queryWrapper ).getRecords ( );
+        EasyExcelUtils.newInstance ( testMobileService, testMobileWrapper ).exportExcel ( result,  options.getSheetName ( ), TestMobileDTO.class, fileName,options.getExportFields (), response );
+    }
+
+    /**
+     * 导入移动表单数据
+     *
+     * @return
+     */
+    @PostMapping("import")
+    public ResponseEntity importFile(MultipartFile file) throws IOException {
+        String result = EasyExcelUtils.newInstance ( testMobileService, testMobileWrapper ).importExcel ( file, TestMobileDTO.class );
+        return ResponseEntity.ok ( result );
+    }
+
+    /**
+     * 下载导入移动表单数据模板
+     *
+     * @param response
+     * @return
+     */
+    @GetMapping("import/template")
+    public void importFileTemplate(HttpServletResponse response) throws IOException {
+        String fileName = "移动表单数据导入模板.xlsx";
+        List<TestMobileDTO> list = Lists.newArrayList();
+        EasyExcelUtils.newInstance ( testMobileService, testMobileWrapper ).exportExcel ( list,  "移动表单数据", TestMobileDTO.class, fileName, null, response );
+    }
+
+
+}

+ 22 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/mobile/controller/app/AppTestMobileController.java

@@ -0,0 +1,22 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.mobile.controller.app;
+
+import com.jeeplus.test.mobile.controller.TestMobileController;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * App移动表单Controller
+ * @author 刘高峰
+ * @version 2023-03-11
+ */
+
+@Api(tags ="移动表单")
+@RestController
+@RequestMapping(value = "/app/test/mobile/testMobile")
+public class AppTestMobileController extends TestMobileController {
+
+}

+ 101 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/mobile/domain/TestMobile.java

@@ -0,0 +1,101 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.mobile.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+/**
+ * 移动表单Entity
+ * @author 刘高峰
+ * @version 2023-03-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("test_mobile")
+public class TestMobile extends BaseEntity {
+
+	private static final long serialVersionUID = 1L;
+
+			
+	/**
+     * 姓名
+     */
+	private String name;
+			
+	/**
+     * 年龄
+     */
+	private String age;
+			
+	/**
+     * 地区
+     */
+    @TableField("area")
+	private String areaId;
+			
+	/**
+     * 公司
+     */
+	private String companyId;
+			
+	/**
+     * 部门
+     */
+	private String officeId;
+			
+	/**
+     * 性别
+     */
+	private String sex;
+			
+	/**
+     * 头像
+     */
+	private String teImage;
+			
+	/**
+     * 单选框
+     */
+	private String isSingle;
+			
+	/**
+     * 多选框
+     */
+	private String cks;
+			
+	/**
+     * 多行文本框
+     */
+	private String textArea;
+			
+	/**
+     * 数字输入框
+     */
+	private String textNumber;
+			
+	/**
+     * 日期选择框
+     */
+	private Date teDate;
+			
+	/**
+     * 邮箱
+     */
+	private String email;
+			
+	/**
+     * 手机号
+     */
+	private String phone;
+			
+	/**
+     * 电话
+     */
+	private String tel;
+
+}

+ 37 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/mobile/mapper/TestMobileMapper.java

@@ -0,0 +1,37 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.mobile.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.mobile.service.dto.TestMobileDTO;
+import com.jeeplus.test.mobile.domain.TestMobile;
+
+/**
+ * 移动表单MAPPER接口
+ * @author 刘高峰
+ * @version 2023-03-11
+ */
+public interface TestMobileMapper extends BaseMapper<TestMobile> {
+
+    /**
+     * 根据id获取移动表单
+     * @param id
+     * @return
+     */
+    TestMobileDTO findById(String id);
+
+    /**
+     * 获取移动表单列表
+     *
+     * @param queryWrapper
+     * @return
+     */
+    IPage <TestMobileDTO> findList(Page <TestMobileDTO> page, @Param(Constants.WRAPPER) QueryWrapper queryWrapper);
+
+}

+ 56 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/mobile/mapper/xml/TestMobileMapper.xml

@@ -0,0 +1,56 @@
+<?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.jeeplus.test.mobile.mapper.TestMobileMapper">
+
+	<sql id="testMobileColumns">
+		a.id AS "id",
+		a.name AS "name",
+		a.age AS "age",
+		a.area AS "areaId",
+		a.company_id AS "company.id",
+		a.office_id AS "office.id",
+		a.sex AS "sex",
+		a.te_image AS "teImage",
+		a.is_single AS "isSingle",
+		a.cks AS "cks",
+		a.text_area AS "textArea",
+		a.text_number AS "textNumber",
+		a.te_date AS "teDate",
+		a.email AS "email",
+		a.phone AS "phone",
+		a.tel AS "tel",
+		a.tenant_id AS "tenantId",
+		a.create_by_id AS "createBy.id",
+		a.create_time AS "createTime",
+		a.update_by_id AS "updateBy.id",
+		a.update_time AS "updateTime",
+		a.del_flag AS "delFlag",
+		company.name AS "company.name",
+		office.name AS "office.name"
+	</sql>
+
+	<sql id="testMobileJoins">
+
+		LEFT JOIN sys_office company ON company.id = a.company_id
+		LEFT JOIN sys_office office ON office.id = a.office_id
+	</sql>
+
+
+
+	<select id="findById" resultType="com.jeeplus.test.mobile.service.dto.TestMobileDTO">
+		SELECT
+			<include refid="testMobileColumns"/>
+		FROM test_mobile a
+		<include refid="testMobileJoins"/>
+		WHERE a.id = #{id} and a.del_flag = 0
+	</select>
+
+	<select id="findList" resultType="com.jeeplus.test.mobile.service.dto.TestMobileDTO">
+		SELECT
+			<include refid="testMobileColumns"/>
+		FROM test_mobile a
+		<include refid="testMobileJoins"/>
+	    ${ew.customSqlSegment}
+	</select>
+
+</mapper>

+ 45 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/mobile/service/TestMobileService.java

@@ -0,0 +1,45 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.mobile.service;
+
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.mobile.service.dto.TestMobileDTO;
+import com.jeeplus.test.mobile.domain.TestMobile;
+import com.jeeplus.test.mobile.mapper.TestMobileMapper;
+
+/**
+ * 移动表单Service
+ * @author 刘高峰
+ * @version 2023-03-11
+ */
+@Service
+@Transactional
+public class TestMobileService extends ServiceImpl<TestMobileMapper, TestMobile> {
+
+	/**
+	 * 根据id查询
+	 * @param id
+	 * @return
+	 */
+	public TestMobileDTO findById(String id) {
+		return baseMapper.findById ( id );
+	}
+
+	/**
+	 * 自定义分页检索
+	 * @param page
+	 * @param queryWrapper
+	 * @return
+	 */
+	public IPage <TestMobileDTO> findPage(Page <TestMobileDTO> page, QueryWrapper queryWrapper) {
+		queryWrapper.eq ("a.del_flag", 0 ); // 排除已经删除
+		return  baseMapper.findList (page, queryWrapper);
+	}
+
+}

+ 128 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/mobile/service/dto/TestMobileDTO.java

@@ -0,0 +1,128 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.mobile.service.dto;
+
+import javax.validation.constraints.NotNull;
+import com.jeeplus.sys.service.dto.OfficeDTO;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.core.query.Query;
+import com.jeeplus.core.query.QueryType;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.jeeplus.core.excel.converter.ExcelOfficeDTOConverter;
+import com.jeeplus.core.excel.converter.ExcelDictDTOConverter;
+import com.jeeplus.core.excel.annotation.ExcelDictProperty;
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+/**
+ * 移动表单DTO
+ * @author 刘高峰
+ * @version 2023-03-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class TestMobileDTO extends BaseDTO {
+
+	private static final long serialVersionUID = 1L;
+
+	        
+	/**
+     * 姓名
+     */
+	@NotNull(message="姓名不能为空")
+    @Query(tableColumn = "a.name", javaField = "name", type = QueryType.LIKE)
+	@ExcelProperty("姓名") 
+	private String name;
+	        
+	/**
+     * 年龄
+     */
+	@NotNull(message="年龄不能为空")
+	@ExcelProperty("年龄") 
+	private String age;
+	        
+	/**
+     * 地区
+     */
+	@ExcelProperty("地区") 
+	private String areaId;
+	        
+	/**
+     * 公司
+     */
+    @ExcelProperty(value = "公司", converter = ExcelOfficeDTOConverter.class) 
+	private OfficeDTO company;
+	        
+	/**
+     * 部门
+     */
+    @ExcelProperty(value = "部门", converter = ExcelOfficeDTOConverter.class) 
+	private OfficeDTO office;
+	        
+	/**
+     * 性别
+     */
+	@ExcelProperty(value = "性别", converter = ExcelDictDTOConverter.class)
+	@ExcelDictProperty("sex")
+	private String sex;
+	        
+	/**
+     * 头像
+     */
+	@ExcelProperty("头像") 
+	private String teImage;
+	        
+	/**
+     * 单选框
+     */
+	@ExcelProperty(value = "单选框", converter = ExcelDictDTOConverter.class)
+	@ExcelDictProperty("yes_no")
+	private String isSingle;
+	        
+	/**
+     * 多选框
+     */
+	@ExcelProperty(value = "多选框", converter = ExcelDictDTOConverter.class)
+	@ExcelDictProperty("oa_leave_type")
+	private String cks;
+	        
+	/**
+     * 多行文本框
+     */
+	@ExcelProperty("多行文本框") 
+	private String textArea;
+	        
+	/**
+     * 数字输入框
+     */
+	@ExcelProperty("数字输入框") 
+	private String textNumber;
+	        
+	/**
+     * 日期选择框
+     */
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@ExcelProperty("日期选择框") 
+	private Date teDate;
+	        
+	/**
+     * 邮箱
+     */
+	@ExcelProperty("邮箱") 
+	private String email;
+	        
+	/**
+     * 手机号
+     */
+	@ExcelProperty("手机号") 
+	private String phone;
+	        
+	/**
+     * 电话
+     */
+	@ExcelProperty("电话") 
+	private String tel;
+
+}

+ 40 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/mobile/service/mapstruct/TestMobileWrapper.java

@@ -0,0 +1,40 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.mobile.service.mapstruct;
+
+
+import com.jeeplus.core.mapstruct.EntityWrapper;
+import com.jeeplus.test.mobile.service.dto.TestMobileDTO;
+import com.jeeplus.test.mobile.domain.TestMobile;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.Mappings;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+/**
+ *  TestMobileWrapper
+ * @author 刘高峰
+ * @version 2023-03-11
+ */
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {} )
+public interface TestMobileWrapper extends EntityWrapper<TestMobileDTO, TestMobile> {
+
+    TestMobileWrapper INSTANCE = Mappers.getMapper(TestMobileWrapper.class);
+     @Mappings({
+            @Mapping(source = "company.id", target = "companyId"),
+            @Mapping(source = "office.id", target = "officeId"),
+            @Mapping(source = "createBy.id", target = "createById"),
+            @Mapping (source = "updateBy.id", target = "updateById")})
+    TestMobile toEntity(TestMobileDTO dto);
+
+
+    @Mappings({
+            @Mapping(source = "companyId", target = "company.id"),
+            @Mapping(source = "officeId", target = "office.id"),
+            @Mapping (source = "createById", target = "createBy.id"),
+            @Mapping (source = "updateById", target = "updateBy.id")})
+    TestMobileDTO toDTO(TestMobile entity);
+}
+

+ 154 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/note/controller/TestNoteController.java

@@ -0,0 +1,154 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.note.controller;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import com.google.common.collect.Lists;
+import com.jeeplus.aop.logging.annotation.ApiLog;
+import com.jeeplus.core.excel.EasyExcelUtils;
+import com.jeeplus.core.excel.ExcelOptions;
+import com.jeeplus.core.excel.annotation.ExportMode;
+import com.jeeplus.core.query.QueryWrapperGenerator;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.note.domain.TestNote;
+import com.jeeplus.test.note.service.dto.TestNoteDTO;
+import com.jeeplus.test.note.service.mapstruct.TestNoteWrapper;
+import com.jeeplus.test.note.service.TestNoteService;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * 富文本Controller
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+
+@Api(tags ="富文本")
+@RestController
+@RequestMapping(value = "/test/note/testNote")
+public class TestNoteController {
+
+	@Autowired
+	private TestNoteService testNoteService;
+
+	@Autowired
+	private TestNoteWrapper testNoteWrapper;
+
+	/**
+	 * 富文本列表数据
+	 */
+	@ApiLog("查询富文本列表数据")
+	@ApiOperation(value = "查询富文本列表数据")
+	@PreAuthorize("hasAuthority('test:note:testNote:list')")
+	@GetMapping("list")
+	public ResponseEntity<IPage<TestNoteDTO>> list(TestNoteDTO testNoteDTO, Page<TestNote> page) throws Exception {
+		QueryWrapper queryWrapper = QueryWrapperGenerator.buildQueryCondition (testNoteDTO, TestNoteDTO.class);
+		IPage<TestNoteDTO> result = testNoteWrapper.toDTO ( testNoteService.page (page, queryWrapper) );
+		return ResponseEntity.ok (result);
+	}
+
+
+	/**
+	 * 根据Id获取富文本数据
+	 */
+	@ApiLog("根据Id获取富文本数据")
+	@ApiOperation(value = "根据Id获取富文本数据")
+	@PreAuthorize("hasAnyAuthority('test:note:testNote:view','test:note:testNote:add','test:note:testNote:edit')")
+	@GetMapping("queryById")
+	public ResponseEntity<TestNoteDTO> queryById(String id) {
+		return ResponseEntity.ok ( testNoteWrapper.toDTO ( testNoteService.getById ( id ) ) );
+	}
+
+	/**
+	 * 保存富文本
+	 */
+	@ApiLog("保存富文本")
+	@ApiOperation(value = "保存富文本")
+	@PreAuthorize("hasAnyAuthority('test:note:testNote:add','test:note:testNote:edit')")
+	@PostMapping("save")
+	public  ResponseEntity <String> save(@Valid @RequestBody TestNoteDTO testNoteDTO) {
+		//新增或编辑表单保存
+		testNoteService.saveOrUpdate (testNoteWrapper.toEntity (testNoteDTO));
+        return ResponseEntity.ok ( "保存富文本成功" );
+	}
+
+
+	/**
+	 * 删除富文本
+	 */
+	@ApiLog("删除富文本")
+	@ApiOperation(value = "删除富文本")
+	@PreAuthorize("hasAuthority('test:note:testNote:del')")
+	@DeleteMapping("delete")
+	public ResponseEntity <String> delete(String ids) {
+		String idArray[] = ids.split(",");
+        testNoteService.removeByIds ( Lists.newArrayList ( idArray ) );
+		return ResponseEntity.ok( "删除富文本成功" );
+	}
+	
+    /**
+     * 导出富文本数据
+     *
+     * @param testNoteDTO
+     * @param page
+     * @param response
+     * @throws Exception
+     */
+    @ApiLog("导出富文本数据")
+    @PreAuthorize("hasAnyAuthority('test:note:testNote:export')")
+    @GetMapping("export")
+    public void exportFile(TestNoteDTO testNoteDTO, Page <TestNote> page, ExcelOptions options, HttpServletResponse response) throws Exception {
+        String fileName = options.getFilename ( );
+		QueryWrapper queryWrapper = QueryWrapperGenerator.buildQueryCondition (testNoteDTO, TestNoteDTO.class);
+        if ( ExportMode.current.equals ( options.getMode ( ) ) ) { // 导出当前页数据
+            
+        } else if ( ExportMode.selected.equals ( options.getMode ( ) ) ) { // 导出选中数据
+            queryWrapper.in ( "id", options.getSelectIds () );
+        } else { // 导出全部数据
+            page.setSize ( -1 );
+            page.setCurrent ( 0 );
+        }
+        List < TestNote> result = testNoteService.page ( page, queryWrapper ).getRecords ( );
+        EasyExcelUtils.newInstance ( testNoteService, testNoteWrapper ).exportExcel ( result,  options.getSheetName ( ), TestNoteDTO.class, fileName,options.getExportFields (), response );
+    }
+
+    /**
+     * 导入富文本数据
+     *
+     * @return
+     */
+    @PreAuthorize("hasAnyAuthority('test:note:testNote:import')")
+    @PostMapping("import")
+    public ResponseEntity importFile(MultipartFile file) throws IOException {
+        String result = EasyExcelUtils.newInstance ( testNoteService, testNoteWrapper ).importExcel ( file, TestNoteDTO.class );
+        return ResponseEntity.ok ( result );
+    }
+
+    /**
+     * 下载导入富文本数据模板
+     *
+     * @param response
+     * @return
+     */
+    @PreAuthorize ("hasAnyAuthority('test:note:testNote:import')")
+    @GetMapping("import/template")
+    public void importFileTemplate(HttpServletResponse response) throws IOException {
+        String fileName = "富文本数据导入模板.xlsx";
+        List<TestNoteDTO> list = Lists.newArrayList();
+        EasyExcelUtils.newInstance ( testNoteService, testNoteWrapper ).exportExcel ( list,  "富文本数据", TestNoteDTO.class, fileName, null, response );
+    }
+
+
+}

+ 38 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/note/domain/TestNote.java

@@ -0,0 +1,38 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.note.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+/**
+ * 富文本Entity
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("test_note")
+public class TestNote extends BaseEntity {
+
+	private static final long serialVersionUID = 1L;
+
+			
+	/**
+     * 标题
+     */
+	private String title;
+			
+	/**
+     * 富文本
+     */
+	private String contents;
+			
+	/**
+     * 备注信息
+     */
+	private String remarks;
+
+}

+ 17 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/note/mapper/TestNoteMapper.java

@@ -0,0 +1,17 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.note.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.test.note.domain.TestNote;
+
+/**
+ * 富文本MAPPER接口
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+public interface TestNoteMapper extends BaseMapper<TestNote> {
+
+
+}

+ 6 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/note/mapper/xml/TestNoteMapper.xml

@@ -0,0 +1,6 @@
+<?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.jeeplus.test.note.mapper.TestNoteMapper">
+
+
+</mapper>

+ 21 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/note/service/TestNoteService.java

@@ -0,0 +1,21 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.note.service;
+
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jeeplus.test.note.domain.TestNote;
+import com.jeeplus.test.note.mapper.TestNoteMapper;
+
+/**
+ * 富文本Service
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+@Service
+@Transactional
+public class TestNoteService extends ServiceImpl<TestNoteMapper, TestNote> {
+
+}

+ 43 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/note/service/dto/TestNoteDTO.java

@@ -0,0 +1,43 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.note.service.dto;
+
+import com.jeeplus.core.query.Query;
+import com.jeeplus.core.query.QueryType;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+/**
+ * 富文本DTO
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class TestNoteDTO extends BaseDTO {
+
+	private static final long serialVersionUID = 1L;
+
+	        
+	/**
+     * 标题
+     */
+    @Query(type = QueryType.LIKE)
+	@ExcelProperty("标题") 
+	private String title;
+	        
+	/**
+     * 富文本
+     */
+	@ExcelProperty("富文本") 
+	private String contents;
+	        
+	/**
+     * 备注信息
+     */
+	@ExcelProperty("备注信息") 
+	private String remarks;
+
+}

+ 24 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/note/service/mapstruct/TestNoteWrapper.java

@@ -0,0 +1,24 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.note.service.mapstruct;
+
+
+import com.jeeplus.core.mapstruct.EntityWrapper;
+import com.jeeplus.test.note.service.dto.TestNoteDTO;
+import com.jeeplus.test.note.domain.TestNote;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+/**
+ *  TestNoteWrapper
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {} )
+public interface TestNoteWrapper extends EntityWrapper<TestNoteDTO, TestNote> {
+
+    TestNoteWrapper INSTANCE = Mappers.getMapper(TestNoteWrapper.class);
+}
+

+ 153 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/one/controller/TestFormLeaveController.java

@@ -0,0 +1,153 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.one.controller;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import com.google.common.collect.Lists;
+import com.jeeplus.aop.logging.annotation.ApiLog;
+import com.jeeplus.core.excel.EasyExcelUtils;
+import com.jeeplus.core.excel.ExcelOptions;
+import com.jeeplus.core.excel.annotation.ExportMode;
+import com.jeeplus.core.query.QueryWrapperGenerator;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.one.service.dto.TestFormLeaveDTO;
+import com.jeeplus.test.one.service.mapstruct.TestFormLeaveWrapper;
+import com.jeeplus.test.one.service.TestFormLeaveService;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * 请假表单Controller
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+
+@Api(tags ="请假表单")
+@RestController
+@RequestMapping(value = "/test/one/testFormLeave")
+public class TestFormLeaveController {
+
+	@Autowired
+	private TestFormLeaveService testFormLeaveService;
+
+	@Autowired
+	private TestFormLeaveWrapper testFormLeaveWrapper;
+
+	/**
+	 * 请假表单列表数据
+	 */
+	@ApiLog("查询请假表单列表数据")
+	@ApiOperation(value = "查询请假表单列表数据")
+	@PreAuthorize("hasAuthority('test:one:testFormLeave:list')")
+	@GetMapping("list")
+	public ResponseEntity<IPage<TestFormLeaveDTO>> list(TestFormLeaveDTO testFormLeaveDTO, Page<TestFormLeaveDTO> page) throws Exception {
+		QueryWrapper queryWrapper = QueryWrapperGenerator.buildQueryCondition (testFormLeaveDTO, TestFormLeaveDTO.class);
+		IPage<TestFormLeaveDTO> result = testFormLeaveService.findPage (page, queryWrapper);
+		return ResponseEntity.ok (result);
+	}
+
+
+	/**
+	 * 根据Id获取请假表单数据
+	 */
+	@ApiLog("根据Id获取请假表单数据")
+	@ApiOperation(value = "根据Id获取请假表单数据")
+	@PreAuthorize("hasAnyAuthority('test:one:testFormLeave:view','test:one:testFormLeave:add','test:one:testFormLeave:edit')")
+	@GetMapping("queryById")
+	public ResponseEntity<TestFormLeaveDTO> queryById(String id) {
+		return ResponseEntity.ok ( testFormLeaveService.findById ( id ) );
+	}
+
+	/**
+	 * 保存请假表单
+	 */
+	@ApiLog("保存请假表单")
+	@ApiOperation(value = "保存请假表单")
+	@PreAuthorize("hasAnyAuthority('test:one:testFormLeave:add','test:one:testFormLeave:edit')")
+	@PostMapping("save")
+	public  ResponseEntity <String> save(@Valid @RequestBody TestFormLeaveDTO testFormLeaveDTO) {
+		//新增或编辑表单保存
+		testFormLeaveService.saveOrUpdate (testFormLeaveWrapper.toEntity (testFormLeaveDTO));
+        return ResponseEntity.ok ( "保存请假表单成功" );
+	}
+
+
+	/**
+	 * 删除请假表单
+	 */
+	@ApiLog("删除请假表单")
+	@ApiOperation(value = "删除请假表单")
+	@PreAuthorize("hasAuthority('test:one:testFormLeave:del')")
+	@DeleteMapping("delete")
+	public ResponseEntity <String> delete(String ids) {
+		String idArray[] = ids.split(",");
+        testFormLeaveService.removeByIds ( Lists.newArrayList ( idArray ) );
+		return ResponseEntity.ok( "删除请假表单成功" );
+	}
+	
+    /**
+     * 导出请假表单数据
+     *
+     * @param testFormLeaveDTO
+     * @param page
+     * @param response
+     * @throws Exception
+     */
+    @ApiLog("导出请假表单数据")
+    @PreAuthorize("hasAnyAuthority('test:one:testFormLeave:export')")
+    @GetMapping("export")
+    public void exportFile(TestFormLeaveDTO testFormLeaveDTO, Page <TestFormLeaveDTO> page, ExcelOptions options, HttpServletResponse response) throws Exception {
+        String fileName = options.getFilename ( );
+		QueryWrapper queryWrapper = QueryWrapperGenerator.buildQueryCondition (testFormLeaveDTO, TestFormLeaveDTO.class);
+        if ( ExportMode.current.equals ( options.getMode ( ) ) ) { // 导出当前页数据
+            
+        } else if ( ExportMode.selected.equals ( options.getMode ( ) ) ) { // 导出选中数据
+            queryWrapper.in ( "a.id", options.getSelectIds () );
+        } else { // 导出全部数据
+            page.setSize ( -1 );
+            page.setCurrent ( 0 );
+        }
+        List<TestFormLeaveDTO> result = testFormLeaveService.findPage ( page, queryWrapper ).getRecords ( );
+        EasyExcelUtils.newInstance ( testFormLeaveService, testFormLeaveWrapper ).exportExcel ( result,  options.getSheetName ( ), TestFormLeaveDTO.class, fileName,options.getExportFields (), response );
+    }
+
+    /**
+     * 导入请假表单数据
+     *
+     * @return
+     */
+    @PreAuthorize("hasAnyAuthority('test:one:testFormLeave:import')")
+    @PostMapping("import")
+    public ResponseEntity importFile(MultipartFile file) throws IOException {
+        String result = EasyExcelUtils.newInstance ( testFormLeaveService, testFormLeaveWrapper ).importExcel ( file, TestFormLeaveDTO.class );
+        return ResponseEntity.ok ( result );
+    }
+
+    /**
+     * 下载导入请假表单数据模板
+     *
+     * @param response
+     * @return
+     */
+    @PreAuthorize ("hasAnyAuthority('test:one:testFormLeave:import')")
+    @GetMapping("import/template")
+    public void importFileTemplate(HttpServletResponse response) throws IOException {
+        String fileName = "请假表单数据导入模板.xlsx";
+        List<TestFormLeaveDTO> list = Lists.newArrayList();
+        EasyExcelUtils.newInstance ( testFormLeaveService, testFormLeaveWrapper ).exportExcel ( list,  "请假表单数据", TestFormLeaveDTO.class, fileName, null, response );
+    }
+
+
+}

+ 49 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/one/domain/TestFormLeave.java

@@ -0,0 +1,49 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.one.domain;
+
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+/**
+ * 请假表单Entity
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("test_form_leave")
+public class TestFormLeave extends BaseEntity {
+
+	private static final long serialVersionUID = 1L;
+
+			
+	/**
+     * 归属部门
+     */
+	private String officeId;
+			
+	/**
+     * 员工
+     */
+	private String userId;
+			
+	/**
+     * 地区
+     */
+	private String area;
+			
+	/**
+     * 请假开始日期
+     */
+	private Date beginDate;
+			
+	/**
+     * 请假结束日期
+     */
+	private Date endDate;
+
+}

+ 37 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/one/mapper/TestFormLeaveMapper.java

@@ -0,0 +1,37 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.one.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.one.service.dto.TestFormLeaveDTO;
+import com.jeeplus.test.one.domain.TestFormLeave;
+
+/**
+ * 请假表单MAPPER接口
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+public interface TestFormLeaveMapper extends BaseMapper<TestFormLeave> {
+
+    /**
+     * 根据id获取请假表单
+     * @param id
+     * @return
+     */
+    TestFormLeaveDTO findById(String id);
+
+    /**
+     * 获取请假表单列表
+     *
+     * @param queryWrapper
+     * @return
+     */
+    IPage <TestFormLeaveDTO> findList(Page <TestFormLeaveDTO> page, @Param(Constants.WRAPPER) QueryWrapper queryWrapper);
+
+}

+ 46 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/one/mapper/xml/TestFormLeaveMapper.xml

@@ -0,0 +1,46 @@
+<?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.jeeplus.test.one.mapper.TestFormLeaveMapper">
+
+	<sql id="testFormLeaveColumns">
+		a.id AS "id",
+		a.office_id AS "office.id",
+		a.user_id AS "user.id",
+		a.area AS "area",
+		a.begin_date AS "beginDate",
+		a.end_date AS "endDate",
+		a.tenant_id AS "tenantId",
+		a.create_by_id AS "createBy.id",
+		a.create_time AS "createTime",
+		a.update_by_id AS "updateBy.id",
+		a.update_time AS "updateTime",
+		a.del_flag AS "delFlag",
+		office.name AS "office.name",
+		user.name AS "user.name"
+	</sql>
+
+	<sql id="testFormLeaveJoins">
+
+		LEFT JOIN sys_office office ON office.id = a.office_id
+		LEFT JOIN sys_user user ON user.id = a.user_id
+	</sql>
+
+
+
+	<select id="findById" resultType="com.jeeplus.test.one.service.dto.TestFormLeaveDTO">
+		SELECT
+			<include refid="testFormLeaveColumns"/>
+		FROM test_form_leave a
+		<include refid="testFormLeaveJoins"/>
+		WHERE a.id = #{id} and a.del_flag = 0
+	</select>
+
+	<select id="findList" resultType="com.jeeplus.test.one.service.dto.TestFormLeaveDTO">
+		SELECT
+			<include refid="testFormLeaveColumns"/>
+		FROM test_form_leave a
+		<include refid="testFormLeaveJoins"/>
+	    ${ew.customSqlSegment}
+	</select>
+
+</mapper>

+ 45 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/one/service/TestFormLeaveService.java

@@ -0,0 +1,45 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.one.service;
+
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.one.service.dto.TestFormLeaveDTO;
+import com.jeeplus.test.one.domain.TestFormLeave;
+import com.jeeplus.test.one.mapper.TestFormLeaveMapper;
+
+/**
+ * 请假表单Service
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+@Service
+@Transactional
+public class TestFormLeaveService extends ServiceImpl<TestFormLeaveMapper, TestFormLeave> {
+
+	/**
+	 * 根据id查询
+	 * @param id
+	 * @return
+	 */
+	public TestFormLeaveDTO findById(String id) {
+		return baseMapper.findById ( id );
+	}
+
+	/**
+	 * 自定义分页检索
+	 * @param page
+	 * @param queryWrapper
+	 * @return
+	 */
+	public IPage <TestFormLeaveDTO> findPage(Page <TestFormLeaveDTO> page, QueryWrapper queryWrapper) {
+		queryWrapper.eq ("a.del_flag", 0 ); // 排除已经删除
+		return  baseMapper.findList (page, queryWrapper);
+	}
+
+}

+ 66 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/one/service/dto/TestFormLeaveDTO.java

@@ -0,0 +1,66 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.one.service.dto;
+
+import com.jeeplus.sys.service.dto.OfficeDTO;
+import javax.validation.constraints.NotNull;
+import com.jeeplus.sys.service.dto.UserDTO;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.core.query.Query;
+import com.jeeplus.core.query.QueryType;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.jeeplus.core.excel.converter.ExcelOfficeDTOConverter;
+import com.jeeplus.core.excel.converter.ExcelUserDTOConverter;
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+/**
+ * 请假表单DTO
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class TestFormLeaveDTO extends BaseDTO {
+
+	private static final long serialVersionUID = 1L;
+
+	        
+	/**
+     * 归属部门
+     */
+	@NotNull(message="归属部门不能为空")
+    @Query(tableColumn = "a.office_id", javaField = "office.id", type = QueryType.LIKE)
+    @ExcelProperty(value = "归属部门", converter = ExcelOfficeDTOConverter.class) 
+	private OfficeDTO office;
+	        
+	/**
+     * 员工
+     */
+    @Query(tableColumn = "a.user_id", javaField = "user.id", type = QueryType.LIKE)
+    @ExcelProperty(value = "员工", converter = ExcelUserDTOConverter.class) 
+	private UserDTO user;
+	        
+	/**
+     * 地区
+     */
+	@ExcelProperty("地区") 
+	private String area;
+	        
+	/**
+     * 请假开始日期
+     */
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@ExcelProperty("请假开始日期") 
+	private Date beginDate;
+	        
+	/**
+     * 请假结束日期
+     */
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@ExcelProperty("请假结束日期") 
+	private Date endDate;
+
+}

+ 40 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/one/service/mapstruct/TestFormLeaveWrapper.java

@@ -0,0 +1,40 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.one.service.mapstruct;
+
+
+import com.jeeplus.core.mapstruct.EntityWrapper;
+import com.jeeplus.test.one.service.dto.TestFormLeaveDTO;
+import com.jeeplus.test.one.domain.TestFormLeave;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.Mappings;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+/**
+ *  TestFormLeaveWrapper
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {} )
+public interface TestFormLeaveWrapper extends EntityWrapper<TestFormLeaveDTO, TestFormLeave> {
+
+    TestFormLeaveWrapper INSTANCE = Mappers.getMapper(TestFormLeaveWrapper.class);
+     @Mappings({
+            @Mapping(source = "office.id", target = "officeId"),
+            @Mapping(source = "user.id", target = "userId"),
+            @Mapping(source = "createBy.id", target = "createById"),
+            @Mapping (source = "updateBy.id", target = "updateById")})
+    TestFormLeave toEntity(TestFormLeaveDTO dto);
+
+
+    @Mappings({
+            @Mapping(source = "officeId", target = "office.id"),
+            @Mapping(source = "userId", target = "user.id"),
+            @Mapping (source = "createById", target = "createBy.id"),
+            @Mapping (source = "updateById", target = "updateBy.id")})
+    TestFormLeaveDTO toDTO(TestFormLeave entity);
+}
+

+ 154 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/controller/TestDataMainController.java

@@ -0,0 +1,154 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.onetomany.controller;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import com.google.common.collect.Lists;
+import com.jeeplus.aop.logging.annotation.ApiLog;
+import com.jeeplus.core.excel.EasyExcelUtils;
+import com.jeeplus.core.excel.ExcelOptions;
+import com.jeeplus.core.excel.annotation.ExportMode;
+import com.jeeplus.core.query.QueryWrapperGenerator;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.onetomany.service.dto.TestDataMainDTO;
+import com.jeeplus.test.onetomany.service.mapstruct.TestDataMainWrapper;
+import com.jeeplus.test.onetomany.service.TestDataMainService;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * 票务代理Controller
+ * @author 刘高峰
+ * @version 2023-03-11
+ */
+
+@Api(tags ="票务代理")
+@RestController
+@RequestMapping(value = "/test/onetomany/testDataMain")
+public class TestDataMainController {
+
+	@Autowired
+	private TestDataMainService testDataMainService;
+
+	@Autowired
+	private TestDataMainWrapper testDataMainWrapper;
+
+	/**
+	 * 票务代理列表数据
+	 */
+	@ApiLog("查询票务代理列表数据")
+	@ApiOperation(value = "查询票务代理列表数据")
+	@PreAuthorize("hasAuthority('test:onetomany:testDataMain:list')")
+	@GetMapping("list")
+	public ResponseEntity<IPage<TestDataMainDTO>> list(TestDataMainDTO testDataMainDTO, Page<TestDataMainDTO> page) throws Exception {
+		QueryWrapper queryWrapper = QueryWrapperGenerator.buildQueryCondition (testDataMainDTO, TestDataMainDTO.class);
+		IPage<TestDataMainDTO> result = testDataMainService.findPage (page, queryWrapper);
+		return ResponseEntity.ok (result);
+	}
+
+
+	/**
+	 * 根据Id获取票务代理数据
+	 */
+	@ApiLog("根据Id获取票务代理数据")
+	@ApiOperation(value = "根据Id获取票务代理数据")
+	@PreAuthorize("hasAnyAuthority('test:onetomany:testDataMain:view','test:onetomany:testDataMain:add','test:onetomany:testDataMain:edit')")
+	@GetMapping("queryById")
+	public ResponseEntity<TestDataMainDTO> queryById(String id) {
+		return ResponseEntity.ok ( testDataMainService.findById ( id ) );
+	}
+
+	/**
+	 * 保存票务代理
+	 */
+	@ApiLog("保存票务代理")
+	@ApiOperation(value = "保存票务代理")
+	@PreAuthorize("hasAnyAuthority('test:onetomany:testDataMain:add','test:onetomany:testDataMain:edit')")
+	@PostMapping("save")
+	public  ResponseEntity <String> save(@Valid @RequestBody TestDataMainDTO testDataMainDTO) {
+		//新增或编辑表单保存
+		testDataMainService.saveOrUpdate (testDataMainDTO);
+        return ResponseEntity.ok ( "保存票务代理成功" );
+	}
+
+
+	/**
+	 * 删除票务代理
+	 */
+	@ApiLog("删除票务代理")
+	@ApiOperation(value = "删除票务代理")
+	@PreAuthorize("hasAuthority('test:onetomany:testDataMain:del')")
+	@DeleteMapping("delete")
+	public ResponseEntity <String> delete(String ids) {
+		String idArray[] = ids.split(",");
+		for(String id: idArray){
+			testDataMainService.removeById ( id );
+		}
+		return ResponseEntity.ok( "删除票务代理成功" );
+	}
+    /**
+     * 导出票务代理数据
+     *
+     * @param testDataMainDTO
+     * @param page
+     * @param response
+     * @throws Exception
+     */
+    @ApiLog("导出票务代理数据")
+    @PreAuthorize("hasAnyAuthority('test:onetomany:testDataMain:export')")
+    @GetMapping("export")
+    public void exportFile(TestDataMainDTO testDataMainDTO, Page <TestDataMainDTO> page, ExcelOptions options, HttpServletResponse response) throws Exception {
+        String fileName = options.getFilename ( );
+		QueryWrapper queryWrapper = QueryWrapperGenerator.buildQueryCondition (testDataMainDTO, TestDataMainDTO.class);
+        if ( ExportMode.current.equals ( options.getMode ( ) ) ) { // 导出当前页数据
+            
+        } else if ( ExportMode.selected.equals ( options.getMode ( ) ) ) { // 导出选中数据
+            queryWrapper.in ( "a.id", options.getSelectIds () );
+        } else { // 导出全部数据
+            page.setSize ( -1 );
+            page.setCurrent ( 0 );
+        }
+        List<TestDataMainDTO> result = testDataMainService.findPage ( page, queryWrapper ).getRecords ( );
+        EasyExcelUtils.newInstance ( testDataMainService, testDataMainWrapper ).exportExcel ( result,  options.getSheetName ( ), TestDataMainDTO.class, fileName,options.getExportFields (), response );
+    }
+
+    /**
+     * 导入票务代理数据
+     *
+     * @return
+     */
+    @PreAuthorize("hasAnyAuthority('test:onetomany:testDataMain:import')")
+    @PostMapping("import")
+    public ResponseEntity importFile(MultipartFile file) throws IOException {
+        String result = EasyExcelUtils.newInstance ( testDataMainService, testDataMainWrapper ).importExcel ( file, TestDataMainDTO.class );
+        return ResponseEntity.ok ( result );
+    }
+
+    /**
+     * 下载导入票务代理数据模板
+     *
+     * @param response
+     * @return
+     */
+    @PreAuthorize ("hasAnyAuthority('test:onetomany:testDataMain:import')")
+    @GetMapping("import/template")
+    public void importFileTemplate(HttpServletResponse response) throws IOException {
+        String fileName = "票务代理数据导入模板.xlsx";
+        List<TestDataMainDTO> list = Lists.newArrayList();
+        EasyExcelUtils.newInstance ( testDataMainService, testDataMainWrapper ).exportExcel ( list,  "票务代理数据", TestDataMainDTO.class, fileName, null, response );
+    }
+
+
+}

+ 59 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/domain/TestDataChild1.java

@@ -0,0 +1,59 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.onetomany.domain;
+
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+/**
+ * 火车票Entity
+ * @author 刘高峰
+ * @version 2023-03-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("test_data_child1")
+public class TestDataChild1 extends BaseEntity {
+
+	private static final long serialVersionUID = 1L;
+
+			
+	/**
+     * 出发地
+     */
+	private String startarea;
+			
+	/**
+     * 目的地
+     */
+	private String endarea;
+			
+	/**
+     * 出发时间
+     */
+	private Date starttime;
+			
+	/**
+     * 到达时间
+     */
+	private Date endtime;
+			
+	/**
+     * 代理价格
+     */
+	private Long price;
+			
+	/**
+     * 业务主表ID
+     */
+	private String testDataMainId;
+			
+	/**
+     * 备注信息
+     */
+	private String remarks;
+
+}

+ 59 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/domain/TestDataChild2.java

@@ -0,0 +1,59 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.onetomany.domain;
+
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+/**
+ * 飞机票Entity
+ * @author 刘高峰
+ * @version 2023-03-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("test_data_child2")
+public class TestDataChild2 extends BaseEntity {
+
+	private static final long serialVersionUID = 1L;
+
+			
+	/**
+     * 出发地
+     */
+	private String startarea;
+			
+	/**
+     * 目的地
+     */
+	private String endarea;
+			
+	/**
+     * 出发时间
+     */
+	private Date starttime;
+			
+	/**
+     * 到达时间
+     */
+	private Date endtime;
+			
+	/**
+     * 代理价格
+     */
+	private Double price;
+			
+	/**
+     * 外键
+     */
+	private String testDataMainId;
+			
+	/**
+     * 备注信息
+     */
+	private String remarks;
+
+}

+ 74 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/domain/TestDataChild3.java

@@ -0,0 +1,74 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.onetomany.domain;
+
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import com.jeeplus.core.query.Query;
+import com.jeeplus.core.query.QueryType;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+/**
+ * 汽车票Entity
+ * @author 刘高峰
+ * @version 2023-03-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("test_data_child3")
+public class TestDataChild3 extends BaseEntity {
+
+	private static final long serialVersionUID = 1L;
+
+			
+	/**
+     * 出发地
+     */
+	private String startarea;
+			
+	/**
+     * 目的地
+     */
+	private String endarea;
+			
+	/**
+     * 代理价格
+     */
+	private Double price;
+			
+	/**
+     * 出发时间
+     */
+	private Date starttime;
+			
+	/**
+     * 到达时间
+     */
+	private Date endtime;
+			
+	/**
+     * 外键
+     */
+	private String testDataMainId;
+			
+	/**
+     * 创建时间
+     */
+    @TableField("create_time")
+	private Date createDate;
+			
+	/**
+     * 更新时间
+     */
+    @TableField("update_time")
+	private Date updateDate;
+			
+	/**
+     * 备注信息
+     */
+	private String remarks;
+
+}

+ 64 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/domain/TestDataMain.java

@@ -0,0 +1,64 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.onetomany.domain;
+
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+/**
+ * 票务代理Entity
+ * @author 刘高峰
+ * @version 2023-03-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("test_data_main")
+public class TestDataMain extends BaseEntity {
+
+	private static final long serialVersionUID = 1L;
+
+			
+	/**
+     * 用户
+     */
+	private String userId;
+			
+	/**
+     * 所属部门
+     */
+	private String officeId;
+			
+	/**
+     * 所属区域
+     */
+	private String area;
+			
+	/**
+     * 名称
+     */
+	private String name;
+			
+	/**
+     * 性别
+     */
+	private String sex;
+			
+	/**
+     * 身份证照片
+     */
+	private String file;
+			
+	/**
+     * 加入日期
+     */
+	private Date inDate;
+			
+	/**
+     * 备注信息
+     */
+	private String remarks;
+
+}

+ 17 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/mapper/TestDataChild1Mapper.java

@@ -0,0 +1,17 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.onetomany.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.test.onetomany.domain.TestDataChild1;
+
+/**
+ * 火车票MAPPER接口
+ * @author 刘高峰
+ * @version 2023-03-11
+ */
+public interface TestDataChild1Mapper extends BaseMapper<TestDataChild1> {
+
+
+}

+ 17 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/mapper/TestDataChild2Mapper.java

@@ -0,0 +1,17 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.onetomany.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.test.onetomany.domain.TestDataChild2;
+
+/**
+ * 飞机票MAPPER接口
+ * @author 刘高峰
+ * @version 2023-03-11
+ */
+public interface TestDataChild2Mapper extends BaseMapper<TestDataChild2> {
+
+
+}

+ 17 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/mapper/TestDataChild3Mapper.java

@@ -0,0 +1,17 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.onetomany.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.test.onetomany.domain.TestDataChild3;
+
+/**
+ * 汽车票MAPPER接口
+ * @author 刘高峰
+ * @version 2023-03-11
+ */
+public interface TestDataChild3Mapper extends BaseMapper<TestDataChild3> {
+
+
+}

+ 37 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/mapper/TestDataMainMapper.java

@@ -0,0 +1,37 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.onetomany.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.onetomany.service.dto.TestDataMainDTO;
+import com.jeeplus.test.onetomany.domain.TestDataMain;
+
+/**
+ * 票务代理MAPPER接口
+ * @author 刘高峰
+ * @version 2023-03-11
+ */
+public interface TestDataMainMapper extends BaseMapper<TestDataMain> {
+
+    /**
+     * 根据id获取票务代理
+     * @param id
+     * @return
+     */
+    TestDataMainDTO findById(String id);
+
+    /**
+     * 获取票务代理列表
+     *
+     * @param queryWrapper
+     * @return
+     */
+    IPage <TestDataMainDTO> findList(Page <TestDataMainDTO> page, @Param(Constants.WRAPPER) QueryWrapper queryWrapper);
+
+}

+ 6 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/mapper/xml/TestDataChild1Mapper.xml

@@ -0,0 +1,6 @@
+<?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.jeeplus.test.onetomany.mapper.TestDataChild1Mapper">
+
+
+</mapper>

+ 6 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/mapper/xml/TestDataChild2Mapper.xml

@@ -0,0 +1,6 @@
+<?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.jeeplus.test.onetomany.mapper.TestDataChild2Mapper">
+
+
+</mapper>

+ 6 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/mapper/xml/TestDataChild3Mapper.xml

@@ -0,0 +1,6 @@
+<?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.jeeplus.test.onetomany.mapper.TestDataChild3Mapper">
+
+
+</mapper>

+ 51 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/mapper/xml/TestDataMainMapper.xml

@@ -0,0 +1,51 @@
+<?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.jeeplus.test.onetomany.mapper.TestDataMainMapper">
+
+	<sql id="testDataMainColumns">
+		a.id AS "id",
+		a.user_id AS "user.id",
+		a.office_id AS "office.id",
+		a.area AS "area",
+		a.name AS "name",
+		a.sex AS "sex",
+		a.file AS "file",
+		a.in_date AS "inDate",
+		a.tenant_id AS "tenantId",
+		a.create_by_id AS "createBy.id",
+		a.create_time AS "createTime",
+		a.update_by_id AS "updateBy.id",
+		a.update_time AS "updateTime",
+		a.remarks AS "remarks",
+		a.del_flag AS "delFlag",
+
+		user.name AS "user.name",
+
+		office.name AS "office.name"
+	</sql>
+
+	<sql id="testDataMainJoins">
+
+		LEFT JOIN sys_user user ON user.id = a.user_id
+		LEFT JOIN sys_office office ON office.id = a.office_id
+	</sql>
+
+
+
+	<select id="findById" resultType="com.jeeplus.test.onetomany.service.dto.TestDataMainDTO">
+		SELECT
+			<include refid="testDataMainColumns"/>
+		FROM test_data_main a
+		<include refid="testDataMainJoins"/>
+		WHERE a.id = #{id} and a.del_flag = 0
+	</select>
+
+	<select id="findList" resultType="com.jeeplus.test.onetomany.service.dto.TestDataMainDTO" >
+		SELECT
+			<include refid="testDataMainColumns"/>
+		FROM test_data_main a
+		<include refid="testDataMainJoins"/>
+	    ${ew.customSqlSegment}
+	</select>
+
+</mapper>

+ 34 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/service/TestDataChild1Service.java

@@ -0,0 +1,34 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.onetomany.service;
+
+import java.util.List;
+import java.util.stream.Collectors;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jeeplus.test.onetomany.service.mapstruct.TestDataChild1Wrapper;
+import com.jeeplus.test.onetomany.service.dto.TestDataChild1DTO;
+import com.jeeplus.test.onetomany.domain.TestDataChild1;
+import com.jeeplus.test.onetomany.mapper.TestDataChild1Mapper;
+
+/**
+ * 火车票Service
+ * @author 刘高峰
+ * @version 2023-03-11
+ */
+@Service
+@Transactional
+public class TestDataChild1Service extends ServiceImpl<TestDataChild1Mapper, TestDataChild1> {
+
+	/**
+	* 查询列表
+	* @param testDataMainId
+	* @return
+	*/
+	public List <TestDataChild1DTO> findList(String testDataMainId) {
+		return super.lambdaQuery ().eq ( TestDataChild1::getTestDataMainId, testDataMainId ).list ().stream ().map (TestDataChild1Wrapper.INSTANCE::toDTO ).collect( Collectors.toList());
+	}
+
+}

+ 34 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/service/TestDataChild2Service.java

@@ -0,0 +1,34 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.onetomany.service;
+
+import java.util.List;
+import java.util.stream.Collectors;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jeeplus.test.onetomany.service.mapstruct.TestDataChild2Wrapper;
+import com.jeeplus.test.onetomany.service.dto.TestDataChild2DTO;
+import com.jeeplus.test.onetomany.domain.TestDataChild2;
+import com.jeeplus.test.onetomany.mapper.TestDataChild2Mapper;
+
+/**
+ * 飞机票Service
+ * @author 刘高峰
+ * @version 2023-03-11
+ */
+@Service
+@Transactional
+public class TestDataChild2Service extends ServiceImpl<TestDataChild2Mapper, TestDataChild2> {
+
+	/**
+	* 查询列表
+	* @param testDataMainId
+	* @return
+	*/
+	public List <TestDataChild2DTO> findList(String testDataMainId) {
+		return super.lambdaQuery ().eq ( TestDataChild2::getTestDataMainId, testDataMainId ).list ().stream ().map (TestDataChild2Wrapper.INSTANCE::toDTO ).collect( Collectors.toList());
+	}
+
+}

+ 34 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/service/TestDataChild3Service.java

@@ -0,0 +1,34 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.onetomany.service;
+
+import java.util.List;
+import java.util.stream.Collectors;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jeeplus.test.onetomany.service.mapstruct.TestDataChild3Wrapper;
+import com.jeeplus.test.onetomany.service.dto.TestDataChild3DTO;
+import com.jeeplus.test.onetomany.domain.TestDataChild3;
+import com.jeeplus.test.onetomany.mapper.TestDataChild3Mapper;
+
+/**
+ * 汽车票Service
+ * @author 刘高峰
+ * @version 2023-03-11
+ */
+@Service
+@Transactional
+public class TestDataChild3Service extends ServiceImpl<TestDataChild3Mapper, TestDataChild3> {
+
+	/**
+	* 查询列表
+	* @param testDataMainId
+	* @return
+	*/
+	public List <TestDataChild3DTO> findList(String testDataMainId) {
+		return super.lambdaQuery ().eq ( TestDataChild3::getTestDataMainId, testDataMainId ).list ().stream ().map (TestDataChild3Wrapper.INSTANCE::toDTO ).collect( Collectors.toList());
+	}
+
+}

+ 125 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/service/TestDataMainService.java

@@ -0,0 +1,125 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.onetomany.service;
+
+import com.jeeplus.sys.constant.CommonConstants;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.onetomany.service.dto.TestDataMainDTO;
+import com.jeeplus.test.onetomany.service.dto.TestDataChild1DTO;
+import com.jeeplus.test.onetomany.service.dto.TestDataChild2DTO;
+import com.jeeplus.test.onetomany.service.dto.TestDataChild3DTO;
+import com.jeeplus.test.onetomany.service.mapstruct.TestDataMainWrapper;
+import com.jeeplus.test.onetomany.service.mapstruct.TestDataChild1Wrapper;
+import com.jeeplus.test.onetomany.service.mapstruct.TestDataChild2Wrapper;
+import com.jeeplus.test.onetomany.service.mapstruct.TestDataChild3Wrapper;
+import com.jeeplus.test.onetomany.domain.TestDataMain;
+import com.jeeplus.test.onetomany.domain.TestDataChild1;
+import com.jeeplus.test.onetomany.domain.TestDataChild2;
+import com.jeeplus.test.onetomany.domain.TestDataChild3;
+import com.jeeplus.test.onetomany.mapper.TestDataMainMapper;
+
+/**
+ * 票务代理Service
+ * @author 刘高峰
+ * @version 2023-03-11
+ */
+@Service
+@Transactional
+public class TestDataMainService extends ServiceImpl<TestDataMainMapper, TestDataMain> {
+	/**
+	* 子表service
+	*/
+	@Autowired
+	private TestDataChild1Service testDataChild1Service;
+	/**
+	* 子表service
+	*/
+	@Autowired
+	private TestDataChild2Service testDataChild2Service;
+	/**
+	* 子表service
+	*/
+	@Autowired
+	private TestDataChild3Service testDataChild3Service;
+
+	/**
+	 * 根据id查询
+	 * @param id
+	 * @return
+	 */
+	public TestDataMainDTO findById(String id) {
+		TestDataMainDTO testDataMainDTO = baseMapper.findById ( id );
+		testDataMainDTO.setTestDataChild1DTOList(testDataChild1Service.findList(id));
+		testDataMainDTO.setTestDataChild2DTOList(testDataChild2Service.findList(id));
+		testDataMainDTO.setTestDataChild3DTOList(testDataChild3Service.findList(id));
+		return testDataMainDTO;
+	}
+
+	/**
+	 * 自定义分页检索
+	 * @param page
+	 * @param queryWrapper
+	 * @return
+	 */
+	public IPage <TestDataMainDTO> findPage(Page <TestDataMainDTO> page, QueryWrapper queryWrapper) {
+		queryWrapper.eq ("a.del_flag", 0 ); // 排除已经删除
+		return  baseMapper.findList (page, queryWrapper);
+	}
+
+	/**
+	* 保存或者更新
+	* @param  testDataMainDTO
+	* @return
+	*/
+	public void saveOrUpdate(TestDataMainDTO testDataMainDTO) {
+		TestDataMain testDataMain =  TestDataMainWrapper.INSTANCE.toEntity ( testDataMainDTO );
+		super.saveOrUpdate (testDataMain);
+		for (TestDataChild1DTO testDataChild1DTO : testDataMainDTO.getTestDataChild1DTOList ()){
+			if ( CommonConstants.DELETED.equals ( testDataChild1DTO.getDelFlag()) ){
+				testDataChild1Service.removeById ( testDataChild1DTO.getId () );
+			}else{
+				TestDataChild1 testDataChild1 = TestDataChild1Wrapper.INSTANCE.toEntity ( testDataChild1DTO );
+				testDataChild1.setTestDataMainId ( testDataMain.getId () );
+				testDataChild1Service.saveOrUpdate ( testDataChild1 );
+			}
+		}
+		for (TestDataChild2DTO testDataChild2DTO : testDataMainDTO.getTestDataChild2DTOList ()){
+			if ( CommonConstants.DELETED.equals ( testDataChild2DTO.getDelFlag()) ){
+				testDataChild2Service.removeById ( testDataChild2DTO.getId () );
+			}else{
+				TestDataChild2 testDataChild2 = TestDataChild2Wrapper.INSTANCE.toEntity ( testDataChild2DTO );
+				testDataChild2.setTestDataMainId ( testDataMain.getId () );
+				testDataChild2Service.saveOrUpdate ( testDataChild2 );
+			}
+		}
+		for (TestDataChild3DTO testDataChild3DTO : testDataMainDTO.getTestDataChild3DTOList ()){
+			if ( CommonConstants.DELETED.equals ( testDataChild3DTO.getDelFlag()) ){
+				testDataChild3Service.removeById ( testDataChild3DTO.getId () );
+			}else{
+				TestDataChild3 testDataChild3 = TestDataChild3Wrapper.INSTANCE.toEntity ( testDataChild3DTO );
+				testDataChild3.setTestDataMainId ( testDataMain.getId () );
+				testDataChild3Service.saveOrUpdate ( testDataChild3 );
+			}
+		}
+	}
+
+	/**
+	 * 删除
+	 * @param  id
+	 * @return
+	 */
+	public void removeById(String id) {
+		super.removeById ( id );
+		testDataChild1Service.lambdaUpdate ().eq ( TestDataChild1::getTestDataMainId, id ).remove ();
+		testDataChild2Service.lambdaUpdate ().eq ( TestDataChild2::getTestDataMainId, id ).remove ();
+		testDataChild3Service.lambdaUpdate ().eq ( TestDataChild3::getTestDataMainId, id ).remove ();
+	}
+
+}

+ 60 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/service/dto/TestDataChild1DTO.java

@@ -0,0 +1,60 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.onetomany.service.dto;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+/**
+ * 火车票Entity
+ * @author 刘高峰
+ * @version 2023-03-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class TestDataChild1DTO extends BaseDTO {
+
+	private static final long serialVersionUID = 1L;
+
+	        
+	/**
+     * 出发地
+     */
+	private String startarea;
+	        
+	/**
+     * 目的地
+     */
+	private String endarea;
+	        
+	/**
+     * 出发时间
+     */
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date starttime;
+	        
+	/**
+     * 到达时间
+     */
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date endtime;
+	        
+	/**
+     * 代理价格
+     */
+	private Long price;
+	        
+	/**
+     * 业务主表ID
+     */
+	private TestDataMainDTO testDataMain;
+	        
+	/**
+     * 备注信息
+     */
+	private String remarks;
+
+}

+ 60 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/service/dto/TestDataChild2DTO.java

@@ -0,0 +1,60 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.onetomany.service.dto;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+/**
+ * 飞机票Entity
+ * @author 刘高峰
+ * @version 2023-03-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class TestDataChild2DTO extends BaseDTO {
+
+	private static final long serialVersionUID = 1L;
+
+	        
+	/**
+     * 出发地
+     */
+	private String startarea;
+	        
+	/**
+     * 目的地
+     */
+	private String endarea;
+	        
+	/**
+     * 出发时间
+     */
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date starttime;
+	        
+	/**
+     * 到达时间
+     */
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date endtime;
+	        
+	/**
+     * 代理价格
+     */
+	private Double price;
+	        
+	/**
+     * 外键
+     */
+	private TestDataMainDTO testDataMain;
+	        
+	/**
+     * 备注信息
+     */
+	private String remarks;
+
+}

+ 76 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/service/dto/TestDataChild3DTO.java

@@ -0,0 +1,76 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.onetomany.service.dto;
+
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.core.query.Query;
+import com.jeeplus.core.query.QueryType;
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+/**
+ * 汽车票Entity
+ * @author 刘高峰
+ * @version 2023-03-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class TestDataChild3DTO extends BaseDTO {
+
+	private static final long serialVersionUID = 1L;
+
+	        
+	/**
+     * 出发地
+     */
+    @Query(type = QueryType.EQ)
+	private String startarea;
+	        
+	/**
+     * 目的地
+     */
+    @Query(type = QueryType.EQ)
+	private String endarea;
+	        
+	/**
+     * 代理价格
+     */
+	private Double price;
+	        
+	/**
+     * 出发时间
+     */
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date starttime;
+	        
+	/**
+     * 到达时间
+     */
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date endtime;
+	        
+	/**
+     * 外键
+     */
+	private TestDataMainDTO testDataMain;
+	        
+	/**
+     * 创建时间
+     */
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date createDate;
+	        
+	/**
+     * 更新时间
+     */
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date updateDate;
+	        
+	/**
+     * 备注信息
+     */
+	private String remarks;
+
+}

+ 100 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/service/dto/TestDataMainDTO.java

@@ -0,0 +1,100 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.onetomany.service.dto;
+
+import com.jeeplus.sys.service.dto.UserDTO;
+import com.jeeplus.sys.service.dto.OfficeDTO;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.List;
+import com.google.common.collect.Lists;
+import com.jeeplus.core.query.Query;
+import com.jeeplus.core.query.QueryType;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.jeeplus.core.excel.converter.ExcelUserDTOConverter;
+import com.jeeplus.core.excel.converter.ExcelOfficeDTOConverter;
+import com.jeeplus.core.excel.converter.ExcelDictDTOConverter;
+import com.jeeplus.core.excel.annotation.ExcelDictProperty;
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+/**
+ * 票务代理Entity
+ * @author 刘高峰
+ * @version 2023-03-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class TestDataMainDTO extends BaseDTO {
+
+	private static final long serialVersionUID = 1L;
+
+	        
+	/**
+     * 用户
+     */
+    @Query(tableColumn = "a.user_id", javaField = "user.id", type = QueryType.EQ)
+    @ExcelProperty(value = "用户", converter = ExcelUserDTOConverter.class) 
+	private UserDTO user;
+	        
+	/**
+     * 所属部门
+     */
+    @Query(tableColumn = "a.office_id", javaField = "office.id", type = QueryType.EQ)
+    @ExcelProperty(value = "所属部门", converter = ExcelOfficeDTOConverter.class) 
+	private OfficeDTO office;
+	        
+	/**
+     * 所属区域
+     */
+    @Query(tableColumn = "a.area", javaField = "area", type = QueryType.EQ)
+	@ExcelProperty("所属区域") 
+	private String area;
+	        
+	/**
+     * 名称
+     */
+    @Query(tableColumn = "a.name", javaField = "name", type = QueryType.LIKE)
+	@ExcelProperty("名称") 
+	private String name;
+	        
+	/**
+     * 性别
+     */
+	@ExcelProperty(value = "性别", converter = ExcelDictDTOConverter.class) 
+	@ExcelDictProperty("sex")
+	private String sex;
+	        
+	/**
+     * 身份证照片
+     */
+	@ExcelProperty("身份证照片") 
+	private String file;
+	        
+	/**
+     * 加入日期
+     */
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	@ExcelProperty("加入日期") 
+	private Date inDate;
+	        
+	/**
+     * 备注信息
+     */
+	@ExcelProperty("备注信息") 
+	private String remarks;
+    /**
+     *子表列表
+     */
+	private List<TestDataChild1DTO> testDataChild1DTOList = Lists.newArrayList();
+    /**
+     *子表列表
+     */
+	private List<TestDataChild2DTO> testDataChild2DTOList = Lists.newArrayList();
+    /**
+     *子表列表
+     */
+	private List<TestDataChild3DTO> testDataChild3DTOList = Lists.newArrayList();
+
+}

+ 38 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/service/mapstruct/TestDataChild1Wrapper.java

@@ -0,0 +1,38 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.onetomany.service.mapstruct;
+
+
+import com.jeeplus.core.mapstruct.EntityWrapper;
+import com.jeeplus.test.onetomany.service.dto.TestDataChild1DTO;
+import com.jeeplus.test.onetomany.domain.TestDataChild1;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.Mappings;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+/**
+ *  TestDataChild1Wrapper
+ * @author 刘高峰
+ * @version 2023-03-11
+ */
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {} )
+public interface TestDataChild1Wrapper extends EntityWrapper<TestDataChild1DTO, TestDataChild1> {
+
+    TestDataChild1Wrapper INSTANCE = Mappers.getMapper(TestDataChild1Wrapper.class);
+     @Mappings({
+            @Mapping(source = "testDataMain.id", target = "testDataMainId"),
+            @Mapping(source = "createBy.id", target = "createById"),
+            @Mapping (source = "updateBy.id", target = "updateById")})
+    TestDataChild1 toEntity(TestDataChild1DTO dto);
+
+
+    @Mappings({
+            @Mapping(source = "testDataMainId", target = "testDataMain.id"),
+            @Mapping (source = "createById", target = "createBy.id"),
+            @Mapping (source = "updateById", target = "updateBy.id")})
+    TestDataChild1DTO toDTO(TestDataChild1 entity);
+}
+

+ 38 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/service/mapstruct/TestDataChild2Wrapper.java

@@ -0,0 +1,38 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.onetomany.service.mapstruct;
+
+
+import com.jeeplus.core.mapstruct.EntityWrapper;
+import com.jeeplus.test.onetomany.service.dto.TestDataChild2DTO;
+import com.jeeplus.test.onetomany.domain.TestDataChild2;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.Mappings;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+/**
+ *  TestDataChild2Wrapper
+ * @author 刘高峰
+ * @version 2023-03-11
+ */
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {} )
+public interface TestDataChild2Wrapper extends EntityWrapper<TestDataChild2DTO, TestDataChild2> {
+
+    TestDataChild2Wrapper INSTANCE = Mappers.getMapper(TestDataChild2Wrapper.class);
+     @Mappings({
+            @Mapping(source = "testDataMain.id", target = "testDataMainId"),
+            @Mapping(source = "createBy.id", target = "createById"),
+            @Mapping (source = "updateBy.id", target = "updateById")})
+    TestDataChild2 toEntity(TestDataChild2DTO dto);
+
+
+    @Mappings({
+            @Mapping(source = "testDataMainId", target = "testDataMain.id"),
+            @Mapping (source = "createById", target = "createBy.id"),
+            @Mapping (source = "updateById", target = "updateBy.id")})
+    TestDataChild2DTO toDTO(TestDataChild2 entity);
+}
+

+ 38 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/service/mapstruct/TestDataChild3Wrapper.java

@@ -0,0 +1,38 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.onetomany.service.mapstruct;
+
+
+import com.jeeplus.core.mapstruct.EntityWrapper;
+import com.jeeplus.test.onetomany.service.dto.TestDataChild3DTO;
+import com.jeeplus.test.onetomany.domain.TestDataChild3;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.Mappings;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+/**
+ *  TestDataChild3Wrapper
+ * @author 刘高峰
+ * @version 2023-03-11
+ */
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {} )
+public interface TestDataChild3Wrapper extends EntityWrapper<TestDataChild3DTO, TestDataChild3> {
+
+    TestDataChild3Wrapper INSTANCE = Mappers.getMapper(TestDataChild3Wrapper.class);
+     @Mappings({
+            @Mapping(source = "testDataMain.id", target = "testDataMainId"),
+            @Mapping(source = "createBy.id", target = "createById"),
+            @Mapping (source = "updateBy.id", target = "updateById")})
+    TestDataChild3 toEntity(TestDataChild3DTO dto);
+
+
+    @Mappings({
+            @Mapping(source = "testDataMainId", target = "testDataMain.id"),
+            @Mapping (source = "createById", target = "createBy.id"),
+            @Mapping (source = "updateById", target = "updateBy.id")})
+    TestDataChild3DTO toDTO(TestDataChild3 entity);
+}
+

+ 40 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/onetomany/service/mapstruct/TestDataMainWrapper.java

@@ -0,0 +1,40 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.onetomany.service.mapstruct;
+
+
+import com.jeeplus.core.mapstruct.EntityWrapper;
+import com.jeeplus.test.onetomany.service.dto.TestDataMainDTO;
+import com.jeeplus.test.onetomany.domain.TestDataMain;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.Mappings;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+/**
+ *  TestDataMainWrapper
+ * @author 刘高峰
+ * @version 2023-03-11
+ */
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {} )
+public interface TestDataMainWrapper extends EntityWrapper<TestDataMainDTO, TestDataMain> {
+
+    TestDataMainWrapper INSTANCE = Mappers.getMapper(TestDataMainWrapper.class);
+     @Mappings({
+            @Mapping(source = "user.id", target = "userId"),
+            @Mapping(source = "office.id", target = "officeId"),
+            @Mapping(source = "createBy.id", target = "createById"),
+            @Mapping (source = "updateBy.id", target = "updateById")})
+    TestDataMain toEntity(TestDataMainDTO dto);
+
+
+    @Mappings({
+            @Mapping(source = "userId", target = "user.id"),
+            @Mapping(source = "officeId", target = "office.id"),
+            @Mapping (source = "createById", target = "createBy.id"),
+            @Mapping (source = "updateById", target = "updateBy.id")})
+    TestDataMainDTO toDTO(TestDataMain entity);
+}
+

+ 154 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/pic/controller/TestPicController.java

@@ -0,0 +1,154 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.pic.controller;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import com.google.common.collect.Lists;
+import com.jeeplus.aop.logging.annotation.ApiLog;
+import com.jeeplus.core.excel.EasyExcelUtils;
+import com.jeeplus.core.excel.ExcelOptions;
+import com.jeeplus.core.excel.annotation.ExportMode;
+import com.jeeplus.core.query.QueryWrapperGenerator;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.pic.domain.TestPic;
+import com.jeeplus.test.pic.service.dto.TestPicDTO;
+import com.jeeplus.test.pic.service.mapstruct.TestPicWrapper;
+import com.jeeplus.test.pic.service.TestPicService;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * 图片Controller
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+
+@Api(tags ="图片")
+@RestController
+@RequestMapping(value = "/test/pic/testPic")
+public class TestPicController {
+
+	@Autowired
+	private TestPicService testPicService;
+
+	@Autowired
+	private TestPicWrapper testPicWrapper;
+
+	/**
+	 * 图片列表数据
+	 */
+	@ApiLog("查询图片列表数据")
+	@ApiOperation(value = "查询图片列表数据")
+	@PreAuthorize("hasAuthority('test:pic:testPic:list')")
+	@GetMapping("list")
+	public ResponseEntity<IPage<TestPicDTO>> list(TestPicDTO testPicDTO, Page<TestPic> page) throws Exception {
+		QueryWrapper queryWrapper = QueryWrapperGenerator.buildQueryCondition (testPicDTO, TestPicDTO.class);
+		IPage<TestPicDTO> result = testPicWrapper.toDTO ( testPicService.page (page, queryWrapper) );
+		return ResponseEntity.ok (result);
+	}
+
+
+	/**
+	 * 根据Id获取图片数据
+	 */
+	@ApiLog("根据Id获取图片数据")
+	@ApiOperation(value = "根据Id获取图片数据")
+	@PreAuthorize("hasAnyAuthority('test:pic:testPic:view','test:pic:testPic:add','test:pic:testPic:edit')")
+	@GetMapping("queryById")
+	public ResponseEntity<TestPicDTO> queryById(String id) {
+		return ResponseEntity.ok ( testPicWrapper.toDTO ( testPicService.getById ( id ) ) );
+	}
+
+	/**
+	 * 保存图片
+	 */
+	@ApiLog("保存图片")
+	@ApiOperation(value = "保存图片")
+	@PreAuthorize("hasAnyAuthority('test:pic:testPic:add','test:pic:testPic:edit')")
+	@PostMapping("save")
+	public  ResponseEntity <String> save(@Valid @RequestBody TestPicDTO testPicDTO) {
+		//新增或编辑表单保存
+		testPicService.saveOrUpdate (testPicWrapper.toEntity (testPicDTO));
+        return ResponseEntity.ok ( "保存图片成功" );
+	}
+
+
+	/**
+	 * 删除图片
+	 */
+	@ApiLog("删除图片")
+	@ApiOperation(value = "删除图片")
+	@PreAuthorize("hasAuthority('test:pic:testPic:del')")
+	@DeleteMapping("delete")
+	public ResponseEntity <String> delete(String ids) {
+		String idArray[] = ids.split(",");
+        testPicService.removeByIds ( Lists.newArrayList ( idArray ) );
+		return ResponseEntity.ok( "删除图片成功" );
+	}
+	
+    /**
+     * 导出图片数据
+     *
+     * @param testPicDTO
+     * @param page
+     * @param response
+     * @throws Exception
+     */
+    @ApiLog("导出图片数据")
+    @PreAuthorize("hasAnyAuthority('test:pic:testPic:export')")
+    @GetMapping("export")
+    public void exportFile(TestPicDTO testPicDTO, Page <TestPic> page, ExcelOptions options, HttpServletResponse response) throws Exception {
+        String fileName = options.getFilename ( );
+		QueryWrapper queryWrapper = QueryWrapperGenerator.buildQueryCondition (testPicDTO, TestPicDTO.class);
+        if ( ExportMode.current.equals ( options.getMode ( ) ) ) { // 导出当前页数据
+            
+        } else if ( ExportMode.selected.equals ( options.getMode ( ) ) ) { // 导出选中数据
+            queryWrapper.in ( "id", options.getSelectIds () );
+        } else { // 导出全部数据
+            page.setSize ( -1 );
+            page.setCurrent ( 0 );
+        }
+        List < TestPic> result = testPicService.page ( page, queryWrapper ).getRecords ( );
+        EasyExcelUtils.newInstance ( testPicService, testPicWrapper ).exportExcel ( result,  options.getSheetName ( ), TestPicDTO.class, fileName,options.getExportFields (), response );
+    }
+
+    /**
+     * 导入图片数据
+     *
+     * @return
+     */
+    @PreAuthorize("hasAnyAuthority('test:pic:testPic:import')")
+    @PostMapping("import")
+    public ResponseEntity importFile(MultipartFile file) throws IOException {
+        String result = EasyExcelUtils.newInstance ( testPicService, testPicWrapper ).importExcel ( file, TestPicDTO.class );
+        return ResponseEntity.ok ( result );
+    }
+
+    /**
+     * 下载导入图片数据模板
+     *
+     * @param response
+     * @return
+     */
+    @PreAuthorize ("hasAnyAuthority('test:pic:testPic:import')")
+    @GetMapping("import/template")
+    public void importFileTemplate(HttpServletResponse response) throws IOException {
+        String fileName = "图片数据导入模板.xlsx";
+        List<TestPicDTO> list = Lists.newArrayList();
+        EasyExcelUtils.newInstance ( testPicService, testPicWrapper ).exportExcel ( list,  "图片数据", TestPicDTO.class, fileName, null, response );
+    }
+
+
+}

+ 45 - 0
jp-console/jeeplus-modules/jeeplus-test/src/main/java/com/jeeplus/test/pic/domain/TestPic.java

@@ -0,0 +1,45 @@
+/**
+ * Copyright © 2021-2025 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.test.pic.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+/**
+ * 图片Entity
+ * @author 刘高峰
+ * @version 2023-02-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("test_pic")
+public class TestPic extends BaseEntity {
+
+	private static final long serialVersionUID = 1L;
+
+			
+	/**
+     * 标题
+     */
+	private String title;
+			
+	/**
+     * 图片路径
+     */
+	private String pic;
+			
+	/**
+     * 文件
+     */
+    @TableField("t_file")
+	private String file;
+			
+	/**
+     * 备注信息
+     */
+	private String remarks;
+
+}

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