Crazy 8 months ago
parent
commit
eb400d681d
16 changed files with 571 additions and 198 deletions
  1. 8 7
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/DeptController.java
  2. 1 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/MailTemplateController.java
  3. 31 24
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentAttendance/StudentAttendanceController.java
  4. 107 86
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java
  5. 10 4
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/StudentImportExcelVO.java
  6. 1 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/graduateStudentImportExcelVO.java
  7. 0 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/teacherImportExcelVO.java
  8. 66 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/studentAttendance/StudentAttendanceMapper.java
  9. 54 39
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java
  10. 21 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/userAchievement/UserAchievementMapper.java
  11. 3 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/studentAttendance/StudentAttendanceService.java
  12. 14 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/studentAttendance/StudentAttendanceServiceImpl.java
  13. 12 5
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java
  14. 237 28
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java
  15. 2 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/userAchievement/UserAchievementService.java
  16. 4 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/userAchievement/UserAchievementServiceImpl.java

+ 8 - 7
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/DeptController.java

@@ -138,9 +138,9 @@ public class DeptController {
             }
         }
         // 获取用户的成绩信息
-        UserAchievementPageReqVO pageReqVO = new UserAchievementPageReqVO();
-        pageReqVO.setDeptId(id);
-        List<UserAchievementDO> userAchievements = userAchievementService.getUserAchievementPage(pageReqVO).getList();
+        UserAchievementPageReqVO ReqVO = new UserAchievementPageReqVO();
+        ReqVO.setDeptId(id);
+        List<UserAchievementDO> userAchievements = userAchievementService.getUserAchievementList(ReqVO);
 
         newDept.setSupervisorNum(String.valueOf(supervisor.size()));
         newDept.setStudentNum(String.valueOf(student.size()));
@@ -172,7 +172,8 @@ public class DeptController {
                     .collect(Collectors.toList());
             newDept.setUser(userList);
         }
-        List<AdminUserDO> allUser = adminUserService.getDeptUser();
+        UserPageReqVO reqVO =new UserPageReqVO();
+        List<AdminUserDO> allUser = adminUserService.getDeptUser(reqVO);
 
         List<AdminUserDO> student = new ArrayList<>();
         List<AdminUserDO> supervisor = new ArrayList<>();
@@ -185,9 +186,9 @@ public class DeptController {
             }
         }
         // 获取用户的成绩信息
-        UserAchievementPageReqVO pageReqVO = new UserAchievementPageReqVO();
-        pageReqVO.setDeptId(deptId);
-        List<UserAchievementDO> userAchievements = userAchievementService.getUserAchievementPage(pageReqVO).getList();
+        UserAchievementPageReqVO ReqVO = new UserAchievementPageReqVO();
+        ReqVO.setDeptId(deptId);
+        List<UserAchievementDO> userAchievements = userAchievementService.getUserAchievementList(ReqVO);
 
         newDept.setSupervisorNum(String.valueOf(supervisor.size()));
         newDept.setStudentNum(String.valueOf(student.size()));

+ 1 - 1
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/mail/MailTemplateController.java

@@ -59,7 +59,7 @@ public class MailTemplateController {
         // 创建结果对象并设置属性
         UserPageReqVO reqVO = new UserPageReqVO();
         reqVO.setUserType("3");//找导师
-        List<AdminUserDO> TeacherList = adminUserService.getUserPage(reqVO).getList();
+        List<AdminUserDO> TeacherList = adminUserService.getUserList(reqVO);
         StudentAttendancePageReqVO pageReqVO =new StudentAttendancePageReqVO();
         Map<String, Object> templateParams =new HashMap<>();//模板参数设置
         // 获取当前这天

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

@@ -4,6 +4,7 @@ import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserPageReqV
 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
 import cn.iocoder.yudao.module.system.service.dept.DeptService;
 import cn.iocoder.yudao.module.system.service.user.AdminUserService;
+import com.baomidou.mybatisplus.generator.IFill;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.web.bind.annotation.*;
 import javax.annotation.Resource;
@@ -60,33 +61,39 @@ public class StudentAttendanceController {
 //        checkAttendanceSecond();
 //    }
 
-    @Scheduled(cron = "0 00 10 * * ?") // 每天0:00检测,更新未打卡
+    @Scheduled(cron = "0 00 00 * * ?") // 每天0:00检测,更新未打卡
     public void attendanceNormalFirst() {
         checkAttendanceFirst();
     }
+//    @Scheduled(cron = "0 0/1 * * * ?") // 每10分钟执行一次
+//    public void attendanceNormalFirst() {
+//        checkAttendanceFirst();
+//    }
 
+    @GetMapping("/test")
     public void checkAttendanceFirst() {
         UserPageReqVO reqVO =new UserPageReqVO();
-        reqVO.setUserNumber("1");//学生
-        List<AdminUserDO> userList = adminUserService.getUserPage(reqVO).getList();
+        reqVO.setUserType("1");//学生
+        List<AdminUserDO> userList = adminUserService.getUserList(reqVO);
+        System.out.println(userList);
         LocalDate localDate = LocalDate.now();
 
          for (AdminUserDO user : userList) {
-            List<StudentAttendanceDO> result = studentAttendanceService.getStudentAttendanceDay(user.getUserNumber(),localDate);
-            if ("1".equals(user.getUserType())) {//只对在校生
-                if (result != null && result.size() == 0) { //
-                    StudentAttendanceDO attendance = new StudentAttendanceDO();
-                    attendance.setClockInStatus("1"); // 未打卡
-                    attendance.setDate(localDate);
-                    attendance.setStudentName(user.getNickname()); // 名字
-                    attendance.setStudentId(user.getId()); // id
-                    attendance.setUserNumber(user.getUserNumber()); // 学号
-                    attendance.setDeptId(user.getDeptId()); // 工作间id
-                    attendance.setSupervisorId(user.getSupervisorId()); // 导师id
-                    studentAttendanceService.createStudentAttendance(BeanUtils.toBean(attendance, StudentAttendanceSaveReqVO.class));
-                }
-            }
-        }
+             if (user.getUserNumber() != null) {
+                 List<StudentAttendanceDO> result = studentAttendanceService.getStudentAttendanceDay(user.getUserNumber(), localDate);
+                 if (result == null || result.isEmpty()) { //
+                     StudentAttendanceDO attendance = new StudentAttendanceDO();
+                     attendance.setClockInStatus("1"); // 未打卡
+                     attendance.setDate(localDate);
+                     attendance.setStudentName(user.getNickname()); // 名字
+                     attendance.setStudentId(user.getId()); // id
+                     attendance.setUserNumber(user.getUserNumber()); // 学号
+                     attendance.setDeptId(user.getDeptId()); // 工作间id
+                     attendance.setSupervisorId(user.getSupervisorId()); // 导师id
+                     studentAttendanceService.createStudentAttendance(BeanUtils.toBean(attendance, StudentAttendanceSaveReqVO.class));
+                 }
+             }
+         }
     }
 
 //    public void checkAttendanceSecond() {
@@ -189,7 +196,7 @@ public class StudentAttendanceController {
         StudentAttendancePageReqVO pageReqVO =new StudentAttendancePageReqVO();
         pageReqVO.setClockInStatus("0");//正常
         pageReqVO.setDate(localDate);
-        List<StudentAttendanceDO> attendanceList =studentAttendanceService.getStudentAttendancePage(pageReqVO).getList();
+        List<StudentAttendanceDO> attendanceList =studentAttendanceService.getStudentAttendanceList(pageReqVO);
         List<StudentAttendanceDO> result =new ArrayList<>();
         for (StudentAttendanceDO attendance :attendanceList ){
             attendance.setSupervisor(adminUserService.getUser(attendance.getSupervisorId()).getNickname());//导师名字
@@ -205,10 +212,10 @@ public class StudentAttendanceController {
     @PreAuthorize("@ss.hasPermission('system:student-attendance:dayError')")
     public CommonResult<List<StudentAttendanceDO>> getDayStudentErrorAttendance () {
         LocalDate localDate = LocalDate.now();
-        StudentAttendancePageReqVO pageReqVO =new StudentAttendancePageReqVO();
-        pageReqVO.setDate(localDate);
-        pageReqVO.setClockInStatus("1");//未打卡
-        List<StudentAttendanceDO> attendanceList =studentAttendanceService.getStudentAttendancePage(pageReqVO).getList();
+        StudentAttendancePageReqVO reqVO =new StudentAttendancePageReqVO();
+        reqVO.setDate(localDate);
+        reqVO.setClockInStatus("1");//未打卡
+        List<StudentAttendanceDO> attendanceList =studentAttendanceService.getStudentAttendanceErrorList(reqVO);
         return success(attendanceList);
     }
 
@@ -220,7 +227,7 @@ public class StudentAttendanceController {
     public CommonResult<weekendAttendanceResVO> getWeekendAttendance () {
         UserPageReqVO reqVO = new UserPageReqVO();
         reqVO.setUserType("1");
-        List<AdminUserDO> studentList = adminUserService.getUserPage(reqVO).getList();
+        List<AdminUserDO> studentList = adminUserService.getUserList(reqVO);
 
         // 获取当前这周
         LocalDate today = LocalDate.now();

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

@@ -9,8 +9,6 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
 import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
-import cn.iocoder.yudao.module.infra.api.file.FileApi;
-import cn.iocoder.yudao.module.infra.service.file.FileService;
 import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptListReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.*;
 
@@ -22,7 +20,6 @@ import cn.iocoder.yudao.module.system.service.dept.DeptService;
 import cn.iocoder.yudao.module.system.service.permission.PermissionService;
 import cn.iocoder.yudao.module.system.service.user.AdminUserService;
 
-import com.baomidou.mybatisplus.generator.IFill;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.Parameters;
@@ -72,44 +69,11 @@ public class UserController {
             }else if (reqVO.getUserType().equals("4")){
                 roleId.add(114L);
             }
+            permissionService.assignUserRole(id,roleId);
         }
-        permissionService.assignUserRole(id,roleId);
         return success(id);
     }
 
-//    @PostMapping("/createStudent")
-//    @Operation(summary = "新增学生")
-//    @PreAuthorize("@ss.hasPermission('system:user:createStudent')")
-//    public CommonResult<Long> createStudent(@Valid @RequestBody UserSaveReqVO reqVO) {
-//        reqVO.setUserType("1");
-//        Long id = userService.createUser(reqVO);
-//        Set<Long> roleId = new HashSet<>();
-//        if (reqVO.getUserType()!=null){//添加权限
-//            if (reqVO.getUserType().equals("1") ||reqVO.getUserType().equals("2")) {
-//                roleId.add(112L);//学生
-//            }
-//        }
-//        permissionService.assignUserRole(id,roleId);
-//        return success(id);
-//    }
-//
-//    @PostMapping("/createTeacher")
-//    @Operation(summary = "新增导师")
-//    @PreAuthorize("@ss.hasPermission('system:user:createTeacher')")
-//    public CommonResult<Long> createTeacher(@Valid @RequestBody UserSaveReqVO reqVO) {
-//        reqVO.setUserType("2");
-//        Long id = userService.createUser(reqVO);
-//        Set<Long> roleId = new HashSet<>();
-//        if (reqVO.getUserType()!=null){//添加权限
-//            if (reqVO.getUserType().equals("3")) {
-//                roleId.add(113L);//学生
-//            }
-//        }
-//        permissionService.assignUserRole(id,roleId);
-//        return success(id);
-//    }
-
-
     @PutMapping("update")
     @Operation(summary = "修改用户")
     @PreAuthorize("@ss.hasPermission('system:user:update')")
@@ -222,49 +186,13 @@ public class UserController {
                 pageResult.getTotal()));
     }
 
-
-    @GetMapping("/DeptTeacherPage")
-    @Operation(summary = "获得工作间教师分页列表")
-    @PreAuthorize("@ss.hasPermission('system:workroom:teacherList')")
-    public CommonResult<PageResult<UserRespVO>> getDeptTeacherPage(@Valid UserPageReqVO pageReqVO) {
-        // 获得用户分页列表
-        PageResult<AdminUserDO> pageResult = userService.getDeptTeacherPage(pageReqVO);
-        if (CollUtil.isEmpty(pageResult.getList())) {
-            return success(new PageResult<>(pageResult.getTotal()));
-        }
-        // 拼接数据
-        Map<Long, DeptDO> deptMap = deptService.getDeptMap(
-                convertList(pageResult.getList(), AdminUserDO::getDeptId));
-        return success(new PageResult<>(UserConvert.INSTANCE.convertList(pageResult.getList(), deptMap),
-                pageResult.getTotal()));
-    }
-
-
-    @GetMapping("/DeptStudentPage")
-    @Operation(summary = "获得工作间学生分页列表")//学院,导师
-    @PreAuthorize("@ss.hasPermission('system:workroom:studentlist')")
-    public CommonResult<PageResult<UserRespVO>> getDeptStudentPage(@Valid UserPageReqVO pageReqVO) {
-        // 获得用户分页列表
-        PageResult<AdminUserDO> pageResult = userService.getDeptStudentPage(pageReqVO);
-        if (CollUtil.isEmpty(pageResult.getList())) {
-            return success(new PageResult<>(pageResult.getTotal()));
-        }
-        // 拼接部门数据
-        Map<Long, DeptDO> deptMap = deptService.getDeptMap(
-                convertList(pageResult.getList(), AdminUserDO::getDeptId));
-
-        return success(new PageResult<>(UserConvert.INSTANCE.convertList(pageResult.getList(), deptMap),
-                pageResult.getTotal()));
-    }
-
-
-
     //lsq
     @GetMapping("/DeptUser")
     @Operation(summary = "获得工作间人员")
     public CommonResult<List<AdminUserDO>> getDeptUser() {
         // 获得用户分页列表
-        List<AdminUserDO> deptUser = userService.getDeptUser();
+        UserPageReqVO reqVO =new UserPageReqVO();
+        List<AdminUserDO> deptUser = userService.getDeptUser(reqVO);
         return success(deptUser);
     }
 
@@ -275,19 +203,18 @@ public class UserController {
         return success(deptUser);
     }
 
+    //工作间详情
     @GetMapping("/DeptSupervisor")
     @Operation(summary = "获得工作间下的导师")
     public CommonResult<List<AdminUserDO>> getDeptSupervisor(Long deptId) {
-        if (deptId ==null){
-            deptId =SecurityFrameworkUtils.getLoginUserDeptId();
-        }
         UserPageReqVO reqVO =new UserPageReqVO();
         reqVO.setDeptId(deptId);
         reqVO.setUserType("3");
-        List<AdminUserDO> deptUser = userService.getUserPage(reqVO).getList();
+        List<AdminUserDO> deptUser = userService.getUserList(reqVO);
         return success(deptUser);
     }
 
+
     //lsq学院和导师
     @GetMapping("/graduateStudentPage")
     @Operation(summary = "根据登录人获得毕业生分页列表")
@@ -338,6 +265,8 @@ public class UserController {
         return success(UserConvert.INSTANCE.convert(user, dept));
     }
 
+
+
     @GetMapping("/export")
     @Operation(summary = "导出用户")
     @PreAuthorize("@ss.hasPermission('system:user:export')")
@@ -353,8 +282,44 @@ public class UserController {
                 UserConvert.INSTANCE.convertList(list, deptMap));
     }
 
+    @GetMapping("/exportTeacher")
+    @Operation(summary = "导出导师")
+    @PreAuthorize("@ss.hasPermission('system:user:ExportTeacher')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportTeacherList(@Validated UserPageReqVO exportReqVO,
+                               HttpServletResponse response) throws IOException {
+        exportReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<teacherImportExcelVO> list = BeanUtils.toBean(userService.getUserPage0(exportReqVO).getList(),teacherImportExcelVO.class) ;
+        // 输出 Excel
+        ExcelUtils.write(response, "导师数据.xls", "数据", teacherImportExcelVO.class, list);
+    }
+
+    @GetMapping("/exportStudent")
+    @Operation(summary = "导出在校生")
+    @PreAuthorize("@ss.hasPermission('system:user:exportStudent')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportStudentList(@Validated UserPageReqVO exportReqVO,
+                                         HttpServletResponse response) throws IOException {
+        exportReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<teacherImportExcelVO> list = BeanUtils.toBean(userService.getUserPage1(exportReqVO).getList(),teacherImportExcelVO.class) ;
+        // 输出 Excel
+        ExcelUtils.write(response, "导师数据.xls", "数据", teacherImportExcelVO.class, list);
+    }
+    @GetMapping("/exportGraduate")
+    @Operation(summary = "导出毕业生")
+    @PreAuthorize("@ss.hasPermission('system:user:exportGraduate')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportGraduateList(@Validated UserPageReqVO exportReqVO,
+                                  HttpServletResponse response) throws IOException {
+        exportReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<teacherImportExcelVO> list = BeanUtils.toBean(userService.getGraduateStudentPage(exportReqVO).getList(),teacherImportExcelVO.class) ;
+        // 输出 Excel
+        ExcelUtils.write(response, "导师数据.xls", "数据", teacherImportExcelVO.class, list);
+    }
+
+
     @GetMapping("/get-import-template")
-    @Operation(summary = "获得在校生模板")
+    @Operation(summary = "获得用户模板")
     public void importTemplate(HttpServletResponse response) throws IOException {
         // 手动创建导出 demo
         List<UserImportExcelVO> list = Arrays.asList(
@@ -366,15 +331,27 @@ public class UserController {
         ExcelUtils.write(response, "用户导入模板.xls", "用户列表", UserImportExcelVO.class, list);
     }
 
+
+    @GetMapping("/get-import-SchoolTemplate")
+    @Operation(summary = "获得在校生模板")
+    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())
+                        .build()
+        );
+        ExcelUtils.write(response, "在校生导入模板.xls", "用户列表", StudentImportExcelVO.class, list);
+    }
+
     @GetMapping("/get-import-graduateTemplate")
     @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("测试000").userType("毕业生").status(CommonStatusEnum.ENABLE.getStatus()).sex(SexEnum.MALE.getSex())
+                        .nickname("毕业生").userType("毕业生").status(CommonStatusEnum.ENABLE.getStatus()).sex(SexEnum.MALE.getSex())
                         .build()
         );
-        ExcelUtils.write(response, "用户导入模板.xls", "用户列表", graduateStudentImportExcelVO.class, list);
+        ExcelUtils.write(response, "毕业生.xls", "用户列表", graduateStudentImportExcelVO.class, list);
     }
 
     @GetMapping("/get-import-teacherTemplate")
@@ -382,14 +359,58 @@ 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("测试000") .userType("导师").status(CommonStatusEnum.ENABLE.getStatus()).sex(SexEnum.MALE.getSex())
+                        .nickname("导师") .userType("导师").status(CommonStatusEnum.ENABLE.getStatus()).sex(SexEnum.MALE.getSex())
                         .build()
         );
-        ExcelUtils.write(response, "用户导入模板.xls", "用户列表", teacherImportExcelVO.class, list);
+        ExcelUtils.write(response, "导师导入模板.xls", "用户列表", teacherImportExcelVO.class, list);
     }
 
 
 
+    @PostMapping("/importTeacher")
+    @Operation(summary = "导入导师")
+    @Parameters({
+            @Parameter(name = "file", description = "Excel 文件", required = true),
+            @Parameter(name = "updateSupport", description = "是否支持更新,默认为 false", example = "true")
+    })
+    @PreAuthorize("@ss.hasPermission('system:user:importTeacher')")
+    public CommonResult<UserImportRespVO> importTeacherExcel(@RequestParam("file") MultipartFile file,
+                                                             @RequestParam(value = "updateSupport", required = false, defaultValue = "false") Boolean updateSupport) throws Exception {
+        List<teacherImportExcelVO> list = ExcelUtils.read(file, teacherImportExcelVO.class);
+
+        return success(userService.importTeacherList(list, updateSupport));
+    }
+
+    @PostMapping("/importGraduateStudent")
+    @Operation(summary = "导入毕业生")
+    @Parameters({
+            @Parameter(name = "file", description = "Excel 文件", required = true),
+            @Parameter(name = "updateSupport", description = "是否支持更新,默认为 false", example = "true")
+    })
+    @PreAuthorize("@ss.hasPermission('system:user:importGraduateStudent')")
+    public CommonResult<UserImportRespVO> importGraduateExcel(@RequestParam("file") MultipartFile file,
+                                                             @RequestParam(value = "updateSupport", required = false, defaultValue = "false") Boolean updateSupport) throws Exception {
+        List<graduateStudentImportExcelVO> list = ExcelUtils.read(file, graduateStudentImportExcelVO.class);
+
+        return success(userService.importGraduateList(list, updateSupport));
+    }
+
+    @PostMapping("/importSchoolStudent")
+    @Operation(summary = "导入在校生")
+    @Parameters({
+            @Parameter(name = "file", description = "Excel 文件", required = true),
+            @Parameter(name = "updateSupport", description = "是否支持更新,默认为 false", example = "true")
+    })
+    @PreAuthorize("@ss.hasPermission('system:user:importSchoolStudent')")
+    public CommonResult<UserImportRespVO> importSchoolStudentExcel(@RequestParam("file") MultipartFile file,
+                                                              @RequestParam(value = "updateSupport", required = false, defaultValue = "false") Boolean updateSupport) throws Exception {
+        List<StudentImportExcelVO> list = ExcelUtils.read(file, StudentImportExcelVO.class);
+
+        return success(userService.importSchoolStudentList(list, updateSupport));
+    }
+
+
+    
     @PostMapping("/import")
     @Operation(summary = "导入用户")
     @Parameters({
@@ -425,8 +446,8 @@ public class UserController {
     public CommonResult<Map<String,Integer>> getDetail() throws Exception {
         UserPageReqVO reqVO= new UserPageReqVO();
         DeptListReqVO deptVO =new DeptListReqVO();
-       List<AdminUserDO> studnetList = userService.getUserPage(reqVO.setUserType("1")).getList();
-       List<AdminUserDO> teacherList =  userService.getUserPage(reqVO.setUserType("3")).getList();
+       List<AdminUserDO> studnetList = userService.getUserList(reqVO.setUserType("1"));
+       List<AdminUserDO> teacherList =  userService.getUserList(reqVO.setUserType("3"));
 
        Integer studentNum =studnetList.size();
        Integer teacherNum =teacherList.size();

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

@@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
 import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
 import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
 import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
@@ -37,14 +38,12 @@ public class StudentImportExcelVO {
     @ExcelProperty("专业")
     private String major;
 
-    @ExcelProperty("导师")
-    private String supervisor;
-
     @ExcelProperty(value = "用户性别", converter = DictConvert.class)
     @DictFormat(DictTypeConstants.USER_SEX)
     private Integer sex;
 
 
+    private String userType;
 
     @ExcelProperty("用户邮箱")
     private String email;
@@ -52,11 +51,18 @@ public class StudentImportExcelVO {
     @ExcelProperty("手机号码")
     private String mobile;
 
+    @ExcelProperty("工作间名称")
+    private String deptName;
+
+    @ExcelProperty("导师名称")
+    private String supervisor;
 
     @ExcelProperty("导师电话")
     private String supervisorMobile;
 
-    //导入毕业生直接添加身份
+    @ExcelProperty(value = "账号状态", converter = DictConvert.class)
+    @DictFormat(DictTypeConstants.COMMON_STATUS)
+    private Integer status;
 
 
 }

+ 1 - 1
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/graduateStudentImportExcelVO.java

@@ -49,7 +49,7 @@ public class graduateStudentImportExcelVO {
     @ExcelProperty("手机号码")
     private String mobile;
 
-    @ExcelProperty("用户类型:1在校生,2毕业生,3导师,4学院")
+//    @ExcelProperty("用户类型:1在校生,2毕业生,3导师,4学院")
     private  String userType;
 
     @ExcelProperty("工作地点")

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

@@ -36,7 +36,6 @@ public class teacherImportExcelVO {
     @ExcelProperty("手机号码")
     private String mobile;
 
-    @ExcelProperty("用户类型:1在校生,2毕业生,3导师,4学院")
     private  String userType;
 
     @ExcelProperty("用户邮箱")

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

@@ -64,6 +64,40 @@ 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();
+        // 创建查询包装器
+        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,"0")//正常
+                .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);
+            }
+        }
+        return selectList(queryWrapper);
+    }
+
 
     //全部异常的异常考勤记录
     default PageResult<StudentAttendanceDO> selectErrorPage(StudentAttendancePageReqVO reqVO, Set<Long> roleIds,Long loginId) {
@@ -98,6 +132,38 @@ public interface StudentAttendanceMapper extends BaseMapperX<StudentAttendanceDO
 
          return selectPage(reqVO,queryWrapperX);
     }
+    //全部异常的异常考勤记录
+    default List<StudentAttendanceDO> selectErrorList(StudentAttendancePageReqVO reqVO, Set<Long> roleIds,Long loginId) {
+        Long dept_id = SecurityFrameworkUtils.getLoginUserDeptId();
+
+        MPJLambdaWrapperX<StudentAttendanceDO> queryWrapperX =new MPJLambdaWrapperX<>();
+
+        queryWrapperX.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)
+                .likeIfExists(StudentAttendanceDO::getStudentName, reqVO.getStudentName())
+                .likeIfExists(AdminUserDO::getUserNumber, reqVO.getUserNumber())//按学号查
+                .eqIfExists(StudentAttendanceDO::getDeptId, reqVO.getDeptId())
+                .eqIfExists(StudentAttendanceDO::getClockInStatus, reqVO.getClockInStatus())
+                //1未打卡
+                .eqIfExists(StudentAttendanceDO::getClockInStatus,"1")
+                .orderByDesc(StudentAttendanceDO::getClockInTime);//未打卡
+
+        if (roleIds != null && !roleIds.isEmpty()) {
+            if (roleIds.contains(113L)) {//如果是导师,只看工作间下面的
+                queryWrapperX.eqIfPresent(StudentAttendanceDO::getDeptId, dept_id);
+
+            } else if (roleIds.contains(112L)) {//是学生,只看自己的
+                queryWrapperX.eqIfPresent(StudentAttendanceDO::getStudentId, loginId);
+
+            }
+        }
+        return selectList(queryWrapperX);
+    }
 
 
 

+ 54 - 39
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java

@@ -51,10 +51,23 @@ public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
                 .inIfPresent(AdminUserDO::getDeptId, deptIds)
                 .orderByDesc(AdminUserDO::getId));
     }
+    default List<AdminUserDO> selectUserList(UserPageReqVO reqVO, Collection<Long> deptIds) {
+        return selectList(new LambdaQueryWrapperX<AdminUserDO>()
+                .likeIfPresent(AdminUserDO::getUsername, reqVO.getUsername())
+                .likeIfPresent(AdminUserDO::getUserNumber,reqVO.getUserNumber())//按学号
+                .eqIfPresent(AdminUserDO::getUserType,reqVO.getUserType())//用户类型
+                .likeIfPresent(AdminUserDO::getMobile, reqVO.getMobile())
+                .eqIfPresent(AdminUserDO::getStatus, reqVO.getStatus())
+                .betweenIfPresent(AdminUserDO::getCreateTime, reqVO.getCreateTime())
+                .inIfPresent(AdminUserDO::getDeptId, deptIds)
+                .orderByDesc(AdminUserDO::getId));
+    }
 
-//  查所有老师管理查询
-    default PageResult<AdminUserDO> selectPage0(UserPageReqVO reqVO, Collection<Long> deptIds) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<AdminUserDO>()
+//  根据登录查所有老师管理查询
+    default PageResult<AdminUserDO> selectPage0(UserPageReqVO reqVO, Collection<Long> deptIds,Set<Long>roleIds,Long loginId) {
+        Long deptId =SecurityFrameworkUtils.getLoginUserDeptId();
+        LambdaQueryWrapperX<AdminUserDO> queryWrapperX =new LambdaQueryWrapperX<AdminUserDO>();
+        queryWrapperX
                 .likeIfPresent(AdminUserDO::getUsername, reqVO.getUsername())
                 .likeIfPresent(AdminUserDO::getNickname, reqVO.getNickname())
                 .likeIfPresent(AdminUserDO::getMobile, reqVO.getMobile())
@@ -65,10 +78,18 @@ public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
                 .inIfPresent(AdminUserDO::getDeptId, deptIds)
                 // 添加子查询条件,查找有教师权限的人
                 .eqIfPresent(AdminUserDO::getUserType,3)
-                .orderByDesc(AdminUserDO::getId));
+                .orderByDesc(AdminUserDO::getId);
+        if (roleIds.contains(113L)){//如果是教师,只找导师是登录的
+            queryWrapperX.eqIfPresent(AdminUserDO::getDeptId,deptId);
+        }else if (roleIds.contains(114L)) {//学院
+
+        }else if (roleIds.contains(1L)){//管理员
+
+        }
+        return selectPage(reqVO,queryWrapperX);
     }
 
-    // 会根据登录 查所有学生
+    // 会根据登录 查在校学生
     default PageResult<AdminUserDO> selectPage1(UserPageReqVO reqVO, Collection<Long> deptIds,Set<Long>roleIds,Long loginId) {
 
         LambdaQueryWrapperX<AdminUserDO> queryWrapperX =new LambdaQueryWrapperX<AdminUserDO>();
@@ -81,53 +102,42 @@ public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
                 .eqIfPresent(AdminUserDO::getStatus, reqVO.getStatus())
                 .betweenIfPresent(AdminUserDO::getCreateTime, reqVO.getCreateTime())
                 .inIfPresent(AdminUserDO::getDeptId, deptIds)
-                .inIfPresent(AdminUserDO::getUserType,1,2)
                 .orderByDesc(AdminUserDO::getId);
 
         if (roleIds.contains(113L)){//如果是教师,只找导师是登录的
-            queryWrapperX.eqIfPresent(AdminUserDO::getSupervisorId,loginId);
+            queryWrapperX.eqIfPresent(AdminUserDO::getSupervisorId,loginId)
+                          .eqIfPresent(AdminUserDO::getUserType,1);
+        } else if (roleIds.contains(114L)) {//学院
+            queryWrapperX.eqIfPresent(AdminUserDO::getUserType,1);
+        }else if (roleIds.contains(1L)){//管理员
+            queryWrapperX.inIfPresent(AdminUserDO::getUserType,1,2);
         }
         PageResult<AdminUserDO> result = selectPage(reqVO,queryWrapperX);
         return result;
     }
+    default List<AdminUserDO> selectList1(UserPageReqVO reqVO, Collection<Long> deptIds,Set<Long>roleIds,Long loginId) {
 
-    // lsq  查工作间下的老师 3老师
-    default PageResult<AdminUserDO> selectDeptTeacherPage(UserPageReqVO reqVO, Collection<Long> deptIds) {
-                Long deptId = SecurityFrameworkUtils.getLoginUserDeptId(); //
-
-        return selectPage(reqVO, new LambdaQueryWrapperX<AdminUserDO>()
-                .likeIfPresent(AdminUserDO::getUsername, reqVO.getUsername())
+        LambdaQueryWrapperX<AdminUserDO> queryWrapperX =new LambdaQueryWrapperX<AdminUserDO>();
+        queryWrapperX.likeIfPresent(AdminUserDO::getUsername, reqVO.getUsername())
                 .likeIfPresent(AdminUserDO::getMobile, reqVO.getMobile())
-                .likeIfPresent(AdminUserDO::getNickname, reqVO.getNickname())//昵称查询
-                .likeIfPresent(AdminUserDO::getGrade, reqVO.getGrade())//班级查询
-                .eqIfPresent(AdminUserDO::getStatus, reqVO.getStatus())
-                .betweenIfPresent(AdminUserDO::getCreateTime, reqVO.getCreateTime())
-                .inIfPresent(AdminUserDO::getDeptId, deptIds)
-                // 添加子查询条件,查找有教师权限的人
-                .eqIfPresent(AdminUserDO::getUserType, 3)
-                // 查到当前登录老师的工作间并且属于这个工作间的所有老师
-                .eqIfPresent(AdminUserDO::getDeptId,deptId)
-                .orderByDesc(AdminUserDO::getId));
-    }
-
-    // lsq  查工作间下的学生 1在校生
-    default PageResult<AdminUserDO> selectDeptStudentPage(UserPageReqVO reqVO, Collection<Long> deptIds) {
-        Long deptId = SecurityFrameworkUtils.getLoginUserDeptId();
-
-        // 查询用户数据
-        PageResult<AdminUserDO> result = selectPage(reqVO, new LambdaQueryWrapperX<AdminUserDO>()
-                .likeIfPresent(AdminUserDO::getUsername, reqVO.getUsername())
                 .likeIfPresent(AdminUserDO::getUserNumber,reqVO.getUserNumber())//学号查询
-                .eqIfPresent(AdminUserDO::getUserType,reqVO.getUserType())//类型查询
                 .likeIfPresent(AdminUserDO::getNickname, reqVO.getNickname())//昵称查询
+                .eqIfPresent(AdminUserDO::getUserType,reqVO.getUserType())//类型查询
                 .likeIfPresent(AdminUserDO::getGrade, reqVO.getGrade())//班级查询
-                .likeIfPresent(AdminUserDO::getMobile, reqVO.getMobile())
                 .eqIfPresent(AdminUserDO::getStatus, reqVO.getStatus())
                 .betweenIfPresent(AdminUserDO::getCreateTime, reqVO.getCreateTime())
                 .inIfPresent(AdminUserDO::getDeptId, deptIds)
-                .eqIfPresent(AdminUserDO::getDeptId,deptId)
-                .eqIfPresent(AdminUserDO::getUserType,1)
-                .orderByDesc(AdminUserDO::getId));
+                .orderByDesc(AdminUserDO::getId);
+
+        if (roleIds.contains(113L)){//如果是教师,只找导师是登录的
+            queryWrapperX.eqIfPresent(AdminUserDO::getSupervisorId,loginId)
+                    .eqIfPresent(AdminUserDO::getUserType,1);
+        } else if (roleIds.contains(114L)) {//学院
+            queryWrapperX.eqIfPresent(AdminUserDO::getUserType,1);
+        }else if (roleIds.contains(1L)){//管理员
+            queryWrapperX.inIfPresent(AdminUserDO::getUserType,1,2);
+        }
+       List<AdminUserDO> result = selectList(queryWrapperX);
         return result;
     }
 
@@ -146,6 +156,10 @@ public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
                 .orderByDesc(AdminUserDO::getId);
         if (roleIds.contains(113L)){//如果是教师
             queryWrapper.eqIfPresent(AdminUserDO::getSupervisorId,loginId);
+        }else if (roleIds.contains(114L)) {//学院
+
+        }else if (roleIds.contains(1L)){//管理员
+
         }
         return selectPage(reqVO,queryWrapper);
     }
@@ -160,10 +174,11 @@ public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
     }
 
     //  查登录工作间下的用户列表
-    default List<AdminUserDO> selectDeptUser() {
+    default List<AdminUserDO> selectDeptUser(UserPageReqVO reqVO) {
         Long deptId = SecurityFrameworkUtils.getLoginUserDeptId();
         LambdaQueryWrapperX<AdminUserDO> queryWrapper = new LambdaQueryWrapperX<AdminUserDO>()
-                .eqIfPresent(AdminUserDO::getDeptId,deptId);
+                .eqIfPresent(AdminUserDO::getDeptId,deptId)
+                .eqIfPresent(AdminUserDO::getUserType,reqVO.getUserType());
         return selectList(queryWrapper);
     }
 

+ 21 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/userAchievement/UserAchievementMapper.java

@@ -42,6 +42,27 @@ public interface UserAchievementMapper extends BaseMapperX<UserAchievementDO> {
 
         return selectPage(reqVO,queryWrapper);
     }
+    default List<UserAchievementDO> selectList(UserAchievementPageReqVO reqVO) {
+        Long deptId =SecurityFrameworkUtils.getLoginUserDeptId();
+        MPJLambdaWrapperX<UserAchievementDO> queryWrapper =new MPJLambdaWrapperX<>();
+
+        queryWrapper.betweenIfPresent(UserAchievementDO::getCreateTime,reqVO.getCreateTime())
+                .inIfPresent(UserAchievementDO::getUserType,reqVO.getUserType())
+                .selectAll(UserAchievementDO.class)
+                .selectAs(AdminUserDO::getUserType,UserAchievementDO::getUserType)
+                .leftJoin(AdminUserDO.class,AdminUserDO::getId,UserAchievementDO::getUserId)
+                .eqIfExists(UserAchievementDO::getUserId, reqVO.getUserId())
+                .likeIfExists(UserAchievementDO::getAchievementName, reqVO.getAchievementName())
+                .eqIfExists(UserAchievementDO::getAchievementType, reqVO.getAchievementType())
+                .likeIfExists(UserAchievementDO::getUserName, reqVO.getUserName())
+                .eqIfExists(UserAchievementDO::getDetail, reqVO.getDetail())
+                //找到这个登录人工作室下的所有人员成果
+                .eqIfExists(UserAchievementDO::getDeptId,deptId)
+                //用户类型查
+                .orderByDesc(UserAchievementDO::getCreateTime);
+
+        return selectList(queryWrapper);
+    }
 
     @Select("SELECT * FROM system_user_achievement WHERE user_id = #{userId}")
     List<UserAchievementDO> selectUserAchievementsById(int userId);

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

@@ -55,9 +55,11 @@ public interface StudentAttendanceService {
      */
     //全部
     PageResult<StudentAttendanceDO> getStudentAttendancePage(StudentAttendancePageReqVO pageReqVO);//
+    List<StudentAttendanceDO> getStudentAttendanceList(StudentAttendancePageReqVO pageReqVO);//
 
     //异常
-    PageResult<StudentAttendanceDO> getStudentAttendanceErrorPage(StudentAttendancePageReqVO pageReqVO);//
+    PageResult<StudentAttendanceDO> getStudentAttendanceErrorPage(StudentAttendancePageReqVO pageReqVO);
+    List<StudentAttendanceDO> getStudentAttendanceErrorList(StudentAttendancePageReqVO pageReqVO);//
 
 
     List<StudentAttendanceDO> getStudentAttendanceByUserNumber(String userNumber);

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

@@ -79,6 +79,13 @@ public class StudentAttendanceServiceImpl implements StudentAttendanceService {
         return studentAttendanceMapper.selectPage(pageReqVO,roleIds,loginId);
     }
 
+    @Override//
+    public List<StudentAttendanceDO> getStudentAttendanceList(StudentAttendancePageReqVO pageReqVO) {
+        Long loginId = SecurityFrameworkUtils.getLoginUserId();
+        Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(loginId);
+        return studentAttendanceMapper.selectList(pageReqVO,roleIds,loginId);
+    }
+
 
 
     @Override
@@ -88,6 +95,13 @@ public class StudentAttendanceServiceImpl implements StudentAttendanceService {
         return studentAttendanceMapper.selectErrorPage(pageReqVO,roleIds,loginId);
     }
 
+    @Override
+    public List<StudentAttendanceDO> getStudentAttendanceErrorList(StudentAttendancePageReqVO pageReqVO) {
+        Long loginId = SecurityFrameworkUtils.getLoginUserId();
+        Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(loginId);
+        return studentAttendanceMapper.selectErrorList(pageReqVO,roleIds,loginId);
+    }
+
 
 
     @Override

+ 12 - 5
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java

@@ -113,16 +113,17 @@ public interface AdminUserService {
      * @return 分页列表
      */
     PageResult<AdminUserDO> getUserPage(UserPageReqVO reqVO);
+
+    List<AdminUserDO> getUserList(UserPageReqVO reqVO);
     //lsq 0老师 1学生
     PageResult<AdminUserDO> getUserPage1(UserPageReqVO reqVO);
+
+    List<AdminUserDO> getUserList1(UserPageReqVO reqVO);
 //    1学生
     PageResult<AdminUserDO> getUserPage0(UserPageReqVO reqVO);
-    //查工作间下的老师
-    PageResult<AdminUserDO> getDeptTeacherPage(UserPageReqVO reqVO);
-    //查工作间下的学生
-    PageResult<AdminUserDO> getDeptStudentPage(UserPageReqVO reqVO);
+
     //查工作间下的所有人
-    List<AdminUserDO> getDeptUser();
+    List<AdminUserDO> getDeptUser(UserPageReqVO reqVO);
     //查毕业生(学院和导师)
     PageResult<AdminUserDO> getGraduateStudentPage(UserPageReqVO reqVO);
 
@@ -203,6 +204,12 @@ public interface AdminUserService {
      */
     UserImportRespVO importUserList(List<UserImportExcelVO> importUsers, boolean isUpdateSupport);
 
+    UserImportRespVO importTeacherList(List<teacherImportExcelVO> importUsers, boolean isUpdateSupport);
+
+    UserImportRespVO importGraduateList(List<graduateStudentImportExcelVO> importUsers, boolean isUpdateSupport);
+
+    UserImportRespVO importSchoolStudentList(List<StudentImportExcelVO> importUsers, boolean isUpdateSupport);
+
     /**
      * 获得指定状态的用户们
      *

+ 237 - 28
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java

@@ -17,10 +17,7 @@ import cn.iocoder.yudao.module.infra.api.file.FileApi;
 import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptListReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO;
-import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserImportExcelVO;
-import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserImportRespVO;
-import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserPageReqVO;
-import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserSaveReqVO;
+import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.*;
 import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.dept.UserPostDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
@@ -271,52 +268,73 @@ public class AdminUserServiceImpl implements AdminUserService {
         }
         return pageResult;
     }
+
+    @Override
+    public List<AdminUserDO> getUserList(UserPageReqVO reqVO) {
+       List<AdminUserDO> listResult = userMapper.selectUserList(reqVO, getDeptCondition(reqVO.getDeptId()));
+        // 循环处理每个学生
+        for (AdminUserDO student : listResult) {
+            // 根据 supervisorId
+            if ("1".equals(student.getUserType()) ||"2".equals(student.getUserType())) {
+                if (student.getSupervisorId() != null) {
+                    AdminUserDO supervisorUser = getUser(student.getSupervisorId());
+                    String supervisor = supervisorUser.getNickname();
+                    String mobile = supervisorUser.getMobile();
+                    // 赋值给 对应 字段
+                    student.setSupervisor(supervisor);
+                    student.setSupervisorMobile(mobile);
+                }
+            }
+        }
+        return listResult;
+    }
+
     //获取所有用户列表
     public List<AdminUserDO> getAllUserList(){
         return userMapper.getAllUsers();
     }
 
     //<>
-    //lsq 学生
+    //lsq 根据登录人权限查学生
     @Override
     public PageResult<AdminUserDO> getUserPage1(UserPageReqVO reqVO) {//(学院)
         Long loginId = SecurityFrameworkUtils.getLoginUserId();
         Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(loginId);
         PageResult<AdminUserDO> result =userMapper.selectPage1(reqVO, getDeptCondition(reqVO.getDeptId()),roleIds,loginId);
         // 遍历结果集,设置 photoIsExist
-        for (AdminUserDO user : result.getList()) {
+        result.getList().stream().forEach(user -> {
             user.setPhotoIsExist(Long.valueOf(user.getPhotoUrl() != null && !user.getPhotoUrl().isEmpty() ? 1 : 0));
             user.setIsGraduate(vilidateIsGraduate(user));
-        }
+        });
         System.out.println(result);
         return result;
     }
-    //lsq 老师
-    @Override
-    public PageResult<AdminUserDO> getUserPage0(UserPageReqVO reqVO) {
-        return userMapper.selectPage0(reqVO, getDeptCondition(reqVO.getDeptId()));
-    }
-
-    //查询工作间下的老师
+    //暂时没用
     @Override
-    public PageResult<AdminUserDO> getDeptTeacherPage(UserPageReqVO reqVO) {
-        return userMapper.selectDeptTeacherPage(reqVO, getDeptCondition(reqVO.getDeptId()));
-    }
-    //查询工作间下的学生(导师)
-    @Override
-    public PageResult<AdminUserDO> getDeptStudentPage(UserPageReqVO reqVO) {
-        PageResult<AdminUserDO> result = userMapper.selectDeptStudentPage(reqVO, getDeptCondition(reqVO.getDeptId()));
-        for (AdminUserDO user : result.getList()) {
+    public  List<AdminUserDO> getUserList1(UserPageReqVO reqVO){
+        Long loginId = SecurityFrameworkUtils.getLoginUserId();
+        Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(loginId);
+        List<AdminUserDO> result =userMapper.selectList1(reqVO, getDeptCondition(reqVO.getDeptId()),roleIds,loginId);
+        // 遍历结果集,设置 photoIsExist
+        result.stream().forEach(user -> {
             user.setPhotoIsExist(Long.valueOf(user.getPhotoUrl() != null && !user.getPhotoUrl().isEmpty() ? 1 : 0));
             user.setIsGraduate(vilidateIsGraduate(user));
-        }
+        });
         System.out.println(result);
         return result;
+    };
+    //lsq 根据登录查所有老师
+    @Override
+    public PageResult<AdminUserDO> getUserPage0(UserPageReqVO reqVO) {
+        Long loginId = SecurityFrameworkUtils.getLoginUserId();
+        Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(loginId);
+        return userMapper.selectPage0(reqVO, getDeptCondition(reqVO.getDeptId()),roleIds,loginId);
     }
+
     //查询工作间下的人员
     @Override
-    public List<AdminUserDO> getDeptUser() {
-        return userMapper.selectDeptUser();
+    public List<AdminUserDO> getDeptUser(UserPageReqVO reqVO) {
+        return userMapper.selectDeptUser(reqVO);
     }
     //找毕业生(根据登录人员权限)
     @Override
@@ -509,11 +527,11 @@ public class AdminUserServiceImpl implements AdminUserService {
 
     @VisibleForTesting
     void validateSupervisorExist(Long id, String supervisor) {
-        if (supervisor==null) {
+        if (supervisor == null) {
             return;
         }
         AdminUserDO user = userMapper.getUserByNickName(supervisor);
-        if (user !=null){
+        if (user ==null){
             return;
         }
         if (id ==null){
@@ -603,13 +621,13 @@ public class AdminUserServiceImpl implements AdminUserService {
 
             // 2.2.1 判断如果不存在,在进行插入
             AdminUserDO existUser = userMapper.selectByUsername(importUser.getUsername());
+            String transformUserType =TransformUserType(importUser.getUserType());// 转换学生类型
             if (existUser == null) {
 
                 AdminUserDO newUser = BeanUtils.toBean(importUser, AdminUserDO.class)
                         .setPassword(encodePassword(importUser.getPassword()))
                         .setPostIds(new HashSet<>()); // 设置默认密码及空岗位编号数组
 
-                String transformUserType =TransformUserType(importUser.getUserType());// 转换学生类型
                 if (importUser.getSupervisor()!=null) {
                     newUser.setSupervisorId(userMapper.getUserByNickName(importUser.getSupervisor()).getId());
                 }// 导师名称转id
@@ -631,6 +649,193 @@ public class AdminUserServiceImpl implements AdminUserService {
                     roleIds.add(114L);//学院权限
                     permissionService.assignUserRole(insertUserId,roleIds);
                 }
+                respVO.getCreateUsernames().add(importUser.getUsername());
+                return;
+            }
+
+            // 2.2.2 如果存在,判断是否允许更新
+            if (!isUpdateSupport) {
+                respVO.getFailureUsernames().put(importUser.getUsername(), USER_USERNAME_EXISTS.getMsg());
+                return;
+            }
+            AdminUserDO updateUser = BeanUtils.toBean(importUser, AdminUserDO.class);
+            updateUser.setId(existUser.getId());
+            updateUser.setDeptId(deptId);//更新工作间
+            updateUser.setUserType(transformUserType);//更新学生类型
+            userMapper.updateById(updateUser);
+            respVO.getUpdateUsernames().add(importUser.getUsername());
+        });
+        return respVO;
+    }
+//导师
+
+    @Override
+    @Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入
+    public UserImportRespVO importTeacherList(List<teacherImportExcelVO> importUsers, boolean isUpdateSupport) {
+        // 1.1 参数校验
+        if (CollUtil.isEmpty(importUsers)) {
+            throw exception(USER_IMPORT_LIST_IS_EMPTY);
+        }
+
+        // 2. 遍历,逐个创建 or 更新
+        UserImportRespVO respVO = UserImportRespVO.builder().createUsernames(new ArrayList<>())
+                .updateUsernames(new ArrayList<>()).failureUsernames(new LinkedHashMap<>()).build();
+        importUsers.forEach(importUser -> {
+
+            Long deptId = null; //工作间名称转id
+            if (importUser.getDeptName() != null && !importUser.getDeptName().isEmpty()) {
+                deptId = TransformDept(importUser.getDeptName());
+            }
+            try {
+                validateUserForCreateOrUpdate(null, null, importUser.getMobile(), importUser.getEmail(),
+                        deptId , null,null);
+            } catch (ServiceException ex) {
+                respVO.getFailureUsernames().put(importUser.getUsername(), ex.getMessage());
+                return;
+            }
+            importUser.setUserType("3");//确定是导师
+            // 2.2.1 判断如果不存在,在进行插入
+            AdminUserDO existUser = userMapper.selectByUsername(importUser.getUsername());
+            if (existUser == null) {
+                AdminUserDO newUser = BeanUtils.toBean(importUser, AdminUserDO.class);
+                if (importUser.getPassword()==null){
+                    newUser.setPassword(encodePassword("123456"));
+                }else {
+                    newUser.setPassword(encodePassword(importUser.getPassword()));
+                }
+                        newUser.setDeptId(deptId);//插入工作间id
+                Long insertUserId = userMapper.insertAndGetId(newUser); // 执行插入用户数据
+
+                Set<Long> roleIds = new HashSet<>();
+                //赋予导师角色
+                   roleIds.add(113L);//导师权限
+                   permissionService.assignUserRole(insertUserId, roleIds);
+
+                respVO.getCreateUsernames().add(importUser.getUsername());
+                return;
+            }
+
+
+            // 2.2.2 如果存在,判断是否允许更新
+            if (!isUpdateSupport) {
+                respVO.getFailureUsernames().put(importUser.getUsername(), USER_USERNAME_EXISTS.getMsg());
+                return;
+            }
+            AdminUserDO updateUser = BeanUtils.toBean(importUser, AdminUserDO.class);
+            updateUser.setId(existUser.getId());
+            updateUser.setDeptId(deptId);//更新工作间
+            userMapper.updateById(updateUser);
+            respVO.getUpdateUsernames().add(importUser.getUsername());
+        });
+        return respVO;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入
+    public UserImportRespVO importGraduateList(List<graduateStudentImportExcelVO> importUsers, boolean isUpdateSupport) {
+        // 1.1 参数校验
+        if (CollUtil.isEmpty(importUsers)) {
+            throw exception(USER_IMPORT_LIST_IS_EMPTY);
+        }
+
+        // 2. 遍历,逐个创建 or 更新
+        UserImportRespVO respVO = UserImportRespVO.builder().createUsernames(new ArrayList<>())
+                .updateUsernames(new ArrayList<>()).failureUsernames(new LinkedHashMap<>()).build();
+        importUsers.forEach(importUser -> {
+
+
+            try {
+                validateUserForCreateOrUpdate(null, null, importUser.getMobile(), importUser.getEmail(),
+                        null , null,null);
+            } catch (ServiceException ex) {
+                respVO.getFailureUsernames().put(importUser.getUsername(), ex.getMessage());
+                return;
+            }
+            importUser.setUserType("2");//确定是毕业生
+            // 2.2.1 判断如果不存在,在进行插入
+            AdminUserDO existUser = userMapper.selectByUsername(importUser.getUsername());
+            if (existUser == null) {
+                AdminUserDO newUser = BeanUtils.toBean(importUser, AdminUserDO.class);
+                if (importUser.getPassword()==null){
+                    newUser.setPassword(encodePassword("123456"));
+                }else {
+                    newUser.setPassword(encodePassword(importUser.getPassword()));
+                }
+
+                Long insertUserId = userMapper.insertAndGetId(newUser); // 执行插入用户数据
+
+                Set<Long> roleIds = new HashSet<>();
+                //赋予学生角色
+                roleIds.add(112L);//学生权限
+                permissionService.assignUserRole(insertUserId, roleIds);
+
+                respVO.getCreateUsernames().add(importUser.getUsername());
+                return;
+            }
+
+
+
+            // 2.2.2 如果存在,判断是否允许更新
+            if (!isUpdateSupport) {
+                respVO.getFailureUsernames().put(importUser.getUsername(), USER_USERNAME_EXISTS.getMsg());
+                return;
+            }
+            AdminUserDO updateUser = BeanUtils.toBean(importUser, AdminUserDO.class);
+            updateUser.setId(existUser.getId());
+
+            userMapper.updateById(updateUser);
+            respVO.getUpdateUsernames().add(importUser.getUsername());
+        });
+        return respVO;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入
+    public UserImportRespVO importSchoolStudentList(List<StudentImportExcelVO> importUsers, boolean isUpdateSupport) {
+        // 1.1 参数校验
+        if (CollUtil.isEmpty(importUsers)) {
+            throw exception(USER_IMPORT_LIST_IS_EMPTY);
+        }
+        // 2. 遍历,逐个创建 or 更新
+        UserImportRespVO respVO = UserImportRespVO.builder().createUsernames(new ArrayList<>())
+                .updateUsernames(new ArrayList<>()).failureUsernames(new LinkedHashMap<>()).build();
+        importUsers.forEach(importUser -> {
+
+            Long deptId = null; //工作间名称转id
+            if (importUser.getDeptName() != null && !importUser.getDeptName().isEmpty()) {
+                deptId = TransformDept(importUser.getDeptName());
+            }
+            try {
+                validateUserForCreateOrUpdate(null, null, importUser.getMobile(), importUser.getEmail(),
+                        deptId , null, importUser.getSupervisor());
+            } catch (ServiceException ex) {
+                respVO.getFailureUsernames().put(importUser.getUsername(), ex.getMessage());
+                return;
+            }
+            // 2.2.1 判断如果不存在,在进行插入
+            AdminUserDO existUser = userMapper.selectByUsername(importUser.getUsername());
+            if (existUser == null) {
+
+                AdminUserDO newUser = BeanUtils.toBean(importUser, AdminUserDO.class);
+                if (importUser.getPassword()==null){
+                    newUser.setPassword(encodePassword("123456"));
+                }else {
+                    newUser.setPassword(encodePassword(importUser.getPassword()));
+                }
+
+                if (importUser.getSupervisor()!=null) {
+                    newUser.setSupervisorId(userMapper.getUserByNickName(importUser.getSupervisor()).getId());
+                }// 导师名称转id
+                newUser.setUserType("1");//添加学生类型
+                newUser.setTenantId(1L);//设置租户编号
+                newUser.setDeptId(deptId);//设置工作间id
+
+                Long insertUserId = userMapper.insertAndGetId(newUser); // 执行插入用户数据
+
+                Set<Long> roleIds = new HashSet<>();
+                //赋予学生角色
+                roleIds.add(112L);//学生权限
+                permissionService.assignUserRole(insertUserId,roleIds);
 
                 respVO.getCreateUsernames().add(importUser.getUsername());
                 return;
@@ -641,14 +846,18 @@ public class AdminUserServiceImpl implements AdminUserService {
                 respVO.getFailureUsernames().put(importUser.getUsername(), USER_USERNAME_EXISTS.getMsg());
                 return;
             }
+
             AdminUserDO updateUser = BeanUtils.toBean(importUser, AdminUserDO.class);
             updateUser.setId(existUser.getId());
+            updateUser.setDeptId(deptId);//更新工作间
             userMapper.updateById(updateUser);
             respVO.getUpdateUsernames().add(importUser.getUsername());
         });
         return respVO;
     }
 
+
+
     @Override
     public List<AdminUserDO> getUserListByStatus(Integer status) {
         return userMapper.selectListByStatus(status);

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

@@ -57,6 +57,8 @@ public interface UserAchievementService {
      */
     PageResult<UserAchievementDO> getUserAchievementPage(UserAchievementPageReqVO pageReqVO);
 
+    List<UserAchievementDO> getUserAchievementList(UserAchievementPageReqVO pageReqVO);
+
 
 
 }

+ 4 - 1
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/userAchievement/UserAchievementServiceImpl.java

@@ -85,7 +85,10 @@ public class UserAchievementServiceImpl implements UserAchievementService {
     public PageResult<UserAchievementDO> getUserAchievementPage(UserAchievementPageReqVO pageReqVO) {
         return userAchievementMapper.selectPage(pageReqVO);
     }
-
+    @Override
+    public List<UserAchievementDO> getUserAchievementList(UserAchievementPageReqVO reqVO) {
+        return userAchievementMapper.selectList(reqVO);
+    }