fix(oa):修复报工重复提交问题
- 限制同一用户当天只能提交一次报工 - 使用上海时区计算当日时间范围- 避免因数据库时区差异导致的跨天误判- 新增创建时间范围查询条件 - 移除旧的查询包装器逻辑 - 抛出运行时异常阻止重复报工提交
This commit is contained in:
@@ -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<OaProjectReport> 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<OaProjectReport> queryWrapper = Wrappers.<OaProjectReport>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("今日已报工,不允许重复报工");
|
||||
|
||||
Reference in New Issue
Block a user