考勤用户过滤/考勤定时任务

This commit is contained in:
aikai 2024-06-04 16:29:06 +08:00
parent c501dea1f4
commit e1bea33639
11 changed files with 53 additions and 14 deletions

View File

@ -8,6 +8,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.annotation.security.PermitAll;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
@ -72,7 +73,7 @@ public class AttendanceGroupController {
@GetMapping("/test")
@Operation(summary = "测试")
@PermitAll
public CommonResult test() {
groupService.test();
return success("ok");

View File

@ -69,6 +69,10 @@ public class AttendancePunchRecordRespVO {
@ExcelProperty("打卡时间")
private LocalDateTime punchTime;
@Schema(description = "应打卡时间")
@ExcelProperty("应打卡时间")
private LocalDateTime shouldPunchTime;
@Schema(description = "打卡备注", example = "你说的对")
@ExcelProperty("打卡备注")
private String remark;

View File

@ -20,9 +20,15 @@ public class AttendancePunchRecordSaveReqVO {
@Schema(description = "考勤组id", example = "22293")
private Long attendanceGroupId;
@Schema(description = "考勤组名称", example = "22293")
private String attendanceGroupName;
@Schema(description = "班次id", example = "10780")
private Long attendanceGroupShiftId;
@Schema(description = "班次名称", example = "22293")
private String attendanceGroupShiftName;
@Schema(description = "班次子表id", example = "10780")
private Long attendanceGroupShiftItemId;

View File

@ -165,12 +165,21 @@ public class UserController {
return success(user);
}
@PostMapping("/selectByUserIds")
@Operation(summary = "通过用户ids获取用户信息列表")
@PreAuthorize("@ss.hasPermission('system:user:query')")
public CommonResult<List<UserRespVO>> selectByUserIds(@RequestBody Collection<Long> userIds) {
List<AdminUserDO> user = userService.selectByUserIds(userIds);
return success(BeanUtils.toBean(user, UserRespVO.class));
}
@PostMapping("/selectByDeptIdsFilterGroupUser")
@Operation(summary = "通过部门ids获取用户信息列表(过滤掉已在考勤组的用户)")
@PreAuthorize("@ss.hasPermission('system:user:query')")
public CommonResult<List<UserRespVO>> selectByDeptIdsFilterGroupUser(@RequestBody Collection<Long> deptIds) {
public CommonResult<List<UserRespVO>> selectByDeptIdsFilterGroupUser(@RequestParam(required = false) Long groupId, @RequestBody Collection<Long> deptIds) {
List<UserRespVO> user = userService.selectByDeptIdsFilterGroupUser(deptIds);
List<UserRespVO> user = userService.selectByDeptIdsFilterGroupUser(deptIds, groupId);
return success(user);
}

View File

@ -76,9 +76,10 @@ public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
* 根据部门ids查询出用户列表 过滤掉考勤组里有的
*
* @param deptIds
* @param groupId
* @return
*/
List<UserRespVO> selectByDeptIdsFilterGroupUser(Collection<Long> deptIds);
List<UserRespVO> selectByDeptIdsFilterGroupUser(@Param("deptIds") Collection<Long> deptIds, @Param("groupId") Long groupId);
List<Long> selectUserByBoss();
}

View File

@ -35,7 +35,7 @@ public class AttendanceMissingCardJob {
.eq(AttendancePunchRecordDO::getStatus, AttendanceOnTheDayDTO.PUNCH_STATUS_UN_PUNCH)
.le(AttendancePunchRecordDO::getLatestPunchTime, now);
AttendancePunchRecordDO attendancePunchRecordDO = new AttendancePunchRecordDO();
attendancePunchRecordDO.setStatus(AttendanceOnTheDayDTO.PUNCH_STATUS_MISS);
attendancePunchRecordDO.setStatus(AttendanceOnTheDayDTO.PUNCH_STATUS_MISS).setNextDayFlag(Constants.FALSE);
attendancePunchRecordMapper.update(attendancePunchRecordDO, le);
log.info("结束 修改考勤缺卡");
// 返回执行成功

View File

@ -139,7 +139,9 @@ public class AttendanceServiceImpl implements AttendanceService {
AttendancePunchRecordSaveReqVO attendancePunchRecordSaveReqVO = new AttendancePunchRecordSaveReqVO()
.setUserId(dto.getUserId())
.setAttendanceGroupId(pageVO.getActivationGroup().getId())
.setAttendanceGroupName(pageVO.getActivationGroup().getGroupName())
.setAttendanceGroupShiftId(pageVO.getAttendanceGroupShiftDO().getId())
.setAttendanceGroupShiftName(pageVO.getAttendanceGroupShiftDO().getName())
.setAttendanceGroupShiftItemId(pageVO.getAttendanceGroupShiftItemId())
.setType(pageVO.getActivationGroup().getType())
.setPunchType(dto.getPunchType())

View File

@ -128,7 +128,7 @@ public class AttendanceGroupServiceImpl implements AttendanceGroupService {
Map<Long, List<Long>> groupUserMap = attendanceGroupUserDOS.stream().collect(Collectors.groupingBy(AttendanceGroupUserDO::getAttendanceGroupId,
Collectors.mapping(AttendanceGroupUserDO::getUserId, Collectors.toList())));
// -- 获取考勤组下考勤规则 - 将将考勤组分组 - 按类型
LocalDateTime tomorrowLocalDateTime = LocalDateTimeUtil.offset(LocalDateTime.now(), 1, ChronoUnit.DAYS);
LocalDateTime tomorrowLocalDateTime = LocalDateTime.now();
LocalDateTime theDayAfterTomorrowLocalDateTime = LocalDateTimeUtil.offset(tomorrowLocalDateTime, 1, ChronoUnit.DAYS);
String time = tomorrowLocalDateTime.format(Constants.REPO_DATE_FORMAT);
@ -166,6 +166,7 @@ public class AttendanceGroupServiceImpl implements AttendanceGroupService {
attendancePunchRecordDO.setLevel(attendanceOnTheDayDTO.getLevel());
attendancePunchRecordDO.setStatus(AttendanceOnTheDayDTO.PUNCH_STATUS_UN_PUNCH);
attendancePunchRecordDO.setFieldServiceFlag(Constants.FALSE);
attendancePunchRecordDO.setNextDayFlag(Constants.TRUE);
attendancePunchRecordDO.setDayTime(time);
LocalDateTime shouldPunchTime = LocalDateTime.ofInstant(DateUtils.buildHHmmTime(attendanceOnTheDayDTO.getTime(),
(attendanceOnTheDayDTO.getNextDayFlag() == 0 ? tomorrowLocalDateTime : theDayAfterTomorrowLocalDateTime)).toInstant(), ZoneId.systemDefault());

View File

@ -158,9 +158,10 @@ public interface AdminUserService {
* 获取部门下人员过滤掉考勤组内有的
*
* @param deptIds
* @param groupId
* @return
*/
List<UserRespVO> selectByDeptIdsFilterGroupUser(Collection<Long> deptIds);
List<UserRespVO> selectByDeptIdsFilterGroupUser(Collection<Long> deptIds, Long groupId);
/**
* 获得指定部门的用户数组除去当前登录者用户
@ -271,4 +272,12 @@ public interface AdminUserService {
* @return 用户编号
*/
List<Long> getUserByBoss();
/**
* 根据用户ids搜索用户列表
*
* @param userIds
* @return
*/
List<AdminUserDO> selectByUserIds(Collection<Long> userIds);
}

View File

@ -274,11 +274,11 @@ public class AdminUserServiceImpl implements AdminUserService {
}
@Override
public List<UserRespVO> selectByDeptIdsFilterGroupUser(Collection<Long> deptIds) {
public List<UserRespVO> selectByDeptIdsFilterGroupUser(Collection<Long> deptIds, Long groupId) {
if (CollUtil.isEmpty(deptIds)) {
return Collections.emptyList();
}
return userMapper.selectByDeptIdsFilterGroupUser(deptIds);
return userMapper.selectByDeptIdsFilterGroupUser(deptIds, groupId);
}
@Override
@ -562,4 +562,12 @@ public class AdminUserServiceImpl implements AdminUserService {
return userMapper.selectUserByBoss();
}
@Override
public List<AdminUserDO> selectByUserIds(Collection<Long> userIds) {
if (CollectionUtil.isEmpty(userIds)) {
return Collections.emptyList();
}
return userMapper.selectBatchIds(userIds);
}
}

View File

@ -49,11 +49,9 @@
and a.status = 0
and a.user_type = 1
and a.dept_id in
<foreach collection="list" item="deptIds" open="(" close=")" separator=",">
#{deptIds}
<foreach collection="deptIds" item="deptId" open="(" close=")" separator=",">
#{deptId}
</foreach>
<if test="groupId != null">
and not exists(select id from kq_attendance_group_user where user_id = a.id)
</if>
and not exists(select id from kq_attendance_group_user where user_id = a.id and attendance_group_id != #{groupId})
</select>
</mapper>