PaperBasicInfo

dev-tmp1
luotaiqian 2026-08-21 16:54:25 +08:00
parent 32ab24c8a0
commit e17af6a4a7
2 changed files with 52 additions and 4 deletions

View File

@ -0,0 +1,47 @@
package org.qinan.cedu.config;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import java.io.IOException;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
/**
* LocalDateTime
* @JsonFormat(pattern = "yyyy-MM-dd") LocalDateTime
* LocalDateTime
*/
public class FlexibleLocalDateTimeDeserializer extends JsonDeserializer<LocalDateTime> {
private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
/**
* JSON LocalDateTime
* yyyy-MM-dd 00:00:00yyyy-MM-dd HH:mm:ssISO yyyy-MM-ddTHH:mm:ss
*
* @param p JSON
* @param ctxt
* @return LocalDateTime null
* @throws IOException
*/
@Override
public LocalDateTime deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
String text = p.getText();
if (text == null || text.trim().isEmpty()) {
return null;
}
text = text.trim();
if (text.length() == 10) {
// 纯日期字符串,时间部分补 00:00:00
return LocalDate.parse(text).atStartOfDay();
}
if (text.contains("T")) {
// ISO 格式
return LocalDateTime.parse(text);
}
return LocalDateTime.parse(text, DATE_TIME_FORMATTER);
}
}

View File

@ -1,8 +1,11 @@
package org.qinan.cedu.model.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.qinan.cedu.config.FlexibleLocalDateTimeDeserializer;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
@ -42,13 +45,11 @@ public class ClassManagementDTO {
private String safetyManager;
@ApiModelProperty("培训开始日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonDeserialize(using = FlexibleLocalDateTimeDeserializer.class)
private LocalDateTime startDate;
@ApiModelProperty("培训结束日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonDeserialize(using = FlexibleLocalDateTimeDeserializer.class)
private LocalDateTime endDate;
@ApiModelProperty("是否开启考试0-否1-是)")