|
@@ -6,6 +6,7 @@ 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.MPJLambdaWrapperX;
|
|
|
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
|
|
+import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
|
|
|
import cn.iocoder.yudao.module.system.dal.dataobject.studentAttendance.StudentAttendanceDO;
|
|
|
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
|
|
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
@@ -19,6 +20,7 @@ import java.time.LocalDateTime;
|
|
|
import java.util.Arrays;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
+import java.util.Set;
|
|
|
|
|
|
/**
|
|
|
* 学生考勤记录 Mapper
|
|
@@ -29,57 +31,71 @@ import java.util.List;
|
|
|
public interface StudentAttendanceMapper extends BaseMapperX<StudentAttendanceDO> {
|
|
|
|
|
|
//根据登录人员不同显示全部考勤记录
|
|
|
- default PageResult<StudentAttendanceDO> selectPage(StudentAttendancePageReqVO reqVO) {
|
|
|
+ default PageResult<StudentAttendanceDO> selectPage(StudentAttendancePageReqVO reqVO, Set<Long> roleIds,Long loginId) {
|
|
|
Long dept_id = SecurityFrameworkUtils.getLoginUserDeptId();
|
|
|
- Long loginId =SecurityFrameworkUtils.getLoginUserId();
|
|
|
- List<Long> roleIds =selectUserRoleId(loginId);
|
|
|
// 创建查询包装器
|
|
|
- LambdaQueryWrapperX<StudentAttendanceDO> queryWrapper = new LambdaQueryWrapperX<>();
|
|
|
+ MPJLambdaWrapperX<StudentAttendanceDO> queryWrapper = new MPJLambdaWrapperX<>();
|
|
|
|
|
|
// 添加查询条件
|
|
|
- queryWrapper.eqIfPresent(StudentAttendanceDO::getStudentId, reqVO.getStudentId())
|
|
|
- .likeIfPresent(StudentAttendanceDO::getStudentName, reqVO.getStudentName())
|
|
|
- .eqIfPresent(StudentAttendanceDO::getDeptId, reqVO.getDeptId())
|
|
|
- .betweenIfPresent(StudentAttendanceDO::getDate, reqVO.getDate())
|
|
|
- .eqIfPresent(StudentAttendanceDO::getClockInStatus, reqVO.getClockInStatus())
|
|
|
- .betweenIfPresent(StudentAttendanceDO::getCreateTime, reqVO.getCreateTime())
|
|
|
- .eqIfPresent(StudentAttendanceDO::getRemark, reqVO.getRemark())
|
|
|
+ queryWrapper.selectAll(StudentAttendanceDO.class)
|
|
|
+ .selectAs(DeptDO::getName, StudentAttendanceDO::getDeptName)
|
|
|
+ .leftJoin(DeptDO.class, DeptDO::getId, AdminUserDO::getDeptId)
|
|
|
+ .eqIfExists(StudentAttendanceDO::getStudentId, reqVO.getStudentId())
|
|
|
+ .likeIfExists(StudentAttendanceDO::getStudentName, reqVO.getStudentName())
|
|
|
+ .eqIfExists(StudentAttendanceDO::getDeptId, reqVO.getDeptId())
|
|
|
+ .eqIfExists(StudentAttendanceDO::getClockInStatus, reqVO.getClockInStatus())
|
|
|
+// .betweenIfPresent(StudentAttendanceDO::getCreateTime, reqVO.getCreateTime())
|
|
|
+ .eqIfExists(StudentAttendanceDO::getRemark, reqVO.getRemark())
|
|
|
.orderByDesc(StudentAttendanceDO::getClockInTime);
|
|
|
+ //替代查询时间
|
|
|
+ if (reqVO.getCreateTime() != null && reqVO.getCreateTime().length > 0){
|
|
|
+ queryWrapper.apply("DATE(" + "clock_in_time" + ") BETWEEN {0} AND {1}", reqVO.getCreateTime()[0], reqVO.getCreateTime()[1]);
|
|
|
+ }
|
|
|
+ if (roleIds != null && !roleIds.isEmpty()) {
|
|
|
+ if (roleIds.contains(113L)) {//是教师 只出现在老师工作间下面的学生考勤情况
|
|
|
+ queryWrapper.eqIfPresent(StudentAttendanceDO::getDeptId, dept_id);
|
|
|
|
|
|
- if (roleIds.contains(113L)){//是教师 只出现在老师工作间下面的学生考勤情况
|
|
|
- queryWrapper.eqIfPresent(StudentAttendanceDO::getDeptId,dept_id);
|
|
|
- }else if (roleIds.contains(112L)){//是学生,只显示自己的
|
|
|
- queryWrapper.eqIfPresent(StudentAttendanceDO::getStudentId, loginId);
|
|
|
+ } else if (roleIds.contains(112L)) {//是学生,只显示自己的
|
|
|
+ queryWrapper.eqIfPresent(StudentAttendanceDO::getStudentId, loginId);
|
|
|
+ }
|
|
|
}
|
|
|
return selectPage(reqVO, queryWrapper);
|
|
|
}
|
|
|
|
|
|
//异常考勤记录
|
|
|
- default PageResult<StudentAttendanceDO> selectErrorPage(StudentAttendancePageReqVO reqVO) {
|
|
|
+ default PageResult<StudentAttendanceDO> selectErrorPage(StudentAttendancePageReqVO reqVO, Set<Long> roleIds,Long loginId) {
|
|
|
Long dept_id = SecurityFrameworkUtils.getLoginUserDeptId();
|
|
|
- Long loginId =SecurityFrameworkUtils.getLoginUserId();
|
|
|
- List<Long> roleIds =selectUserRoleId(loginId);
|
|
|
- LambdaQueryWrapperX<StudentAttendanceDO> queryWrapperX =new LambdaQueryWrapperX<>();
|
|
|
-
|
|
|
- queryWrapperX.likeIfPresent(StudentAttendanceDO::getStudentName, reqVO.getStudentName())
|
|
|
- .betweenIfPresent(StudentAttendanceDO::getDate, reqVO.getDate())
|
|
|
- .betweenIfPresent(StudentAttendanceDO::getCreateTime, reqVO.getCreateTime())
|
|
|
- .eqIfPresent(StudentAttendanceDO::getClockInStatus, reqVO.getClockInStatus())
|
|
|
+
|
|
|
+ MPJLambdaWrapperX<StudentAttendanceDO> queryWrapperX =new MPJLambdaWrapperX<>();
|
|
|
+
|
|
|
+ queryWrapperX
|
|
|
+ .selectAll(StudentAttendanceDO.class)
|
|
|
+ .selectAs(DeptDO::getName, StudentAttendanceDO::getDeptName)
|
|
|
+ .leftJoin(DeptDO.class, DeptDO::getId, AdminUserDO::getDeptId)
|
|
|
+ .likeIfExists(StudentAttendanceDO::getStudentName, reqVO.getStudentName())
|
|
|
+ .eqIfExists(StudentAttendanceDO::getDeptId, reqVO.getDeptId())
|
|
|
+// .betweenIfPresent(StudentAttendanceDO::getCreateTime, reqVO.getCreateTime())
|
|
|
+ .eqIfExists(StudentAttendanceDO::getClockInStatus, reqVO.getClockInStatus())
|
|
|
//1未打卡,2警告
|
|
|
.in(StudentAttendanceDO::getClockInStatus, Arrays.asList(1, 2));
|
|
|
|
|
|
- if (roleIds.contains(113L)){//如果是导师,只看工作间下面的
|
|
|
- queryWrapperX.eqIfPresent(StudentAttendanceDO::getDeptId,dept_id)
|
|
|
- .orderByDesc(StudentAttendanceDO::getClockInTime);
|
|
|
- }else if (roleIds.contains(112L)){//是学生,只看自己的(先显示状态的)
|
|
|
- queryWrapperX.eqIfPresent(StudentAttendanceDO::getStudentId, loginId)
|
|
|
- .and(wrapper -> wrapper
|
|
|
- .eq(StudentAttendanceDO::getClockInStatus, 1)
|
|
|
- .or()
|
|
|
- .eq(StudentAttendanceDO::getClockInStatus, 2)
|
|
|
- )
|
|
|
- .orderByAsc(StudentAttendanceDO::getClockInStatus) // 先按状态排序
|
|
|
- .orderByDesc(StudentAttendanceDO::getClockInTime); // 再按时间排序;
|
|
|
+ if (reqVO.getCreateTime() != null && reqVO.getCreateTime().length > 0){
|
|
|
+ queryWrapperX.apply("DATE(" + "clock_in_time" + ") BETWEEN {0} AND {1}", reqVO.getCreateTime()[0], reqVO.getCreateTime()[1]);
|
|
|
+ }
|
|
|
+ if (roleIds != null && !roleIds.isEmpty()) {
|
|
|
+ if (roleIds.contains(113L)) {//如果是导师,只看工作间下面的
|
|
|
+ queryWrapperX.eqIfPresent(StudentAttendanceDO::getDeptId, dept_id)
|
|
|
+ .orderByDesc(StudentAttendanceDO::getClockInTime);
|
|
|
+ } else if (roleIds.contains(112L)) {//是学生,只看自己的(先显示状态的)
|
|
|
+ queryWrapperX.eqIfPresent(StudentAttendanceDO::getStudentId, loginId)
|
|
|
+ .and(wrapper -> wrapper
|
|
|
+ .eq(StudentAttendanceDO::getClockInStatus, 1)
|
|
|
+ .or()
|
|
|
+ .eq(StudentAttendanceDO::getClockInStatus, 2)
|
|
|
+ )
|
|
|
+ .orderByAsc(StudentAttendanceDO::getClockInStatus) // 先按状态排序
|
|
|
+ .orderByDesc(StudentAttendanceDO::getClockInTime); // 再按时间排序;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return selectPage(reqVO,queryWrapperX);
|
|
@@ -116,7 +132,4 @@ public interface StudentAttendanceMapper extends BaseMapperX<StudentAttendanceDO
|
|
|
"WHERE date = #{clockDate}")
|
|
|
List<StudentAttendanceDO> getStudentsAttendanceDay(@Param("clockDate") LocalDate clockDate);
|
|
|
|
|
|
- //找登录用户的权限
|
|
|
- @Select("SELECT role_id FROM system_user_role WHERE user_id = #{userId}")
|
|
|
- List<Long> selectUserRoleId(Long userId);
|
|
|
}
|