用户每次打卡根据时间插入打卡状态,如果没有打卡则状态为缺卡,该怎么去统计这个状态记录?会有一个工作日表和打卡点表。 我写定时任务,月度考核表时发现表设计可能有缺陷。
/**
* 根据当日考勤状态 设置月考核表: 正常、异常、缺卡、早退、考勤率等字段
*
* @param record {@link AttendanceRecord}
* @param attendanceMonthAssess {@link AttendanceMonthAssess}
*/
public void setRecordStatus(AttendanceRecord record, AttendanceMonthAssess attendanceMonthAssess) {
// 根据今天打卡状态 更新天数
Integer signStatus = record.getSignStatus();
Integer outStatus = record.getOutStatus();
if (outStatus.equals(RecordStatusEnum.IGNORE.getKey()) || signStatus.equals(outStatus)) {
switch (signStatus) {
case 0:
// 异常天
attendanceMonthAssess.setAbnormal(attendanceMonthAssess.getAbnormal() == null ? 1 : attendanceMonthAssess.getNormal() + 1);
break;
case 1:
// 正常天
attendanceMonthAssess.setNormal(attendanceMonthAssess.getNormal() == null ? 1 : attendanceMonthAssess.getNormal() + 1);
break;
case 2:
// 缺卡天
attendanceMonthAssess.setAbnormal(attendanceMonthAssess.getAbnormal() == null ? 1 : attendanceMonthAssess.getNormal() + 1);
attendanceMonthAssess.setAbsent(attendanceMonthAssess.getAbsent() == null ? 1 : attendanceMonthAssess.getNormal() + 1);
break;
case 3:
// 早退天
attendanceMonthAssess.setAbnormal(attendanceMonthAssess.getAbnormal() == null ? 1 : attendanceMonthAssess.getNormal() + 1);
attendanceMonthAssess.setEarlyLeave(attendanceMonthAssess.getEarlyLeave() == null ? 1 : attendanceMonthAssess.getNormal() + 1);
break;
default:
}
} else {
// todo:签到签退状态不同,且签退计入考勤
}
这是考勤表设计:
字段 | 类型 | 备注 |
---|---|---|
id | long | id |
agent_code | String | 代理人编码 |
agent_name | String | 代理人姓名 |
lng | double | 经度 |
lat | double | 纬度 |
sign_address | String | |
sign_id | long | 考勤点 id |
sign_time | datetime | 实际签到时间 |
out_time | datetime | 实际签退时间 |
sign_status | int | 状态:有效、无效、缺卡 |
out_status | int | 状态:有效、无效、缺卡、不计考勤 |
face_url | String | 打卡底片 url |
attendance_group | String | 考勤组 |
modify_by | String | 修改人 |
modify_time | date | 修改时间 |
is_delete | int | 是否删除 |
sign_date | date | 考勤日期 yyyyMMdd |
extra1 | String | 备用字段 1 |
extra2 | String | 备用字段 2 |
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.