Java 代码实现考勤夜班记录跨天新增和查询
Java 代码实现考勤夜班记录跨天新增和查询
本文提供 Java 代码示例,用于实现考勤夜班记录的跨天新增和跨天查询功能。示例代码中包含跨天判断逻辑,并使用数据库操作方法进行数据保存和查询。
**注意:**由于没有提供具体的数据库结构和表结构,下面的代码只是提供一个大概的思路和示例代码,需要根据实际情况进行修改。
1. 考勤夜班记录跨天新增
假设有一个考勤记录表 attendance,包含以下字段:id、user_id、start_time、end_time、is_night_shift。
新增考勤夜班记录时,需要根据实际情况判断是否跨天,如果跨天则需要将开始时间和结束时间分别拆成两条记录插入到表中。
示例代码:
//获取当前时间
Date now = new Date();
//判断是否跨天
if (end_time.before(start_time)) {
//跨天,则需要拆成两条记录插入
AttendanceRecord record1 = new AttendanceRecord();
record1.setUser_id(user_id);
record1.setStart_time(start_time);
record1.setEnd_time(DateUtils.getEndOfDay(start_time));
record1.setIs_night_shift(true);
record1.setCreate_time(now);
attendanceDao.save(record1);
AttendanceRecord record2 = new AttendanceRecord();
record2.setUser_id(user_id);
record2.setStart_time(DateUtils.getStartOfDay(end_time));
record2.setEnd_time(end_time);
record2.setIs_night_shift(true);
record2.setCreate_time(now);
attendanceDao.save(record2);
} else {
//不跨天,则直接插入一条记录
AttendanceRecord record = new AttendanceRecord();
record.setUser_id(user_id);
record.setStart_time(start_time);
record.setEnd_time(end_time);
record.setIs_night_shift(true);
record.setCreate_time(now);
attendanceDao.save(record);
}
2. 考勤夜班记录跨天查询
查询考勤夜班记录时,需要根据实际情况判断查询时间是否跨天,如果跨天则需要将查询时间分别拆成两个时间段查询,然后将结果合并。
示例代码:
//获取查询时间段
Date start = DateUtils.getStartOfDay(queryTime);
Date end = DateUtils.getEndOfDay(queryTime);
//判断是否跨天
if (end_time.before(start) || start_time.after(end)) {
//不跨天,则直接查询
List<AttendanceRecord> records = attendanceDao.findByUserIdAndIsNightShiftAndStartTimeBetweenOrEndTimeBetween(
userId, true, start, end, start, end);
return records;
} else {
//跨天,则拆成两个时间段查询,然后合并结果
List<AttendanceRecord> records1 = attendanceDao.findByUserIdAndIsNightShiftAndStartTimeBetweenOrEndTimeBetween(
userId, true, start, DateUtils.getEndOfDay(start), start, end);
List<AttendanceRecord> records2 = attendanceDao.findByUserIdAndIsNightShiftAndStartTimeBetweenOrEndTimeBetween(
userId, true, DateUtils.getStartOfDay(end), end, start, end);
records1.addAll(records2);
return records1;
}
说明:
- 代码中使用了
DateUtils类来获取时间段的开始和结束时间,需要根据实际情况进行修改。 - 代码中的
attendanceDao是数据库操作类,需要根据实际情况进行修改。 - 代码中
userId和queryTime是查询条件,需要根据实际情况进行修改。 - 代码中的
findByUserIdAndIsNightShiftAndStartTimeBetweenOrEndTimeBetween方法是数据库查询方法,需要根据实际情况进行修改。
总结:
以上代码示例仅供参考,实际开发中需要根据具体的业务需求和数据库结构进行修改。
原文地址: https://www.cveoy.top/t/topic/naYH 著作权归作者所有。请勿转载和采集!