From 1297ac89e87e695e1c89a347f6f1487ed93c96ac Mon Sep 17 00:00:00 2001 From: Eduard Tihomiorv Date: Wed, 5 Nov 2025 15:18:26 +0300 Subject: [PATCH] SUPPORT-9484: fix --- .../db_beans/public_/tables/InteractionLog.java | 4 ++-- .../tables/records/InteractionLogRecord.java | 12 ++++++------ .../ru/micord/ervu/journal/JournalFileInfo.java | 7 ++++--- .../DepartureDateTimeDeserializer.java | 7 ++++--- .../ervu/journal/mapper/JournalDtoMapper.java | 8 +++----- .../ervu/service/InteractionServiceImpl.java | 2 +- .../main/java/ru/micord/ervu/util/DateUtils.java | 6 ++++++ .../config/v_1.0/2025-11-05-rename-column.xml | 15 +++++++++++++++ .../resources/config/v_1.0/changelog-v_1.0.xml | 2 +- 9 files changed, 42 insertions(+), 21 deletions(-) create mode 100644 backend/src/main/resources/config/v_1.0/2025-11-05-rename-column.xml diff --git a/backend/src/main/java/ervu_lkrp_ul/ervu_lkrp_ul/db_beans/public_/tables/InteractionLog.java b/backend/src/main/java/ervu_lkrp_ul/ervu_lkrp_ul/db_beans/public_/tables/InteractionLog.java index fb2043b6..8ee9035a 100644 --- a/backend/src/main/java/ervu_lkrp_ul/ervu_lkrp_ul/db_beans/public_/tables/InteractionLog.java +++ b/backend/src/main/java/ervu_lkrp_ul/ervu_lkrp_ul/db_beans/public_/tables/InteractionLog.java @@ -100,9 +100,9 @@ public class InteractionLog extends TableImpl { public final TableField ERVU_ID = createField(DSL.name("ervu_id"), SQLDataType.VARCHAR(36), this, ""); /** - * The column public.interaction_log.offset. + * The column public.interaction_log.zone_offset. */ - public final TableField OFFSET = createField(DSL.name("offset"), SQLDataType.VARCHAR(10), this, ""); + public final TableField ZONE_OFFSET = createField(DSL.name("zone_offset"), SQLDataType.VARCHAR(10), this, ""); private InteractionLog(Name alias, Table aliased) { this(alias, aliased, (Field[]) null, null); diff --git a/backend/src/main/java/ervu_lkrp_ul/ervu_lkrp_ul/db_beans/public_/tables/records/InteractionLogRecord.java b/backend/src/main/java/ervu_lkrp_ul/ervu_lkrp_ul/db_beans/public_/tables/records/InteractionLogRecord.java index 3ae205b8..27bda3d8 100644 --- a/backend/src/main/java/ervu_lkrp_ul/ervu_lkrp_ul/db_beans/public_/tables/records/InteractionLogRecord.java +++ b/backend/src/main/java/ervu_lkrp_ul/ervu_lkrp_ul/db_beans/public_/tables/records/InteractionLogRecord.java @@ -160,16 +160,16 @@ public class InteractionLogRecord extends TableRecordImpl } /** - * Setter for public.interaction_log.offset. + * Setter for public.interaction_log.zone_offset. */ - public void setOffset(String value) { + public void setZoneOffset(String value) { set(10, value); } /** - * Getter for public.interaction_log.offset. + * Getter for public.interaction_log.zone_offset. */ - public String getOffset() { + public String getZoneOffset() { return (String) get(10); } @@ -187,7 +187,7 @@ public class InteractionLogRecord extends TableRecordImpl /** * Create a detached, initialised InteractionLogRecord */ - public InteractionLogRecord(Long id, Timestamp sentDate, String form, String sender, String status, String fileName, Integer recordsSent, Integer recordsAccepted, String fileId, String ervuId, String offset) { + public InteractionLogRecord(Long id, Timestamp sentDate, String form, String sender, String status, String fileName, Integer recordsSent, Integer recordsAccepted, String fileId, String ervuId, String zoneOffset) { super(InteractionLog.INTERACTION_LOG); setId(id); @@ -200,7 +200,7 @@ public class InteractionLogRecord extends TableRecordImpl setRecordsAccepted(recordsAccepted); setFileId(fileId); setErvuId(ervuId); - setOffset(offset); + setZoneOffset(zoneOffset); resetChangedOnNotNull(); } } diff --git a/backend/src/main/java/ru/micord/ervu/journal/JournalFileInfo.java b/backend/src/main/java/ru/micord/ervu/journal/JournalFileInfo.java index 410a8e74..9668dfce 100644 --- a/backend/src/main/java/ru/micord/ervu/journal/JournalFileInfo.java +++ b/backend/src/main/java/ru/micord/ervu/journal/JournalFileInfo.java @@ -1,6 +1,7 @@ package ru.micord.ervu.journal; import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.util.List; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; @@ -78,7 +79,7 @@ public class JournalFileInfo { private Integer filePatternCode; // Номер шаблона(Формы) private String filePatternName; @JsonDeserialize(using = DepartureDateTimeDeserializer.class) - private LocalDateTime departureDateTime; // Дата-время отправки файла + private ZonedDateTime departureDateTime; // Дата-время отправки файла private String timeZone; //Таймзона private JournalFileStatus fileStatus; private String type; @@ -119,11 +120,11 @@ public class JournalFileInfo { return this; } - public LocalDateTime getDepartureDateTime() { + public ZonedDateTime getDepartureDateTime() { return departureDateTime; } - public JournalFileDetails setDepartureDateTime(LocalDateTime departureDateTime) { + public JournalFileDetails setDepartureDateTime(ZonedDateTime departureDateTime) { this.departureDateTime = departureDateTime; return this; } diff --git a/backend/src/main/java/ru/micord/ervu/journal/deserializer/DepartureDateTimeDeserializer.java b/backend/src/main/java/ru/micord/ervu/journal/deserializer/DepartureDateTimeDeserializer.java index e6a2b153..49318be5 100644 --- a/backend/src/main/java/ru/micord/ervu/journal/deserializer/DepartureDateTimeDeserializer.java +++ b/backend/src/main/java/ru/micord/ervu/journal/deserializer/DepartureDateTimeDeserializer.java @@ -2,18 +2,19 @@ package ru.micord.ervu.journal.deserializer; import java.io.IOException; import java.time.LocalDateTime; +import java.time.ZonedDateTime; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonDeserializer; import ru.micord.ervu.util.DateUtils; -public class DepartureDateTimeDeserializer extends JsonDeserializer { +public class DepartureDateTimeDeserializer extends JsonDeserializer { @Override - public LocalDateTime deserialize(JsonParser jsonParser, + public ZonedDateTime deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException { String dateTimeString = jsonParser.getText(); - return DateUtils.convertToLocalDateTime(dateTimeString); + return DateUtils.convertToZoneDateTime(dateTimeString); } } 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 f23b7fb4..942819b4 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,6 +1,5 @@ package ru.micord.ervu.journal.mapper; -import java.time.LocalDateTime; import java.time.ZoneOffset; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; @@ -35,7 +34,7 @@ public class JournalDtoMapper { public static JournalDto mapToJournalDto(InteractionLogRecord record) { return new JournalDto() .setDepartureDateTime( - parseDateTime(record.getSentDate().toLocalDateTime(), record.getOffset())) + parseDateTime(record.getSentDate().toInstant().atZone(ZoneOffset.UTC), record.getZoneOffset())) .setFileName(record.getFileName()) .setFilePatternCode(Integer.valueOf(record.getForm())) .setSenderFio(record.getSender()) @@ -46,14 +45,13 @@ public class JournalDtoMapper { .setFileId(record.getFileId()); } - private static String parseDateTime(LocalDateTime dateTime, String timeZone) { + private static String parseDateTime(ZonedDateTime 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); + ZonedDateTime zonedDateTime = dateTime.withZoneSameInstant(offset); return zonedDateTime.format(formatter) + " (" + timeZone + ")"; } } diff --git a/backend/src/main/java/ru/micord/ervu/service/InteractionServiceImpl.java b/backend/src/main/java/ru/micord/ervu/service/InteractionServiceImpl.java index 3c2de213..0ab7e4a4 100644 --- a/backend/src/main/java/ru/micord/ervu/service/InteractionServiceImpl.java +++ b/backend/src/main/java/ru/micord/ervu/service/InteractionServiceImpl.java @@ -42,7 +42,7 @@ public class InteractionServiceImpl implements InteractionService { .set(INTERACTION_LOG.SENDER, sender) .set(INTERACTION_LOG.FILE_NAME, fileName) .set(INTERACTION_LOG.ERVU_ID, ervuId) - .set(INTERACTION_LOG.OFFSET, offset) + .set(INTERACTION_LOG.ZONE_OFFSET, offset) .execute(); } diff --git a/backend/src/main/java/ru/micord/ervu/util/DateUtils.java b/backend/src/main/java/ru/micord/ervu/util/DateUtils.java index c954a1dc..2404b8b2 100644 --- a/backend/src/main/java/ru/micord/ervu/util/DateUtils.java +++ b/backend/src/main/java/ru/micord/ervu/util/DateUtils.java @@ -50,6 +50,12 @@ public final class DateUtils { : null; } + public static ZonedDateTime convertToZoneDateTime(String dateTime) { + return hasText(dateTime) + ? ZonedDateTime.parse(dateTime, DATE_TIME_FORMATTER) + : null; + } + public static String convertToString(LocalDateTime dateTime) { return dateTime == null ? "" : dateTime.format(DATE_TIME_FORMATTER); } diff --git a/backend/src/main/resources/config/v_1.0/2025-11-05-rename-column.xml b/backend/src/main/resources/config/v_1.0/2025-11-05-rename-column.xml new file mode 100644 index 00000000..b3c0f4f8 --- /dev/null +++ b/backend/src/main/resources/config/v_1.0/2025-11-05-rename-column.xml @@ -0,0 +1,15 @@ + + + + + Rename column offset to zoneOffset + + + + + + + + + + diff --git a/backend/src/main/resources/config/v_1.0/changelog-v_1.0.xml b/backend/src/main/resources/config/v_1.0/changelog-v_1.0.xml index a65cf67e..455aceab 100644 --- a/backend/src/main/resources/config/v_1.0/changelog-v_1.0.xml +++ b/backend/src/main/resources/config/v_1.0/changelog-v_1.0.xml @@ -9,6 +9,6 @@ - + \ No newline at end of file