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("今日已报工,不允许重复报工");