Crazy 8 ay önce
ebeveyn
işleme
b3fda2ba04

+ 20 - 3
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentAttendance/StudentAttendanceController.java

@@ -1,5 +1,6 @@
 package cn.iocoder.yudao.module.system.controller.admin.studentAttendance;
 
+import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserPageReqVO;
 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
 import cn.iocoder.yudao.module.system.service.dept.DeptService;
@@ -121,12 +122,16 @@ public class StudentAttendanceController {
 //        }
 //    }
 
-
-
     @PostMapping("/create")
-    @Operation(summary = "创建学生考勤记录")
+    @Operation(summary = "创建学生请假记录")
     @PreAuthorize("@ss.hasPermission('system:student-attendance:create')")
     public CommonResult<Integer> createStudentAttendance(@Valid @RequestBody StudentAttendanceSaveReqVO createReqVO) {
+        Long studentId = SecurityFrameworkUtils.getLoginUserId();
+        AdminUserDO student =adminUserService.getUser(studentId);
+        createReqVO.setStudentId(studentId);
+        createReqVO.setStudentName(student.getNickname());
+        createReqVO.setUserNumber(student.getUserNumber());
+        createReqVO.setDeptId(String.valueOf(student.getDeptId()));
         return success(studentAttendanceService.createStudentAttendance(createReqVO));
     }
 
@@ -174,6 +179,18 @@ public class StudentAttendanceController {
         return success(BeanUtils.toBean(pageResult, StudentAttendanceRespVO.class));
     }
 
+
+    @GetMapping("/excusedPage")
+    @Operation(summary = "获得学生考勤请假记录分页")
+    @PreAuthorize("@ss.hasPermission('system:student-attendance:excusedQuery')")
+    public CommonResult<PageResult<StudentAttendanceRespVO>> getStudentAttendanceExcusedPage(@Valid StudentAttendancePageReqVO pageReqVO) {
+        PageResult<StudentAttendanceDO> pageResult = studentAttendanceService.getStudentAttendanceExcusedPage(pageReqVO);
+
+        return success(BeanUtils.toBean(pageResult, StudentAttendanceRespVO.class));
+    }
+
+
+
     @GetMapping("/export-excel")
     @Operation(summary = "导出学生考勤记录 Excel")
     @PreAuthorize("@ss.hasPermission('system:student-attendance:export')")

+ 7 - 3
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentAttendance/vo/StudentAttendanceRespVO.java

@@ -1,5 +1,7 @@
 package cn.iocoder.yudao.module.system.controller.admin.studentAttendance.vo;
 
+import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
+import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
 import com.baomidou.mybatisplus.annotation.TableField;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
@@ -16,7 +18,7 @@ import com.alibaba.excel.annotation.*;
 public class StudentAttendanceRespVO {
 
     @Schema(description = "自增id", requiredMode = Schema.RequiredMode.REQUIRED, example = "30731")
-    @ExcelProperty("自增id")
+//    @ExcelProperty("自增id")
     private Integer id;
 
     @Schema(description = "学生id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8981")
@@ -45,8 +47,9 @@ public class StudentAttendanceRespVO {
     @ExcelProperty("打卡时间")
     private LocalDateTime clockInTime;
 
-    @Schema(description = "打卡状态 0正常,1未打卡", example = "1")
-    @ExcelProperty("打卡状态 0正常,1未打卡")
+    @Schema(description = "打卡状态 0正常,1未打卡、2请假", example = "1")
+    @ExcelProperty(value = "打卡状态 0正常,1未打卡、2请假", converter = DictConvert.class)
+    @DictFormat("system_student_attendance_type")
     private String clockInStatus;
 
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@@ -58,6 +61,7 @@ public class StudentAttendanceRespVO {
     private String remark;
 
     @Schema(description = "打卡照片", example = "url")
+    @ExcelProperty("打卡照片")
     private String photo;
 
 }

+ 6 - 5
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentAttendance/vo/StudentAttendanceSaveReqVO.java

@@ -17,11 +17,11 @@ public class StudentAttendanceSaveReqVO {
     private Integer id;
 
     @Schema(description = "学生id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8981")
-    @NotNull(message = "学生id不能为空")
-    private Integer studentId;
+//    @NotNull(message = "学生id不能为空")
+    private Long studentId;
 
     @Schema(description = "学生名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
-    @NotEmpty(message = "学生名称不能为空")
+//    @NotEmpty(message = "学生名称不能为空")
     private String studentName;
 
     @Schema(description = "工作间id", requiredMode = Schema.RequiredMode.REQUIRED, example = "22266")
@@ -29,16 +29,17 @@ public class StudentAttendanceSaveReqVO {
     private String deptId;
 
     @Schema(description = "日期", requiredMode = Schema.RequiredMode.REQUIRED)
-//    @NotNull(message = "日期不能为空")
+    @NotNull(message = "日期不能为空")
     private LocalDate date;
 
     @Schema(description = "打卡时间")
     private LocalDateTime clockInTime;
 
-    @Schema(description = "打卡状态 0正常,1迟到、2早退、3缺勤、4请假", example = "1")
+    @Schema(description = "打卡状态 0正常,1迟到、2请假", example = "1")
     private String clockInStatus;
 
     @Schema(description = "备注原因", example = "你猜")
+    @NotEmpty(message = "请假原因不能为空")
     private String remark;
 
     @Schema(description = "学生学号", example = "3232")

+ 4 - 4
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java

@@ -347,7 +347,7 @@ public class UserController {
     public void importInSchoolTemplate(HttpServletResponse response) throws IOException {
         List<StudentImportExcelVO> list = Arrays.asList(
                 StudentImportExcelVO.builder().username("Student").password("123456").email("2456125438@qq.com").mobile("15601691300")
-                        .nickname("在校生").userType("在校生").status(CommonStatusEnum.ENABLE.getStatus()).sex(SexEnum.MALE.getSex())
+                        .nickname("在校生").userNumber("12164160").status(CommonStatusEnum.ENABLE.getStatus()).sex(SexEnum.MALE.getSex())
                         .build()
         );
         ExcelUtils.write(response, "在校生导入模板.xls", "用户列表", StudentImportExcelVO.class, list);
@@ -357,8 +357,8 @@ public class UserController {
     @Operation(summary = "获得毕业生模板")
     public void importGraduateTemplate(HttpServletResponse response) throws IOException {
         List<graduateStudentImportExcelVO> list = Arrays.asList(
-                graduateStudentImportExcelVO.builder().username("graduateStudent").password("123456").email("2456125438@qq.com").mobile("15601691300")
-                        .nickname("毕业生").userType("毕业生").status(CommonStatusEnum.ENABLE.getStatus()).sex(SexEnum.MALE.getSex())
+                graduateStudentImportExcelVO.builder().username("graduateStudent").password("123456").email("2456125438@qq.com").mobile("15601691300").userNumber("1321564654")
+                        .nickname("毕业生").status(CommonStatusEnum.ENABLE.getStatus()).sex(SexEnum.MALE.getSex())
                         .build()
         );
         ExcelUtils.write(response, "毕业生.xls", "用户列表", graduateStudentImportExcelVO.class, list);
@@ -369,7 +369,7 @@ public class UserController {
     public void importTeacherTemplate(HttpServletResponse response) throws IOException {
         List<teacherImportExcelVO> list = Arrays.asList(
                 teacherImportExcelVO.builder().username("teacher").password("123456").email("2456125438@qq.com").mobile("15601691300").deptName("2#601")
-                        .nickname("导师") .userType("导师").status(CommonStatusEnum.ENABLE.getStatus()).sex(SexEnum.MALE.getSex())
+                        .nickname("导师").userNumber("113212313") .status(CommonStatusEnum.ENABLE.getStatus()).sex(SexEnum.MALE.getSex())
                         .build()
         );
         ExcelUtils.write(response, "导师导入模板.xls", "用户列表", teacherImportExcelVO.class, list);

+ 4 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/teacherImportExcelVO.java

@@ -31,6 +31,9 @@ public class teacherImportExcelVO {
     @ExcelProperty("用户名称")
     private String nickname;
 
+    @ExcelProperty("导师工号")
+    private String userNumber;
+
     @ExcelProperty(value = "用户性别", converter = DictConvert.class)
     @DictFormat(DictTypeConstants.USER_SEX)
     private Integer sex;
@@ -46,6 +49,7 @@ public class teacherImportExcelVO {
     @ExcelProperty("工作间名称")
     private String deptName;
 
+
     @ExcelProperty(value = "账号状态", converter = DictConvert.class)
     @DictFormat(DictTypeConstants.COMMON_STATUS)
     private Integer status;

+ 35 - 1
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/studentAttendance/StudentAttendanceMapper.java

@@ -64,6 +64,7 @@ public interface StudentAttendanceMapper extends BaseMapperX<StudentAttendanceDO
         }
         return selectPage(reqVO, queryWrapper);
     }
+
     //根据登录人员不同显示全部正常的考勤记录列表
     default List<StudentAttendanceDO> selectList(StudentAttendancePageReqVO reqVO, Set<Long> roleIds,Long loginId) {
         Long dept_id = SecurityFrameworkUtils.getLoginUserDeptId();
@@ -98,7 +99,6 @@ public interface StudentAttendanceMapper extends BaseMapperX<StudentAttendanceDO
         return selectList(queryWrapper);
     }
 
-
     //全部异常的异常考勤记录
     default PageResult<StudentAttendanceDO> selectErrorPage(StudentAttendancePageReqVO reqVO, Set<Long> roleIds,Long loginId) {
         Long dept_id = SecurityFrameworkUtils.getLoginUserDeptId();
@@ -165,6 +165,40 @@ public interface StudentAttendanceMapper extends BaseMapperX<StudentAttendanceDO
         return selectList(queryWrapperX);
     }
 
+    //根据登录人员不同显示全部请假的考勤记录
+    default PageResult<StudentAttendanceDO> selectExcusedPage(StudentAttendancePageReqVO reqVO, Set<Long> roleIds,Long loginId) {
+        Long dept_id = SecurityFrameworkUtils.getLoginUserDeptId();
+        // 创建查询包装器
+        MPJLambdaWrapperX<StudentAttendanceDO> queryWrapper = new MPJLambdaWrapperX<>();
+        // 添加查询条件
+        queryWrapper.betweenIfPresent(StudentAttendanceDO::getClockInTime,reqVO.getCreateTime())
+                .eqIfPresent(StudentAttendanceDO::getDate,reqVO.getDate())
+                .selectAll(StudentAttendanceDO.class)
+                .selectAs(DeptDO::getName, StudentAttendanceDO::getDeptName)
+                .selectAs(AdminUserDO::getUserNumber, StudentAttendanceDO::getUserNumber)
+                .leftJoin(DeptDO.class, DeptDO::getId, StudentAttendanceDO::getDeptId)
+                .leftJoin(AdminUserDO.class, AdminUserDO::getId, StudentAttendanceDO::getStudentId)
+                .eqIfExists(StudentAttendanceDO::getClockInStatus,"2")//请假
+                .eqIfExists(StudentAttendanceDO::getStudentId, reqVO.getStudentId())
+                .likeIfExists(StudentAttendanceDO::getStudentName, reqVO.getStudentName())
+                .likeIfExists(AdminUserDO::getUserNumber, reqVO.getUserNumber())//按学号查
+                .eqIfExists(StudentAttendanceDO::getDeptId, reqVO.getDeptId())
+                .eqIfExists(StudentAttendanceDO::getClockInStatus, reqVO.getClockInStatus())
+                .eqIfExists(StudentAttendanceDO::getRemark, reqVO.getRemark())
+                .orderByDesc(StudentAttendanceDO::getClockInTime);
+
+        if (roleIds != null && !roleIds.isEmpty()) {
+            if (roleIds.contains(113L)) {//是教师
+                queryWrapper.eqIfPresent(StudentAttendanceDO::getDeptId, dept_id);
+            } else if (roleIds.contains(112L)) {//是学生,只显示自己的
+                queryWrapper.eqIfPresent(StudentAttendanceDO::getStudentId, loginId);
+            }  else if (roleIds.contains(114L)) {//是学院
+
+            }
+        }
+        return selectPage(reqVO, queryWrapper);
+    }
+
 
 
     @Select("SELECT * FROM system_student_attendance WHERE user_number = #{userNumber}")

+ 2 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/studentAttendance/StudentAttendanceService.java

@@ -61,6 +61,8 @@ public interface StudentAttendanceService {
     PageResult<StudentAttendanceDO> getStudentAttendanceErrorPage(StudentAttendancePageReqVO pageReqVO);
     List<StudentAttendanceDO> getStudentAttendanceErrorList(StudentAttendancePageReqVO pageReqVO);//
 
+    PageResult<StudentAttendanceDO> getStudentAttendanceExcusedPage(StudentAttendancePageReqVO pageReqVO);
+
 
     List<StudentAttendanceDO> getStudentAttendanceByUserNumber(String userNumber);
 

+ 7 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/studentAttendance/StudentAttendanceServiceImpl.java

@@ -102,6 +102,13 @@ public class StudentAttendanceServiceImpl implements StudentAttendanceService {
         return studentAttendanceMapper.selectErrorList(pageReqVO,roleIds,loginId);
     }
 
+    @Override
+    public PageResult<StudentAttendanceDO> getStudentAttendanceExcusedPage(StudentAttendancePageReqVO pageReqVO){
+        Long loginId = SecurityFrameworkUtils.getLoginUserId();
+        Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(loginId);
+        return studentAttendanceMapper.selectExcusedPage(pageReqVO,roleIds,loginId);
+    }
+
 
 
     @Override