Crazy преди 3 месеца
родител
ревизия
544f7c5eef
променени са 9 файла, в които са добавени 116 реда и са изтрити 95 реда
  1. 0 39
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentSelectSupervisorRecord/StudentSelectSupervisorRecordController.java
  2. 12 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentSelectionProject/studentSelectionProjectController.java
  3. 23 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/supervisorSelectionSetting/supervisorSelectionSettingController.java
  4. 13 3
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java
  5. 13 19
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserRespVO.java
  6. 16 29
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java
  7. 6 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java
  8. 11 5
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java
  9. 22 0
      yudao-module-system/yudao-module-system-biz/src/main/resources/Mapper/user/AdminUserMapper.xml

+ 0 - 39
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentSelectSupervisorRecord/StudentSelectSupervisorRecordController.java

@@ -61,45 +61,6 @@ public class StudentSelectSupervisorRecordController {
     @Resource
     private studentSelectionProjectService studentSelectionProjectService;
 
-//    @Scheduled(cron = "0 00 00 * * ?") // 每天0:00检测
-//    @Scheduled(cron = "0 0 * * * ?") // 每1小时执行
-//    @Idempotent(timeout = 10)
-//    public void checkIsSelection() {
-//        LocalDateTime nowTime =LocalDateTime.now();
-//        studentSelectionProjectSaveReqVO project
-//                = BeanUtils.toBean(
-//                        studentSelectionProjectService.getStudentSelectionProjectByYear(nowTime.getYear())
-//                ,studentSelectionProjectSaveReqVO.class);
-//        LocalDateTime endTime = project.getSupervisorConfirmDeadline();
-//        if (nowTime.isAfter(endTime)){
-//            checkSelection();
-//        }
-//    }
-//    //在项目结束的时候生成编辑记录,学院直接设置
-//    @GetMapping("/ceshi")
-//    @Operation(summary = "测试生成编辑记录")
-//    public void checkSelection() {
-//        //获取今年的选择记录
-//        LocalDate date =LocalDate.now();
-//        studentSelectionProjectSaveReqVO project = BeanUtils.toBean(studentSelectionProjectService.getStudentSelectionProjectByYear(date.getYear()),studentSelectionProjectSaveReqVO.class);
-//
-//        if (project==null){
-//            return;
-//        }
-//        //没有选择成功导师的学生
-//        List<AdminUserDO> studentList =adminUserService.getStudentAndSupervisorNull(project.getStudentGrade());
-//        //更新所有待处理的记录=>撤回
-//        studentSelectSupervisorRecordService.updatePendingSelectType(project.getId());
-//        //创建其他的记录
-//        StudentSelectSupervisorRecordSaveReqVO createReqVO =new StudentSelectSupervisorRecordSaveReqVO();
-//        for (AdminUserDO student :studentList){
-//            createReqVO.setProjectId(project.getId());
-//            createReqVO.setStudentId(student.getId());
-//            createReqVO.setSelectType(4);//编辑状态
-//            studentSelectSupervisorRecordService.createStudentSelectSupervisorRecord(createReqVO);
-//        }
-//    }
-
 
     @PostMapping("/create")
     @Operation(summary = "创建师生互选记录")

+ 12 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentSelectionProject/studentSelectionProjectController.java

@@ -336,4 +336,16 @@ public class studentSelectionProjectController {
         return success(supervisors);
     }
 
+    @GetMapping("/getStudentSelectExternalSupervisorsList")
+    @Operation(summary = "获取当前项目所有选择校外导师的")
+    public CommonResult<List<AdminUserDO>> getStudentSelectExternalSupervisorsList(@RequestParam("projectId") Long projectId) {
+        // 获取项目数据并转换成相应的 VO
+        studentSelectionProjectSaveReqVO project = BeanUtils.toBean(studentSelectionProjectService.getStudentSelectionProject(projectId),studentSelectionProjectSaveReqVO.class);
+        if (project==null) {
+            return error(1,"还没有创建互选项目");
+        }
+        List<AdminUserDO> students = adminUserService.getStudentSelectExternalSupervisorsList(projectId);
+        return success(students);
+    }
+
 }

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

@@ -1,5 +1,6 @@
 package cn.iocoder.yudao.module.system.controller.admin.supervisorSelectionSetting;
 
+import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.module.system.controller.admin.studentSelectionProject.vo.studentSelectionProjectSaveReqVO;
 
 import cn.iocoder.yudao.module.system.service.permission.PermissionService;
@@ -17,6 +18,7 @@ import io.swagger.v3.oas.annotations.Operation;
 import javax.validation.*;
 import javax.servlet.http.*;
 
+import java.time.LocalDate;
 import java.util.*;
 import java.io.IOException;
 
@@ -134,4 +136,25 @@ public class supervisorSelectionSettingController {
         return success(supervisorSelectionSettingService.getSettingBySupervisorIdAndProjectId(Long.valueOf(supervisorId),projectId));
     }
 
+    @GetMapping("/getLoginSupervisorInfo")
+    @Operation(summary = "获取登录导师设置信息")
+    public CommonResult<supervisorSelectionSettingDO> getLoginSupervisorInfo() {
+        Long loginId = SecurityFrameworkUtils.getLoginUserId();
+        LocalDate date =LocalDate.now();
+        Integer lastYear =date.getYear()-1 ;
+        studentSelectionProjectSaveReqVO project =new studentSelectionProjectSaveReqVO();
+        studentSelectionProjectSaveReqVO project1 = BeanUtils.toBean(studentSelectionProjectService.getStudentSelectionProjectByYear(lastYear),studentSelectionProjectSaveReqVO.class);
+        studentSelectionProjectSaveReqVO project2 = BeanUtils.toBean(studentSelectionProjectService.getStudentSelectionProjectByYear(date.getYear()),studentSelectionProjectSaveReqVO.class);
+        project =project1==null?project2:project1;
+        if (project==null) {
+            return error(1,"还没有创建互选项目");
+        }
+        Integer  occupiedAcademicSlots =adminUserService.countStudentListBySupervisorId(project.getStudentGrade(),loginId,1);//占用学硕
+        Integer  occupiedProfessionalSlots =adminUserService.countStudentListBySupervisorId(project.getStudentGrade(),loginId,2);//占用专硕
+        supervisorSelectionSettingDO settingDO = supervisorSelectionSettingService.getSettingBySupervisorIdAndProjectId(loginId,project.getId());
+        settingDO.setOccupiedAcademicSlots(occupiedAcademicSlots);
+        settingDO.setOccupiedAcademicSlots(occupiedProfessionalSlots);
+        return success(supervisorSelectionSettingService.getSettingBySupervisorIdAndProjectId(loginId,project.getId()));
+    }
+
 }

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

@@ -68,6 +68,15 @@ public class UserController {
     @Resource
     private supervisorSelectionSettingService supervisorSelectionSettingService;
 
+
+
+    @PutMapping("/updateInnerSupervisor")
+    @Operation(summary = "修改校内导师")
+    public CommonResult<Boolean> updateInnerSupervisor(@RequestParam("updateVO") List<Map<String, Long>> updateVO ) {
+        userService.updateInnerSupervisor(updateVO);
+        return success(true);
+    }
+
     @PostMapping("/create")
     @Operation(summary = "新增用户")
     @PreAuthorize("@ss.hasPermission('system:user:create')")
@@ -372,12 +381,13 @@ public class UserController {
             if ((user.getGrade() != null && !user.getGrade().isEmpty()) && user.getGrade().equals(project.getStudentGrade())) {
                 user.setSelectStatus(userService.getUserSelectStatus(id, project.getId()));
             }
-            if (user.getUserType().equals("3")||user.getUserType().equals("5")){
+            if ((user.getGrade() != null && !user.getGrade().isEmpty())&&user.getUserType().equals("3")||user.getUserType().equals("5")){
                 //导师学生成果要求
                 supervisorSelectionSettingDO settingDO = supervisorSelectionSettingService.getSettingBySupervisorIdAndProjectId(id,project.getId());
-                user.setStudentAchievementRequirement(settingDO.getStudentAchievementRequirement());
+                if (settingDO!=null) {
+                    user.setStudentAchievementRequirement(settingDO.getStudentAchievementRequirement());
+                }
             }
-
         }
 
         // 拼接数据

+ 13 - 19
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserRespVO.java

@@ -36,51 +36,51 @@ public class UserRespVO{
     private Integer sex;
 
     @Schema(description = "年级")
-    @ExcelProperty("年级")
     private String grade;
 
-    @Schema(description = "用户学号")
-    @ExcelProperty("学号")
+    @Schema(description = "用户学号/工号")
     private String userNumber;
 
     @Schema(description = "用户邮箱", example = "yudao@iocoder.cn")
-    @ExcelProperty("用户邮箱")
     private String email;
 
     @Schema(description = "手机号码", example = "15601691300")
-    @ExcelProperty("手机号码")
     private String mobile;
 
     @Schema(description = "用户类型")
-    @ExcelProperty("用户类型")
     private String userType;
 
     @Schema(description = "部门名称", example = "IT 部")
-    @ExcelProperty("工作间名称")
     private String deptName;
 
     @Schema(description = "导师名称")
-    @ExcelProperty("导师名称")
     private String supervisor;
 
+    @Schema(description = "校外导师名称")
+    private String externalSupervisor;
+
     @Schema(description = "导师id")
-    @ExcelProperty("导师id")
     private String supervisorId;
 
     @Schema(description = "导师电话")
-    @ExcelProperty("导师电话")
     private String supervisorMobile;
 
+    @Schema(description = "校外导师id")
+    private Long externalSupervisorId;
+
+    @Schema(description = "校外导师电话")
+    private String externalSupervisorMobile;
+
+    @Schema(description = "校外导师工号")
+    private String externalSupervisorUserNumber;
+
     @Schema(description = "工作地点")
-    @ExcelProperty("工作地点")
     private String workPlace;
 
     @Schema(description = "照片", example = "url")
-//    @ExcelProperty("照片")
     private String photoUrl;
 
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "时间戳格式")
-    @ExcelProperty("创建时间")
     private LocalDateTime createTime;
 
     @Schema(description = "备注", example = "我是一个用户")
@@ -96,16 +96,13 @@ public class UserRespVO{
     private String avatar;
 
     @Schema(description = "状态,参见 CommonStatusEnum 枚举类", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    @ExcelProperty(value = "帐号状态", converter = DictConvert.class)
     @DictFormat(DictTypeConstants.COMMON_STATUS)
     private Integer status;
 
     @Schema(description = "最后登录 IP", requiredMode = Schema.RequiredMode.REQUIRED, example = "192.168.1.1")
-//    @ExcelProperty("最后登录IP")
     private String loginIp;
 
     @Schema(description = "最后登录时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "时间戳格式")
-//    @ExcelProperty("最后登录时间")
     private LocalDateTime loginDate;
 
     @Schema(description ="家长手机号码")
@@ -130,9 +127,6 @@ public class UserRespVO{
     @Schema(description = "招生简介PDF")
     private String introduction;
 
-    @Schema(description = "校外导师id")
-    private Long externalSupervisorId;
-
     @Schema(description = "是否填写互选信息")
     private Integer isSelectionInformation;
 

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

@@ -7,6 +7,7 @@ import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
 import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserPageReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.StudentProjectRespVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.studentSelectionProject.studentSelectionProjectDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.user.PopDo;
 import org.apache.ibatis.annotations.*;
@@ -18,6 +19,21 @@ import java.util.stream.Collectors;
 public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
 
 
+    List<AdminUserDO> getStudentSelectExternalSupervisorsList(@Param("projectId")Long projectId) ;
+
+    @Update("<script>" +
+            "UPDATE system_users " +
+            "SET supervisor_id = CASE id " +
+            "<foreach collection='updateVO' item='entry' separator=' '>" +
+            "WHEN #{entry.studentId} THEN #{entry.supervisorId} " +
+            "</foreach>" +
+            "WHERE id IN " +
+            "<foreach collection='updateVO' item='entry' open='(' separator=',' close=')'>" +
+            "#{entry.studentId}" +
+            "</foreach>" +
+            "</script>")
+    void updateInnerSupervisors(@Param("updateVO") List<Map<String, Long>> updateVO);
+
     default AdminUserDO selectByUsername(String username) {
         return selectOne(AdminUserDO::getUsername, username);
     }
@@ -188,35 +204,6 @@ public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
             @Param("deptId") Long deptId,
             @Param("loginId") Long loginId
     );
-//    default List<AdminUserDO> selectList1(UserPageReqVO reqVO, Collection<Long> deptIds,Set<Long>roleIds,Long deptId) {
-//
-//        LambdaQueryWrapperX<AdminUserDO> queryWrapperX =new LambdaQueryWrapperX<AdminUserDO>();
-//        queryWrapperX.likeIfPresent(AdminUserDO::getUsername, reqVO.getUsername())
-//                .likeIfPresent(AdminUserDO::getEmail,reqVO.getEmail())
-//                .likeIfPresent(AdminUserDO::getMobile, reqVO.getMobile())
-//                .likeIfPresent(AdminUserDO::getUserNumber,reqVO.getUserNumber())//学号查询
-//                .likeIfPresent(AdminUserDO::getNickname, reqVO.getNickname())//昵称查询
-//                .eqIfPresent(AdminUserDO::getUserType,reqVO.getUserType())//类型查询
-//                .likeIfPresent(AdminUserDO::getGrade, reqVO.getGrade())//班级查询
-//                .likeIfPresent(AdminUserDO::getMajor, reqVO.getMajor())//专业
-//                .likeIfPresent(AdminUserDO::getMasterType, reqVO.getMasterType())//专硕
-//                .eqIfPresent(AdminUserDO::getStatus, reqVO.getStatus())
-//                .eqIfPresent(AdminUserDO::getSupervisorId,reqVO.getSupervisorId())//导师查询
-//                .betweenIfPresent(AdminUserDO::getCreateTime, reqVO.getCreateTime())
-//                .inIfPresent(AdminUserDO::getDeptId, deptIds)
-//                .orderByDesc(AdminUserDO::getId);
-//
-//        if (roleIds.contains(113L)){//如果是教师,只找导师是登录的
-//            queryWrapperX.eqIfPresent(AdminUserDO::getDeptId,deptId)
-//                    .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;
-//    }
 
     //   根据登录人员查所有毕业学生
     default PageResult<AdminUserDO> selectGraduateStudentPage(UserPageReqVO reqVO, Collection<Long> deptIds, Set<Long> roleIds,Long loginId) {

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

@@ -20,6 +20,12 @@ import java.util.*;
  */
 public interface AdminUserService {
 
+    List<AdminUserDO> getStudentSelectExternalSupervisorsList(Long projectId);
+    /**
+     * 修改校内导师
+     */
+    void updateInnerSupervisor(List<Map<String, Long>> updateVO);
+
     /**
      * 创建用户
      *

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

@@ -42,6 +42,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import javax.validation.Valid;
 import java.io.InputStream;
 import java.time.LocalDateTime;
 import java.util.*;
@@ -87,8 +88,15 @@ public class AdminUserServiceImpl implements AdminUserService {
     @Resource
     private FileApi fileApi;
 
-    @Resource
-    private studentSelectionProjectService studentSelectionProjectService;
+    @Override
+    public void updateInnerSupervisor(List<Map<String, Long>> updateVO){
+        userMapper.updateInnerSupervisors(updateVO);
+    }
+
+    @Override
+    public List<AdminUserDO> getStudentSelectExternalSupervisorsList(Long projectId){
+        return userMapper.getStudentSelectExternalSupervisorsList(projectId);
+    }
 
 
     @Override
@@ -608,7 +616,7 @@ public class AdminUserServiceImpl implements AdminUserService {
             // 校验用户名唯一
             validateUsernameUnique(id, username);
             // 校验手机号唯一
-//            validateMobileUnique(id, mobile);
+            validateMobileUnique(id, mobile);
             // 校验邮箱唯一
             validateEmailUnique(id, email);
             // 校验部门处于开启状态
@@ -1238,8 +1246,6 @@ public class AdminUserServiceImpl implements AdminUserService {
         return new PageResult<>(result,size);
     }
 
-
-
     //获取学生项目的选择状态
     @Override
     public Integer getUserSelectStatus(Long id ,Long projectId){

+ 22 - 0
yudao-module-system/yudao-module-system-biz/src/main/resources/Mapper/user/AdminUserMapper.xml

@@ -581,5 +581,27 @@
     </select>
 
 
+    <select id="getStudentSelectExternalSupervisorsList" resultType="cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO">
+        SELECT
+            p.*, a.*, externalSupervisor.nickname AS externalSupervisor
+        FROM
+            supervisor_student_selection_project p
+                LEFT JOIN
+            system_users a ON a.grade = p.student_grade
+                LEFT JOIN
+            system_users externalSupervisor ON externalSupervisor.id = a.external_supervisor_id
+                AND externalSupervisor.deleted = 0
+        WHERE
+            a.deleted = 0
+          AND a.external_supervisor_id IS NOT NULL
+          AND a.external_supervisor_id != 0
+        AND p.id = #{projectId}
+        ORDER BY
+            a.id
+    </select>
+
+
+
+
 
 </mapper>