Crazy 8 bulan lalu
induk
melakukan
241584a75a
14 mengubah file dengan 229 tambahan dan 52 penghapusan
  1. 2 3
      yudao-module-md/yudao-module-md-biz/src/main/java/Acs/EventSearch.java
  2. 48 1
      yudao-module-md/yudao-module-md-biz/src/main/java/cn/iocoder/yudao/module/md/controller/admin/AcsController.java
  3. 28 1
      yudao-module-md/yudao-module-md-biz/src/main/java/cn/iocoder/yudao/module/md/service/AcsService.java
  4. 23 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/DeptController.java
  5. 3 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/vo/dept/DeptListReqVO.java
  6. 33 7
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentAttendance/StudentAttendanceController.java
  7. 5 4
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentAttendance/vo/StudentAttendanceRespVO.java
  8. 4 2
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java
  9. 5 5
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/graduateStudentImportExcelVO.java
  10. 1 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dept/DeptMapper.java
  11. 22 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java
  12. 5 6
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/userAchievement/UserAchievementMapper.java
  13. 2 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java
  14. 48 22
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java

+ 2 - 3
yudao-module-md/yudao-module-md-biz/src/main/java/Acs/EventSearch.java

@@ -133,7 +133,6 @@ public final class EventSearch {
                 //打卡人脸信息
                 String photoUrl = null;
                 if (struAcsEventCfg.dwPicDataLen > 0 || struAcsEventCfg.pPicData != null) {
-                     // 用于保存文件的 URL,初始值为 null
                     try {
                         /**
                          * 人脸图片保存路径
@@ -178,7 +177,7 @@ public final class EventSearch {
                 attendance.setDate(date);//打卡日期
                 attendance.setUserNumber(employeeNo);//学号
                 if (photoUrl != null) {
-                    attendance.setPhoto(photoUrl); // 只在 photoUrl 不为 null 时设置
+                    attendance.setPhoto(photoUrl); // 设置照片
                 }
 
                 StudentAttendanceDO ST  = studentAttendanceService.getStudentAttendanceOne(employeeNo,parsedTime);//获取这个学生对应的这个考勤记录
@@ -205,7 +204,7 @@ public final class EventSearch {
                     System.out.println("该打卡记录已存在");
                 }
                  //检查并更新未打卡
-                if (user!=null) {
+                if (user!=null&&"1".equals(user.getUserType())) {
                     StudentAttendancePageReqVO attendanceReqVO =new StudentAttendancePageReqVO();
                     LocalDate localDate = LocalDate.now();
                     if (localDate.equals(date)) {

+ 48 - 1
yudao-module-md/yudao-module-md-biz/src/main/java/cn/iocoder/yudao/module/md/controller/admin/AcsController.java

@@ -10,7 +10,10 @@ import cn.iocoder.yudao.module.md.service.AcsService;
 
 import cn.iocoder.yudao.module.system.controller.admin.studentAttendance.vo.StudentAttendancePageReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.studentAttendance.vo.StudentAttendanceRespVO;
+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.dal.dataobject.studentAttendance.StudentAttendanceDO;
+import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
 import cn.iocoder.yudao.module.system.service.studentAttendance.StudentAttendanceService;
 import cn.iocoder.yudao.module.system.service.user.AdminUserService;
 import com.google.common.reflect.TypeToken;
@@ -255,7 +258,7 @@ public class AcsController {
     @Parameters({
             @Parameter(name = "imageFile", description = "照片", required = true),
     })
-    @PreAuthorize("@ss.hasPermission('md:acs:user-data:import')")
+//    @PreAuthorize("@ss.hasPermission('md:acs:user-data:import')")
     public CommonResult<String> importUserData(@RequestParam("photoUrl") String photoUrl) {
         try {
             String result = acsService.addSelfImage(photoUrl);
@@ -284,5 +287,49 @@ public class AcsController {
         }
     }
 
+
+    //删除人脸信息(包括user里面的photo)
+    @DeleteMapping("/deleteStudentFace")
+    @Operation(summary = "删除人脸")
+    public CommonResult<String> deleteStudentFace(@RequestParam String userNumber) throws JSONException {
+        AdminUserDO user = adminUserService.findUserByUserNumber(userNumber);
+        String result = acsService.getUser(userNumber);
+        Gson gson = new Gson();
+        JsonObject jsonObject = gson.fromJson(result, JsonObject.class);
+        JsonArray userInfoArray = jsonObject
+                .getAsJsonObject("UserInfoSearch")
+                .getAsJsonArray("UserInfo");
+        if (userInfoArray!=null){
+            acsService.deleteFace(userNumber);
+            user.setPhotoUrl(null);//同步更新user表里的
+            adminUserService.updateUser(BeanUtils.toBean(user, UserSaveReqVO.class));
+        }
+        return success("删除照片成功");
+    }
+
+
+    //TODO删除毕业生人脸信息
+    @DeleteMapping("/deleteGraduateStudentFace")
+    @Operation(summary = "删除毕业生人脸信息")
+    public CommonResult<String> deleteGraduateStudentFace() throws JSONException {
+        UserPageReqVO reqVO =new UserPageReqVO();
+        List<AdminUserDO> studentList = adminUserService.selectGraduateStudentList(reqVO);
+        for (AdminUserDO student :studentList){
+            String result = acsService.getUser(student.getUserNumber());
+            Gson gson = new Gson();
+            JsonObject jsonObject = gson.fromJson(result, JsonObject.class);
+            JsonArray userInfoArray = jsonObject
+                    .getAsJsonObject("UserInfoSearch")
+                    .getAsJsonArray("UserInfo");
+            if (userInfoArray!=null){
+                acsService.deleteFace(student.getUserNumber());
+                student.setPhotoUrl(null);//同步更新user表里的
+                adminUserService.updateUser(BeanUtils.toBean(student, UserSaveReqVO.class));
+            }
+            return success("删除照片成功");
+        }
+       return null;
+    }
+
 }
 

+ 28 - 1
yudao-module-md/yudao-module-md-biz/src/main/java/cn/iocoder/yudao/module/md/service/AcsService.java

@@ -360,8 +360,35 @@ public class AcsService {
                         }
                         return "更新照片成功";
                     }
+                }else {//考勤及里面没用户
+                    //确保在执行完增加用户后执行增加人脸
+                    CompletableFuture<Void> userFuture = CompletableFuture.runAsync(() -> {
+                        try {
+                            addUser(employeeNo, user.getNickname());
+                        } catch (JSONException e) {
+                            throw new RuntimeException(e);
+                        } catch (UnsupportedEncodingException e) {
+                            throw new RuntimeException(e);
+                        } catch (InterruptedException e) {
+                            throw new RuntimeException(e);
+                        }
+                    });
+                    userFuture.thenRun(() -> {
+                        try {
+                            String msg = addFaceByUrl(employeeNo, photoUrl);
+                            if (msg.contains("下发人脸成功") && msg.contains("但是有异常情况")) {
+                            } else {
+                                if (user!=null) {
+                                    user.setPhotoUrl(photoUrl);
+                                    userService.updateUser((BeanUtils.toBean(user, UserSaveReqVO.class)));
+                                }
+                            }
+                        } catch (JSONException e) {
+                            throw new RuntimeException(e);
+                        }
+                    });
+                    return "添加考勤用户并且增加照片成功";
                 }
-                return "未找到该考勤用户信息";
             }
     }
 

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

@@ -9,6 +9,7 @@ import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptRespVO;
 import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptSaveReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptSimpleRespVO;
 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.userAchievement.vo.UserAchievementPageReqVO;
 import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
@@ -53,6 +54,16 @@ public class DeptController {
     @PreAuthorize("@ss.hasPermission('system:dept:create')")
     public CommonResult<Long> createDept(@Valid @RequestBody DeptSaveReqVO createReqVO) {
         Long deptId = deptService.createDept(createReqVO);
+        if(createReqVO.getLeaderUserId() == null){
+            return success(deptId);
+        }
+        if (!createReqVO.getLeaderUserId().equals("") && !createReqVO.getLeaderUserId().isEmpty()) {
+            for (Long teacherId : createReqVO.getLeaderUserId()) {//设置负责人的工作间
+                AdminUserDO teacher = adminUserService.getUser(teacherId);
+                teacher.setDeptId(deptId);
+                adminUserService.updateUser(BeanUtils.toBean(teacher, UserSaveReqVO.class));
+            }
+        }
         return success(deptId);
     }
 
@@ -61,6 +72,17 @@ public class DeptController {
     @PreAuthorize("@ss.hasPermission('system:dept:update')")
     public CommonResult<Boolean> updateDept(@Valid @RequestBody DeptSaveReqVO updateReqVO) {
         deptService.updateDept(updateReqVO);
+
+        if(updateReqVO.getLeaderUserId() == null){
+            return success(true);
+        }
+        if (!updateReqVO.getLeaderUserId().equals("") && !updateReqVO.getLeaderUserId().isEmpty()) {
+            for (Long teacherId : updateReqVO.getLeaderUserId()) {//负责人的工作间
+                AdminUserDO teacher = adminUserService.getUser(teacherId);
+                teacher.setDeptId(updateReqVO.getId());
+                adminUserService.updateUser(BeanUtils.toBean(teacher, UserSaveReqVO.class));
+            }
+        }
         return success(true);
     }
 
@@ -146,6 +168,7 @@ public class DeptController {
         newDept.setStudentNum(String.valueOf(student.size()));
         newDept.setUserAchievements(userAchievements);
 
+        System.out.println(newDept);
         return success(newDept);
     }
 

+ 3 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/vo/dept/DeptListReqVO.java

@@ -16,4 +16,7 @@ public class DeptListReqVO {
     @Schema(description = "负责人id")
     private Long leaderUserId;
 
+    @Schema(description = "电话")
+    private String phone;
+
 }

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

@@ -193,21 +193,47 @@ public class StudentAttendanceController {
         return success(BeanUtils.toBean(pageResult, StudentAttendanceRespVO.class));
     }
 
-
-
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出学生考勤记录 Excel")
-    @PreAuthorize("@ss.hasPermission('system:student-attendance:export')")
+    @GetMapping("/export-normalExcel")
+    @Operation(summary = "导出学生考勤正常记录 Excel")
+    @PreAuthorize("@ss.hasPermission('system:student-attendance:exportNormal')")
     @ApiAccessLog(operateType = EXPORT)
-    public void exportStudentAttendanceExcel(@Valid StudentAttendancePageReqVO pageReqVO,
+    public void exportStudentAttendanceNormalExcel(@Valid StudentAttendancePageReqVO pageReqVO,
               HttpServletResponse response) throws IOException {
         pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
         List<StudentAttendanceDO> list = studentAttendanceService.getStudentAttendancePage(pageReqVO).getList();
         // 导出 Excel
-        ExcelUtils.write(response, "学生考勤记录.xls", "数据", StudentAttendanceRespVO.class,
+        ExcelUtils.write(response, "学生正常考勤记录.xls", "数据", StudentAttendanceRespVO.class,
                         BeanUtils.toBean(list, StudentAttendanceRespVO.class));
     }
 
+    @GetMapping("/export-errorExcel")
+    @Operation(summary = "导出学生考勤异常记录 Excel")
+    @PreAuthorize("@ss.hasPermission('system:student-attendance:exportError')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportStudentAttendanceErrorExcel(@Valid StudentAttendancePageReqVO pageReqVO,
+                                             HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<StudentAttendanceDO> list = studentAttendanceService.getStudentAttendanceErrorPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "学生异常考勤记录.xls", "数据", StudentAttendanceRespVO.class,
+                BeanUtils.toBean(list, StudentAttendanceRespVO.class));
+    }
+
+    @GetMapping("/export-excusedExcel")
+    @Operation(summary = "导出学生请假记录 Excel")
+    @PreAuthorize("@ss.hasPermission('system:student-attendance:excusedError')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportStudentAttendanceExcusedExcel(@Valid StudentAttendancePageReqVO pageReqVO,
+                                                  HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<StudentAttendanceDO> list = studentAttendanceService.getStudentAttendanceExcusedPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "学生请假记录.xls", "数据", StudentAttendanceRespVO.class,
+                BeanUtils.toBean(list, StudentAttendanceRespVO.class));
+    }
+
+
+
     //都是20条
     @GetMapping("/dayAttendance")
     @Operation(summary = "获得所有人当日出勤列表")

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

@@ -18,11 +18,11 @@ import com.alibaba.excel.annotation.*;
 public class StudentAttendanceRespVO {
 
     @Schema(description = "自增id", requiredMode = Schema.RequiredMode.REQUIRED, example = "30731")
-//    @ExcelProperty("自增id")
+    @ExcelIgnore
     private Integer id;
 
     @Schema(description = "学生id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8981")
-    @ExcelProperty("学生id")
+    @ExcelIgnore
     private Integer studentId;
 
     @Schema(description = "学生名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
@@ -34,6 +34,7 @@ public class StudentAttendanceRespVO {
     private String userNumber;
 
     @Schema(description = "工作间id", requiredMode = Schema.RequiredMode.REQUIRED, example = "22266")
+    @ExcelIgnore
     private String deptId;
 
     @ExcelProperty("工作间名称")
@@ -53,7 +54,7 @@ public class StudentAttendanceRespVO {
     private String clockInStatus;
 
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("创建时间")
+    @ExcelIgnore
     private LocalDateTime createTime;
 
     @Schema(description = "备注原因", example = "你猜")
@@ -61,7 +62,7 @@ public class StudentAttendanceRespVO {
     private String remark;
 
     @Schema(description = "打卡照片", example = "url")
-    @ExcelProperty("打卡照片")
+    @ExcelIgnore
     private String photo;
 
 }

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

@@ -353,17 +353,19 @@ public class UserController {
         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").userNumber("1321564654")
-                        .nickname("毕业生").status(CommonStatusEnum.ENABLE.getStatus()).sex(SexEnum.MALE.getSex())
+                graduateStudentImportExcelVO.builder().email("2456125438@qq.com").mobile("15601691300").userNumber("1321564654").workPlace("桂林理工大学")
+                        .nickname("毕业生")
                         .build()
         );
         ExcelUtils.write(response, "毕业生.xls", "用户列表", graduateStudentImportExcelVO.class, list);
     }
 
+
     @GetMapping("/get-import-teacherTemplate")
     @Operation(summary = "获得导师模板")
     public void importTeacherTemplate(HttpServletResponse response) throws IOException {

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

@@ -22,10 +22,10 @@ import lombok.experimental.Accessors;
 @Accessors(chain = false) // 设置 chain = false,避免用户导入有问题
 public class graduateStudentImportExcelVO {
 
-    @ExcelProperty("登录账号")
+    @ExcelIgnore
     private String username;
 
-    @ExcelProperty("用户密码")
+    @ExcelIgnore
     private String password;
 
     @ExcelProperty("用户名称")
@@ -59,9 +59,9 @@ public class graduateStudentImportExcelVO {
     @ExcelProperty("导师名称")
     private String supervisor;
 
-    @ExcelProperty(value = "账号状态", converter = DictConvert.class)
-    @DictFormat(DictTypeConstants.COMMON_STATUS)
-    private Integer status;
+//    @ExcelProperty(value = "账号状态", converter = DictConvert.class)
+//    @DictFormat(DictTypeConstants.COMMON_STATUS)
+//    private Integer status;
 
     //导入毕业生直接添加身份
 

+ 1 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dept/DeptMapper.java

@@ -16,6 +16,7 @@ public interface DeptMapper extends BaseMapperX<DeptDO> {
     default List<DeptDO> selectList(DeptListReqVO reqVO) {
         return selectList(new LambdaQueryWrapperX<DeptDO>()
                 .eqIfPresent(DeptDO::getLeaderUserId,reqVO.getLeaderUserId())
+                .likeIfPresent(DeptDO::getPhone, reqVO.getPhone())//电话
                 .likeIfPresent(DeptDO::getName, reqVO.getName())
                 .eqIfPresent(DeptDO::getStatus, reqVO.getStatus()));
     }

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

@@ -164,6 +164,28 @@ public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
         return selectPage(reqVO,queryWrapper);
     }
 
+    default List<AdminUserDO> selectGraduateStudentList(UserPageReqVO reqVO, Collection<Long> deptIds, Set<Long> roleIds,Long loginId) {
+        LambdaQueryWrapperX<AdminUserDO> queryWrapper = new LambdaQueryWrapperX<AdminUserDO>()
+                // 找毕业生: 1. 本校, 2. 毕业生, 3. 老师
+                .eqIfPresent(AdminUserDO::getUserType, "2")
+                .likeIfPresent(AdminUserDO::getMobile, reqVO.getMobile())
+                .eqIfPresent(AdminUserDO::getStatus, reqVO.getStatus())
+                .betweenIfPresent(AdminUserDO::getCreateTime, reqVO.getCreateTime())
+                .inIfPresent(AdminUserDO::getDeptId, deptIds)
+                .likeIfPresent(AdminUserDO::getGrade, reqVO.getGrade())
+                .likeIfPresent(AdminUserDO::getNickname, reqVO.getNickname())//昵称查询
+                .eqIfPresent(AdminUserDO::getUserNumber,reqVO.getUserNumber())//学号查询
+                .orderByDesc(AdminUserDO::getId);
+        if (roleIds.contains(113L)){//如果是教师
+            queryWrapper.eqIfPresent(AdminUserDO::getSupervisorId,loginId);
+        }else if (roleIds.contains(114L)) {//学院
+
+        }else if (roleIds.contains(1L)){//管理员
+
+        }
+        return selectList(queryWrapper);
+    }
+
 
     //上面是分页
     // lsq  查所有导师列表

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

@@ -22,7 +22,7 @@ public interface UserAchievementMapper extends BaseMapperX<UserAchievementDO> {
     //都是按时间分页
     //所有用户
     default PageResult<UserAchievementDO> selectPage(UserAchievementPageReqVO reqVO) {
-        Long deptId =SecurityFrameworkUtils.getLoginUserDeptId();
+//        Long deptId =SecurityFrameworkUtils.getLoginUserDeptId();
         MPJLambdaWrapperX<UserAchievementDO> queryWrapper =new MPJLambdaWrapperX<>();
 
         queryWrapper.betweenIfPresent(UserAchievementDO::getCreateTime,reqVO.getCreateTime())
@@ -35,15 +35,15 @@ public interface UserAchievementMapper extends BaseMapperX<UserAchievementDO> {
                 .eqIfExists(UserAchievementDO::getAchievementType, reqVO.getAchievementType())
                 .likeIfExists(UserAchievementDO::getUserName, reqVO.getUserName())
                 .eqIfExists(UserAchievementDO::getDetail, reqVO.getDetail())
-                //找到这个登录人工作室下的所有人员成果
-                .eqIfExists(UserAchievementDO::getDeptId,deptId)
+
+                .eqIfExists(UserAchievementDO::getDeptId,reqVO.getDeptId())
                 //用户类型查
                 .orderByDesc(UserAchievementDO::getCreateTime);
 
         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())
@@ -56,8 +56,7 @@ public interface UserAchievementMapper extends BaseMapperX<UserAchievementDO> {
                 .eqIfExists(UserAchievementDO::getAchievementType, reqVO.getAchievementType())
                 .likeIfExists(UserAchievementDO::getUserName, reqVO.getUserName())
                 .eqIfExists(UserAchievementDO::getDetail, reqVO.getDetail())
-                //找到这个登录人工作室下的所有人员成果
-                .eqIfExists(UserAchievementDO::getDeptId,deptId)
+                .eqIfExists(UserAchievementDO::getDeptId,reqVO.getDeptId())
                 //用户类型查
                 .orderByDesc(UserAchievementDO::getCreateTime);
 

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

@@ -124,9 +124,10 @@ public interface AdminUserService {
 
     //查工作间下的所有人
     List<AdminUserDO> getDeptUser(UserPageReqVO reqVO);
+
     //查毕业生(学院和导师)
     PageResult<AdminUserDO> getGraduateStudentPage(UserPageReqVO reqVO);
-
+    List<AdminUserDO>  selectGraduateStudentList(UserPageReqVO reqVO);
     //查所有导师
     List<AdminUserDO> getSupervisor();
 

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

@@ -387,6 +387,25 @@ public class AdminUserServiceImpl implements AdminUserService {
         }
         return pageResult;
     }
+    @Override
+    public List<AdminUserDO>  selectGraduateStudentList(UserPageReqVO reqVO){
+        Long loginId = SecurityFrameworkUtils.getLoginUserId();
+        Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(loginId);
+        List<AdminUserDO> ResultList = userMapper.selectGraduateStudentList(reqVO, getDeptCondition(reqVO.getDeptId()),roleIds,loginId);
+        // 循环处理每个毕业生
+        for (AdminUserDO student :ResultList) {
+            // 根据 supervisorId 查询导师信息
+            if (student.getSupervisorId() != null) {
+                AdminUserDO supervisorUser = getUser(student.getSupervisorId());
+                String supervisor = supervisorUser.getNickname();
+                String mobile = supervisorUser.getMobile();
+                // 赋值给 对应 字段
+                student.setSupervisor(supervisor);
+                student.setSupervisorMobile(mobile);
+            }
+        }
+        return ResultList;
+    }
 
     //查询所有导师
     @Override
@@ -656,7 +675,7 @@ public class AdminUserServiceImpl implements AdminUserService {
             String transformUserType =TransformUserType(importUser.getUserType());// 转换学生类型
             if (existUser == null) {
 
-                AdminUserDO newUser = BeanUtils.toBean(importUser, AdminUserDO.class)
+                UserSaveReqVO newUser = BeanUtils.toBean(importUser, UserSaveReqVO.class)
                         .setPassword(encodePassword(importUser.getPassword()))
                         .setPostIds(new HashSet<>()); // 设置默认密码及空岗位编号数组
 
@@ -664,27 +683,22 @@ public class AdminUserServiceImpl implements AdminUserService {
                     newUser.setSupervisorId(userMapper.getUserByNickName(importUser.getSupervisor()).getId());
                 }// 导师名称转id
                 newUser.setUserType(transformUserType); // 插入学生类型
-                newUser.setTenantId(1L);//设置租户编号
+//                newUser.setTenantId(1L);//设置租户编号
                 newUser.setDeptId(deptId);//设置工作间id
 
-                Long insertUserId = userMapper.insertAndGetId(newUser); // 执行插入用户数据
+                Long userId = createUser(newUser); // 执行插入用户数据
 
                 Set<Long> roleIds = new HashSet<>();
                 //赋予用户角色
                 if (transformUserType.equals("1") ||transformUserType.equals("2")){//在校生和毕业生
                     roleIds.add(112L);//学生权限
-                    permissionService.assignUserRole(insertUserId,roleIds);
+                    permissionService.assignUserRole(userId,roleIds);
                 }else if (transformUserType.equals("3")){
-                    //设置为负责人
-                    DeptDO dept = deptService.getDept(deptId);
-                    DeptSaveReqVO newDept =BeanUtils.toBean(dept,DeptSaveReqVO.class);
-                    newDept.getLeaderUserId().add(insertUserId);
-                    deptService.updateDept(newDept);
                     roleIds.add(113L);//导师权限
-                    permissionService.assignUserRole(insertUserId,roleIds);
+                    permissionService.assignUserRole(userId,roleIds);
                 }else if (transformUserType.equals("4")){
                     roleIds.add(114L);//学院权限
-                    permissionService.assignUserRole(insertUserId,roleIds);
+                    permissionService.assignUserRole(userId,roleIds);
                 }
                 respVO.getCreateUsernames().add(importUser.getUsername());
                 return;
@@ -695,20 +709,20 @@ public class AdminUserServiceImpl implements AdminUserService {
                 respVO.getFailureUsernames().put(importUser.getUsername(), USER_USERNAME_EXISTS.getMsg());
                 return;
             }
-            AdminUserDO updateUser = BeanUtils.toBean(importUser, AdminUserDO.class);
+            UserSaveReqVO updateUser = BeanUtils.toBean(importUser, UserSaveReqVO.class);
             updateUser.setId(existUser.getId());
             updateUser.setDeptId(deptId);//更新工作间
             updateUser.setUserType(transformUserType);//更新学生类型
             if (importUser.getSupervisor()!=null) {
                 updateUser.setSupervisorId(userMapper.getUserByNickName(importUser.getSupervisor()).getId());
             }// 导师名称转id
-            userMapper.updateById(updateUser);
+            updateUser(updateUser);
             respVO.getUpdateUsernames().add(importUser.getUsername());
         });
         return respVO;
     }
-//导师
 
+//导师
     @Override
     @Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入
     public UserImportRespVO importTeacherList(List<teacherImportExcelVO> importUsers, boolean isUpdateSupport) {
@@ -774,6 +788,8 @@ public class AdminUserServiceImpl implements AdminUserService {
     @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);
@@ -790,21 +806,29 @@ public class AdminUserServiceImpl implements AdminUserService {
                 respVO.getFailureUsernames().put(importUser.getUsername(), ex.getMessage());
                 return;
             }
+
+            Long loginId = SecurityFrameworkUtils.getLoginUserId();
+            Set<Long> UserRoleIds = permissionService.getUserRoleIdListByUserId(loginId);//获取登录人的权限
+
             importUser.setUserType("2");//确定是毕业生
             // 2.2.1 判断如果不存在,在进行插入
             AdminUserDO existUser = userMapper.selectByUsername(importUser.getUsername());
             if (existUser == null) {
                 UserSaveReqVO newUser = BeanUtils.toBean(importUser, UserSaveReqVO.class);
                 if (importUser.getPassword()==null){
-                    newUser.setPassword(encodePassword("123456"));
-                }else {
-                    newUser.setPassword(encodePassword(importUser.getPassword()));
+                    newUser.setPassword(encodePassword("123456"));//设置毕业生密码
                 }
-                if (importUser.getSupervisor()!=null) {
+                if (importUser.getUsername()==null){
+                    newUser.setUsername(String.valueOf((int) (Math.random() * 900000000) + 100000000));//设置毕业生账号
+                }
+
+                if (UserRoleIds.contains(113L)){//是导师
+                    newUser.setSupervisorId(loginId);
+                } else if (UserRoleIds.contains(114L) &&importUser.getSupervisor()!=null){//是学院
                     newUser.setSupervisorId(userMapper.getUserByNickName(importUser.getSupervisor()).getId());
-                }// 导师名称转id
+                }
 
-               Long userId = createUser(newUser); // 执行插入用户数据
+                Long userId = createUser(newUser); // 执行插入用户数据
 
                 Set<Long> roleIds = new HashSet<>();
                 //赋予学生角色
@@ -822,9 +846,11 @@ public class AdminUserServiceImpl implements AdminUserService {
             }
             UserSaveReqVO  updateUser = BeanUtils.toBean(importUser, UserSaveReqVO.class);
             updateUser.setId(existUser.getId());
-            if (importUser.getSupervisor()!=null) {
+            if (UserRoleIds.contains(113L)){//是导师
+                updateUser.setSupervisorId(loginId);
+            } else if (UserRoleIds.contains(114L) &&importUser.getSupervisor()!=null){//是学院
                 updateUser.setSupervisorId(userMapper.getUserByNickName(importUser.getSupervisor()).getId());
-            }// 导师名称转id
+            }
             updateUser(updateUser);
             respVO.getUpdateUsernames().add(importUser.getUsername());
         });