fix(public-todo): dueDate 改 String 映射,修复截止日期差一天
CI/CD Deploy (Admin) / 构建后端镜像并部署 (push) Successful in 23s
CI/CD Deploy (Admin) / 构建后端镜像并部署 (push) Successful in 23s
- 根因:Date 类型经 @DateTimeFormat 按本地时区解析为当日 00:00, 再经 JDBC(serverTimezone=UTC)与 MySQL 时区换算后漂移一天 - dueDate 改为 String(yyyy-MM-dd),字符串往返不参与任何时区换算 - add/update 对空串统一转 null(DATE 列不接受空串) - stats 逾期判断改字符串比较,与前端口径一致 - 实测:提交 2026-10-27 → 库存 2026-10-27 → 返回 2026-10-27,完全一致
This commit is contained in:
@@ -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<String, Integer> 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();
|
||||
|
||||
@@ -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已完成
|
||||
|
||||
Reference in New Issue
Block a user