From e027706ed9c126ff6bd36c12beb14ddb96f08082 Mon Sep 17 00:00:00 2001 From: wusn Date: Sat, 25 Jun 2022 23:08:32 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0Excel=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + pom.xml | 6 ++ snowflake-distributed-service-impl/pom.xml | 4 + .../service/GenerateExcelServiceImpl.java | 73 +++++++++++++++++++ .../service/GenerateExcelServiceImplTest.java | 28 +++++++ .../resources/snowflake/snowflake.properties | 2 + .../resources/snowflake/snowflake.properties | 2 + .../stack/service/GenerateExcelService.java | 29 ++++++++ 8 files changed, 145 insertions(+) create mode 100644 snowflake-distributed-service-impl/src/main/java/com/dwarfeng/sfds/impl/service/GenerateExcelServiceImpl.java create mode 100644 snowflake-distributed-service-impl/src/test/java/com/dwarfeng/sfds/impl/service/GenerateExcelServiceImplTest.java create mode 100644 snowflake-distributed-service-impl/src/test/resources/snowflake/snowflake.properties create mode 100644 snowflake-distributed-service-node/src/main/resources/snowflake/snowflake.properties create mode 100644 snowflake-distributed-service-stack/src/main/java/com/dwarfeng/sfds/stack/service/GenerateExcelService.java diff --git a/.gitignore b/.gitignore index 6f8d2b4..012e0a4 100644 --- a/.gitignore +++ b/.gitignore @@ -62,3 +62,4 @@ buildNumber.properties /snowflake-distributed-service-node/conf/ /snowflake-distributed-service-impl/conf/ /snowflake-distributed-service-api/conf/ +/snowflake-distributed-service-impl/snowflake.xlsx diff --git a/pom.xml b/pom.xml index e28b862..b2e4546 100644 --- a/pom.xml +++ b/pom.xml @@ -43,6 +43,7 @@ 1.2.7.a 1.0.7.a 1.1.3.a + 3.1.1 3.1.0 2.2 @@ -358,6 +359,11 @@ dutil-develop ${dutil.version} + + com.alibaba + easyexcel + ${easyexcel.version} + com.dwarfeng diff --git a/snowflake-distributed-service-impl/pom.xml b/snowflake-distributed-service-impl/pom.xml index 8648ee3..17a324c 100644 --- a/snowflake-distributed-service-impl/pom.xml +++ b/snowflake-distributed-service-impl/pom.xml @@ -71,6 +71,10 @@ com.dwarfeng spring-telqos-core + + com.alibaba + easyexcel + com.dwarfeng diff --git a/snowflake-distributed-service-impl/src/main/java/com/dwarfeng/sfds/impl/service/GenerateExcelServiceImpl.java b/snowflake-distributed-service-impl/src/main/java/com/dwarfeng/sfds/impl/service/GenerateExcelServiceImpl.java new file mode 100644 index 0000000..6ceca56 --- /dev/null +++ b/snowflake-distributed-service-impl/src/main/java/com/dwarfeng/sfds/impl/service/GenerateExcelServiceImpl.java @@ -0,0 +1,73 @@ +package com.dwarfeng.sfds.impl.service; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.annotation.ExcelProperty; +import com.dwarfeng.sfds.stack.service.GenerateExcelService; +import com.dwarfeng.sfds.stack.service.LongIdService; +import com.dwarfeng.subgrade.stack.exception.ServiceException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +@Service +public class GenerateExcelServiceImpl implements GenerateExcelService { + + @Autowired + private LongIdService longIdService; + + @Value("${snowflake.excel.out.path}") + private String outPath; + + @Value("${snowflake.excel.line.number}") + private int lineNumber; + + @Override + public void generateExcel() throws ServiceException { + EasyExcel.write(outPath, Row.class).sheet("sheet1").doWrite(write(lineNumber)); + } + + @Override + public void generateExcel(int lineNumber) throws ServiceException { + EasyExcel.write(outPath, Row.class).sheet("sheet1").doWrite(write(lineNumber)); + } + + private List write(int lineNumber) throws ServiceException { + List sheet = new ArrayList<>(); + for (int i = 0; i < lineNumber; i++ ) { + Row row = new Row(); + row.setId(Long.toString(longIdService.nextLongId())); + sheet.add(row); + } + return sheet; + } + + private static class Row { + @ExcelProperty("id") + private String id; + + public Row() { + } + + public Row(String id) { + this.id = id; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + @Override + public String toString() { + return "Row{" + + "id='" + id + '\'' + + '}'; + } + } +} diff --git a/snowflake-distributed-service-impl/src/test/java/com/dwarfeng/sfds/impl/service/GenerateExcelServiceImplTest.java b/snowflake-distributed-service-impl/src/test/java/com/dwarfeng/sfds/impl/service/GenerateExcelServiceImplTest.java new file mode 100644 index 0000000..4acac68 --- /dev/null +++ b/snowflake-distributed-service-impl/src/test/java/com/dwarfeng/sfds/impl/service/GenerateExcelServiceImplTest.java @@ -0,0 +1,28 @@ +package com.dwarfeng.sfds.impl.service; + +import com.dwarfeng.sfds.stack.service.GenerateExcelService; +import com.dwarfeng.subgrade.stack.exception.ServiceException; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(locations = "classpath:spring/application-context*.xml") +public class GenerateExcelServiceImplTest { + + @Autowired + private GenerateExcelService generateExcelService; + + @Test + public void generateExcelWithoutParma()throws ServiceException { + generateExcelService.generateExcel(); + } + + @Test + public void generateExcel()throws ServiceException { + generateExcelService.generateExcel(100); + } + +} diff --git a/snowflake-distributed-service-impl/src/test/resources/snowflake/snowflake.properties b/snowflake-distributed-service-impl/src/test/resources/snowflake/snowflake.properties new file mode 100644 index 0000000..da6339d --- /dev/null +++ b/snowflake-distributed-service-impl/src/test/resources/snowflake/snowflake.properties @@ -0,0 +1,2 @@ +snowflake.excel.out.path=snowflake.xlsx +snowflake.excel.line.number=100 diff --git a/snowflake-distributed-service-node/src/main/resources/snowflake/snowflake.properties b/snowflake-distributed-service-node/src/main/resources/snowflake/snowflake.properties new file mode 100644 index 0000000..da6339d --- /dev/null +++ b/snowflake-distributed-service-node/src/main/resources/snowflake/snowflake.properties @@ -0,0 +1,2 @@ +snowflake.excel.out.path=snowflake.xlsx +snowflake.excel.line.number=100 diff --git a/snowflake-distributed-service-stack/src/main/java/com/dwarfeng/sfds/stack/service/GenerateExcelService.java b/snowflake-distributed-service-stack/src/main/java/com/dwarfeng/sfds/stack/service/GenerateExcelService.java new file mode 100644 index 0000000..3058c1c --- /dev/null +++ b/snowflake-distributed-service-stack/src/main/java/com/dwarfeng/sfds/stack/service/GenerateExcelService.java @@ -0,0 +1,29 @@ +package com.dwarfeng.sfds.stack.service; + +import com.dwarfeng.subgrade.stack.exception.ServiceException; +import com.dwarfeng.subgrade.stack.service.Service; + +/** + * Excel文件雪花ID生成器。 + * + * @author wusn + * @since 1.4.6 + */ +public interface GenerateExcelService extends Service { + + /** + * 生成包含雪花ID的Excel表格。(雪花ID个数由配置文件指定) + * + * @throws ServiceException 服务异常。 + */ + void generateExcel() throws ServiceException; + + /** + * 生成包含雪花ID的Excel表格。 + * + * @param lineNumber 生成Excel的总行数(即雪花ID的个数)。 + * @throws ServiceException 服务异常。 + */ + void generateExcel(int lineNumber) throws ServiceException; + +} -- Gitee