From ae1d52794a1e6a26386d8d2d825e3a8989c812c1 Mon Sep 17 00:00:00 2001 From: ialbert Date: Mon, 3 Apr 2023 15:53:05 +0300 Subject: [PATCH] http://jira.mfd.msk:8088/browse/CLS-254 meta webtype --- .../clearing/backendapi/meta/ActionField.java | 9 ++++++ .../backendapi/meta/GetResponseFactory.java | 19 +++++++++++-- .../src/main/resources/meta/meta.xml | 28 +++++++++---------- .../spcex/platform/utils/time/TimeUtil.java | 11 ++++++++ 4 files changed, 50 insertions(+), 17 deletions(-) diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/ActionField.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/ActionField.java index b672c14cd..8ae5447b1 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/ActionField.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/ActionField.java @@ -52,6 +52,11 @@ public class ActionField { @JsonSerialize(using = MetaDataTypeSerializer.class, include = JsonSerialize.Inclusion.NON_EMPTY) private MetaDataTypes type; + @JsonProperty(value = "webtype") + @JsonDeserialize(using = MetaDataTypeDeserializer.class) + @JsonSerialize(using = MetaDataTypeSerializer.class, include = JsonSerialize.Inclusion.NON_EMPTY) + private MetaDataTypes webtype; + @JsonProperty(value = "virtual") @JsonSerialize(include = JsonSerialize.Inclusion.NON_EMPTY) private Boolean virtual; @@ -115,4 +120,8 @@ public class ActionField { public void setVirtual(Boolean virtual) { this.virtual = virtual; } + + public MetaDataTypes getWebtype() { + return webtype; + } } diff --git a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/GetResponseFactory.java b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/GetResponseFactory.java index 01f10dff7..557ae545e 100644 --- a/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/GetResponseFactory.java +++ b/clearing-parent/backend-api/src/main/java/ru/spcex/clearing/backendapi/meta/GetResponseFactory.java @@ -5,9 +5,11 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import ru.spcex.platform.utils.time.TimeUtil; import java.text.SimpleDateFormat; import java.time.Instant; +import java.time.LocalDateTime; import java.time.LocalTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; @@ -82,7 +84,7 @@ public class GetResponseFactory { currentField = field; // if (fieldsToAdd.contains(field.getField().getCode())) { try { - add(r, field.getField().getCode(), field.extractValue(o)); + add(r, field, field.extractValue(o)); } catch (Throwable e) { log.trace(ExceptionUtils.getStackTrace( new RuntimeException(String.format("Can't extract value for field='%s' of %s(%s): %s -> %s\n%s", @@ -102,9 +104,20 @@ public class GetResponseFactory { return r; } - private void add(Map response, String name, Object value) { + private void add(Map response, FieldExtracted fieldExtracted, Object value) { + MetaDataTypes webtype = fieldExtracted.getField().getWebtype(); + String name = fieldExtracted.getField().getCode(); Object data; - if (value instanceof Date) { + if (webtype != null && !MetaDataTypes.Time.equals(webtype)) { + throw new IllegalStateException("not implemented transforming " + webtype); + } else if (value != null && MetaDataTypes.Time.equals(webtype)) { + if (value instanceof Instant) { + LocalDateTime dtTm = TimeUtil.toDateTime((Instant) value); + data = timeFormatter.format(dtTm.toLocalTime()); + } else { + throw new IllegalStateException("not implemented transforming "); + } + } else if (value instanceof Date) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss+03:00"); data = sdf.format(value); } else if (value instanceof Instant) { diff --git a/clearing-parent/backend-api/src/main/resources/meta/meta.xml b/clearing-parent/backend-api/src/main/resources/meta/meta.xml index 36e2c2a44..640e1b1ef 100644 --- a/clearing-parent/backend-api/src/main/resources/meta/meta.xml +++ b/clearing-parent/backend-api/src/main/resources/meta/meta.xml @@ -254,8 +254,8 @@ - - + + @@ -291,8 +291,8 @@ - - + + @@ -313,8 +313,8 @@ - - + + @@ -468,8 +468,8 @@ - - + + @@ -672,8 +672,8 @@ - - + + @@ -683,13 +683,13 @@
- - + + - - + + diff --git a/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/time/TimeUtil.java b/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/time/TimeUtil.java index 49fcb22b6..d6efc9f5e 100644 --- a/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/time/TimeUtil.java +++ b/platform-parent/platform-utils/src/main/java/ru/spcex/platform/utils/time/TimeUtil.java @@ -68,4 +68,15 @@ public class TimeUtil { if (date == null) return null; return LocalDate.ofInstant(date, ZoneId.systemDefault()); } + + public static ZonedDateTime toZoned(Instant instant) { + if (instant == null) return null; + return instant.atZone(zone); + } + + public static LocalDateTime toDateTime(Instant instant) { + ZonedDateTime zoned = toZoned(instant); + if (zoned == null) return null; + return zoned.toLocalDateTime(); + } }