From 3798cb6a630e946862c1ae33c9fb45a84b6c3acd Mon Sep 17 00:00:00 2001 From: aikai Date: Mon, 27 May 2024 20:41:55 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E8=80=83=E5=8B=A4=E6=8C=89=E5=A4=A9/?= =?UTF-8?q?=E6=8C=89=E5=91=A8=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vo/AttendancePunchRecordRespVO.java | 7 ++++++ .../app/attendance/AttendanceController.java | 6 ++--- .../dto/AttendanceStatisticsByDayDTO.java | 2 +- .../attendance/vo/AttendanceStatisticsVO.java | 4 ++++ .../AttendanceGroupShiftItemDO.java | 6 +++++ .../punchrecord/AttendancePunchRecordDO.java | 8 +++++++ .../AttendancePunchRecordMapper.java | 4 ++-- .../attendance/AttendanceStatisticsJob.java | 2 ++ .../service/attendance/AttendanceService.java | 2 +- .../attendance/AttendanceServiceImpl.java | 24 +++++++++++-------- .../group/AttendanceGroupServiceImpl.java | 1 + .../AttendanceGroupShiftItemServiceImpl.java | 15 +++++++++++- .../punch/dto/AttendanceOnTheDayDTO.java | 3 +++ 13 files changed, 65 insertions(+), 19 deletions(-) diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/punchrecord/vo/AttendancePunchRecordRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/punchrecord/vo/AttendancePunchRecordRespVO.java index 2cafcdf7..d47cb039 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/punchrecord/vo/AttendancePunchRecordRespVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/punchrecord/vo/AttendancePunchRecordRespVO.java @@ -92,4 +92,11 @@ public class AttendancePunchRecordRespVO { @ExcelProperty("创建时间") private LocalDateTime createTime; + @Schema(description = "考勤组名称") + @ExcelProperty("考勤组名称") + private String attendanceGroupName; + + @Schema(description = "班次名称") + @ExcelProperty("班次名称") + private String attendanceGroupShiftName; } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/AttendanceController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/AttendanceController.java index 2db60a8b..28c1debb 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/AttendanceController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/AttendanceController.java @@ -1,7 +1,5 @@ package cn.iocoder.yudao.module.system.controller.app.attendance; -import cn.hutool.json.JSON; -import cn.hutool.json.JSONUtil; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.module.system.controller.app.attendance.dto.AttendancePunchDTO; import cn.iocoder.yudao.module.system.controller.app.attendance.dto.AttendancePunchPageDTO; @@ -48,8 +46,8 @@ public class AttendanceController { @GetMapping("/statisticsByDay") @Operation(summary = "统计按天") - public CommonResult>> statisticsByDay(@ModelAttribute AttendanceStatisticsByDayDTO dto) { - Map> vo = attendanceService.statisticsByDay(dto); + public CommonResult>>> statisticsByDay(@ModelAttribute AttendanceStatisticsByDayDTO dto) { + Map>> vo = attendanceService.statisticsByDay(dto); return success(vo); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/dto/AttendanceStatisticsByDayDTO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/dto/AttendanceStatisticsByDayDTO.java index 042a47fa..4dad7c95 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/dto/AttendanceStatisticsByDayDTO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/dto/AttendanceStatisticsByDayDTO.java @@ -21,6 +21,6 @@ public class AttendanceStatisticsByDayDTO { @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY) @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY, timezone = TIME_ZONE_DEFAULT) - @Schema(description = "当前查看的时间 (默认当天 按周或者按月 传周/月 开始时间过来即可)") + @Schema(description = "当前查看的时间 (默认当天 yyyy-MM-dd)") private Date time = new Date(); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendanceStatisticsVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendanceStatisticsVO.java index 4159c795..4605e1db 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendanceStatisticsVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendanceStatisticsVO.java @@ -40,10 +40,14 @@ public class AttendanceStatisticsVO { int totalLateArrivalsNumber = 0; // 迟到总时间 long totalLateArrivalsTime = 0L; + // 迟到总时间中文 + String totalLateArrivalsTimeStr; // 早退总次数 int totalEarlyDeparturesNumber = 0; // 早退总时间 long totalEarlyDeparturesTime = 0L; + // 早退总时间 + String totalEarlyDeparturesTimeStr; // 缺卡总次数 int totalMissingCardsNumber = 0; // 矿工总天数 diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/attendance/groupshiftitem/AttendanceGroupShiftItemDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/attendance/groupshiftitem/AttendanceGroupShiftItemDO.java index 1af58e0b..08a3ce15 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/attendance/groupshiftitem/AttendanceGroupShiftItemDO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/attendance/groupshiftitem/AttendanceGroupShiftItemDO.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupshiftitem; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.*; @@ -30,6 +31,11 @@ public class AttendanceGroupShiftItemDO extends BaseDO { * 班次id */ private Long kqAttendanceGroupShiftId; + /** + * 班次名称 + */ + @TableField(exist = false) + private String kqAttendanceGroupShiftName; /** * 级别 从1到~ 排序用 */ diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/attendance/punchrecord/AttendancePunchRecordDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/attendance/punchrecord/AttendancePunchRecordDO.java index 5a406b88..71ada7b3 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/attendance/punchrecord/AttendancePunchRecordDO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/attendance/punchrecord/AttendancePunchRecordDO.java @@ -39,10 +39,18 @@ public class AttendancePunchRecordDO extends BaseDO { * 考勤组id */ private Long attendanceGroupId; + /** + * 考勤组名称 + */ + private String attendanceGroupName; /** * 班次id */ private Long attendanceGroupShiftId; + /** + * 班次名称 + */ + private String attendanceGroupShiftName; /** * 班次子表id */ diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/attendance/punchrecord/AttendancePunchRecordMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/attendance/punchrecord/AttendancePunchRecordMapper.java index fd8043bc..106b0fba 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/attendance/punchrecord/AttendancePunchRecordMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/attendance/punchrecord/AttendancePunchRecordMapper.java @@ -1,11 +1,11 @@ package cn.iocoder.yudao.module.system.dal.mysql.attendance.punchrecord; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.system.controller.admin.punchrecord.vo.AttendancePunchRecordPageReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.attendance.punchrecord.AttendancePunchRecordDO; import org.apache.ibatis.annotations.Mapper; -import cn.iocoder.yudao.module.system.controller.admin.punchrecord.vo.*; /** * 用户打卡记录 Mapper diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/attendance/AttendanceStatisticsJob.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/attendance/AttendanceStatisticsJob.java index c5c1e71a..8e9d1b5a 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/attendance/AttendanceStatisticsJob.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/attendance/AttendanceStatisticsJob.java @@ -105,7 +105,9 @@ public class AttendanceStatisticsJob { AttendancePunchRecordDO attendancePunchRecordDO = new AttendancePunchRecordDO(); attendancePunchRecordDO.setUserId(userId); attendancePunchRecordDO.setAttendanceGroupId(entry.getKey()); + attendancePunchRecordDO.setAttendanceGroupName(attendanceGroupDO.getGroupName()); attendancePunchRecordDO.setAttendanceGroupShiftId(attendanceOnTheDayDTO.getKqAttendanceGroupShiftId()); + attendancePunchRecordDO.setAttendanceGroupShiftName(attendanceOnTheDayDTO.getKqAttendanceGroupShiftName()); attendancePunchRecordDO.setAttendanceGroupShiftItemId(attendanceOnTheDayDTO.getId()); attendancePunchRecordDO.setType(attendanceGroupDO.getType()); attendancePunchRecordDO.setPunchType(attendanceGroupDO.getPunchType()); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceService.java index 397c7e5f..9c860ea1 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceService.java @@ -63,7 +63,7 @@ public interface AttendanceService { * @param dto * @return */ - Map> statisticsByDay(AttendanceStatisticsByDayDTO dto); + Map>> statisticsByDay(AttendanceStatisticsByDayDTO dto); /** * 考勤统计按周期 diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceServiceImpl.java index e7dc1c6d..7776626a 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceServiceImpl.java @@ -33,7 +33,6 @@ import cn.iocoder.yudao.module.system.service.attendance.punch.dto.AttendanceOnT import cn.iocoder.yudao.module.system.service.attendance.punchrecord.AttendancePunchRecordService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.data.redis.core.StringRedisTemplate; @@ -45,10 +44,7 @@ import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @@ -367,6 +363,7 @@ public class AttendanceServiceImpl implements AttendanceService { AttendanceOnTheDayDTO dto = new AttendanceOnTheDayDTO(); dto.setId(attendanceGroupShiftItemDO.getId()); dto.setKqAttendanceGroupShiftId(attendanceGroupShiftItemDO.getKqAttendanceGroupShiftId()); + dto.setKqAttendanceGroupShiftName(attendanceGroupShiftItemDO.getKqAttendanceGroupShiftName()); dto.setTime(attendanceGroupShiftItemDO.getBeginTime()); dto.setPunchTime(StringUtils.EMPTY); dto.setType(UP_WORK); @@ -380,6 +377,7 @@ public class AttendanceServiceImpl implements AttendanceService { dto = new AttendanceOnTheDayDTO(); dto.setId(attendanceGroupShiftItemDO.getId()); dto.setKqAttendanceGroupShiftId(attendanceGroupShiftItemDO.getKqAttendanceGroupShiftId()); + dto.setKqAttendanceGroupShiftName(attendanceGroupShiftItemDO.getKqAttendanceGroupShiftName()); dto.setTime(attendanceGroupShiftItemDO.getEndTime()); dto.setPunchTime(StringUtils.EMPTY); dto.setType(DOWN_WORK); @@ -394,7 +392,7 @@ public class AttendanceServiceImpl implements AttendanceService { } @Override - public Map> statisticsByDay(AttendanceStatisticsByDayDTO dto) { + public Map>> statisticsByDay(AttendanceStatisticsByDayDTO dto) { //获取当前天 所在月份所有日期 List dateList = DateUtils.betweenDayList(DateUtil.beginOfMonth(dto.getTime()), DateUtil.endOfMonth(dto.getTime())); @@ -403,8 +401,14 @@ public class AttendanceServiceImpl implements AttendanceService { .in(AttendancePunchRecordDO::getDayTime, dateList) .orderByAsc(AttendancePunchRecordDO::getWorkType) .orderByAsc(AttendancePunchRecordDO::getLevel)); -// list.stream().collect(Collectors.groupingBy(AttendancePunchRecordDO::getDayTime)); - return list.stream().collect(Collectors.groupingBy(AttendancePunchRecordDO::getDayTime)); + Map>> map = new HashMap<>(); + + Map> collect = list.stream().collect(Collectors.groupingBy(AttendancePunchRecordDO::getDayTime)); + for (Map.Entry> entry : collect.entrySet()) { + Map> itemMap = entry.getValue().stream().collect(Collectors.groupingBy(a -> a.getAttendanceGroupId() + "_" + a.getAttendanceGroupShiftId())); + map.put(entry.getKey(), itemMap); + } + return map; } @Override @@ -474,9 +478,10 @@ public class AttendanceServiceImpl implements AttendanceService { } // -- 休息计算 List restDays = this.calculateRestDayList(dateList, map.keySet().stream().distinct().collect(Collectors.toList()), calculateNum); - calculateNum.setAverageWorkingHours(calculateNum.getTotalAttendanceDays() == 0 ? 0 : calculateNum.getTotalWorkingHours() / calculateNum.getTotalAttendanceDays()); calculateNum.setAverageWorkingHoursStr(DateUtil.formatBetween(calculateNum.getAverageWorkingHours(), BetweenFormatter.Level.MINUTE)); + calculateNum.setTotalLateArrivalsTimeStr(DateUtil.formatBetween(calculateNum.getTotalLateArrivalsTime(), BetweenFormatter.Level.MINUTE)); + calculateNum.setTotalEarlyDeparturesTimeStr(DateUtil.formatBetween(calculateNum.getTotalEarlyDeparturesTime(), BetweenFormatter.Level.MINUTE)); vo.setAttendanceDays(attendanceDays); vo.setAverageWorkingHours(averageWorkingHours); vo.setBeLateNumber(beLateNumber); @@ -721,7 +726,6 @@ public class AttendanceServiceImpl implements AttendanceService { } - } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/group/AttendanceGroupServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/group/AttendanceGroupServiceImpl.java index b2d81445..3391c888 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/group/AttendanceGroupServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/group/AttendanceGroupServiceImpl.java @@ -155,6 +155,7 @@ public class AttendanceGroupServiceImpl implements AttendanceGroupService { attendancePunchRecordDO.setUserId(userId); attendancePunchRecordDO.setAttendanceGroupId(entry.getKey()); attendancePunchRecordDO.setAttendanceGroupShiftId(attendanceOnTheDayDTO.getKqAttendanceGroupShiftId()); + attendancePunchRecordDO.setAttendanceGroupShiftName(attendanceOnTheDayDTO.getKqAttendanceGroupShiftName()); attendancePunchRecordDO.setAttendanceGroupShiftItemId(attendanceOnTheDayDTO.getId()); attendancePunchRecordDO.setType(attendanceGroupDO.getType()); attendancePunchRecordDO.setPunchType(attendanceGroupDO.getPunchType()); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/groupshiftitem/AttendanceGroupShiftItemServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/groupshiftitem/AttendanceGroupShiftItemServiceImpl.java index b88b5f1b..271babce 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/groupshiftitem/AttendanceGroupShiftItemServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/groupshiftitem/AttendanceGroupShiftItemServiceImpl.java @@ -4,7 +4,9 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.system.controller.admin.groupshiftitem.vo.AttendanceGroupShiftItemPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.groupshiftitem.vo.AttendanceGroupShiftItemSaveReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupshift.AttendanceGroupShiftDO; import cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupshiftitem.AttendanceGroupShiftItemDO; +import cn.iocoder.yudao.module.system.dal.mysql.attendance.groupshift.AttendanceGroupShiftMapper; import cn.iocoder.yudao.module.system.dal.mysql.attendance.groupshiftitem.AttendanceGroupShiftItemMapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.springframework.stereotype.Service; @@ -12,6 +14,9 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; /** * 考勤组班次子表 Service 实现类 @@ -24,6 +29,8 @@ public class AttendanceGroupShiftItemServiceImpl implements AttendanceGroupShift @Resource private AttendanceGroupShiftItemMapper attendanceGroupShiftItemMapper; + @Resource + private AttendanceGroupShiftMapper attendanceGroupShiftMapper; @Override public Long createAttendanceGroupShiftItem(AttendanceGroupShiftItemSaveReqVO createReqVO) { @@ -67,9 +74,15 @@ public class AttendanceGroupShiftItemServiceImpl implements AttendanceGroupShift @Override public List getGroupShiftItemListByShiftIds(List attendanceGroupShiftIds) { - return attendanceGroupShiftItemMapper.selectList(new LambdaQueryWrapper() + List dos = attendanceGroupShiftItemMapper.selectList(new LambdaQueryWrapper() .in(AttendanceGroupShiftItemDO::getKqAttendanceGroupShiftId, attendanceGroupShiftIds) .orderByAsc(AttendanceGroupShiftItemDO::getLevel)); + List groupShiftDOS = attendanceGroupShiftMapper.selectBatchIds(attendanceGroupShiftIds); + Map map = groupShiftDOS.stream().collect(Collectors.toMap(AttendanceGroupShiftDO::getId, Function.identity())); + for (AttendanceGroupShiftItemDO item : dos) { + item.setKqAttendanceGroupShiftName(map.get(item.getKqAttendanceGroupShiftId()) == null ? "" : map.get(item.getKqAttendanceGroupShiftId()).getName()); + } + return dos; } } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/punch/dto/AttendanceOnTheDayDTO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/punch/dto/AttendanceOnTheDayDTO.java index 44b87089..9c433fac 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/punch/dto/AttendanceOnTheDayDTO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/punch/dto/AttendanceOnTheDayDTO.java @@ -23,6 +23,9 @@ public class AttendanceOnTheDayDTO { @Schema(description = "班次id") private Long kqAttendanceGroupShiftId; + @Schema(description = "班次名称") + private String kqAttendanceGroupShiftName; + @Schema(description = "类型 0上班 1下班") private Integer type; From b2e2c07d2eb05c3402873434990cfdefc7a1fba5 Mon Sep 17 00:00:00 2001 From: aikai Date: Tue, 28 May 2024 11:35:37 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=8C=89=E5=A4=A9?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/attendance/AttendanceController.java | 8 +++-- .../attendance/vo/AttendanceStatisticsVO.java | 28 ++++++++--------- .../attendance/vo/AttendanceStatusByDay.java | 20 +++++++++++++ .../service/attendance/AttendanceService.java | 3 +- .../attendance/AttendanceServiceImpl.java | 30 +++++++++++++++---- 5 files changed, 67 insertions(+), 22 deletions(-) create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendanceStatusByDay.java diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/AttendanceController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/AttendanceController.java index 28c1debb..82ae98f2 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/AttendanceController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/AttendanceController.java @@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.system.controller.app.attendance.dto.AttendanceSt import cn.iocoder.yudao.module.system.controller.app.attendance.vo.AttendancePunchPageVO; import cn.iocoder.yudao.module.system.controller.app.attendance.vo.AttendancePunchVO; import cn.iocoder.yudao.module.system.controller.app.attendance.vo.AttendanceStatisticsVO; +import cn.iocoder.yudao.module.system.controller.app.attendance.vo.AttendanceStatusByDay; import cn.iocoder.yudao.module.system.dal.dataobject.attendance.punchrecord.AttendancePunchRecordDO; import cn.iocoder.yudao.module.system.service.attendance.AttendanceService; import io.swagger.v3.oas.annotations.Operation; @@ -46,8 +47,8 @@ public class AttendanceController { @GetMapping("/statisticsByDay") @Operation(summary = "统计按天") - public CommonResult>>> statisticsByDay(@ModelAttribute AttendanceStatisticsByDayDTO dto) { - Map>> vo = attendanceService.statisticsByDay(dto); + public CommonResult> statisticsByDay(@ModelAttribute AttendanceStatisticsByDayDTO dto) { + Map vo = attendanceService.statisticsByDay(dto); return success(vo); } @@ -57,4 +58,7 @@ public class AttendanceController { AttendanceStatisticsVO vo = attendanceService.statisticsByCycle(dto); return success(vo); } + + + } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendanceStatisticsVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendanceStatisticsVO.java index 4605e1db..e33f0305 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendanceStatisticsVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendanceStatisticsVO.java @@ -30,33 +30,33 @@ public class AttendanceStatisticsVO { @Data public static class CalculateNum { - // 总考勤时间 + @Schema(description = "总考勤时间") long totalWorkingHours = 0L; - // 总出勤天数 + @Schema(description = "总出勤天数") int totalAttendanceDays = 0; - // 总休息天数 + @Schema(description = "总休息天数") int totalRestDays = 0; - // 迟到总次数 + @Schema(description = "迟到总次数") int totalLateArrivalsNumber = 0; - // 迟到总时间 + @Schema(description = "迟到总时间") long totalLateArrivalsTime = 0L; - // 迟到总时间中文 + @Schema(description = "迟到总时间中文") String totalLateArrivalsTimeStr; - // 早退总次数 + @Schema(description = "早退总次数") int totalEarlyDeparturesNumber = 0; - // 早退总时间 + @Schema(description = "早退总时间") long totalEarlyDeparturesTime = 0L; - // 早退总时间 + @Schema(description = "早退总时间中文") String totalEarlyDeparturesTimeStr; - // 缺卡总次数 + @Schema(description = "缺卡总次数") int totalMissingCardsNumber = 0; - // 矿工总天数 + @Schema(description = "矿工总天数") int totalMinerDays = 0; - // 外勤次数 + @Schema(description = "外勤次数") int totalFieldServiceNumber = 0; - // 平均工时 + @Schema(description = "平均工时") long averageWorkingHours = 0L; - // 平均工时 + @Schema(description = "平均工时中文") String averageWorkingHoursStr; } } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendanceStatusByDay.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendanceStatusByDay.java new file mode 100644 index 00000000..16fedf1e --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendanceStatusByDay.java @@ -0,0 +1,20 @@ +package cn.iocoder.yudao.module.system.controller.app.attendance.vo; + +import cn.iocoder.yudao.module.system.dal.dataobject.attendance.punchrecord.AttendancePunchRecordDO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.List; +import java.util.Map; + +@Data +@Accessors(chain = true) +public class AttendanceStatusByDay { + @Schema(description = "状态 0正常 1异常(迟到/早退/缺卡)") + private Integer status; + @Schema(description = "是否有提交过 请假/加班/出差/外出/补卡 申请 0否 1是") + private Integer submitStatus = 0; + @Schema(description = "考勤记录根据考勤组/班次 分组") + private List>> listMap; +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceService.java index 9c860ea1..54fcae70 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceService.java @@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.system.controller.app.attendance.dto.AttendanceSt import cn.iocoder.yudao.module.system.controller.app.attendance.vo.AttendancePunchPageVO; import cn.iocoder.yudao.module.system.controller.app.attendance.vo.AttendancePunchVO; import cn.iocoder.yudao.module.system.controller.app.attendance.vo.AttendanceStatisticsVO; +import cn.iocoder.yudao.module.system.controller.app.attendance.vo.AttendanceStatusByDay; import cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupshiftitem.AttendanceGroupShiftItemDO; import cn.iocoder.yudao.module.system.dal.dataobject.attendance.punchrecord.AttendancePunchRecordDO; import cn.iocoder.yudao.module.system.service.attendance.punch.dto.AttendanceOnTheDayDTO; @@ -63,7 +64,7 @@ public interface AttendanceService { * @param dto * @return */ - Map>> statisticsByDay(AttendanceStatisticsByDayDTO dto); + Map statisticsByDay(AttendanceStatisticsByDayDTO dto); /** * 考勤统计按周期 diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceServiceImpl.java index 7776626a..7436e14d 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceServiceImpl.java @@ -392,21 +392,41 @@ public class AttendanceServiceImpl implements AttendanceService { } @Override - public Map>> statisticsByDay(AttendanceStatisticsByDayDTO dto) { + public Map statisticsByDay(AttendanceStatisticsByDayDTO dto) { //获取当前天 所在月份所有日期 List dateList = DateUtils.betweenDayList(DateUtil.beginOfMonth(dto.getTime()), DateUtil.endOfMonth(dto.getTime())); List list = attendancePunchRecordMapper.selectList(new LambdaQueryWrapper() .eq(AttendancePunchRecordDO::getUserId, dto.getUserId()) .in(AttendancePunchRecordDO::getDayTime, dateList) - .orderByAsc(AttendancePunchRecordDO::getWorkType) - .orderByAsc(AttendancePunchRecordDO::getLevel)); - Map>> map = new HashMap<>(); + .orderByAsc(AttendancePunchRecordDO::getDayTime) + .orderByAsc(AttendancePunchRecordDO::getLevel) + .orderByAsc(AttendancePunchRecordDO::getWorkType)); + Map map = new HashMap<>(); Map> collect = list.stream().collect(Collectors.groupingBy(AttendancePunchRecordDO::getDayTime)); + + List statusList = Arrays.asList(AttendanceOnTheDayDTO.PUNCH_STATUS_LATE, AttendanceOnTheDayDTO.PUNCH_STATUS_LEAVE_EARLY, AttendanceOnTheDayDTO.PUNCH_STATUS_MISS); for (Map.Entry> entry : collect.entrySet()) { + AttendanceStatusByDay attendanceStatusByDay = new AttendanceStatusByDay(); + int status = 0; + for (AttendancePunchRecordDO attendancePunchRecordDO : entry.getValue()) { + if (statusList.contains(attendancePunchRecordDO.getStatus())) { + status = 1; + break; + } + } + attendanceStatusByDay.setStatus(status); + attendanceStatusByDay.setSubmitStatus(Constants.FALSE); + List>> listMap = new ArrayList<>(); Map> itemMap = entry.getValue().stream().collect(Collectors.groupingBy(a -> a.getAttendanceGroupId() + "_" + a.getAttendanceGroupShiftId())); - map.put(entry.getKey(), itemMap); + for (Map.Entry> stringListEntry : itemMap.entrySet()) { + Map> item = new HashMap<>(); + item.put(stringListEntry.getKey(), stringListEntry.getValue()); + listMap.add(item); + } + attendanceStatusByDay.setListMap(listMap); + map.put(entry.getKey(), attendanceStatusByDay); } return map; } From e1adac3c89ef0e2ce02675de477396af806a05ac Mon Sep 17 00:00:00 2001 From: aikai Date: Tue, 28 May 2024 11:51:42 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=8C=89=E5=A4=A9?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/attendance/AttendanceController.java | 8 +++--- .../attendance/vo/AttendanceByGroupVO.java | 19 +++++++++++++ ...yDay.java => AttendanceStatusByDayVO.java} | 6 ++--- .../service/attendance/AttendanceService.java | 5 ++-- .../attendance/AttendanceServiceImpl.java | 27 +++++++++++-------- 5 files changed, 42 insertions(+), 23 deletions(-) create mode 100644 yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendanceByGroupVO.java rename yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/{AttendanceStatusByDay.java => AttendanceStatusByDayVO.java} (70%) diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/AttendanceController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/AttendanceController.java index 82ae98f2..4855c197 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/AttendanceController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/AttendanceController.java @@ -8,8 +8,7 @@ import cn.iocoder.yudao.module.system.controller.app.attendance.dto.AttendanceSt import cn.iocoder.yudao.module.system.controller.app.attendance.vo.AttendancePunchPageVO; import cn.iocoder.yudao.module.system.controller.app.attendance.vo.AttendancePunchVO; import cn.iocoder.yudao.module.system.controller.app.attendance.vo.AttendanceStatisticsVO; -import cn.iocoder.yudao.module.system.controller.app.attendance.vo.AttendanceStatusByDay; -import cn.iocoder.yudao.module.system.dal.dataobject.attendance.punchrecord.AttendancePunchRecordDO; +import cn.iocoder.yudao.module.system.controller.app.attendance.vo.AttendanceStatusByDayVO; import cn.iocoder.yudao.module.system.service.attendance.AttendanceService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -18,7 +17,6 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.validation.Valid; -import java.util.List; import java.util.Map; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -47,8 +45,8 @@ public class AttendanceController { @GetMapping("/statisticsByDay") @Operation(summary = "统计按天") - public CommonResult> statisticsByDay(@ModelAttribute AttendanceStatisticsByDayDTO dto) { - Map vo = attendanceService.statisticsByDay(dto); + public CommonResult> statisticsByDay(@ModelAttribute AttendanceStatisticsByDayDTO dto) { + Map vo = attendanceService.statisticsByDay(dto); return success(vo); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendanceByGroupVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendanceByGroupVO.java new file mode 100644 index 00000000..af62b00e --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendanceByGroupVO.java @@ -0,0 +1,19 @@ +package cn.iocoder.yudao.module.system.controller.app.attendance.vo; + +import cn.iocoder.yudao.module.system.dal.dataobject.attendance.punchrecord.AttendancePunchRecordDO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.List; + +@Data +@Accessors(chain = true) +public class AttendanceByGroupVO { + @Schema(description = "当前考勤组名称") + private String groupName; + @Schema(description = "当前班次名称") + private String attendanceGroupShiftName; + @Schema(description = "考勤组列表") + private List list; +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendanceStatusByDay.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendanceStatusByDayVO.java similarity index 70% rename from yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendanceStatusByDay.java rename to yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendanceStatusByDayVO.java index 16fedf1e..2141e5f9 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendanceStatusByDay.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/app/attendance/vo/AttendanceStatusByDayVO.java @@ -1,20 +1,18 @@ package cn.iocoder.yudao.module.system.controller.app.attendance.vo; -import cn.iocoder.yudao.module.system.dal.dataobject.attendance.punchrecord.AttendancePunchRecordDO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.experimental.Accessors; import java.util.List; -import java.util.Map; @Data @Accessors(chain = true) -public class AttendanceStatusByDay { +public class AttendanceStatusByDayVO { @Schema(description = "状态 0正常 1异常(迟到/早退/缺卡)") private Integer status; @Schema(description = "是否有提交过 请假/加班/出差/外出/补卡 申请 0否 1是") private Integer submitStatus = 0; @Schema(description = "考勤记录根据考勤组/班次 分组") - private List>> listMap; + private List list; } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceService.java index 54fcae70..c551aad0 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceService.java @@ -7,9 +7,8 @@ import cn.iocoder.yudao.module.system.controller.app.attendance.dto.AttendanceSt import cn.iocoder.yudao.module.system.controller.app.attendance.vo.AttendancePunchPageVO; import cn.iocoder.yudao.module.system.controller.app.attendance.vo.AttendancePunchVO; import cn.iocoder.yudao.module.system.controller.app.attendance.vo.AttendanceStatisticsVO; -import cn.iocoder.yudao.module.system.controller.app.attendance.vo.AttendanceStatusByDay; +import cn.iocoder.yudao.module.system.controller.app.attendance.vo.AttendanceStatusByDayVO; import cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupshiftitem.AttendanceGroupShiftItemDO; -import cn.iocoder.yudao.module.system.dal.dataobject.attendance.punchrecord.AttendancePunchRecordDO; import cn.iocoder.yudao.module.system.service.attendance.punch.dto.AttendanceOnTheDayDTO; import java.time.LocalDateTime; @@ -64,7 +63,7 @@ public interface AttendanceService { * @param dto * @return */ - Map statisticsByDay(AttendanceStatisticsByDayDTO dto); + Map statisticsByDay(AttendanceStatisticsByDayDTO dto); /** * 考勤统计按周期 diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceServiceImpl.java index 7436e14d..ab592936 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceServiceImpl.java @@ -392,7 +392,7 @@ public class AttendanceServiceImpl implements AttendanceService { } @Override - public Map statisticsByDay(AttendanceStatisticsByDayDTO dto) { + public Map statisticsByDay(AttendanceStatisticsByDayDTO dto) { //获取当前天 所在月份所有日期 List dateList = DateUtils.betweenDayList(DateUtil.beginOfMonth(dto.getTime()), DateUtil.endOfMonth(dto.getTime())); @@ -402,13 +402,13 @@ public class AttendanceServiceImpl implements AttendanceService { .orderByAsc(AttendancePunchRecordDO::getDayTime) .orderByAsc(AttendancePunchRecordDO::getLevel) .orderByAsc(AttendancePunchRecordDO::getWorkType)); - Map map = new HashMap<>(); + Map map = new HashMap<>(); Map> collect = list.stream().collect(Collectors.groupingBy(AttendancePunchRecordDO::getDayTime)); List statusList = Arrays.asList(AttendanceOnTheDayDTO.PUNCH_STATUS_LATE, AttendanceOnTheDayDTO.PUNCH_STATUS_LEAVE_EARLY, AttendanceOnTheDayDTO.PUNCH_STATUS_MISS); for (Map.Entry> entry : collect.entrySet()) { - AttendanceStatusByDay attendanceStatusByDay = new AttendanceStatusByDay(); + AttendanceStatusByDayVO attendanceStatusByDayVO = new AttendanceStatusByDayVO(); int status = 0; for (AttendancePunchRecordDO attendancePunchRecordDO : entry.getValue()) { if (statusList.contains(attendancePunchRecordDO.getStatus())) { @@ -416,17 +416,22 @@ public class AttendanceServiceImpl implements AttendanceService { break; } } - attendanceStatusByDay.setStatus(status); - attendanceStatusByDay.setSubmitStatus(Constants.FALSE); - List>> listMap = new ArrayList<>(); + attendanceStatusByDayVO.setStatus(status); + attendanceStatusByDayVO.setSubmitStatus(Constants.FALSE); + List attendanceByGroupVOS = new ArrayList<>(); Map> itemMap = entry.getValue().stream().collect(Collectors.groupingBy(a -> a.getAttendanceGroupId() + "_" + a.getAttendanceGroupShiftId())); for (Map.Entry> stringListEntry : itemMap.entrySet()) { - Map> item = new HashMap<>(); - item.put(stringListEntry.getKey(), stringListEntry.getValue()); - listMap.add(item); + if (CollectionUtil.isNotEmpty(stringListEntry.getValue())) { + AttendancePunchRecordDO attendancePunchRecordDO = stringListEntry.getValue().get(0); + AttendanceByGroupVO attendanceByGroupVO = new AttendanceByGroupVO(); + attendanceByGroupVO.setGroupName(attendancePunchRecordDO.getAttendanceGroupName()); + attendanceByGroupVO.setAttendanceGroupShiftName(attendancePunchRecordDO.getAttendanceGroupShiftName()); + attendanceByGroupVO.setList(stringListEntry.getValue()); + attendanceByGroupVOS.add(attendanceByGroupVO); + } } - attendanceStatusByDay.setListMap(listMap); - map.put(entry.getKey(), attendanceStatusByDay); + attendanceStatusByDayVO.setList(attendanceByGroupVOS); + map.put(entry.getKey(), attendanceStatusByDayVO); } return map; }