diff --git a/backend/src/main/java/ru/micord/ervu/journal/mapper/JournalDtoMapper.java b/backend/src/main/java/ru/micord/ervu/journal/mapper/JournalDtoMapper.java index b2dfbafa..f23b7fb4 100644 --- a/backend/src/main/java/ru/micord/ervu/journal/mapper/JournalDtoMapper.java +++ b/backend/src/main/java/ru/micord/ervu/journal/mapper/JournalDtoMapper.java @@ -1,8 +1,9 @@ package ru.micord.ervu.journal.mapper; -import java.time.OffsetDateTime; +import java.time.LocalDateTime; import java.time.ZoneOffset; import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatter; import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.tables.records.InteractionLogRecord; import ru.micord.ervu.journal.JournalDto; @@ -16,11 +17,9 @@ public class JournalDtoMapper { public static JournalDto mapToJournalDto(JournalFileInfo journalFileInfo, JournalFileInfo.JournalFileDetails journalFileDetails) { SenderInfo senderInfo = journalFileInfo.getSenderInfo(); - OffsetDateTime utcZoned = journalFileDetails.getDepartureDateTime() - .atOffset(ZoneOffset.of(journalFileDetails.getTimeZone())); return new JournalDto() .setFileId(journalFileDetails.getFileId()) - .setDepartureDateTime(utcZoned.toString()) + .setDepartureDateTime(parseDateTime(journalFileDetails.getDepartureDateTime(), journalFileDetails.getTimeZone())) .setFileName(journalFileDetails.getFileName()) .setFilePatternCode(journalFileDetails.getFilePatternCode()) .setSenderFio(convertToFio(senderInfo.getFirstName(), senderInfo.getMiddleName(), @@ -34,15 +33,9 @@ public class JournalDtoMapper { } public static JournalDto mapToJournalDto(InteractionLogRecord record) { - OffsetDateTime utcZoned; - if (record.getOffset() != null) { - utcZoned = record.getSentDate().toInstant().atOffset(ZoneOffset.of(record.getOffset())); - } - else { - utcZoned = record.getSentDate().toInstant().atOffset(ZoneOffset.UTC); - } return new JournalDto() - .setDepartureDateTime(utcZoned.toString()) + .setDepartureDateTime( + parseDateTime(record.getSentDate().toLocalDateTime(), record.getOffset())) .setFileName(record.getFileName()) .setFilePatternCode(Integer.valueOf(record.getForm())) .setSenderFio(record.getSender()) @@ -52,4 +45,15 @@ public class JournalDtoMapper { .setRowsError(0) .setFileId(record.getFileId()); } + + private static String parseDateTime(LocalDateTime dateTime, String timeZone) { + if (timeZone == null) { + timeZone = "+00:00"; + } + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm:ss"); + ZonedDateTime utcZoned = dateTime.atZone(ZoneOffset.UTC); + ZoneOffset offset = ZoneOffset.of(timeZone); + ZonedDateTime zonedDateTime = utcZoned.withZoneSameInstant(offset); + return zonedDateTime.format(formatter) + " (" + timeZone + ")"; + } } diff --git a/resources/src/main/resources/business-model/Журнал взаимодействия.page b/resources/src/main/resources/business-model/Журнал взаимодействия.page index 8ee5bfee..cebeb9fd 100644 --- a/resources/src/main/resources/business-model/Журнал взаимодействия.page +++ b/resources/src/main/resources/business-model/Журнал взаимодействия.page @@ -1094,10 +1094,7 @@ valueFormatter - - ZoneDateTimeFormatter - ervu.component.grid.formatter - + @@ -1147,7 +1144,7 @@ type - "java.time.OffsetDateTime" + "java.time.ZonedDateTime" @@ -1174,13 +1171,13 @@ width -140 +300 widthFixed -null +true