Merge branch 'template' into develop

This commit is contained in:
曹鹏飞 2025-07-09 18:00:06 +08:00
commit 8979f6449b
1 changed files with 30 additions and 9 deletions

View File

@ -1,13 +1,18 @@
package com.nflg.wms.starter.config; package com.nflg.wms.starter.config;
import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DatePattern;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
@ -16,13 +21,29 @@ import java.time.format.DateTimeFormatter;
public class JacksonConfig { public class JacksonConfig {
@Bean @Bean
public Jackson2ObjectMapperBuilder jackson2ObjectMapperBuilder() { public ObjectMapper objectMapper() {
return new Jackson2ObjectMapperBuilder() return new ObjectMapper()
.serializerByType(Long.class, new ToStringSerializer()) .registerModule(customDateTimeModule())
.serializerByType(Long.TYPE, new ToStringSerializer()) .registerModule(bigDecimalModule())
.serializerByType(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN))) .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false)
.deserializerByType(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN))) .configure(SerializationFeature.INDENT_OUTPUT, false);
.serializerByType(LocalDate.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN))) }
.deserializerByType(LocalDate.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)));
private SimpleModule customDateTimeModule() {
SimpleModule module = new SimpleModule();
module.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN)));
module.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN)));
module.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)));
module.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)));
return module;
}
private SimpleModule bigDecimalModule() {
SimpleModule module = new SimpleModule();
// BigDecimal序列化为字符串避免精度丢失
module.addSerializer(BigDecimal.class, new ToStringSerializer());
// Long类型序列化为字符串 (解决前端JS精度问题)
module.addSerializer(Long.class, new ToStringSerializer());
return module;
} }
} }