From e1adac3c89ef0e2ce02675de477396af806a05ac Mon Sep 17 00:00:00 2001 From: aikai Date: Tue, 28 May 2024 11:51:42 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=8C=89=E5=A4=A9=E7=BB=9F?= =?UTF-8?q?=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; }