diff --git a/pav-server/src/main/java/com/palnet/biz/config/convert/InstantStringDeserializer.java b/pav-server/src/main/java/com/palnet/biz/config/convert/InstantStringDeserializer.java index c42560a9..e47e3d58 100644 --- a/pav-server/src/main/java/com/palnet/biz/config/convert/InstantStringDeserializer.java +++ b/pav-server/src/main/java/com/palnet/biz/config/convert/InstantStringDeserializer.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonDeserializer; +import com.palnet.comn.utils.InstantUtils; import lombok.extern.slf4j.Slf4j; import java.io.IOException; @@ -45,6 +46,14 @@ public class InstantStringDeserializer extends JsonDeserializer { LocalDate localDate = LocalDate.parse(dateString, formatter); return localDate.atStartOfDay(ZoneId.of(ZONE)).toInstant(); } else { + + boolean doubleCheck = isValidDouble(dateString); + + if(doubleCheck){ + + return InstantUtils.fromDatetimeDouble(Double.parseDouble(dateString)); + } + return Instant.parse(dateString); } } catch (Exception e) { @@ -66,5 +75,20 @@ public class InstantStringDeserializer extends JsonDeserializer { } } + public boolean isValidDouble(String dateString){ + + boolean result = false; + + try{ + Double.parseDouble(dateString); + + result = true; + }catch (NumberFormatException e){ + result = false; + } + + return result; + } + } diff --git a/pav-server/src/main/java/com/palnet/comn/utils/InstantUtils.java b/pav-server/src/main/java/com/palnet/comn/utils/InstantUtils.java index 43b3e22b..beac60f9 100644 --- a/pav-server/src/main/java/com/palnet/comn/utils/InstantUtils.java +++ b/pav-server/src/main/java/com/palnet/comn/utils/InstantUtils.java @@ -94,6 +94,11 @@ public class InstantUtils { return localDate.atStartOfDay(ZoneId.of(zone)).toInstant(); } + public static Instant fromDatetimeDouble (double dateDouble){ + + return Instant.ofEpochSecond((long) dateDouble, (long) ((dateDouble % 1) * 1_000_000_000)); + } + // string validate format public static boolean isValidFormat(String dateString, String format) { SimpleDateFormat dateFormat = new SimpleDateFormat(format);