From 2f85b35bd5128b99b8215e6fd039591e49107d42 Mon Sep 17 00:00:00 2001 From: lbw Date: Thu, 30 Mar 2023 23:03:58 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20Introducing=20new=20features.=20?= =?UTF-8?q?=E6=94=AF=E6=8C=81=20LocalTime=20=E7=B1=BB=E5=9E=8B=E8=BD=AC?= =?UTF-8?q?=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../aop/RequestExcelArgumentResolver.java | 6 +- .../converters/LocalTimeStringConverter.java | 63 +++++++++++++++++++ .../handler/AbstractSheetWriteHandler.java | 6 +- 3 files changed, 67 insertions(+), 8 deletions(-) create mode 100644 pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/converters/LocalTimeStringConverter.java diff --git a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/aop/RequestExcelArgumentResolver.java b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/aop/RequestExcelArgumentResolver.java index 2d3ea9751..994f94e78 100644 --- a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/aop/RequestExcelArgumentResolver.java +++ b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/aop/RequestExcelArgumentResolver.java @@ -2,10 +2,7 @@ package com.pig4cloud.pigx.common.excel.aop; import com.alibaba.excel.EasyExcel; import com.pig4cloud.pigx.common.excel.annotation.RequestExcel; -import com.pig4cloud.pigx.common.excel.converters.LocalDateStringConverter; -import com.pig4cloud.pigx.common.excel.converters.LocalDateTimeStringConverter; -import com.pig4cloud.pigx.common.excel.converters.LongStringConverter; -import com.pig4cloud.pigx.common.excel.converters.StringArrayConverter; +import com.pig4cloud.pigx.common.excel.converters.*; import com.pig4cloud.pigx.common.excel.handler.ListAnalysisEventListener; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @@ -75,6 +72,7 @@ public class RequestExcelArgumentResolver implements HandlerMethodArgumentResolv // 这里需要指定读用哪个 class 去读,然后读取第一个 sheet 文件流会自动关闭 EasyExcel.read(inputStream, excelModelClass, readListener).registerConverter(LocalDateStringConverter.INSTANCE) + .registerConverter(LocalTimeStringConverter.INSTANCE) .registerConverter(LocalDateTimeStringConverter.INSTANCE) .registerConverter(LongStringConverter.INSTANCE).registerConverter(StringArrayConverter.INSTANCE) .ignoreEmptyRow(requestExcel.ignoreEmptyRow()).sheet().headRowNumber(requestExcel.headRowNumber()) diff --git a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/converters/LocalTimeStringConverter.java b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/converters/LocalTimeStringConverter.java new file mode 100644 index 000000000..ac180f51c --- /dev/null +++ b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/converters/LocalTimeStringConverter.java @@ -0,0 +1,63 @@ +package com.pig4cloud.pigx.common.excel.converters; + +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.GlobalConfiguration; +import com.alibaba.excel.metadata.data.ReadCellData; +import com.alibaba.excel.metadata.data.WriteCellData; +import com.alibaba.excel.metadata.property.ExcelContentProperty; + +import java.text.ParseException; +import java.time.LocalDate; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; + +/** + * LocalDate and string converter + * + * @author L.cm + */ +public enum LocalTimeStringConverter implements Converter { + + /** + * 实例 + */ + INSTANCE; + + @Override + public Class supportJavaTypeKey() { + return LocalTime.class; + } + + @Override + public CellDataTypeEnum supportExcelTypeKey() { + return CellDataTypeEnum.STRING; + } + + @Override + public LocalTime convertToJavaData(ReadCellData cellData, ExcelContentProperty contentProperty, + GlobalConfiguration globalConfiguration) throws ParseException { + if (contentProperty == null || contentProperty.getDateTimeFormatProperty() == null) { + return LocalTime.parse(cellData.getStringValue()); + } + else { + DateTimeFormatter formatter = DateTimeFormatter + .ofPattern(contentProperty.getDateTimeFormatProperty().getFormat()); + return LocalTime.parse(cellData.getStringValue(), formatter); + } + } + + @Override + public WriteCellData convertToExcelData(LocalTime value, ExcelContentProperty contentProperty, + GlobalConfiguration globalConfiguration) { + DateTimeFormatter formatter; + if (contentProperty == null || contentProperty.getDateTimeFormatProperty() == null) { + formatter = DateTimeFormatter.ISO_LOCAL_TIME; + } + else { + formatter = DateTimeFormatter.ofPattern(contentProperty.getDateTimeFormatProperty().getFormat()); + } + return new WriteCellData<>(value.format(formatter)); + } + +} diff --git a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/handler/AbstractSheetWriteHandler.java b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/handler/AbstractSheetWriteHandler.java index 52251b6d4..353e17c82 100644 --- a/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/handler/AbstractSheetWriteHandler.java +++ b/pigx-common/pigx-common-excel/src/main/java/com/pig4cloud/pigx/common/excel/handler/AbstractSheetWriteHandler.java @@ -11,15 +11,12 @@ import com.pig4cloud.pigx.common.excel.annotation.ResponseExcel; import com.pig4cloud.pigx.common.excel.annotation.Sheet; import com.pig4cloud.pigx.common.excel.aop.DynamicNameAspect; import com.pig4cloud.pigx.common.excel.config.ExcelConfigProperties; -import com.pig4cloud.pigx.common.excel.converters.LongStringConverter; -import com.pig4cloud.pigx.common.excel.converters.StringArrayConverter; +import com.pig4cloud.pigx.common.excel.converters.*; import com.pig4cloud.pigx.common.excel.enhance.WriterBuilderEnhancer; import com.pig4cloud.pigx.common.excel.head.HeadGenerator; import com.pig4cloud.pigx.common.excel.head.HeadMeta; import com.pig4cloud.pigx.common.excel.head.I18nHeaderCellWriteHandler; import com.pig4cloud.pigx.common.excel.kit.ExcelException; -import com.pig4cloud.pigx.common.excel.converters.LocalDateStringConverter; -import com.pig4cloud.pigx.common.excel.converters.LocalDateTimeStringConverter; import lombok.Getter; import lombok.RequiredArgsConstructor; import lombok.Setter; @@ -108,6 +105,7 @@ public abstract class AbstractSheetWriteHandler implements SheetWriteHandler, Ap @SneakyThrows(IOException.class) public ExcelWriter getExcelWriter(HttpServletResponse response, ResponseExcel responseExcel) { ExcelWriterBuilder writerBuilder = EasyExcel.write(response.getOutputStream()) + .registerConverter(LocalTimeStringConverter.INSTANCE) .registerConverter(LocalDateStringConverter.INSTANCE) .registerConverter(LocalDateTimeStringConverter.INSTANCE) .registerConverter(LongStringConverter.INSTANCE).registerConverter(StringArrayConverter.INSTANCE)