调整按天统计
This commit is contained in:
parent
b2e2c07d2e
commit
e1adac3c89
@ -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<Map<String, AttendanceStatusByDay>> statisticsByDay(@ModelAttribute AttendanceStatisticsByDayDTO dto) {
|
||||
Map<String, AttendanceStatusByDay> vo = attendanceService.statisticsByDay(dto);
|
||||
public CommonResult<Map<String, AttendanceStatusByDayVO>> statisticsByDay(@ModelAttribute AttendanceStatisticsByDayDTO dto) {
|
||||
Map<String, AttendanceStatusByDayVO> vo = attendanceService.statisticsByDay(dto);
|
||||
return success(vo);
|
||||
}
|
||||
|
||||
|
@ -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<AttendancePunchRecordDO> list;
|
||||
}
|
@ -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<Map<String, List<AttendancePunchRecordDO>>> listMap;
|
||||
private List<AttendanceByGroupVO> list;
|
||||
}
|
@ -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<String, AttendanceStatusByDay> statisticsByDay(AttendanceStatisticsByDayDTO dto);
|
||||
Map<String, AttendanceStatusByDayVO> statisticsByDay(AttendanceStatisticsByDayDTO dto);
|
||||
|
||||
/**
|
||||
* 考勤统计按周期
|
||||
|
@ -392,7 +392,7 @@ public class AttendanceServiceImpl implements AttendanceService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, AttendanceStatusByDay> statisticsByDay(AttendanceStatisticsByDayDTO dto) {
|
||||
public Map<String, AttendanceStatusByDayVO> statisticsByDay(AttendanceStatisticsByDayDTO dto) {
|
||||
//获取当前天 所在月份所有日期
|
||||
List<String> 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<String, AttendanceStatusByDay> map = new HashMap<>();
|
||||
Map<String, AttendanceStatusByDayVO> map = new HashMap<>();
|
||||
|
||||
Map<String, List<AttendancePunchRecordDO>> collect = list.stream().collect(Collectors.groupingBy(AttendancePunchRecordDO::getDayTime));
|
||||
|
||||
List<Integer> statusList = Arrays.asList(AttendanceOnTheDayDTO.PUNCH_STATUS_LATE, AttendanceOnTheDayDTO.PUNCH_STATUS_LEAVE_EARLY, AttendanceOnTheDayDTO.PUNCH_STATUS_MISS);
|
||||
for (Map.Entry<String, List<AttendancePunchRecordDO>> 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<Map<String, List<AttendancePunchRecordDO>>> listMap = new ArrayList<>();
|
||||
attendanceStatusByDayVO.setStatus(status);
|
||||
attendanceStatusByDayVO.setSubmitStatus(Constants.FALSE);
|
||||
List<AttendanceByGroupVO> attendanceByGroupVOS = new ArrayList<>();
|
||||
Map<String, List<AttendancePunchRecordDO>> itemMap = entry.getValue().stream().collect(Collectors.groupingBy(a -> a.getAttendanceGroupId() + "_" + a.getAttendanceGroupShiftId()));
|
||||
for (Map.Entry<String, List<AttendancePunchRecordDO>> stringListEntry : itemMap.entrySet()) {
|
||||
Map<String, List<AttendancePunchRecordDO>> 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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user