This commit is contained in:
zt
2025-11-19 10:48:22 +08:00
parent 4e78886a82
commit bec0848cd9
3 changed files with 81 additions and 2 deletions

View File

@ -68,6 +68,11 @@ public class BusAttendanceController extends BaseController {
return R.ok(busAttendanceService.listAttendanceMonthListByUserId(req)); return R.ok(busAttendanceService.listAttendanceMonthListByUserId(req));
} }
@GetMapping("/sub/list/month/byUserId")
public R<List<BusAttendanceMonthByUserIdVo>> subListAttendanceMonthListByUserId(BusAttendanceMonthByUserIdReq req) {
return R.ok(busAttendanceService.subListAttendanceMonthListByUserId(req));
}
/** /**
* 导出考勤列表 * 导出考勤列表
*/ */

View File

@ -43,6 +43,9 @@ public interface IBusAttendanceService extends IService<BusAttendance>{
*/ */
List<BusAttendanceMonthByUserIdVo> listAttendanceMonthListByUserId(BusAttendanceMonthByUserIdReq req); List<BusAttendanceMonthByUserIdVo> listAttendanceMonthListByUserId(BusAttendanceMonthByUserIdReq req);
List<BusAttendanceMonthByUserIdVo> subListAttendanceMonthListByUserId(BusAttendanceMonthByUserIdReq req);
/** /**
* 分页查询考勤列表 * 分页查询考勤列表
* *

View File

@ -229,6 +229,76 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
return respList; return respList;
} }
@Override
public List<BusAttendanceMonthByUserIdVo> subListAttendanceMonthListByUserId(BusAttendanceMonthByUserIdReq req) {
Long userId = req.getUserId();
String clockMonth = req.getClockMonth();
// 解析月份
YearMonth yearMonth;
if (StringUtils.isNotBlank(clockMonth)) {
// 校验月份格式
if (!DateConstant.YEAR_MONTH_PATTERN.matcher(clockMonth).matches()) {
throw new ServiceException("月份格式不正确", HttpStatus.ERROR);
}
yearMonth = YearMonth.parse(clockMonth);
} else {
// 如果月份为空,则默认查询当前月份
yearMonth = YearMonth.now();
}
// 计算当月第一天 / 最后一天
Date start = DateUtils.toDate(yearMonth.atDay(1));
Date end = DateUtils.toDate(yearMonth.atEndOfMonth());
// 查询当月考勤记录
Map<LocalDate, List<BusAttendance>> dateListMap = this.lambdaQuery()
.eq(BusAttendance::getUserId, userId)
.between(BusAttendance::getClockDate, start, end)
.list()
.stream().collect(Collectors.groupingBy(BusAttendance::getClockDate));
// 遍历每天,计算考勤状态
List<BusAttendanceMonthByUserIdVo> respList = new ArrayList<>();
dateListMap.forEach((date, attendanceList) -> {
BusAttendanceMonthByUserIdVo resp = new BusAttendanceMonthByUserIdVo();
resp.setId(userId);
resp.setClockDate(date);
List<BusAttendanceListByDay> attendanceListByDayList = new ArrayList<>();
String clockInStatus = null;
String clockOutStatus = null;
String clockAllDayStatus = null;
String status;
for (BusAttendance attendance : attendanceList) {
// 获取考勤记录
BusAttendanceListByDay day = BusAttendanceListByDay.build(attendance);
attendanceListByDayList.add(day);
// 获取上下班状态
if (BusAttendanceCommuterEnum.CLOCKIN.getValue().equals(attendance.getClockType())) {
clockInStatus = attendance.getClockStatus();
} else if (BusAttendanceCommuterEnum.CLOCKOUT.getValue().equals(attendance.getClockType())) {
clockOutStatus = attendance.getClockStatus();
} else {
clockAllDayStatus = attendance.getClockStatus();
}
}
// 统计当天考勤状态
if (BusAttendanceClockStatusEnum.LEAVE.getValue().equals(clockAllDayStatus)) {
return;
} else if (BusAttendanceClockStatusEnum.NORMAL.getValue().equals(clockInStatus)
&& BusAttendanceClockStatusEnum.NORMAL.getValue().equals(clockOutStatus)) {
status = BusAttendanceStatusEnum.NORMAL.getValue();
} else if (BusAttendanceClockStatusEnum.REISSUE.getValue().equals(clockInStatus)
|| BusAttendanceClockStatusEnum.REISSUE.getValue().equals(clockOutStatus)) {
status = BusAttendanceStatusEnum.REISSUE.getValue();
} else {
status = BusAttendanceStatusEnum.ERROR.getValue();
}
resp.setStatus(status);
resp.setAttendanceList(attendanceListByDayList);
respList.add(resp);
});
// 按打卡日期正序排列
respList.sort(Comparator.comparing(BusAttendanceMonthByUserIdVo::getClockDate));
return respList;
}
/** /**
* 查询符合条件的考勤列表 * 查询符合条件的考勤列表
* *
@ -2493,7 +2563,8 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
for (SysUserVo sysUserVo : rows) { for (SysUserVo sysUserVo : rows) {
SubUserAttendanceTotalVo vo = new SubUserAttendanceTotalVo(); SubUserAttendanceTotalVo vo = new SubUserAttendanceTotalVo();
vo.setUserName(sysUserVo.getUserName()); vo.setId(sysUserVo.getUserId());
vo.setUserName(sysUserVo.getNickName());
vo.setContractorId(sysUserVo.getContractorId()); vo.setContractorId(sysUserVo.getContractorId());
vo.setContractorName(sysUserVo.getContractorName()); vo.setContractorName(sysUserVo.getContractorName());
List<BusAttendance> userList = list.stream().filter(attendance -> attendance.getUserId().equals(sysUserVo.getUserId())).toList(); List<BusAttendance> userList = list.stream().filter(attendance -> attendance.getUserId().equals(sysUserVo.getUserId())).toList();
@ -2597,7 +2668,7 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
for (SysUserVo sysUserVo : sysUserVoTableDataInfo.getRows()) { for (SysUserVo sysUserVo : sysUserVoTableDataInfo.getRows()) {
SubAttendanceTodayUserVo subAttendanceTodayUserVo = new SubAttendanceTodayUserVo(); SubAttendanceTodayUserVo subAttendanceTodayUserVo = new SubAttendanceTodayUserVo();
subAttendanceTodayUserVo.setUserId(sysUserVo.getUserId()); subAttendanceTodayUserVo.setUserId(sysUserVo.getUserId());
subAttendanceTodayUserVo.setUserName(sysUserVo.getUserName()); subAttendanceTodayUserVo.setUserName(sysUserVo.getNickName());
subAttendanceTodayUserVo.setContractorId(sysUserVo.getContractorId()); subAttendanceTodayUserVo.setContractorId(sysUserVo.getContractorId());
subAttendanceTodayUserVo.setContractorName(sysUserVo.getContractorName()); subAttendanceTodayUserVo.setContractorName(sysUserVo.getContractorName());
list.add(subAttendanceTodayUserVo); list.add(subAttendanceTodayUserVo);