diff --git a/admin-core/src/main/java/com/ibeetl/admin/core/annotation/BigDecimalFormat.java b/admin-core/src/main/java/com/ibeetl/admin/core/annotation/BigDecimalFormat.java index b689e289..5971eb85 100644 --- a/admin-core/src/main/java/com/ibeetl/admin/core/annotation/BigDecimalFormat.java +++ b/admin-core/src/main/java/com/ibeetl/admin/core/annotation/BigDecimalFormat.java @@ -3,7 +3,8 @@ package com.ibeetl.admin.core.annotation; import com.fasterxml.jackson.annotation.JacksonAnnotationsInside; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import com.ibeetl.admin.core.conf.JasonConfig; +import com.ibeetl.admin.core.conf.BigDecimalDeSerializer; +import com.ibeetl.admin.core.conf.BigDecimalSerializer; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -13,8 +14,8 @@ import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) @JacksonAnnotationsInside -@JsonSerialize(using = JasonConfig.BigDecimalSerializer.class) -@JsonDeserialize(using = JasonConfig.BigDecimalDeSerializer.class) +@JsonSerialize(using = BigDecimalSerializer.class) +@JsonDeserialize(using = BigDecimalDeSerializer.class) public @interface BigDecimalFormat { String value() default "#####0.00"; } \ No newline at end of file diff --git a/admin-core/src/main/java/com/ibeetl/admin/core/conf/BigDecimalDeSerializer.java b/admin-core/src/main/java/com/ibeetl/admin/core/conf/BigDecimalDeSerializer.java new file mode 100644 index 00000000..01ead018 --- /dev/null +++ b/admin-core/src/main/java/com/ibeetl/admin/core/conf/BigDecimalDeSerializer.java @@ -0,0 +1,23 @@ +package com.ibeetl.admin.core.conf; + +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 org.springframework.boot.jackson.JsonComponent; + +import java.io.IOException; +import java.math.BigDecimal; + +@JsonComponent + public class BigDecimalDeSerializer extends JsonDeserializer { + + public BigDecimalDeSerializer() { + } + @Override + public BigDecimal deserialize(JsonParser jsonParser, + DeserializationContext deserializationContext) throws IOException, JsonProcessingException { + + return new BigDecimal(jsonParser.getText().replaceAll(",","")); + } + } \ No newline at end of file diff --git a/admin-core/src/main/java/com/ibeetl/admin/core/conf/BigDecimalSerializer.java b/admin-core/src/main/java/com/ibeetl/admin/core/conf/BigDecimalSerializer.java new file mode 100644 index 00000000..428c8998 --- /dev/null +++ b/admin-core/src/main/java/com/ibeetl/admin/core/conf/BigDecimalSerializer.java @@ -0,0 +1,48 @@ +package com.ibeetl.admin.core.conf; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.BeanProperty; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.ContextualSerializer; +import com.ibeetl.admin.core.annotation.BigDecimalFormat; +import org.springframework.boot.jackson.JsonComponent; + +import java.io.IOException; +import java.math.BigDecimal; +import java.text.DecimalFormat; +import java.util.Objects; + +@JsonComponent +public class BigDecimalSerializer extends JsonSerializer implements ContextualSerializer { + + public BigDecimalSerializer() { + } + + private String format = "#####0.00"; + + @Override + public void serialize(BigDecimal bigDecimal, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { + jsonGenerator.writeString(new DecimalFormat(format).format(bigDecimal)); + } + + @Override + public JsonSerializer createContextual(SerializerProvider serializerProvider, BeanProperty beanProperty) throws JsonMappingException { + if(beanProperty !=null ){ + if(Objects.equals(beanProperty.getType().getRawClass(),BigDecimal.class)){ + BigDecimalFormat bigDecimalFormat = beanProperty.getAnnotation((BigDecimalFormat.class)); + if(bigDecimalFormat == null){ + bigDecimalFormat = beanProperty.getContextAnnotation(BigDecimalFormat.class); + } + BigDecimalSerializer bigDecimalSerializer = new BigDecimalSerializer(); + if(bigDecimalFormat != null){ + bigDecimalSerializer.format = bigDecimalFormat.value(); + } + return bigDecimalSerializer; + } + return serializerProvider.findValueSerializer(beanProperty.getType(),beanProperty); + } + return serializerProvider.findNullValueSerializer(beanProperty); + } +} \ No newline at end of file diff --git a/admin-core/src/main/java/com/ibeetl/admin/core/conf/CustomErrorController.java b/admin-core/src/main/java/com/ibeetl/admin/core/conf/CustomErrorController.java index 01f7ecea..0d41ddcf 100644 --- a/admin-core/src/main/java/com/ibeetl/admin/core/conf/CustomErrorController.java +++ b/admin-core/src/main/java/com/ibeetl/admin/core/conf/CustomErrorController.java @@ -20,6 +20,7 @@ import org.springframework.web.servlet.ModelAndView; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.validation.ConstraintViolationException; import java.io.IOException; import java.util.*; @@ -171,7 +172,8 @@ public class CustomErrorController extends AbstractErrorController { } protected String getErrorMessage(Throwable ex) { - if(ex instanceof PlatformException || ex instanceof IllegalArgumentException){ + if(ex instanceof PlatformException || ex instanceof IllegalArgumentException + || ex instanceof ConstraintViolationException) { return ex.getMessage(); }else{ return "服务器错误,请联系管理员"; diff --git a/admin-core/src/main/java/com/ibeetl/admin/core/conf/JasonConfig.java b/admin-core/src/main/java/com/ibeetl/admin/core/conf/JasonConfig.java index d99a93ec..2c12f77c 100644 --- a/admin-core/src/main/java/com/ibeetl/admin/core/conf/JasonConfig.java +++ b/admin-core/src/main/java/com/ibeetl/admin/core/conf/JasonConfig.java @@ -1,29 +1,24 @@ package com.ibeetl.admin.core.conf; import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.Version; -import com.fasterxml.jackson.databind.*; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.module.SimpleModule; -import com.fasterxml.jackson.databind.ser.ContextualSerializer; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; -import com.ibeetl.admin.core.annotation.BigDecimalFormat; import com.ibeetl.admin.core.web.JsonResult; import org.apache.commons.lang3.StringUtils; import org.beetl.sql.core.engine.PageQuery; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.jackson.JsonComponent; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.io.IOException; -import java.math.BigDecimal; import java.math.BigInteger; -import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.Map; -import java.util.Objects; @Configuration public class JasonConfig { @@ -89,43 +84,4 @@ public class JasonConfig { } } - - @JsonComponent - public class BigDecimalSerializer extends JsonSerializer implements ContextualSerializer { - private String format = "#####0.00"; - - @Override - public void serialize(BigDecimal bigDecimal, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { - jsonGenerator.writeString(new DecimalFormat(format).format(bigDecimal)); - } - - @Override - public JsonSerializer createContextual(SerializerProvider serializerProvider, BeanProperty beanProperty) throws JsonMappingException { - if(beanProperty !=null ){ - if(Objects.equals(beanProperty.getType().getRawClass(),BigDecimal.class)){ - BigDecimalFormat bigDecimalFormat = beanProperty.getAnnotation((BigDecimalFormat.class)); - if(bigDecimalFormat == null){ - bigDecimalFormat = beanProperty.getContextAnnotation(BigDecimalFormat.class); - } - BigDecimalSerializer bigDecimalSerializer = new BigDecimalSerializer(); - if(bigDecimalFormat != null){ - bigDecimalSerializer.format = bigDecimalFormat.value(); - } - return bigDecimalSerializer; - } - return serializerProvider.findValueSerializer(beanProperty.getType(),beanProperty); - } - return serializerProvider.findNullValueSerializer(beanProperty); - } - } - - @JsonComponent - public class BigDecimalDeSerializer extends JsonDeserializer { - @Override - public BigDecimal deserialize(JsonParser jsonParser, - DeserializationContext deserializationContext) throws IOException, JsonProcessingException { - - return new BigDecimal(jsonParser.getText().replaceAll(",","")); - } - } }