账单bug修复,以及加入转单号功能
This commit is contained in:
+49
@@ -0,0 +1,49 @@
|
||||
package com.ruoyi.common.config.serializer;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.time.LocalDate;
|
||||
import java.time.ZoneId;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.time.format.DateTimeParseException;
|
||||
import java.time.format.ResolverStyle;
|
||||
import java.util.Date;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonParser;
|
||||
import com.fasterxml.jackson.core.JsonToken;
|
||||
import com.fasterxml.jackson.databind.DeserializationContext;
|
||||
import com.fasterxml.jackson.databind.JsonDeserializer;
|
||||
import com.fasterxml.jackson.databind.exc.InvalidFormatException;
|
||||
|
||||
/**
|
||||
* 严格解析 yyyy-MM-dd 日期,避免 SimpleDateFormat 的宽松解析把非法日期自动滚动成其他日期。
|
||||
*/
|
||||
public class StrictDateDeserializer extends JsonDeserializer<Date>
|
||||
{
|
||||
private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("uuuu-MM-dd")
|
||||
.withResolverStyle(ResolverStyle.STRICT);
|
||||
|
||||
@Override
|
||||
public Date deserialize(JsonParser parser, DeserializationContext context) throws IOException
|
||||
{
|
||||
if (!parser.hasToken(JsonToken.VALUE_STRING))
|
||||
{
|
||||
throw InvalidFormatException.from(parser, "日期必须使用 yyyy-MM-dd 格式", parser.getValueAsString(), Date.class);
|
||||
}
|
||||
|
||||
String value = parser.getText();
|
||||
if (value == null || value.trim().isEmpty())
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
LocalDate date = LocalDate.parse(value.trim(), FORMATTER);
|
||||
return Date.from(date.atStartOfDay(ZoneId.systemDefault()).toInstant());
|
||||
}
|
||||
catch (DateTimeParseException ex)
|
||||
{
|
||||
throw InvalidFormatException.from(parser, "日期必须是有效的 yyyy-MM-dd 日期", value, Date.class);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user