From c676f238b814b02010374044c3987bc7bd44f033 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Sat, 11 Oct 2025 18:16:39 +0800 Subject: [PATCH] =?UTF-8?q?fix(oa):=E4=BF=AE=E5=A4=8D=E6=8A=A5=E5=B7=A5?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E6=8F=90=E4=BA=A4=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 限制同一用户当天只能提交一次报工 - 使用上海时区计算当日时间范围- 避免因数据库时区差异导致的跨天误判- 新增创建时间范围查询条件 - 移除旧的查询包装器逻辑 - 抛出运行时异常阻止重复报工提交 --- .../impl/OaProjectReportServiceImpl.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaProjectReportServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaProjectReportServiceImpl.java index a80a30f..8090a93 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaProjectReportServiceImpl.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/OaProjectReportServiceImpl.java @@ -114,12 +114,18 @@ public class OaProjectReportServiceImpl implements IOaProjectReportService { */ @Override public Boolean insertByBo(OaProjectReportBo bo) { - // 检查今日是否已报工 - OaProjectReportBo checkBo = new OaProjectReportBo(); - checkBo.setUserId(LoginHelper.getUserId()); - checkBo.setCreateTime(new Date()); - - QueryWrapper queryWrapper = ClearbuildQueryWrapper(checkBo); + // 检查今日是否已报工(同一用户当天只允许运一条) + Long userId = LoginHelper.getUserId(); + // 以上海时区计算“今天”的起止时间,避免数据库时区差异导致跨天误判 + ZoneId zone = ZoneId.of("Asia/Shanghai"); + LocalDate today = LocalDate.now(zone); + Date start = Date.from(today.atStartOfDay(zone).toInstant()); + Date end = Date.from(today.plusDays(1).atStartOfDay(zone).toInstant()); + QueryWrapper queryWrapper = Wrappers.query() + .eq("del_flag", 0) + .eq("user_id", userId) + .ge("create_time", start) + .lt("create_time", end); long count = baseMapper.selectCount(queryWrapper); if (count > 0) { throw new RuntimeException("今日已报工,不允许重复报工");