diff --git a/src/main/java/com/freedom/admin/controller/PublicTodoController.java b/src/main/java/com/freedom/admin/controller/PublicTodoController.java index c561ac0..c80046f 100644 --- a/src/main/java/com/freedom/admin/controller/PublicTodoController.java +++ b/src/main/java/com/freedom/admin/controller/PublicTodoController.java @@ -93,6 +93,10 @@ public class PublicTodoController { } try { publicTodo.setId(null); + // DATE 列不接受空串,空值统一转 null + if (StringUtils.isBlank(publicTodo.getDueDate())) { + publicTodo.setDueDate(null); + } if (publicTodo.getStatus() == null) { publicTodo.setStatus(0); } @@ -123,6 +127,10 @@ public class PublicTodoController { return Result.error().message("标题不能为空"); } try { + // DATE 列不接受空串,空值统一转 null + if (StringUtils.isBlank(publicTodo.getDueDate())) { + publicTodo.setDueDate(null); + } publicTodo.setUpdateBy(OPERATOR); publicTodo.setUpdateDate(new Date()); publicTodo.setCreateBy(null); @@ -210,11 +218,12 @@ public class PublicTodoController { int done = 0; int overdue = 0; Map byCategory = new HashMap<>(); - Date today = new Date(); + // 逾期按 yyyy-MM-dd 字符串比较,与前端口径一致,不经时区换算 + String today = new java.text.SimpleDateFormat("yyyy-MM-dd").format(new Date()); for (PublicTodo item : list) { if (item.getStatus() != null && item.getStatus() == 1) { done++; - } else if (item.getDueDate() != null && item.getDueDate().before(today)) { + } else if (item.getDueDate() != null && item.getDueDate().compareTo(today) < 0) { overdue++; } String cat = StringUtils.isBlank(item.getCategory()) ? "未分类" : item.getCategory(); diff --git a/src/main/java/com/freedom/admin/entity/PublicTodo.java b/src/main/java/com/freedom/admin/entity/PublicTodo.java index e322279..e838084 100644 --- a/src/main/java/com/freedom/admin/entity/PublicTodo.java +++ b/src/main/java/com/freedom/admin/entity/PublicTodo.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; import java.util.Date; @@ -49,11 +48,10 @@ public class PublicTodo implements Serializable { private String category; /** - * 截止日期 + * 截止日期(yyyy-MM-dd) + * 用 String 映射 DATE 列:字符串往返不经 JDBC 时区换算,避免差一天 */ - @DateTimeFormat(pattern = "yyyy-MM-dd") - @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") - private Date dueDate; + private String dueDate; /** * 状态:0未完成 1已完成