fix(attendance): 修复考勤检查中的日期时间格式和反向跨天逻辑问题

- 移除了 WmsAttendanceCheck 实体中 delFlag 字段的 TableLogic 注解
- 修复了跨天情况下工作日期范围计算的逻辑错误
- 修正了跨天考勤窗口开始时间的计算方式
- 将考勤检查VO中时间段字段的时间格式从 HH:mm 更新为 yyyy-MM-dd HH:mm
This commit is contained in:
2026-05-15 18:04:40 +08:00
parent e1b77febb8
commit 41a31e7568
3 changed files with 10 additions and 7 deletions

View File

@@ -49,6 +49,5 @@ public class WmsAttendanceCheck extends BaseEntity {
private String overallStatus;
private String remark;
@TableLogic
private Integer delFlag;
}

View File

@@ -26,9 +26,9 @@ public class WmsAttendanceCheckVo {
@ExcelProperty(value = "班次")
private String shiftName;
@JsonFormat(pattern = "HH:mm")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
private Date p1StartTime;
@JsonFormat(pattern = "HH:mm")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
private Date p1EndTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
private Date p1FirstCheck;
@@ -43,9 +43,9 @@ public class WmsAttendanceCheckVo {
@ExcelProperty(value = "上午扣款")
private BigDecimal p1Deduct;
@JsonFormat(pattern = "HH:mm")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
private Date p2StartTime;
@JsonFormat(pattern = "HH:mm")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
private Date p2EndTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
private Date p2FirstCheck;

View File

@@ -227,7 +227,9 @@ public class WmsAttendanceCheckServiceImpl implements IWmsAttendanceCheckService
return new ArrayList<>();
}
LocalDate ld = toLocalDate(workDate);
LocalDateTime rangeStart = ld.atStartOfDay();
LocalDateTime rangeStart = backward
? ld.minusDays(1).atStartOfDay()
: ld.atStartOfDay();
LocalDateTime rangeEnd = crossDay && !backward
? ld.plusDays(1).atTime(LocalTime.of(23, 59, 59))
: ld.atTime(LocalTime.of(23, 59, 59));
@@ -329,7 +331,9 @@ public class WmsAttendanceCheckServiceImpl implements IWmsAttendanceCheckService
boolean backward = crossDay && et != null && et.getHour() >= 12;
if (crossDay && backward) {
windowStart = LocalDateTime.of(ld, et).minusHours(2);
windowStart = st != null
? LocalDateTime.of(ld.minusDays(1), st).minusHours(2)
: LocalDateTime.of(ld, et).minusHours(2);
windowEnd = LocalDateTime.of(ld, et).plusHours(2);
} else if (crossDay) {
windowStart = LocalDateTime.of(ld, st).minusHours(2);