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 overallStatus;
private String remark; private String remark;
@TableLogic
private Integer delFlag; private Integer delFlag;
} }

View File

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

View File

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