ialbert 2022-08-15 13:14:28 +03:00
parent b70683d765
commit 38a50d1775
5 changed files with 74 additions and 2 deletions

View file

@ -2,16 +2,20 @@ package ru.spcex.clearing.backendapi.controller.request.cud;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import ru.spcex.clearing.backendapi.domain.actions.IAction;
import ru.spcex.clearing.platform.messaging.domain.cud.securitites.MoneyMarketCreateRequest;
import ru.spcex.clearing.platform.messaging.domain.json.deserialize.InstantDeserializer;
import java.time.Instant;
public class MoneyMarketCreateAction implements IAction<MoneyMarketCreateRequest> {
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "Europe/Moscow")
@JsonDeserialize(using = InstantDeserializer.class)
@JsonProperty
public Instant startDate;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "Europe/Moscow")
@JsonDeserialize(using = InstantDeserializer.class)
@JsonProperty
public Instant endDate;
@JsonProperty

View file

@ -1,15 +1,17 @@
package ru.spcex.clearing.platform.messaging.domain.cud.securitites;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import ru.spcex.clearing.platform.messaging.domain.json.serialize.InstantSerializer;
import java.time.Instant;
public class MoneyMarketCreateRequest {
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "Europe/Moscow")
@JsonProperty
@JsonSerialize(using = InstantSerializer.class)
public Instant startDate;
@JsonProperty
@JsonSerialize(using = InstantSerializer.class)
public Instant endDate;
@JsonProperty
public Double nominalValue;

View file

@ -0,0 +1,23 @@
package ru.spcex.clearing.platform.messaging.domain.json.deserialize;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import ru.spcex.platform.utils.time.TimeUtil;
import java.io.IOException;
import java.time.Instant;
import java.time.format.DateTimeFormatter;
public class InstantDeserializer extends JsonDeserializer<Instant> {
private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
@Override
public Instant deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
String date = p.getText();
if (date == null || date.trim().length() == 0) {
return null;
}
return TimeUtil.parseInstantDt(date, formatter);
}
}

View file

@ -0,0 +1,21 @@
package ru.spcex.clearing.platform.messaging.domain.json.serialize;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import ru.spcex.platform.utils.time.TimeUtil;
import java.io.IOException;
import java.time.Instant;
import java.time.format.DateTimeFormatter;
public class InstantSerializer extends JsonSerializer<Instant> {
private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
@Override
public void serialize(Instant value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
if (value == null) return;
gen.writeString(TimeUtil.formatInstant(value, formatter));
}
}

View file

@ -0,0 +1,22 @@
package ru.spcex.platform.utils.time;
import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
public class TimeUtil {
public static ZoneId zone = ZoneId.systemDefault();
/**
* метод чтобы парсить в инстант даты типа yyyy-MM-dd, dd.MM.yyyy и т.д.
*/
public static Instant parseInstantDt(String date, DateTimeFormatter formatter) {
return LocalDate.parse(date, formatter).atStartOfDay(zone).toInstant();
}
public static String formatInstant(Instant date, DateTimeFormatter formatter) {
if (date == null) return null;
return formatter.format(date.atZone(zone));
}
}