From f9d622bb550c57106bb9a7aa3624318dd5444e4a Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Tue, 30 Aug 2022 16:54:15 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E5=B7=A5=E4=BD=9C=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E3=80=91=E6=9C=8D=E5=8A=A1=E6=97=B6=E9=97=B4=E4=BD=BF=E7=94=A8?= =?UTF-8?q?easyexcel=E8=BD=AC=E5=8C=96=E5=99=A8=E8=BF=9B=E8=A1=8Cjava?= =?UTF-8?q?=E5=92=8Cexcel=E6=95=B0=E6=8D=AE=E7=9A=84=E8=BD=AC=E6=8D=A2?= =?UTF-8?q?=EF=BC=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../excel/WorkdiaryServiceRecordExcel.java | 9 ++- ...orkDiaryServiceEasyExcelDateConverter.java | 59 +++++++++++++++++++ .../WorkdiaryServiceRecordServiceImpl.java | 42 ++++++------- 3 files changed, 84 insertions(+), 26 deletions(-) create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/converter/WorkDiaryServiceEasyExcelDateConverter.java diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/WorkdiaryServiceRecordExcel.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/WorkdiaryServiceRecordExcel.java index 13a9afdfdd..7aa4089643 100755 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/WorkdiaryServiceRecordExcel.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/WorkdiaryServiceRecordExcel.java @@ -7,6 +7,7 @@ import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.utils.poi.excel.converter.EasyExcelDateConverter; import com.epmet.dto.result.WorkdiaryServiceRecordDTO; +import com.epmet.excel.converter.WorkDiaryServiceEasyExcelDateConverter; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import lombok.NoArgsConstructor; @@ -63,10 +64,8 @@ public class WorkdiaryServiceRecordExcel { @NotNull(message = "服务时间必填") @ColumnWidth(20) - @ExcelProperty(value = "服务时间") - //@DateTimeFormat("yyyy-MM-dd") - //@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") - private String serviceTime; + @ExcelProperty(value = "服务时间", converter = WorkDiaryServiceEasyExcelDateConverter.class) + private Date serviceTime; @ColumnWidth(20) @ExcelProperty(value = "备注") @@ -74,6 +73,6 @@ public class WorkdiaryServiceRecordExcel { public WorkdiaryServiceRecordExcel(WorkdiaryServiceRecordDTO dto) { BeanUtil.copyProperties(dto, this); - this.serviceTime = DateUtils.format(dto.getServiceTime()); + //this.serviceTime = DateUtils.format(dto.getServiceTime()); } } \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/converter/WorkDiaryServiceEasyExcelDateConverter.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/converter/WorkDiaryServiceEasyExcelDateConverter.java new file mode 100644 index 0000000000..3c5e99b00c --- /dev/null +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/excel/converter/WorkDiaryServiceEasyExcelDateConverter.java @@ -0,0 +1,59 @@ +package com.epmet.excel.converter; + +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.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.temporal.ChronoUnit; +import java.util.Date; + +/** + * 框架:easyexcel + * 目的:工作日志(服务),对服务时间日期类型的转换 + */ +public class WorkDiaryServiceEasyExcelDateConverter implements Converter { + + private static final String PATTERN_YYYY_MM_DD = "yyyy-MM-dd"; + + /** + * excel内容转化为java时间 + * @param cellData + * @param contentProperty + * @param globalConfiguration + * @return + * @throws Exception + */ + public Date convertToJavaData(ReadCellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception { + if (cellData.getType() == CellDataTypeEnum.NUMBER) { + // 数字类型,是1900-01-03到excel中数据日期的天数差值 + LocalDateTime localDate = LocalDateTime.of(1900, 1, 1, 0, 0, 0) + // 不知为何,这个日期差值,多了2天,需要减去 + .minus(2L, ChronoUnit.DAYS) + .plus(cellData.getNumberValue().longValue(), ChronoUnit.DAYS); + return Date.from(localDate.atZone(ZoneId.systemDefault()).toInstant()); + } else { + // 字符串,正常格式化 + Date dateData = new SimpleDateFormat(PATTERN_YYYY_MM_DD).parse(cellData.getStringValue()); + return dateData; + } + } + + /** + * java日期转为excel内容 + * @param value + * @param contentProperty + * @param globalConfiguration + * @return + * @throws Exception + */ + public WriteCellData convertToExcelData(Date value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception { + String dataStr = new SimpleDateFormat(PATTERN_YYYY_MM_DD).format(value); + return new WriteCellData(dataStr); + } +} \ No newline at end of file diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkdiaryServiceRecordServiceImpl.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkdiaryServiceRecordServiceImpl.java index 7534b9a918..6128631c8a 100755 --- a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkdiaryServiceRecordServiceImpl.java +++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/service/impl/WorkdiaryServiceRecordServiceImpl.java @@ -480,26 +480,26 @@ public class WorkdiaryServiceRecordServiceImpl extends BaseServiceImpl