涂强
1 week ago
commit
93d33183d2
19 changed files with 1091 additions and 0 deletions
@ -0,0 +1,8 @@ |
|||||
|
# Default ignored files |
||||
|
/shelf/ |
||||
|
/workspace.xml |
||||
|
# Datasource local storage ignored files |
||||
|
/dataSources/ |
||||
|
/dataSources.local.xml |
||||
|
# Editor-based HTTP Client requests |
||||
|
/httpRequests/ |
@ -0,0 +1,20 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<project version="4"> |
||||
|
<component name="CompilerConfiguration"> |
||||
|
<annotationProcessing> |
||||
|
<profile default="true" name="Default" enabled="true" /> |
||||
|
<profile name="Maven default annotation processors profile" enabled="true"> |
||||
|
<sourceOutputDir name="target/generated-sources/annotations" /> |
||||
|
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" /> |
||||
|
<outputRelativeToContentRoot value="true" /> |
||||
|
<module name="test" /> |
||||
|
</profile> |
||||
|
</annotationProcessing> |
||||
|
<bytecodeTargetLevel target="8" /> |
||||
|
</component> |
||||
|
<component name="JavacSettings"> |
||||
|
<option name="ADDITIONAL_OPTIONS_OVERRIDE"> |
||||
|
<module name="test" options="-parameters" /> |
||||
|
</option> |
||||
|
</component> |
||||
|
</project> |
@ -0,0 +1,7 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<project version="4"> |
||||
|
<component name="Encoding"> |
||||
|
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" /> |
||||
|
<file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" /> |
||||
|
</component> |
||||
|
</project> |
@ -0,0 +1,36 @@ |
|||||
|
<component name="InspectionProjectProfileManager"> |
||||
|
<profile version="1.0"> |
||||
|
<option name="myName" value="Project Default" /> |
||||
|
<inspection_tool class="JavaDoc" enabled="true" level="WARNING" enabled_by_default="true"> |
||||
|
<option name="TOP_LEVEL_CLASS_OPTIONS"> |
||||
|
<value> |
||||
|
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" /> |
||||
|
<option name="REQUIRED_TAGS" value="" /> |
||||
|
</value> |
||||
|
</option> |
||||
|
<option name="INNER_CLASS_OPTIONS"> |
||||
|
<value> |
||||
|
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" /> |
||||
|
<option name="REQUIRED_TAGS" value="" /> |
||||
|
</value> |
||||
|
</option> |
||||
|
<option name="METHOD_OPTIONS"> |
||||
|
<value> |
||||
|
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" /> |
||||
|
<option name="REQUIRED_TAGS" value="@return@param@throws or @exception" /> |
||||
|
</value> |
||||
|
</option> |
||||
|
<option name="FIELD_OPTIONS"> |
||||
|
<value> |
||||
|
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" /> |
||||
|
<option name="REQUIRED_TAGS" value="" /> |
||||
|
</value> |
||||
|
</option> |
||||
|
<option name="IGNORE_DEPRECATED" value="false" /> |
||||
|
<option name="IGNORE_JAVADOC_PERIOD" value="true" /> |
||||
|
<option name="IGNORE_DUPLICATED_THROWS" value="false" /> |
||||
|
<option name="IGNORE_POINT_TO_ITSELF" value="false" /> |
||||
|
<option name="myAdditionalJavadocTags" value="date" /> |
||||
|
</inspection_tool> |
||||
|
</profile> |
||||
|
</component> |
@ -0,0 +1,20 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<project version="4"> |
||||
|
<component name="RemoteRepositoriesConfiguration"> |
||||
|
<remote-repository> |
||||
|
<option name="id" value="central" /> |
||||
|
<option name="name" value="Central Repository" /> |
||||
|
<option name="url" value="http://121.40.234.130:8081/repository/maven-public/" /> |
||||
|
</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="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> |
@ -0,0 +1,14 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<project version="4"> |
||||
|
<component name="ExternalStorageConfigurationManager" enabled="true" /> |
||||
|
<component name="MavenProjectsManager"> |
||||
|
<option name="originalFiles"> |
||||
|
<list> |
||||
|
<option value="$PROJECT_DIR$/pom.xml" /> |
||||
|
</list> |
||||
|
</option> |
||||
|
</component> |
||||
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK"> |
||||
|
<output url="file://$PROJECT_DIR$/out" /> |
||||
|
</component> |
||||
|
</project> |
@ -0,0 +1,124 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<project version="4"> |
||||
|
<component name="Palette2"> |
||||
|
<group name="Swing"> |
||||
|
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false"> |
||||
|
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" /> |
||||
|
</item> |
||||
|
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false"> |
||||
|
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" /> |
||||
|
</item> |
||||
|
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false"> |
||||
|
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" /> |
||||
|
</item> |
||||
|
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true"> |
||||
|
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" /> |
||||
|
</item> |
||||
|
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false"> |
||||
|
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" /> |
||||
|
<initial-values> |
||||
|
<property name="text" value="Button" /> |
||||
|
</initial-values> |
||||
|
</item> |
||||
|
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false"> |
||||
|
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" /> |
||||
|
<initial-values> |
||||
|
<property name="text" value="RadioButton" /> |
||||
|
</initial-values> |
||||
|
</item> |
||||
|
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false"> |
||||
|
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" /> |
||||
|
<initial-values> |
||||
|
<property name="text" value="CheckBox" /> |
||||
|
</initial-values> |
||||
|
</item> |
||||
|
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false"> |
||||
|
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" /> |
||||
|
<initial-values> |
||||
|
<property name="text" value="Label" /> |
||||
|
</initial-values> |
||||
|
</item> |
||||
|
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true"> |
||||
|
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"> |
||||
|
<preferred-size width="150" height="-1" /> |
||||
|
</default-constraints> |
||||
|
</item> |
||||
|
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true"> |
||||
|
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"> |
||||
|
<preferred-size width="150" height="-1" /> |
||||
|
</default-constraints> |
||||
|
</item> |
||||
|
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true"> |
||||
|
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"> |
||||
|
<preferred-size width="150" height="-1" /> |
||||
|
</default-constraints> |
||||
|
</item> |
||||
|
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true"> |
||||
|
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> |
||||
|
<preferred-size width="150" height="50" /> |
||||
|
</default-constraints> |
||||
|
</item> |
||||
|
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true"> |
||||
|
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> |
||||
|
<preferred-size width="150" height="50" /> |
||||
|
</default-constraints> |
||||
|
</item> |
||||
|
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true"> |
||||
|
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> |
||||
|
<preferred-size width="150" height="50" /> |
||||
|
</default-constraints> |
||||
|
</item> |
||||
|
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true"> |
||||
|
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" /> |
||||
|
</item> |
||||
|
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false"> |
||||
|
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> |
||||
|
<preferred-size width="150" height="50" /> |
||||
|
</default-constraints> |
||||
|
</item> |
||||
|
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false"> |
||||
|
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3"> |
||||
|
<preferred-size width="150" height="50" /> |
||||
|
</default-constraints> |
||||
|
</item> |
||||
|
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false"> |
||||
|
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> |
||||
|
<preferred-size width="150" height="50" /> |
||||
|
</default-constraints> |
||||
|
</item> |
||||
|
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false"> |
||||
|
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3"> |
||||
|
<preferred-size width="200" height="200" /> |
||||
|
</default-constraints> |
||||
|
</item> |
||||
|
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false"> |
||||
|
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3"> |
||||
|
<preferred-size width="200" height="200" /> |
||||
|
</default-constraints> |
||||
|
</item> |
||||
|
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true"> |
||||
|
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" /> |
||||
|
</item> |
||||
|
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false"> |
||||
|
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" /> |
||||
|
</item> |
||||
|
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false"> |
||||
|
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" /> |
||||
|
</item> |
||||
|
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false"> |
||||
|
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" /> |
||||
|
</item> |
||||
|
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false"> |
||||
|
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1"> |
||||
|
<preferred-size width="-1" height="20" /> |
||||
|
</default-constraints> |
||||
|
</item> |
||||
|
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false"> |
||||
|
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" /> |
||||
|
</item> |
||||
|
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false"> |
||||
|
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" /> |
||||
|
</item> |
||||
|
</group> |
||||
|
</component> |
||||
|
</project> |
@ -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> |
@ -0,0 +1,540 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" |
||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
||||
|
<modelVersion>4.0.0</modelVersion> |
||||
|
<parent> |
||||
|
<groupId>org.springframework.boot</groupId> |
||||
|
<artifactId>spring-boot-starter-parent</artifactId> |
||||
|
<version>2.2.10.RELEASE</version> |
||||
|
</parent> |
||||
|
|
||||
|
<groupId>org.nl</groupId> |
||||
|
<artifactId>test</artifactId> |
||||
|
<version>1.0-SNAPSHOT</version> |
||||
|
|
||||
|
<properties> |
||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> |
||||
|
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> |
||||
|
<java.version>1.8</java.version> |
||||
|
<log4jdbc.version>1.16</log4jdbc.version> |
||||
|
<druid.version>1.1.22</druid.version> |
||||
|
<mapstruct.version>1.2.0.Final</mapstruct.version> |
||||
|
<sa-token.version>1.31.0</sa-token.version> |
||||
|
<hutool.version>5.8.22</hutool.version> |
||||
|
<jjwt.version>0.11.1</jjwt.version> |
||||
|
<lucene.version>8.2.0</lucene.version> |
||||
|
<!-- <lucene.version>7.6.0</lucene.version>--> |
||||
|
<!-- oshi监控需要指定jna版本, 问题详见 https://github.com/oshi/oshi/issues/1040 --> |
||||
|
<jna.version>5.9.0</jna.version> |
||||
|
<configuration.version>1.9</configuration.version> |
||||
|
<commons-csv.version>1.8</commons-csv.version> |
||||
|
</properties> |
||||
|
<dependencies> |
||||
|
<!-- https://mvnrepository.com/artifact/org.jetbrains/annotations --> |
||||
|
<dependency> |
||||
|
<groupId>org.jetbrains</groupId> |
||||
|
<artifactId>annotations</artifactId> |
||||
|
<version>13.0</version> |
||||
|
</dependency> |
||||
|
<dependency> |
||||
|
<groupId>org.codehaus.groovy</groupId> |
||||
|
<artifactId>groovy-all</artifactId> |
||||
|
<version>3.0.13</version> |
||||
|
<type>pom</type> |
||||
|
</dependency> |
||||
|
|
||||
|
|
||||
|
<dependency> |
||||
|
<groupId>org.dromara.dynamictp</groupId> |
||||
|
<artifactId>dynamic-tp-spring-boot-starter-adapter-webserver</artifactId> |
||||
|
<version>1.1.7</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<!-- Lucence核心包 --> |
||||
|
<dependency> |
||||
|
<groupId>com.yomahub</groupId> |
||||
|
<artifactId>tlog-all-spring-boot-starter</artifactId> |
||||
|
<version>1.5.0</version> |
||||
|
</dependency> |
||||
|
<dependency> |
||||
|
<groupId>org.apache.lucene</groupId> |
||||
|
<artifactId>lucene-core</artifactId> |
||||
|
<version>${lucene.version}</version> |
||||
|
</dependency> |
||||
|
<dependency> |
||||
|
<groupId>org.apache.lucene</groupId> |
||||
|
<artifactId>lucene-highlighter</artifactId> |
||||
|
<version>${lucene.version}</version> |
||||
|
</dependency> |
||||
|
<dependency> |
||||
|
<groupId>org.apache.lucene</groupId> |
||||
|
<artifactId>lucene-analyzers-common</artifactId> |
||||
|
<version>${lucene.version}</version> |
||||
|
</dependency> |
||||
|
<dependency> |
||||
|
<groupId>com.github.magese</groupId> |
||||
|
<artifactId>ik-analyzer</artifactId> |
||||
|
<version>${lucene.version}</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<!--支持中文分词 --> |
||||
|
<dependency> |
||||
|
<groupId>org.apache.lucene</groupId> |
||||
|
<artifactId>lucene-analyzers-smartcn</artifactId> |
||||
|
<version>${lucene.version}</version> |
||||
|
</dependency> |
||||
|
<!-- Lucene查询解析包 --> |
||||
|
<dependency> |
||||
|
<groupId>org.apache.lucene</groupId> |
||||
|
<artifactId>lucene-queryparser</artifactId> |
||||
|
<version>${lucene.version}</version> |
||||
|
</dependency> |
||||
|
|
||||
|
|
||||
|
<!-- 日志链路追踪 https://tlog.yomahub.com/pages/f62a84/#%E5%90%8C%E6%AD%A5%E6%97%A5%E5%BF%97--> |
||||
|
<!--<dependency> |
||||
|
<groupId>com.yomahub</groupId> |
||||
|
<artifactId>tlog-all-spring-boot-starter</artifactId> |
||||
|
<version>1.5.0</version> |
||||
|
</dependency>--> |
||||
|
|
||||
|
<!-- 获取系统信息 --> |
||||
|
<dependency> |
||||
|
<groupId>com.github.oshi</groupId> |
||||
|
<artifactId>oshi-core</artifactId> |
||||
|
<version>5.0.1</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<!-- logback appender日志--> |
||||
|
<dependency> |
||||
|
<groupId>com.internetitem</groupId> |
||||
|
<artifactId>logback-elasticsearch-appender</artifactId> |
||||
|
<version>1.6</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<!-- https://onew.me/logback/2018/09/17/logback_win.html--> |
||||
|
<dependency> |
||||
|
<groupId>org.fusesource.jansi</groupId> |
||||
|
<artifactId>jansi</artifactId> |
||||
|
<version>1.9</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<!--工具包--> |
||||
|
<dependency> |
||||
|
<groupId>cn.hutool</groupId> |
||||
|
<artifactId>hutool-all</artifactId> |
||||
|
<version>${hutool.version}</version> |
||||
|
</dependency> |
||||
|
<!--Spring boot 核心 --> |
||||
|
|
||||
|
<dependency> |
||||
|
<groupId>com.github.pagehelper</groupId> |
||||
|
<artifactId>pagehelper-spring-boot-starter</artifactId> |
||||
|
<version>1.2.12</version> |
||||
|
<exclusions> |
||||
|
<exclusion> |
||||
|
<groupId>org.mybatis</groupId> |
||||
|
<artifactId>mybatis</artifactId> |
||||
|
</exclusion> |
||||
|
</exclusions> |
||||
|
</dependency> |
||||
|
<!--Spring boot Web容器--> |
||||
|
<dependency> |
||||
|
<groupId>org.springframework.boot</groupId> |
||||
|
<artifactId>spring-boot-starter-web</artifactId> |
||||
|
</dependency> |
||||
|
|
||||
|
<!--Spring boot 测试--> |
||||
|
<dependency> |
||||
|
<groupId>org.springframework.boot</groupId> |
||||
|
<artifactId>spring-boot-starter-test</artifactId> |
||||
|
<scope>test</scope> |
||||
|
</dependency> |
||||
|
|
||||
|
<!-- Sa-Token 权限认证 安全框架, 在线文档:http://sa-token.dev33.cn/ --> |
||||
|
<dependency> |
||||
|
<groupId>cn.dev33</groupId> |
||||
|
<artifactId>sa-token-spring-boot-starter</artifactId> |
||||
|
<version>${sa-token.version}</version> |
||||
|
</dependency> |
||||
|
<dependency> |
||||
|
<groupId>cn.dev33</groupId> |
||||
|
<artifactId>sa-token-sso</artifactId> |
||||
|
<version>${sa-token.version}</version> |
||||
|
</dependency> |
||||
|
<!-- Sa-Token 整合 jwt --> |
||||
|
<dependency> |
||||
|
<groupId>cn.dev33</groupId> |
||||
|
<artifactId>sa-token-jwt</artifactId> |
||||
|
<version>${sa-token.version}</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<!-- spring boot 缓存 --> |
||||
|
<dependency> |
||||
|
<groupId>org.springframework.boot</groupId> |
||||
|
<artifactId>spring-boot-starter-cache</artifactId> |
||||
|
</dependency> |
||||
|
|
||||
|
<dependency> |
||||
|
<groupId>org.apache.commons</groupId> |
||||
|
<artifactId>commons-lang3</artifactId> |
||||
|
</dependency> |
||||
|
|
||||
|
<!--监控sql日志--> |
||||
|
<dependency> |
||||
|
<groupId>org.bgee.log4jdbc-log4j2</groupId> |
||||
|
<artifactId>log4jdbc-log4j2-jdbc4.1</artifactId> |
||||
|
<version>${log4jdbc.version}</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<!--Mysql依赖包--> |
||||
|
<dependency> |
||||
|
<groupId>mysql</groupId> |
||||
|
<artifactId>mysql-connector-java</artifactId> |
||||
|
</dependency> |
||||
|
|
||||
|
<!-- druid数据源驱动 --> |
||||
|
<dependency> |
||||
|
<groupId>com.alibaba</groupId> |
||||
|
<artifactId>druid-spring-boot-starter</artifactId> |
||||
|
<version>${druid.version}</version> |
||||
|
</dependency> |
||||
|
<!--lombok插件--> |
||||
|
<dependency> |
||||
|
<groupId>org.projectlombok</groupId> |
||||
|
<artifactId>lombok</artifactId> |
||||
|
<optional>true</optional> |
||||
|
</dependency> |
||||
|
<dependency> |
||||
|
<groupId>cn.dev33</groupId> |
||||
|
<artifactId>sa-token-dao-redis</artifactId> |
||||
|
<version>1.31.0</version> |
||||
|
</dependency> |
||||
|
<dependency> |
||||
|
<groupId>com.baomidou</groupId> |
||||
|
<artifactId>mybatis-plus-boot-starter</artifactId> |
||||
|
<version>3.4.0</version> |
||||
|
</dependency> |
||||
|
<dependency> |
||||
|
<groupId>org.apache.velocity</groupId> |
||||
|
<artifactId>velocity-engine-core</artifactId> |
||||
|
<version>2.3</version> |
||||
|
</dependency> |
||||
|
<dependency> |
||||
|
<groupId>com.baomidou</groupId> |
||||
|
<artifactId>mybatis-plus-generator</artifactId> |
||||
|
<version>3.4.0</version> |
||||
|
</dependency> |
||||
|
<dependency> |
||||
|
<groupId>xerces</groupId> |
||||
|
<artifactId>xercesImpl</artifactId> |
||||
|
<version>2.12.0</version> |
||||
|
</dependency> |
||||
|
|
||||
|
|
||||
|
<!--mapStruct依赖--> |
||||
|
<dependency> |
||||
|
<groupId>org.mapstruct</groupId> |
||||
|
<artifactId>mapstruct</artifactId> |
||||
|
<version>${mapstruct.version}</version> |
||||
|
</dependency> |
||||
|
<dependency> |
||||
|
<groupId>org.mapstruct</groupId> |
||||
|
<artifactId>mapstruct-processor</artifactId> |
||||
|
<version>${mapstruct.version}</version> |
||||
|
<scope>provided</scope> |
||||
|
</dependency> |
||||
|
<dependency> |
||||
|
<groupId>javax.inject</groupId> |
||||
|
<artifactId>javax.inject</artifactId> |
||||
|
<version>1</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<!-- Java图形验证码 --> |
||||
|
<dependency> |
||||
|
<groupId>com.github.whvcse</groupId> |
||||
|
<artifactId>easy-captcha</artifactId> |
||||
|
<version>1.6.2</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<!-- 解析客户端操作系统、浏览器信息 --> |
||||
|
<dependency> |
||||
|
<groupId>nl.basjes.parse.useragent</groupId> |
||||
|
<artifactId>yauaa</artifactId> |
||||
|
<version>5.23</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<dependency> |
||||
|
<groupId>eu.bitwalker</groupId> |
||||
|
<artifactId>UserAgentUtils</artifactId> |
||||
|
<version>1.21</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<!--WQL--> |
||||
|
<dependency> |
||||
|
<groupId>com.hynnet</groupId> |
||||
|
<artifactId>jxl</artifactId> |
||||
|
<version>2.6.12.1</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<dependency> |
||||
|
<groupId>commons-beanutils</groupId> |
||||
|
<artifactId>commons-beanutils-core</artifactId> |
||||
|
<version>1.8.0</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<!--接口限流--> |
||||
|
<dependency> |
||||
|
<groupId>org.springframework.boot</groupId> |
||||
|
<artifactId>spring-boot-starter-aop</artifactId> |
||||
|
</dependency> |
||||
|
|
||||
|
<!--模板引擎--> |
||||
|
<dependency> |
||||
|
<groupId>org.springframework.boot</groupId> |
||||
|
<artifactId>spring-boot-starter-freemarker</artifactId> |
||||
|
</dependency> |
||||
|
|
||||
|
<!-- https://mvnrepository.com/artifact/commons-configuration/commons-configuration --> |
||||
|
<dependency> |
||||
|
<groupId>commons-configuration</groupId> |
||||
|
<artifactId>commons-configuration</artifactId> |
||||
|
<version>${configuration.version}</version> |
||||
|
</dependency> |
||||
|
<!-- ****************** --> |
||||
|
<dependency> |
||||
|
<groupId>com.alicp.jetcache</groupId> |
||||
|
<artifactId>jetcache-starter-redis</artifactId> |
||||
|
<version>2.5.14</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<dependency> |
||||
|
<groupId>com.oracle.database.jdbc</groupId> |
||||
|
<artifactId>ojdbc5</artifactId> |
||||
|
<version>11.2.0.4</version> |
||||
|
</dependency> |
||||
|
|
||||
|
|
||||
|
<!-- https://www.jianshu.com/p/e40d111c7bfc?utm_source=oschina-app 热部署 https://zhuanlan.zhihu.com/p/63381268--> |
||||
|
|
||||
|
<!-- Spring boot websocket --> |
||||
|
<dependency> |
||||
|
<groupId>org.springframework.boot</groupId> |
||||
|
<artifactId>spring-boot-starter-websocket</artifactId> |
||||
|
</dependency> |
||||
|
<dependency> |
||||
|
<groupId>org.redisson</groupId> |
||||
|
<artifactId>redisson-spring-boot-starter</artifactId> |
||||
|
<version>3.16.4</version> |
||||
|
</dependency> |
||||
|
<!-- jwt --> |
||||
|
<dependency> |
||||
|
<groupId>io.jsonwebtoken</groupId> |
||||
|
<artifactId>jjwt-impl</artifactId> |
||||
|
<version>${jjwt.version}</version> |
||||
|
</dependency> |
||||
|
<dependency> |
||||
|
<groupId>io.jsonwebtoken</groupId> |
||||
|
<artifactId>jjwt-jackson</artifactId> |
||||
|
<version>${jjwt.version}</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<!-- quartz --> |
||||
|
<dependency> |
||||
|
<groupId>org.quartz-scheduler</groupId> |
||||
|
<artifactId>quartz</artifactId> |
||||
|
</dependency> |
||||
|
|
||||
|
<!-- linux的管理 --> |
||||
|
<dependency> |
||||
|
<groupId>ch.ethz.ganymed</groupId> |
||||
|
<artifactId>ganymed-ssh2</artifactId> |
||||
|
<version>build210</version> |
||||
|
</dependency> |
||||
|
<dependency> |
||||
|
<groupId>com.jcraft</groupId> |
||||
|
<artifactId>jsch</artifactId> |
||||
|
<version>0.1.55</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<!-- 导入Excel相关--> |
||||
|
<dependency> |
||||
|
<groupId>com.alibaba</groupId> |
||||
|
<artifactId>easyexcel</artifactId> |
||||
|
<version>2.2.6</version> |
||||
|
</dependency> |
||||
|
<dependency> |
||||
|
<groupId>org.json</groupId> |
||||
|
<artifactId>json</artifactId> |
||||
|
<version>20131018</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<dependency> |
||||
|
<groupId>commons-io</groupId> |
||||
|
<artifactId>commons-io</artifactId> |
||||
|
<version>2.8.0</version> |
||||
|
</dependency> |
||||
|
<dependency> |
||||
|
<groupId>org.openscada.jinterop</groupId> |
||||
|
<artifactId>org.openscada.jinterop.core</artifactId> |
||||
|
<version>2.1.8</version> |
||||
|
<exclusions> |
||||
|
<exclusion> |
||||
|
<groupId>org.bouncycastle</groupId> |
||||
|
<artifactId>bcprov-jdk15on</artifactId> |
||||
|
</exclusion> |
||||
|
</exclusions> |
||||
|
</dependency> |
||||
|
<dependency> |
||||
|
<groupId>org.openscada.jinterop</groupId> |
||||
|
<artifactId>org.openscada.jinterop.deps</artifactId> |
||||
|
<version>1.5.0</version> |
||||
|
<exclusions> |
||||
|
<exclusion> |
||||
|
<groupId>org.bouncycastle</groupId> |
||||
|
<artifactId>bcprov-jdk15on</artifactId> |
||||
|
</exclusion> |
||||
|
</exclusions> |
||||
|
</dependency> |
||||
|
<dependency> |
||||
|
<groupId>org.openscada.utgard</groupId> |
||||
|
<artifactId>org.openscada.opc.dcom</artifactId> |
||||
|
<version>1.5.0</version> |
||||
|
</dependency> |
||||
|
<dependency> |
||||
|
<groupId>org.openscada.utgard</groupId> |
||||
|
<artifactId>org.openscada.opc.lib</artifactId> |
||||
|
<version>1.5.0</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<dependency> |
||||
|
<groupId>org.bouncycastle</groupId> |
||||
|
<artifactId>bcprov-jdk15on</artifactId> |
||||
|
<version>1.54</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<!--导出CSV相关--> |
||||
|
<dependency> |
||||
|
<groupId>org.apache.commons</groupId> |
||||
|
<artifactId>commons-csv</artifactId> |
||||
|
<version>${commons-csv.version}</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<dependency> |
||||
|
<groupId>org.apache.poi</groupId> |
||||
|
<artifactId>poi</artifactId> |
||||
|
<version>4.1.2</version> |
||||
|
</dependency> |
||||
|
<dependency> |
||||
|
<groupId>org.apache.poi</groupId> |
||||
|
<artifactId>poi-ooxml</artifactId> |
||||
|
<version>4.1.2</version> |
||||
|
</dependency> |
||||
|
<dependency> |
||||
|
<groupId>org.apache.poi</groupId> |
||||
|
<artifactId>poi-ooxml-schemas</artifactId> |
||||
|
<version>4.1.2</version> |
||||
|
</dependency> |
||||
|
<dependency> |
||||
|
<groupId>org.springframework.retry</groupId> |
||||
|
<artifactId>spring-retry</artifactId> |
||||
|
<version>1.2.5.RELEASE</version> |
||||
|
</dependency> |
||||
|
<dependency> |
||||
|
<groupId>io.swagger</groupId> |
||||
|
<artifactId>swagger-annotations</artifactId> |
||||
|
<version>1.5.22</version> |
||||
|
</dependency> |
||||
|
<dependency> |
||||
|
<groupId>junit</groupId> |
||||
|
<artifactId>junit</artifactId> |
||||
|
<version>4.11</version> |
||||
|
<scope>test</scope> |
||||
|
</dependency> |
||||
|
<!--Milo客户端的依赖--> |
||||
|
<dependency> |
||||
|
<groupId>org.eclipse.milo</groupId> |
||||
|
<artifactId>sdk-client</artifactId> |
||||
|
<version>0.6.3</version> |
||||
|
</dependency> |
||||
|
<!--Milo客户端的依赖--> |
||||
|
<dependency> |
||||
|
<groupId>org.eclipse.milo</groupId> |
||||
|
<artifactId>sdk-server</artifactId> |
||||
|
<version>0.6.3</version> |
||||
|
</dependency> |
||||
|
<!--<dependency> |
||||
|
<groupId>xerces</groupId> |
||||
|
<artifactId>xercesImpl</artifactId> |
||||
|
<version>2.12.0</version> |
||||
|
</dependency>--> |
||||
|
|
||||
|
<dependency> |
||||
|
<groupId>org.apache.poi</groupId> |
||||
|
<artifactId>poi-ooxml</artifactId> |
||||
|
<version>5.2.5</version> |
||||
|
</dependency> |
||||
|
<dependency> |
||||
|
<groupId>com.alibaba</groupId> |
||||
|
<artifactId>easyexcel</artifactId> |
||||
|
<version>3.1.0</version> |
||||
|
</dependency> |
||||
|
</dependencies> |
||||
|
|
||||
|
<build> |
||||
|
<finalName>${project.artifactId}</finalName> |
||||
|
<plugins> |
||||
|
<plugin> |
||||
|
<groupId>org.springframework.boot</groupId> |
||||
|
<artifactId>spring-boot-maven-plugin</artifactId> |
||||
|
<version>2.2.10.RELEASE</version> |
||||
|
<configuration> |
||||
|
<mainClass>org.nl.AppRun</mainClass> |
||||
|
<fork>true</fork> <!-- 如果没有该配置,devtools不会生效 --> |
||||
|
|
||||
|
</configuration> |
||||
|
<executions> |
||||
|
<execution> |
||||
|
<goals> |
||||
|
<goal>repackage</goal> |
||||
|
</goals> |
||||
|
</execution> |
||||
|
</executions> |
||||
|
</plugin> |
||||
|
<plugin> |
||||
|
<groupId>org.apache.maven.plugins</groupId> |
||||
|
<artifactId>maven-war-plugin</artifactId> |
||||
|
<version>3.2.2</version> |
||||
|
<configuration> |
||||
|
<failOnMissingWebXml>false</failOnMissingWebXml> |
||||
|
<warName>${project.artifactId}</warName> |
||||
|
</configuration> |
||||
|
</plugin> |
||||
|
</plugins> |
||||
|
|
||||
|
<!--把包路径下所有的文件(如.wql)都编译打包到target中,默认只能打包java文件--> |
||||
|
<resources> |
||||
|
<resource> |
||||
|
<directory>${basedir}/src/main/java</directory> |
||||
|
<includes> |
||||
|
<include>**/*.*</include> |
||||
|
</includes> |
||||
|
<excludes> |
||||
|
<exclude>**/*.java</exclude> |
||||
|
</excludes> |
||||
|
</resource> |
||||
|
<resource> |
||||
|
<directory>${basedir}/src/main/resources</directory> |
||||
|
<includes> |
||||
|
<include>**/*.*</include> |
||||
|
</includes> |
||||
|
</resource> |
||||
|
</resources> |
||||
|
|
||||
|
</build> |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
</project> |
@ -0,0 +1,5 @@ |
|||||
|
package org.nl.demo; |
||||
|
|
||||
|
public class Demo1 { |
||||
|
|
||||
|
} |
@ -0,0 +1,14 @@ |
|||||
|
package org.nl.fill; |
||||
|
|
||||
|
import lombok.Data; |
||||
|
import lombok.EqualsAndHashCode; |
||||
|
|
||||
|
import java.util.Date; |
||||
|
|
||||
|
@Data |
||||
|
@EqualsAndHashCode |
||||
|
public class FillData { |
||||
|
private String name; |
||||
|
private double number; |
||||
|
private Date date; |
||||
|
} |
@ -0,0 +1,223 @@ |
|||||
|
package org.nl.fill; |
||||
|
|
||||
|
import com.alibaba.excel.EasyExcel; |
||||
|
import com.alibaba.excel.ExcelWriter; |
||||
|
import com.alibaba.excel.enums.WriteDirectionEnum; |
||||
|
import com.alibaba.excel.util.ListUtils; |
||||
|
import com.alibaba.excel.util.MapUtils; |
||||
|
import com.alibaba.excel.write.metadata.WriteSheet; |
||||
|
import com.alibaba.excel.write.metadata.fill.FillConfig; |
||||
|
import com.alibaba.excel.write.metadata.fill.FillWrapper; |
||||
|
import org.junit.jupiter.api.Test; |
||||
|
import org.nl.util.TestFileUtil; |
||||
|
|
||||
|
import java.io.File; |
||||
|
import java.util.Date; |
||||
|
import java.util.HashMap; |
||||
|
import java.util.List; |
||||
|
import java.util.Map; |
||||
|
|
||||
|
public class FillTest { |
||||
|
/** |
||||
|
* 最简单的填充 |
||||
|
* |
||||
|
* @since 2.1.1 |
||||
|
*/ |
||||
|
@Test |
||||
|
public void simpleFill() { |
||||
|
// 模板注意 用{} 来表示你要用的变量 如果本来就有"{","}" 特殊字符 用"\{","\}"代替
|
||||
|
String templateFileName = |
||||
|
TestFileUtil.getPath() + "demo" + File.separator + "fill" + File.separator + "simple.xlsx"; |
||||
|
|
||||
|
// 方案1 根据对象填充
|
||||
|
String fileName = TestFileUtil.getPath() + "simpleFill" + System.currentTimeMillis() + ".xlsx"; |
||||
|
// 这里 会填充到第一个sheet, 然后文件流会自动关闭
|
||||
|
FillData fillData = new FillData(); |
||||
|
fillData.setName("张三"); |
||||
|
fillData.setNumber(5.2); |
||||
|
EasyExcel.write(fileName).withTemplate(templateFileName).sheet().doFill(fillData); |
||||
|
|
||||
|
// 方案2 根据Map填充
|
||||
|
fileName = TestFileUtil.getPath() + "simpleFill" + System.currentTimeMillis() + ".xlsx"; |
||||
|
// 这里 会填充到第一个sheet, 然后文件流会自动关闭
|
||||
|
Map<String, Object> map = MapUtils.newHashMap(); |
||||
|
map.put("name", "张三"); |
||||
|
map.put("number", 5.2); |
||||
|
EasyExcel.write(fileName).withTemplate(templateFileName).sheet().doFill(map); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 填充列表 |
||||
|
* |
||||
|
* @since 2.1.1 |
||||
|
*/ |
||||
|
@Test |
||||
|
public void listFill() { |
||||
|
// 模板注意 用{} 来表示你要用的变量 如果本来就有"{","}" 特殊字符 用"\{","\}"代替
|
||||
|
// 填充list 的时候还要注意 模板中{.} 多了个点 表示list
|
||||
|
// 如果填充list的对象是map,必须包涵所有list的key,哪怕数据为null,必须使用map.put(key,null)
|
||||
|
String templateFileName = |
||||
|
TestFileUtil.getPath() + "demo" + File.separator + "fill" + File.separator + "list.xlsx"; |
||||
|
|
||||
|
// 方案1 一下子全部放到内存里面 并填充
|
||||
|
String fileName = TestFileUtil.getPath() + "listFill" + System.currentTimeMillis() + ".xlsx"; |
||||
|
// 这里 会填充到第一个sheet, 然后文件流会自动关闭
|
||||
|
EasyExcel.write(fileName).withTemplate(templateFileName).sheet().doFill(data()); |
||||
|
|
||||
|
// 方案2 分多次 填充 会使用文件缓存(省内存)
|
||||
|
fileName = TestFileUtil.getPath() + "listFill" + System.currentTimeMillis() + ".xlsx"; |
||||
|
try (ExcelWriter excelWriter = EasyExcel.write(fileName).withTemplate(templateFileName).build()) { |
||||
|
WriteSheet writeSheet = EasyExcel.writerSheet().build(); |
||||
|
excelWriter.fill(data(), writeSheet); |
||||
|
excelWriter.fill(data(), writeSheet); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 复杂的填充 |
||||
|
* |
||||
|
* @since 2.1.1 |
||||
|
*/ |
||||
|
@Test |
||||
|
public void complexFill() { |
||||
|
// 模板注意 用{} 来表示你要用的变量 如果本来就有"{","}" 特殊字符 用"\{","\}"代替
|
||||
|
// {} 代表普通变量 {.} 代表是list的变量
|
||||
|
String templateFileName = |
||||
|
TestFileUtil.getPath() + "demo" + File.separator + "fill" + File.separator + "complex.xlsx"; |
||||
|
|
||||
|
String fileName = TestFileUtil.getPath() + "complexFill" + System.currentTimeMillis() + ".xlsx"; |
||||
|
// 方案1
|
||||
|
try (ExcelWriter excelWriter = EasyExcel.write(fileName).withTemplate(templateFileName).build()) { |
||||
|
WriteSheet writeSheet = EasyExcel.writerSheet().build(); |
||||
|
// 这里注意 入参用了forceNewRow 代表在写入list的时候不管list下面有没有空行 都会创建一行,然后下面的数据往后移动。默认 是false,会直接使用下一行,如果没有则创建。
|
||||
|
// forceNewRow 如果设置了true,有个缺点 就是他会把所有的数据都放到内存了,所以慎用
|
||||
|
// 简单的说 如果你的模板有list,且list不是最后一行,下面还有数据需要填充 就必须设置 forceNewRow=true 但是这个就会把所有数据放到内存 会很耗内存
|
||||
|
// 如果数据量大 list不是最后一行 参照下一个
|
||||
|
FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build(); |
||||
|
excelWriter.fill(data(), fillConfig, writeSheet); |
||||
|
excelWriter.fill(data(), fillConfig, writeSheet); |
||||
|
Map<String, Object> map = MapUtils.newHashMap(); |
||||
|
map.put("date", "2019年10月9日13:28:28"); |
||||
|
map.put("total", 1000); |
||||
|
excelWriter.fill(map, writeSheet); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 数据量大的复杂填充 |
||||
|
* <p> |
||||
|
* 这里的解决方案是 确保模板list为最后一行,然后再拼接table.还有03版没救,只能刚正面加内存。 |
||||
|
* |
||||
|
* @since 2.1.1 |
||||
|
*/ |
||||
|
@Test |
||||
|
public void complexFillWithTable() { |
||||
|
// 模板注意 用{} 来表示你要用的变量 如果本来就有"{","}" 特殊字符 用"\{","\}"代替
|
||||
|
// {} 代表普通变量 {.} 代表是list的变量
|
||||
|
// 这里模板 删除了list以后的数据,也就是统计的这一行
|
||||
|
String templateFileName = |
||||
|
TestFileUtil.getPath() + "demo" + File.separator + "fill" + File.separator + "complexFillWithTable.xlsx"; |
||||
|
|
||||
|
String fileName = TestFileUtil.getPath() + "complexFillWithTable" + System.currentTimeMillis() + ".xlsx"; |
||||
|
|
||||
|
// 方案1
|
||||
|
try (ExcelWriter excelWriter = EasyExcel.write(fileName).withTemplate(templateFileName).build()) { |
||||
|
WriteSheet writeSheet = EasyExcel.writerSheet().build(); |
||||
|
// 直接写入数据
|
||||
|
excelWriter.fill(data(), writeSheet); |
||||
|
excelWriter.fill(data(), writeSheet); |
||||
|
|
||||
|
// 写入list之前的数据
|
||||
|
Map<String, Object> map = new HashMap<String, Object>(); |
||||
|
map.put("date", "2019年10月9日13:28:28"); |
||||
|
excelWriter.fill(map, writeSheet); |
||||
|
|
||||
|
// list 后面还有个统计 想办法手动写入
|
||||
|
// 这里偷懒直接用list 也可以用对象
|
||||
|
List<List<String>> totalListList = ListUtils.newArrayList(); |
||||
|
List<String> totalList = ListUtils.newArrayList(); |
||||
|
totalListList.add(totalList); |
||||
|
totalList.add(null); |
||||
|
totalList.add(null); |
||||
|
totalList.add(null); |
||||
|
// 第四列
|
||||
|
totalList.add("统计:1000"); |
||||
|
// 这里是write 别和fill 搞错了
|
||||
|
excelWriter.write(totalListList, writeSheet); |
||||
|
// 总体上写法比较复杂 但是也没有想到好的版本 异步的去写入excel 不支持行的删除和移动,也不支持备注这种的写入,所以也排除了可以
|
||||
|
// 新建一个 然后一点点复制过来的方案,最后导致list需要新增行的时候,后面的列的数据没法后移,后续会继续想想解决方案
|
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 横向的填充 |
||||
|
* |
||||
|
* @since 2.1.1 |
||||
|
*/ |
||||
|
@Test |
||||
|
public void horizontalFill() { |
||||
|
// 模板注意 用{} 来表示你要用的变量 如果本来就有"{","}" 特殊字符 用"\{","\}"代替
|
||||
|
// {} 代表普通变量 {.} 代表是list的变量
|
||||
|
String templateFileName = |
||||
|
TestFileUtil.getPath() + "demo" + File.separator + "fill" + File.separator + "horizontal.xlsx"; |
||||
|
|
||||
|
String fileName = TestFileUtil.getPath() + "horizontalFill" + System.currentTimeMillis() + ".xlsx"; |
||||
|
// 方案1
|
||||
|
try (ExcelWriter excelWriter = EasyExcel.write(fileName).withTemplate(templateFileName).build()) { |
||||
|
WriteSheet writeSheet = EasyExcel.writerSheet().build(); |
||||
|
FillConfig fillConfig = FillConfig.builder().direction(WriteDirectionEnum.HORIZONTAL).build(); |
||||
|
excelWriter.fill(data(), fillConfig, writeSheet); |
||||
|
excelWriter.fill(data(), fillConfig, writeSheet); |
||||
|
|
||||
|
Map<String, Object> map = new HashMap<>(); |
||||
|
map.put("date", "2019年10月9日13:28:28"); |
||||
|
excelWriter.fill(map, writeSheet); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 多列表组合填充填充 |
||||
|
* |
||||
|
* @since 2.2.0-beta1 |
||||
|
*/ |
||||
|
@Test |
||||
|
public void compositeFill() { |
||||
|
// 模板注意 用{} 来表示你要用的变量 如果本来就有"{","}" 特殊字符 用"\{","\}"代替
|
||||
|
// {} 代表普通变量 {.} 代表是list的变量 {前缀.} 前缀可以区分不同的list
|
||||
|
String templateFileName = |
||||
|
TestFileUtil.getPath() + "demo" + File.separator + "fill" + File.separator + "composite.xlsx"; |
||||
|
|
||||
|
String fileName = TestFileUtil.getPath() + "compositeFill" + System.currentTimeMillis() + ".xlsx"; |
||||
|
|
||||
|
// 方案1
|
||||
|
try (ExcelWriter excelWriter = EasyExcel.write(fileName).withTemplate(templateFileName).build()) { |
||||
|
WriteSheet writeSheet = EasyExcel.writerSheet().build(); |
||||
|
FillConfig fillConfig = FillConfig.builder().direction(WriteDirectionEnum.HORIZONTAL).build(); |
||||
|
// 如果有多个list 模板上必须有{前缀.} 这里的前缀就是 data1,然后多个list必须用 FillWrapper包裹
|
||||
|
excelWriter.fill(new FillWrapper("data1", data()), fillConfig, writeSheet); |
||||
|
excelWriter.fill(new FillWrapper("data1", data()), fillConfig, writeSheet); |
||||
|
excelWriter.fill(new FillWrapper("data2", data()), writeSheet); |
||||
|
excelWriter.fill(new FillWrapper("data2", data()), writeSheet); |
||||
|
excelWriter.fill(new FillWrapper("data3", data()), writeSheet); |
||||
|
excelWriter.fill(new FillWrapper("data3", data()), writeSheet); |
||||
|
|
||||
|
Map<String, Object> map = new HashMap<String, Object>(); |
||||
|
//map.put("date", "2019年10月9日13:28:28");
|
||||
|
map.put("date", new Date()); |
||||
|
|
||||
|
excelWriter.fill(map, writeSheet); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
private List<FillData> data() { |
||||
|
List<FillData> list = ListUtils.newArrayList(); |
||||
|
for (int i = 0; i < 10; i++) { |
||||
|
FillData fillData = new FillData(); |
||||
|
list.add(fillData); |
||||
|
fillData.setName("张三"); |
||||
|
fillData.setNumber(5.2); |
||||
|
fillData.setDate(new Date()); |
||||
|
} |
||||
|
return list; |
||||
|
} |
||||
|
} |
@ -0,0 +1,74 @@ |
|||||
|
package org.nl.util; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
||||
|
|
||||
|
import java.io.File; |
||||
|
import java.io.InputStream; |
||||
|
import java.util.ArrayList; |
||||
|
import java.util.List; |
||||
|
|
||||
|
public class TestFileUtil { |
||||
|
public static InputStream getResourcesFileInputStream(String fileName) { |
||||
|
return Thread.currentThread().getContextClassLoader().getResourceAsStream("" + fileName); |
||||
|
} |
||||
|
|
||||
|
public static String getPath() { |
||||
|
return TestFileUtil.class.getResource("/").getPath(); |
||||
|
} |
||||
|
|
||||
|
public static TestPathBuild pathBuild() { |
||||
|
return new TestPathBuild(); |
||||
|
} |
||||
|
|
||||
|
public static File createNewFile(String pathName) { |
||||
|
File file = new File(getPath() + pathName); |
||||
|
if (file.exists()) { |
||||
|
file.delete(); |
||||
|
} else { |
||||
|
if (!file.getParentFile().exists()) { |
||||
|
file.getParentFile().mkdirs(); |
||||
|
} |
||||
|
} |
||||
|
return file; |
||||
|
} |
||||
|
|
||||
|
public static File readFile(String pathName) { |
||||
|
return new File(getPath() + pathName); |
||||
|
} |
||||
|
|
||||
|
public static File readUserHomeFile(String pathName) { |
||||
|
return new File(System.getProperty("user.home") + File.separator + pathName); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* build to test file path |
||||
|
**/ |
||||
|
public static class TestPathBuild { |
||||
|
private TestPathBuild() { |
||||
|
subPath = new ArrayList<>(); |
||||
|
} |
||||
|
|
||||
|
private final List<String> subPath; |
||||
|
|
||||
|
public TestPathBuild sub(String dirOrFile) { |
||||
|
subPath.add(dirOrFile); |
||||
|
return this; |
||||
|
} |
||||
|
|
||||
|
public String getPath() { |
||||
|
if (CollectionUtils.isEmpty(subPath)) { |
||||
|
return TestFileUtil.class.getResource("/").getPath(); |
||||
|
} |
||||
|
if (subPath.size() == 1) { |
||||
|
return TestFileUtil.class.getResource("/").getPath() + subPath.get(0); |
||||
|
} |
||||
|
StringBuilder path = new StringBuilder(TestFileUtil.class.getResource("/").getPath()); |
||||
|
path.append(subPath.get(0)); |
||||
|
for (int i = 1; i < subPath.size(); i++) { |
||||
|
path.append(File.separator).append(subPath.get(i)); |
||||
|
} |
||||
|
return path.toString(); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in new issue