Merge branch 'dev' into frx

This commit is contained in:
furongxin 2024-05-29 15:22:32 +08:00
commit 85d6235465
15 changed files with 146 additions and 36 deletions

View File

@ -92,4 +92,11 @@ public class AttendancePunchRecordRespVO {
@ExcelProperty("创建时间") @ExcelProperty("创建时间")
private LocalDateTime createTime; private LocalDateTime createTime;
@Schema(description = "考勤组名称")
@ExcelProperty("考勤组名称")
private String attendanceGroupName;
@Schema(description = "班次名称")
@ExcelProperty("班次名称")
private String attendanceGroupShiftName;
} }

View File

@ -1,7 +1,5 @@
package cn.iocoder.yudao.module.system.controller.app.attendance; 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.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.AttendancePunchDTO;
import cn.iocoder.yudao.module.system.controller.app.attendance.dto.AttendancePunchPageDTO; import cn.iocoder.yudao.module.system.controller.app.attendance.dto.AttendancePunchPageDTO;
@ -10,7 +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.AttendancePunchPageVO;
import cn.iocoder.yudao.module.system.controller.app.attendance.vo.AttendancePunchVO; 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.AttendanceStatisticsVO;
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 cn.iocoder.yudao.module.system.service.attendance.AttendanceService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
@ -19,7 +17,6 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.List;
import java.util.Map; import java.util.Map;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@ -48,8 +45,8 @@ public class AttendanceController {
@GetMapping("/statisticsByDay") @GetMapping("/statisticsByDay")
@Operation(summary = "统计按天") @Operation(summary = "统计按天")
public CommonResult<Map<String, List<AttendancePunchRecordDO>>> statisticsByDay(@ModelAttribute AttendanceStatisticsByDayDTO dto) { public CommonResult<Map<String, AttendanceStatusByDayVO>> statisticsByDay(@ModelAttribute AttendanceStatisticsByDayDTO dto) {
Map<String, List<AttendancePunchRecordDO>> vo = attendanceService.statisticsByDay(dto); Map<String, AttendanceStatusByDayVO> vo = attendanceService.statisticsByDay(dto);
return success(vo); return success(vo);
} }
@ -59,4 +56,7 @@ public class AttendanceController {
AttendanceStatisticsVO vo = attendanceService.statisticsByCycle(dto); AttendanceStatisticsVO vo = attendanceService.statisticsByCycle(dto);
return success(vo); return success(vo);
} }
} }

View File

@ -21,6 +21,6 @@ public class AttendanceStatisticsByDayDTO {
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
@JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY, timezone = TIME_ZONE_DEFAULT) @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY, timezone = TIME_ZONE_DEFAULT)
@Schema(description = "当前查看的时间 (默认当天 按周或者按月 传周/月 开始时间过来即可)") @Schema(description = "当前查看的时间 (默认当天 yyyy-MM-dd)")
private Date time = new Date(); private Date time = new Date();
} }

View File

@ -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;
}

View File

@ -30,29 +30,33 @@ public class AttendanceStatisticsVO {
@Data @Data
public static class CalculateNum { public static class CalculateNum {
// 总考勤时间 @Schema(description = "总考勤时间")
long totalWorkingHours = 0L; long totalWorkingHours = 0L;
// 总出勤天数 @Schema(description = "总出勤天数")
int totalAttendanceDays = 0; int totalAttendanceDays = 0;
// 总休息天数 @Schema(description = "总休息天数")
int totalRestDays = 0; int totalRestDays = 0;
// 迟到总次数 @Schema(description = "迟到总次数")
int totalLateArrivalsNumber = 0; int totalLateArrivalsNumber = 0;
// 迟到总时间 @Schema(description = "迟到总时间")
long totalLateArrivalsTime = 0L; long totalLateArrivalsTime = 0L;
// 早退总次数 @Schema(description = "迟到总时间中文")
String totalLateArrivalsTimeStr;
@Schema(description = "早退总次数")
int totalEarlyDeparturesNumber = 0; int totalEarlyDeparturesNumber = 0;
// 早退总时间 @Schema(description = "早退总时间")
long totalEarlyDeparturesTime = 0L; long totalEarlyDeparturesTime = 0L;
// 缺卡总次数 @Schema(description = "早退总时间中文")
String totalEarlyDeparturesTimeStr;
@Schema(description = "缺卡总次数")
int totalMissingCardsNumber = 0; int totalMissingCardsNumber = 0;
// 矿工总天数 @Schema(description = "矿工总天数")
int totalMinerDays = 0; int totalMinerDays = 0;
// 外勤次数 @Schema(description = "外勤次数")
int totalFieldServiceNumber = 0; int totalFieldServiceNumber = 0;
// 平均工时 @Schema(description = "平均工时")
long averageWorkingHours = 0L; long averageWorkingHours = 0L;
// 平均工时 @Schema(description = "平均工时中文")
String averageWorkingHoursStr; String averageWorkingHoursStr;
} }
} }

View File

@ -0,0 +1,18 @@
package cn.iocoder.yudao.module.system.controller.app.attendance.vo;
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 AttendanceStatusByDayVO {
@Schema(description = "状态 0正常 1异常(迟到/早退/缺卡)")
private Integer status;
@Schema(description = "是否有提交过 请假/加班/出差/外出/补卡 申请 0否 1是")
private Integer submitStatus = 0;
@Schema(description = "考勤记录根据考勤组/班次 分组")
private List<AttendanceByGroupVO> list;
}

View File

@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupshiftitem;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*; import lombok.*;
@ -30,6 +31,11 @@ public class AttendanceGroupShiftItemDO extends BaseDO {
* 班次id * 班次id
*/ */
private Long kqAttendanceGroupShiftId; private Long kqAttendanceGroupShiftId;
/**
* 班次名称
*/
@TableField(exist = false)
private String kqAttendanceGroupShiftName;
/** /**
* 级别 从1到 排序用 * 级别 从1到 排序用
*/ */

View File

@ -39,10 +39,18 @@ public class AttendancePunchRecordDO extends BaseDO {
* 考勤组id * 考勤组id
*/ */
private Long attendanceGroupId; private Long attendanceGroupId;
/**
* 考勤组名称
*/
private String attendanceGroupName;
/** /**
* 班次id * 班次id
*/ */
private Long attendanceGroupShiftId; private Long attendanceGroupShiftId;
/**
* 班次名称
*/
private String attendanceGroupShiftName;
/** /**
* 班次子表id * 班次子表id
*/ */

View File

@ -1,11 +1,11 @@
package cn.iocoder.yudao.module.system.dal.mysql.attendance.punchrecord; package cn.iocoder.yudao.module.system.dal.mysql.attendance.punchrecord;
import cn.iocoder.yudao.framework.common.pojo.PageResult; 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.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 cn.iocoder.yudao.module.system.dal.dataobject.attendance.punchrecord.AttendancePunchRecordDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.system.controller.admin.punchrecord.vo.*;
/** /**
* 用户打卡记录 Mapper * 用户打卡记录 Mapper

View File

@ -105,7 +105,9 @@ public class AttendanceStatisticsJob {
AttendancePunchRecordDO attendancePunchRecordDO = new AttendancePunchRecordDO(); AttendancePunchRecordDO attendancePunchRecordDO = new AttendancePunchRecordDO();
attendancePunchRecordDO.setUserId(userId); attendancePunchRecordDO.setUserId(userId);
attendancePunchRecordDO.setAttendanceGroupId(entry.getKey()); attendancePunchRecordDO.setAttendanceGroupId(entry.getKey());
attendancePunchRecordDO.setAttendanceGroupName(attendanceGroupDO.getGroupName());
attendancePunchRecordDO.setAttendanceGroupShiftId(attendanceOnTheDayDTO.getKqAttendanceGroupShiftId()); attendancePunchRecordDO.setAttendanceGroupShiftId(attendanceOnTheDayDTO.getKqAttendanceGroupShiftId());
attendancePunchRecordDO.setAttendanceGroupShiftName(attendanceOnTheDayDTO.getKqAttendanceGroupShiftName());
attendancePunchRecordDO.setAttendanceGroupShiftItemId(attendanceOnTheDayDTO.getId()); attendancePunchRecordDO.setAttendanceGroupShiftItemId(attendanceOnTheDayDTO.getId());
attendancePunchRecordDO.setType(attendanceGroupDO.getType()); attendancePunchRecordDO.setType(attendanceGroupDO.getType());
attendancePunchRecordDO.setPunchType(attendanceGroupDO.getPunchType()); attendancePunchRecordDO.setPunchType(attendanceGroupDO.getPunchType());

View File

@ -7,8 +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.AttendancePunchPageVO;
import cn.iocoder.yudao.module.system.controller.app.attendance.vo.AttendancePunchVO; 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.AttendanceStatisticsVO;
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.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 cn.iocoder.yudao.module.system.service.attendance.punch.dto.AttendanceOnTheDayDTO;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ -63,7 +63,7 @@ public interface AttendanceService {
* @param dto * @param dto
* @return * @return
*/ */
Map<String, List<AttendancePunchRecordDO>> statisticsByDay(AttendanceStatisticsByDayDTO dto); Map<String, AttendanceStatusByDayVO> statisticsByDay(AttendanceStatisticsByDayDTO dto);
/** /**
* 考勤统计按周期 * 考勤统计按周期

View File

@ -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 cn.iocoder.yudao.module.system.service.attendance.punchrecord.AttendancePunchRecordService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import lombok.Data;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate;
@ -45,10 +44,7 @@ import java.time.LocalDateTime;
import java.time.ZoneId; import java.time.ZoneId;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.util.ArrayList; import java.util.*;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -367,6 +363,7 @@ public class AttendanceServiceImpl implements AttendanceService {
AttendanceOnTheDayDTO dto = new AttendanceOnTheDayDTO(); AttendanceOnTheDayDTO dto = new AttendanceOnTheDayDTO();
dto.setId(attendanceGroupShiftItemDO.getId()); dto.setId(attendanceGroupShiftItemDO.getId());
dto.setKqAttendanceGroupShiftId(attendanceGroupShiftItemDO.getKqAttendanceGroupShiftId()); dto.setKqAttendanceGroupShiftId(attendanceGroupShiftItemDO.getKqAttendanceGroupShiftId());
dto.setKqAttendanceGroupShiftName(attendanceGroupShiftItemDO.getKqAttendanceGroupShiftName());
dto.setTime(attendanceGroupShiftItemDO.getBeginTime()); dto.setTime(attendanceGroupShiftItemDO.getBeginTime());
dto.setPunchTime(StringUtils.EMPTY); dto.setPunchTime(StringUtils.EMPTY);
dto.setType(UP_WORK); dto.setType(UP_WORK);
@ -380,6 +377,7 @@ public class AttendanceServiceImpl implements AttendanceService {
dto = new AttendanceOnTheDayDTO(); dto = new AttendanceOnTheDayDTO();
dto.setId(attendanceGroupShiftItemDO.getId()); dto.setId(attendanceGroupShiftItemDO.getId());
dto.setKqAttendanceGroupShiftId(attendanceGroupShiftItemDO.getKqAttendanceGroupShiftId()); dto.setKqAttendanceGroupShiftId(attendanceGroupShiftItemDO.getKqAttendanceGroupShiftId());
dto.setKqAttendanceGroupShiftName(attendanceGroupShiftItemDO.getKqAttendanceGroupShiftName());
dto.setTime(attendanceGroupShiftItemDO.getEndTime()); dto.setTime(attendanceGroupShiftItemDO.getEndTime());
dto.setPunchTime(StringUtils.EMPTY); dto.setPunchTime(StringUtils.EMPTY);
dto.setType(DOWN_WORK); dto.setType(DOWN_WORK);
@ -394,17 +392,48 @@ public class AttendanceServiceImpl implements AttendanceService {
} }
@Override @Override
public Map<String, List<AttendancePunchRecordDO>> statisticsByDay(AttendanceStatisticsByDayDTO dto) { public Map<String, AttendanceStatusByDayVO> statisticsByDay(AttendanceStatisticsByDayDTO dto) {
//获取当前天 所在月份所有日期 //获取当前天 所在月份所有日期
List<String> dateList = DateUtils.betweenDayList(DateUtil.beginOfMonth(dto.getTime()), List<String> dateList = DateUtils.betweenDayList(DateUtil.beginOfMonth(dto.getTime()),
DateUtil.endOfMonth(dto.getTime())); DateUtil.endOfMonth(dto.getTime()));
List<AttendancePunchRecordDO> list = attendancePunchRecordMapper.selectList(new LambdaQueryWrapper<AttendancePunchRecordDO>() List<AttendancePunchRecordDO> list = attendancePunchRecordMapper.selectList(new LambdaQueryWrapper<AttendancePunchRecordDO>()
.eq(AttendancePunchRecordDO::getUserId, dto.getUserId()) .eq(AttendancePunchRecordDO::getUserId, dto.getUserId())
.in(AttendancePunchRecordDO::getDayTime, dateList) .in(AttendancePunchRecordDO::getDayTime, dateList)
.orderByAsc(AttendancePunchRecordDO::getWorkType) .orderByAsc(AttendancePunchRecordDO::getDayTime)
.orderByAsc(AttendancePunchRecordDO::getLevel)); .orderByAsc(AttendancePunchRecordDO::getLevel)
// list.stream().collect(Collectors.groupingBy(AttendancePunchRecordDO::getDayTime)); .orderByAsc(AttendancePunchRecordDO::getWorkType));
return list.stream().collect(Collectors.groupingBy(AttendancePunchRecordDO::getDayTime)); 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()) {
AttendanceStatusByDayVO attendanceStatusByDayVO = new AttendanceStatusByDayVO();
int status = 0;
for (AttendancePunchRecordDO attendancePunchRecordDO : entry.getValue()) {
if (statusList.contains(attendancePunchRecordDO.getStatus())) {
status = 1;
break;
}
}
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()) {
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);
}
}
attendanceStatusByDayVO.setList(attendanceByGroupVOS);
map.put(entry.getKey(), attendanceStatusByDayVO);
}
return map;
} }
@Override @Override
@ -474,9 +503,10 @@ public class AttendanceServiceImpl implements AttendanceService {
} }
// -- 休息计算 // -- 休息计算
List<AttendancePunchStatisticsVO> restDays = this.calculateRestDayList(dateList, map.keySet().stream().distinct().collect(Collectors.toList()), calculateNum); List<AttendancePunchStatisticsVO> restDays = this.calculateRestDayList(dateList, map.keySet().stream().distinct().collect(Collectors.toList()), calculateNum);
calculateNum.setAverageWorkingHours(calculateNum.getTotalAttendanceDays() == 0 ? 0 : calculateNum.getTotalWorkingHours() / calculateNum.getTotalAttendanceDays()); calculateNum.setAverageWorkingHours(calculateNum.getTotalAttendanceDays() == 0 ? 0 : calculateNum.getTotalWorkingHours() / calculateNum.getTotalAttendanceDays());
calculateNum.setAverageWorkingHoursStr(DateUtil.formatBetween(calculateNum.getAverageWorkingHours(), BetweenFormatter.Level.MINUTE)); 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.setAttendanceDays(attendanceDays);
vo.setAverageWorkingHours(averageWorkingHours); vo.setAverageWorkingHours(averageWorkingHours);
vo.setBeLateNumber(beLateNumber); vo.setBeLateNumber(beLateNumber);
@ -721,7 +751,6 @@ public class AttendanceServiceImpl implements AttendanceService {
} }
} }

View File

@ -155,6 +155,7 @@ public class AttendanceGroupServiceImpl implements AttendanceGroupService {
attendancePunchRecordDO.setUserId(userId); attendancePunchRecordDO.setUserId(userId);
attendancePunchRecordDO.setAttendanceGroupId(entry.getKey()); attendancePunchRecordDO.setAttendanceGroupId(entry.getKey());
attendancePunchRecordDO.setAttendanceGroupShiftId(attendanceOnTheDayDTO.getKqAttendanceGroupShiftId()); attendancePunchRecordDO.setAttendanceGroupShiftId(attendanceOnTheDayDTO.getKqAttendanceGroupShiftId());
attendancePunchRecordDO.setAttendanceGroupShiftName(attendanceOnTheDayDTO.getKqAttendanceGroupShiftName());
attendancePunchRecordDO.setAttendanceGroupShiftItemId(attendanceOnTheDayDTO.getId()); attendancePunchRecordDO.setAttendanceGroupShiftItemId(attendanceOnTheDayDTO.getId());
attendancePunchRecordDO.setType(attendanceGroupDO.getType()); attendancePunchRecordDO.setType(attendanceGroupDO.getType());
attendancePunchRecordDO.setPunchType(attendanceGroupDO.getPunchType()); attendancePunchRecordDO.setPunchType(attendanceGroupDO.getPunchType());

View File

@ -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.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.AttendanceGroupShiftItemPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.groupshiftitem.vo.AttendanceGroupShiftItemSaveReqVO; 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.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 cn.iocoder.yudao.module.system.dal.mysql.attendance.groupshiftitem.AttendanceGroupShiftItemMapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -12,6 +14,9 @@ import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/** /**
* 考勤组班次子表 Service 实现类 * 考勤组班次子表 Service 实现类
@ -24,6 +29,8 @@ public class AttendanceGroupShiftItemServiceImpl implements AttendanceGroupShift
@Resource @Resource
private AttendanceGroupShiftItemMapper attendanceGroupShiftItemMapper; private AttendanceGroupShiftItemMapper attendanceGroupShiftItemMapper;
@Resource
private AttendanceGroupShiftMapper attendanceGroupShiftMapper;
@Override @Override
public Long createAttendanceGroupShiftItem(AttendanceGroupShiftItemSaveReqVO createReqVO) { public Long createAttendanceGroupShiftItem(AttendanceGroupShiftItemSaveReqVO createReqVO) {
@ -67,9 +74,15 @@ public class AttendanceGroupShiftItemServiceImpl implements AttendanceGroupShift
@Override @Override
public List<AttendanceGroupShiftItemDO> getGroupShiftItemListByShiftIds(List<Long> attendanceGroupShiftIds) { public List<AttendanceGroupShiftItemDO> getGroupShiftItemListByShiftIds(List<Long> attendanceGroupShiftIds) {
return attendanceGroupShiftItemMapper.selectList(new LambdaQueryWrapper<AttendanceGroupShiftItemDO>() List<AttendanceGroupShiftItemDO> dos = attendanceGroupShiftItemMapper.selectList(new LambdaQueryWrapper<AttendanceGroupShiftItemDO>()
.in(AttendanceGroupShiftItemDO::getKqAttendanceGroupShiftId, attendanceGroupShiftIds) .in(AttendanceGroupShiftItemDO::getKqAttendanceGroupShiftId, attendanceGroupShiftIds)
.orderByAsc(AttendanceGroupShiftItemDO::getLevel)); .orderByAsc(AttendanceGroupShiftItemDO::getLevel));
List<AttendanceGroupShiftDO> groupShiftDOS = attendanceGroupShiftMapper.selectBatchIds(attendanceGroupShiftIds);
Map<Long, AttendanceGroupShiftDO> 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;
} }
} }

View File

@ -23,6 +23,9 @@ public class AttendanceOnTheDayDTO {
@Schema(description = "班次id") @Schema(description = "班次id")
private Long kqAttendanceGroupShiftId; private Long kqAttendanceGroupShiftId;
@Schema(description = "班次名称")
private String kqAttendanceGroupShiftName;
@Schema(description = "类型 0上班 1下班") @Schema(description = "类型 0上班 1下班")
private Integer type; private Integer type;