Crazy 3 ماه پیش
والد
کامیت
5a1f739589
17فایلهای تغییر یافته به همراه345 افزوده شده و 160 حذف شده
  1. 190 126
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentSelectSupervisorRecord/studentSelectSupervisorRecordController.java
  2. 50 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentSelectSupervisorRecord/vo/printBookVO.java
  3. 6 9
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentSelectSupervisorRecord/vo/selectionBookRespVO.java
  4. 4 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentSelectSupervisorRecord/vo/studentSelectSupervisorRecordPageReqVO.java
  5. 11 2
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentSelectSupervisorRecord/vo/studentSelectSupervisorRecordRespVO.java
  6. 6 5
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentSelectSupervisorRecord/vo/studentSelectSupervisorRecordSaveReqVO.java
  7. 7 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentSelectionProject/studentSelectionProjectController.java
  8. 8 8
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/supervisorSelectionSetting/supervisorSelectionSettingController.java
  9. 15 2
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/studentSelectSupervisorRecord/studentSelectSupervisorRecordDO.java
  10. 22 5
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/studentSelectSupervisorRecord/studentSelectSupervisorRecordMapper.java
  11. 4 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/studentSelectionProject/studentSelectionProjectMapper.java
  12. 1 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java
  13. 3 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/studentSelectSupervisorRecord/studentSelectSupervisorRecordService.java
  14. 9 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/studentSelectSupervisorRecord/studentSelectSupervisorRecordServiceImpl.java
  15. 3 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/studentSelectionProject/studentSelectionProjectService.java
  16. 4 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/studentSelectionProject/studentSelectionProjectServiceImpl.java
  17. 2 0
      yudao-server/src/main/java/cn/iocoder/yudao/server/YudaoServerApplication.java

+ 190 - 126
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentSelectSupervisorRecord/studentSelectSupervisorRecordController.java

@@ -16,6 +16,7 @@ import cn.iocoder.yudao.module.system.service.user.AdminUserService;
 import com.alibaba.druid.sql.visitor.functions.If;
 import com.baomidou.mybatisplus.generator.IFill;
 import org.apache.ibatis.annotations.Param;
+import org.springframework.scheduling.TaskScheduler;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
 import org.springframework.web.bind.annotation.*;
@@ -33,6 +34,7 @@ import java.time.DayOfWeek;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
+import java.time.temporal.ChronoUnit;
 import java.util.*;
 import java.io.IOException;
 
@@ -70,40 +72,38 @@ public class studentSelectSupervisorRecordController {
     @Resource
     private studentSelectionProjectService studentSelectionProjectService;
 
-//    @Resource
-//    private ThreadPoolTaskScheduler taskScheduler;
-//    // 调度器
-//    private void scheduleNextExecution(LocalDateTime endTime) {
-//        taskScheduler.schedule(this::checkSelection, Date.from(endTime.atZone(ZoneId.systemDefault()).toInstant()));
-//    }
-//    //在项目结束的时候
-//    @Idempotent(timeout = 10)
-//    public void checkSelection() {
-//        //获取今年的选择记录
-//        LocalDate date =LocalDate.now();
-//        studentSelectionProjectSaveReqVO project = BeanUtils.toBean(studentSelectionProjectService.getStudentSelectionProjectByYear(date.getYear()),studentSelectionProjectSaveReqVO.class);
-//        LocalDateTime endTime = project.getSupervisorConfirmDeadline();
-//
-//        scheduleNextExecution(endTime);
-//        //导师未同意或者没有选择导师的学生
-//        List<AdminUserDO> studentList =adminUserService.getStudentAndSupervisorNull(project.getStudentGrade());
-//        //更新待处理的记录
-//        for (AdminUserDO student :studentList){
-//            //待处理的记录
-//            studentSelectSupervisorRecordDO record =studentSelectSupervisorRecordService.getRecordByStudentIdAndSupervisorId(student.getId(),null,1);
-//            record.setSelectType(0);//设置成编辑状态
-//            studentSelectSupervisorRecordService.updateStudentSelectSupervisorRecord(BeanUtils.toBean(record,studentSelectSupervisorRecordSaveReqVO.class));
-//            studentList.remove(student);
-//        }
-//        //创建其他的记录
-//        studentSelectSupervisorRecordSaveReqVO createReqVO =new studentSelectSupervisorRecordSaveReqVO();
-//        for (AdminUserDO student :studentList){
-//            createReqVO.setStudentId(student.getId());
-//            createReqVO.setSelectType(0);//编辑状态
-//            studentSelectSupervisorRecordService.createStudentSelectSupervisorRecord(createReqVO);
-//        }
-//
-//    }
+    @Scheduled(cron = "0 00 00 * * ?") // 每天0:00检测,更新未打卡
+    @Idempotent(timeout = 10)
+    public void attendanceNormalFirst() {
+        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);
+
+        //没有选择成功导师的学生
+        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")
@@ -112,33 +112,46 @@ public class studentSelectSupervisorRecordController {
     public CommonResult<String> createStudentSelectSupervisorRecord(@Valid @RequestBody studentSelectSupervisorRecordSaveReqVO createReqVO) {
         Long loginId = SecurityFrameworkUtils.getLoginUserId();
         AdminUserDO loginUser =adminUserService.getUser(loginId);
+        LocalDateTime dateTime =LocalDateTime.now();
+        studentSelectionProjectSaveReqVO project = BeanUtils.toBean(studentSelectionProjectService.getStudentSelectionProjectByYear(dateTime.getYear()), studentSelectionProjectSaveReqVO.class);
+        Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(loginId);
+        if ((roleIds.contains(112L) || roleIds.contains(113L)) && project.getSupervisorConfirmDeadline().isBefore(dateTime)) {
+            return error(1, "该项目已过截至日期");
+        }else {
+            Integer occupiedAcademicSlots = adminUserService.countStudentListBySupervisorId(Math.toIntExact(createReqVO.getSupervisorId()), 1);//占用学硕
+            Integer occupiedProfessionalSlots = adminUserService.countStudentListBySupervisorId(Math.toIntExact(createReqVO.getSupervisorId()), 2);//占用专硕
+            supervisorSelectionSettingDO supervisorSelectionSetting = supervisorSelectionSettingService.getSettingBySupervisorIdAndProjectId(createReqVO.getSupervisorId(), createReqVO.getProjectId());
 
-        Integer  occupiedAcademicSlots =adminUserService.countStudentListBySupervisorId(Math.toIntExact(createReqVO.getSupervisorId()),1);//占用学硕
-        Integer  occupiedProfessionalSlots =adminUserService.countStudentListBySupervisorId(Math.toIntExact(createReqVO.getSupervisorId()),2);//占用专硕
-        supervisorSelectionSettingDO supervisorSelectionSetting = supervisorSelectionSettingService.getSettingBySupervisorIdAndProjectId(createReqVO.getSupervisorId(),createReqVO.getProjectId());
+            if (supervisorSelectionSetting == null || (supervisorSelectionSetting.getAcademicSlots() == null && supervisorSelectionSetting.getProfessionalSlots() == null)) {
+                return error(1, "该导师无名额");
+            }
+            if (loginUser.getMasterType() == 1) {
+                if (supervisorSelectionSetting.getAcademicSlots() != null && supervisorSelectionSetting.getAcademicSlots().equals(occupiedAcademicSlots)) {
+                    return error(1, "学硕名额已经满了");
+                }
+            } else if (loginUser.getMasterType() == 2) {
+                if (supervisorSelectionSetting.getProfessionalSlots() != null && supervisorSelectionSetting.getProfessionalSlots().equals(occupiedProfessionalSlots)) {
+                    return error(1, "专硕名额已经满了");
+                }
+            }
 
-        if (loginUser.getMasterType()==1&&supervisorSelectionSetting.getAcademicSlots().equals(occupiedAcademicSlots)){
-            return error(1,"学硕名额已经满了");
-        }
-        if (loginUser.getMasterType()==2&&supervisorSelectionSetting.getProfessionalSlots().equals(occupiedProfessionalSlots)){
-            return error(1,"专硕名额已经满了");
-        }
+            studentSelectSupervisorRecordDO record1 = studentSelectSupervisorRecordService.getRecordByStudentIdAndSupervisorId(loginId, null, 2);//同意
+            studentSelectSupervisorRecordDO record2 = studentSelectSupervisorRecordService.getRecordByStudentIdAndSupervisorId(loginId, null, 1);//待处理
+            studentSelectSupervisorRecordDO record3 = studentSelectSupervisorRecordService.getRecordByStudentIdAndSupervisorId(loginId, null, 0);//撤回
 
-        studentSelectSupervisorRecordDO record1 =studentSelectSupervisorRecordService.getRecordByStudentIdAndSupervisorId(loginId,null,2);//同意
-        studentSelectSupervisorRecordDO record2 =studentSelectSupervisorRecordService.getRecordByStudentIdAndSupervisorId(loginId,null,1);//待处理
-        studentSelectSupervisorRecordDO record3 =studentSelectSupervisorRecordService.getRecordByStudentIdAndSupervisorId(loginId,null,0);//撤回
+            if (record1 != null) {
+                return error(1, "请求已通过了");
+            } else if (record2 != null) {
+                return error(1, "还有请求在待处理中");
+            }
 
-        if (record1!=null){
-            return error(1,"请求已通过了");
-        }else if (record2!=null){
-            return error(1,"还有请求在待处理中");
-        }else if (record3!=null){
-            return error(1,"还有请求在编辑中");
+            createReqVO.setStudentId(loginId);
+            createReqVO.setSelectType(1);//待处理
+            if (!createReqVO.getStudentSignature().isEmpty()) {
+                createReqVO.setStudentSignDate(dateTime.toLocalDate());//学生签名日期
+            }
+            studentSelectSupervisorRecordService.createStudentSelectSupervisorRecord(createReqVO);
         }
-
-        createReqVO.setStudentId(loginId);
-        createReqVO.setSelectType(1);//待处理
-        studentSelectSupervisorRecordService.createStudentSelectSupervisorRecord(createReqVO);
         return success("请求提交成功");
     }
 
@@ -149,12 +162,43 @@ public class studentSelectSupervisorRecordController {
     public CommonResult<String> updateStudentSelectSupervisorRecord(@Valid @RequestBody studentSelectSupervisorRecordSaveReqVO updateReqVO) {
 
         studentSelectSupervisorRecordDO record =studentSelectSupervisorRecordService.getStudentSelectSupervisorRecord(updateReqVO.getId());
-        if(record.getSelectType()==0){
+        //
+        AdminUserDO user =adminUserService.getUser(record.getStudentId());
+        Integer  occupiedAcademicSlots =adminUserService.countStudentListBySupervisorId(Math.toIntExact(updateReqVO.getSupervisorId()),1);//占用学硕
+        Integer  occupiedProfessionalSlots =adminUserService.countStudentListBySupervisorId(Math.toIntExact(updateReqVO.getSupervisorId()),2);//占用专硕
+        supervisorSelectionSettingDO supervisorSelectionSetting = supervisorSelectionSettingService.getSettingBySupervisorIdAndProjectId(updateReqVO.getSupervisorId(), record.getProjectId());
+        // 检查导师是否有名额设置
+        if (supervisorSelectionSetting == null || (supervisorSelectionSetting.getAcademicSlots() == null && supervisorSelectionSetting.getProfessionalSlots() == null)) {
+            return error(1, "该导师无名额");
+        }
+
+        if (user.getMasterType() == 1) {
+            if (supervisorSelectionSetting.getAcademicSlots() != null && supervisorSelectionSetting.getAcademicSlots().equals(occupiedAcademicSlots)) {
+                return error(1, "该老师学硕名额已经满了");
+            }
+        } else if (user.getMasterType() == 2) {
+            if (supervisorSelectionSetting.getProfessionalSlots() != null && supervisorSelectionSetting.getProfessionalSlots().equals(occupiedProfessionalSlots)) {
+                return error(1, "该老师专硕名额已经满了");
+            }
+        }
+
+        UserSaveReqVO saveReqVO =new UserSaveReqVO();
+        saveReqVO.setId(record.getStudentId());
+        saveReqVO.setSupervisorId(updateReqVO.getSupervisorId());
+
+        if(record.getSelectType()==4){//编辑状态
             updateReqVO.setSelectType(2);//同意
-            studentSelectSupervisorRecordService.updateStudentSelectSupervisorRecord(updateReqVO);
-            return success("志愿修改成功");
+        }else if (record.getSelectType()==2){//同意了的
+            //更新记录里面的签名啥的
+            updateReqVO.setStudentSignature("");//学生签名
+            updateReqVO.setSupervisorApproveTime(null);
+            updateReqVO.setSupervisorSignature("");
+        }else {
+            return error(1,"该状态不可编辑");
         }
-       return error(1,"该状态不可编辑");
+        adminUserService.updateUser(saveReqVO);
+        studentSelectSupervisorRecordService.updateStudentSelectSupervisorRecord(updateReqVO);
+        return success("志愿修改成功");
     }
 
 
@@ -180,16 +224,16 @@ public class studentSelectSupervisorRecordController {
     @Operation(summary = "获得师生互选记录分页")
     @PreAuthorize("@ss.hasPermission('system:student-select-supervisor-record:query')")
     public CommonResult<PageResult<studentSelectSupervisorRecordRespVO>> getStudentSelectSupervisorRecordPage(@Valid studentSelectSupervisorRecordPageReqVO pageReqVO) {
-        LocalDateTime dateTime = LocalDateTime.now();
-        studentSelectionProjectSaveReqVO project = BeanUtils.toBean(studentSelectionProjectService.getStudentSelectionProjectByYear(dateTime.getYear()), studentSelectionProjectSaveReqVO.class);
-        Long loginId = SecurityFrameworkUtils.getLoginUserId();
-        Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(loginId);
-        if ((roleIds.contains(112L) || roleIds.contains(113L)) && project.getSupervisorConfirmDeadline().isBefore(dateTime)) {
-            return error(1, "该项目已过截至日期");
-        }else {
+//        LocalDateTime dateTime = LocalDateTime.now();
+//        studentSelectionProjectSaveReqVO project = BeanUtils.toBean(studentSelectionProjectService.getStudentSelectionProjectByYear(dateTime.getYear()), studentSelectionProjectSaveReqVO.class);
+//        Long loginId = SecurityFrameworkUtils.getLoginUserId();
+//        Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(loginId);
+//        if ((roleIds.contains(112L) || roleIds.contains(113L)) && project.getSupervisorConfirmDeadline().isBefore(dateTime)) {
+//            return error(1, "该项目已过截至日期");
+//        }else {
             PageResult<studentSelectSupervisorRecordDO> pageResult = studentSelectSupervisorRecordService.getStudentSelectSupervisorRecordPage(pageReqVO);
             return success(BeanUtils.toBean(pageResult, studentSelectSupervisorRecordRespVO.class));
-        }
+//        }
     }
 
     @GetMapping("/export-excel")
@@ -210,19 +254,26 @@ public class studentSelectSupervisorRecordController {
     @Operation(summary = "通过")
     @PreAuthorize("@ss.hasPermission('system:student-select-supervisor-record:agree')")
     public CommonResult<Boolean> agreeStudentSelectSupervisorRecord(@Valid @RequestBody studentSelectSupervisorRecordSaveReqVO updateReqVO) {
-        //提交导师签名
-        updateReqVO.setSelectType(2);
-        LocalDateTime dateTime =LocalDateTime.now();
-        updateReqVO.setSupervisorApproveTime(dateTime);
-        updateReqVO.setAgreeDate(dateTime.toLocalDate());
-        studentSelectSupervisorRecordService.updateStudentSelectSupervisorRecord(updateReqVO);
-        //更新学生的supervisorId
-        if (updateReqVO.getId()!=null) {
-            studentSelectSupervisorRecordDO record = studentSelectSupervisorRecordService.getStudentSelectSupervisorRecord(updateReqVO.getId());
-            UserSaveReqVO saveReqVO =new UserSaveReqVO();
-            saveReqVO.setId(record.getStudentId());
-            saveReqVO.setSupervisorId(record.getSupervisorId());
-            adminUserService.updateUser(saveReqVO);
+        LocalDateTime dateTime = LocalDateTime.now();
+        studentSelectionProjectSaveReqVO project = BeanUtils.toBean(studentSelectionProjectService.getStudentSelectionProjectByYear(dateTime.getYear()), studentSelectionProjectSaveReqVO.class);
+        Long loginId = SecurityFrameworkUtils.getLoginUserId();
+        Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(loginId);
+        if ((roleIds.contains(112L) || roleIds.contains(113L)) && project.getSupervisorConfirmDeadline().isBefore(dateTime)) {
+            return error(1, "该项目已过截至日期");
+        }else {
+            //提交导师签名
+            updateReqVO.setSelectType(2);
+            updateReqVO.setSupervisorApproveTime(dateTime);
+            updateReqVO.setSupervisorSignDate(dateTime.toLocalDate());//导师日期
+            studentSelectSupervisorRecordService.updateStudentSelectSupervisorRecord(updateReqVO);
+            //更新学生的supervisorId
+            if (updateReqVO.getId() != null) {
+                studentSelectSupervisorRecordDO record = studentSelectSupervisorRecordService.getStudentSelectSupervisorRecord(updateReqVO.getId());
+                UserSaveReqVO saveReqVO = new UserSaveReqVO();
+                saveReqVO.setId(record.getStudentId());
+                saveReqVO.setSupervisorId(record.getSupervisorId());
+                adminUserService.updateUser(saveReqVO);
+            }
         }
         return success(true);
     }
@@ -232,10 +283,17 @@ public class studentSelectSupervisorRecordController {
     @Operation(summary = "退回")
     @PreAuthorize("@ss.hasPermission('system:student-select-supervisor-record:refuse')")
     public CommonResult<Boolean> refuseStudentSelectSupervisorRecord(@Valid @RequestBody studentSelectSupervisorRecordSaveReqVO updateReqVO) {
-        LocalDateTime dateTime =LocalDateTime.now();
+        LocalDateTime dateTime = LocalDateTime.now();
+        studentSelectionProjectSaveReqVO project = BeanUtils.toBean(studentSelectionProjectService.getStudentSelectionProjectByYear(dateTime.getYear()), studentSelectionProjectSaveReqVO.class);
+        Long loginId = SecurityFrameworkUtils.getLoginUserId();
+        Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(loginId);
+        if ((roleIds.contains(112L) || roleIds.contains(113L)) && project.getSupervisorConfirmDeadline().isBefore(dateTime)) {
+            return error(1, "该项目已过截至日期");
+        }else {
         updateReqVO.setSupervisorApproveTime(dateTime);
         updateReqVO.setSelectType(3);
         studentSelectSupervisorRecordService.updateStudentSelectSupervisorRecord(updateReqVO);
+    }
         return success(true);
     }
 
@@ -244,48 +302,72 @@ public class studentSelectSupervisorRecordController {
     @Operation(summary = "撤回")
     @PreAuthorize("@ss.hasPermission('system:student-select-supervisor-record:withdraw')")
     public CommonResult<Boolean> withdrawStudentSelectSupervisorRecord(@Valid @RequestBody studentSelectSupervisorRecordSaveReqVO updateReqVO) {
-        Long loginId =SecurityFrameworkUtils.getLoginUserId();
-        studentSelectSupervisorRecordDO record =studentSelectSupervisorRecordService.getRecordByStudentIdAndSupervisorId(loginId,updateReqVO.getSupervisorId(),1);//待处理的
-        updateReqVO.setId(record.getId());
-        updateReqVO.setSelectType(0);
+        LocalDateTime dateTime = LocalDateTime.now();
+        studentSelectionProjectSaveReqVO project = BeanUtils.toBean(studentSelectionProjectService.getStudentSelectionProjectByYear(dateTime.getYear()), studentSelectionProjectSaveReqVO.class);
+        Long loginId = SecurityFrameworkUtils.getLoginUserId();
+        Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(loginId);
+        if ((roleIds.contains(112L) || roleIds.contains(113L)) && project.getSupervisorConfirmDeadline().isBefore(dateTime)) {
+            return error(1, "该项目已过截至日期");
+        }else {
+            studentSelectSupervisorRecordDO record = studentSelectSupervisorRecordService.getRecordByStudentIdAndSupervisorId(loginId, updateReqVO.getSupervisorId(), 1);//待处理的
+            updateReqVO.setId(record.getId());
+            updateReqVO.setSelectType(0);
 //        updateReqVO.setSupervisorId(0L);
-        studentSelectSupervisorRecordService.updateStudentSelectSupervisorRecord(updateReqVO);
+            studentSelectSupervisorRecordService.updateStudentSelectSupervisorRecord(updateReqVO);
+        }
         return success(true);
     }
 
     @GetMapping("/getSelectionBook")
     @Operation(summary = "互选表打印数据")
     @PreAuthorize("@ss.hasPermission('system:student-select-supervisor-record:getSelection')")
-    public CommonResult<selectionBookRespVO> getSelectionBook(@Param("id") Integer recordId) {
-       studentSelectSupervisorRecordDO record = studentSelectSupervisorRecordService.getStudentSelectSupervisorRecord(recordId);
+    public CommonResult<printBookVO> getSelectionBook(@RequestParam("id") Integer recordId) {
+        studentSelectSupervisorRecordDO record = studentSelectSupervisorRecordService.getStudentSelectSupervisorRecord(recordId);
+// 判断record是否存在
+        if (record == null) {
+            return error(1, "记录不存在");
+        }
+        LocalDate date = LocalDate.now();
+        studentSelectionProjectSaveReqVO project = BeanUtils.toBean(studentSelectionProjectService.getStudentSelectionProjectByYear(date.getYear()), studentSelectionProjectSaveReqVO.class);
 
-        LocalDate date =LocalDate.now();
-        studentSelectionProjectSaveReqVO project = BeanUtils.toBean(studentSelectionProjectService.getStudentSelectionProjectByYear(date.getYear()),studentSelectionProjectSaveReqVO.class);
+        if (project == null) {
+            return error(1, "项目不存在");
+        }
+
+        AdminUserDO student = adminUserService.getUser(record.getStudentId());
+        AdminUserDO supervisor = adminUserService.getUser(record.getSupervisorId());
+
+        if (student == null) {
+            return error(1, "学生信息不存在");
+        }
+        if (supervisor == null) {
+            return error(1, "导师信息不存在");
+        }
+        supervisorSelectionSettingDO superVisorSetting = supervisorSelectionSettingService.getSettingBySupervisorIdAndProjectId(record.getSupervisorId(), project.getId());
+
+        if (superVisorSetting == null) {
+            return error(1, "导师设置不存在");
+        }
+        printBookVO result = BeanUtils.toBean(record, printBookVO.class);
+
+        result.setMajor(student.getMajor());
+        result.setStudentName(student.getNickname());
+        result.setStudentMobile(student.getMobile());
+        result.setStudentNumber(student.getUserNumber());
 
-       AdminUserDO student =adminUserService.getUser(record.getStudentId());
-       AdminUserDO supervisor =adminUserService.getUser(record.getSupervisorId());
-       supervisorSelectionSettingDO superVisorSetting = supervisorSelectionSettingService.getSettingBySupervisorIdAndProjectId(record.getSupervisorId(),project.getId());
-       selectionBookRespVO result = new selectionBookRespVO();
-       result =BeanUtils.toBean(record,selectionBookRespVO.class);
-       //学生
-       result.setMajor(student.getMajor());
-       result.setStudentName(student.getNickname());
-       result.setStudentMobile(student.getMobile());
-       result.setStudentNumber(student.getUserNumber());
-
-       //导师
         result.setSupervisor(supervisor.getNickname());
         if (supervisor.getUserType().equals("3")) {
             result.setSupervisorType("校内导师");
-        }else if (supervisor.getUserType().equals("5")) {
+        } else if (supervisor.getUserType().equals("5")) {
             result.setSupervisorType("校外导师");
         }
-       result.setStudentAchievementRequirement(superVisorSetting.getStudentAchievementRequirement());
+
+        result.setStudentAchievementRequirement(superVisorSetting.getStudentAchievementRequirement());
         return success(result);
-    }
 
+    }
 
-    //志愿填报方法都是这个
+    //信息弹窗填写
     @PutMapping("/updateSelectionBook")
     @Operation(summary = "更新互选表数据")
     @PreAuthorize("@ss.hasPermission('system:student-select-supervisor-record:updateSelection')")
@@ -345,25 +427,7 @@ public class studentSelectSupervisorRecordController {
     @Operation(summary = "获取选择记录列表")
     @PreAuthorize("@ss.hasPermission('system:student-select-supervisor-record:getRecordList')")
     public CommonResult<List<studentSelectSupervisorRecordRespVO>> getRecordSelectSupervisorRecordList(@Valid studentSelectSupervisorRecordPageReqVO listReqVO) {
-        LocalDateTime dateTime = LocalDateTime.now();
-        studentSelectionProjectSaveReqVO project = BeanUtils.toBean(studentSelectionProjectService.getStudentSelectionProjectByYear(dateTime.getYear()), studentSelectionProjectSaveReqVO.class);
-        Long loginId = SecurityFrameworkUtils.getLoginUserId();
-        Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(loginId);
-        if ((roleIds.contains(112L) || roleIds.contains(113L)) && project.getSupervisorConfirmDeadline().isBefore(dateTime)) {
-            return error(1, "该项目已过截至日期");
-        }else
-            return success(BeanUtils.toBean(studentSelectSupervisorRecordService.getStudentSelectSupervisorRecordList(listReqVO),studentSelectSupervisorRecordRespVO.class));
+        return success(BeanUtils.toBean(studentSelectSupervisorRecordService.getStudentSelectSupervisorRecordList(listReqVO),studentSelectSupervisorRecordRespVO.class));
     }
 
-//    @GetMapping("/getStudentRecordList")
-//    @Operation(summary = "学院获取今年学生列表")
-//    @PreAuthorize("@ss.hasPermission('system:student-select-supervisor-record:getStudentRecordList')")
-//    public CommonResult<List<studentSelectSupervisorRecordRespVO>> getStudentSelectSupervisorRecord(@Valid studentSelectSupervisorRecordPageReqVO listReqVO) {
-//        LocalDate date =LocalDate.now();
-//        studentSelectionProjectSaveReqVO project = BeanUtils.toBean(studentSelectionProjectService.getStudentSelectionProjectByYear(date.getYear()),studentSelectionProjectSaveReqVO.class);
-//        listReqVO.setProjectId(project.getId());
-//        listReqVO.set
-//        return success(BeanUtils.toBean(studentSelectSupervisorRecordService.getStudentSelectSupervisorRecordList(listReqVO),studentSelectSupervisorRecordRespVO.class));
-//    }
-
 }

+ 50 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentSelectSupervisorRecord/vo/printBookVO.java

@@ -0,0 +1,50 @@
+package cn.iocoder.yudao.module.system.controller.admin.studentSelectSupervisorRecord.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDate;
+
+@Schema(description = "管理后台 - 互许表 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class printBookVO {
+
+    @Schema(description = "互选记录id")
+    private Integer id;
+
+    @Schema(description = "学生姓名")
+    private String studentName;
+
+    @Schema(description = "学生学号")
+    private String studentNumber;
+
+    @Schema(description = "学生专业")
+    private String major;
+
+    @Schema(description = "学生联系电话")
+    private String studentMobile;
+
+    @Schema(description = "导师名称")
+    private String supervisor;
+
+    @Schema(description = "导师类型/校内或校外")
+    private String supervisorType;
+
+    @Schema(description = "学生成果要求")
+    private String studentAchievementRequirement;
+
+    @Schema(description = "学生电子签名")
+    private String studentSignature;
+
+    @Schema(description = "导师电子签名")
+    private String supervisorSignature;
+
+    @Schema(description = "学生签字日期")
+    private LocalDate studentSignDate;
+
+    @Schema(description = "导师签字日期")
+    private LocalDate supervisorSignDate;
+
+}

+ 6 - 9
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentSelectSupervisorRecord/vo/selectionBookRespVO.java

@@ -21,7 +21,7 @@ public class selectionBookRespVO {
     @Schema(description = "学生学号")
     private String studentNumber;
 
-    @Schema(description = "学生专业//导师研究方向")
+    @Schema(description = "学生专业")
     private String major;
 
     @Schema(description = "导师研究方向")
@@ -45,8 +45,11 @@ public class selectionBookRespVO {
     @Schema(description = "学生电子签名")
     private String studentSignature;
 
-    @Schema(description = "导师同意日期")
-    private LocalDate agreeDate;
+    @Schema(description = "学生签字日期")
+    private LocalDate studentSignDate;
+
+    @Schema(description = "导师签字日期")
+    private LocalDate supervisorSignDate;
 
     @Schema(description = "简介")
     private String introduction;
@@ -54,11 +57,5 @@ public class selectionBookRespVO {
     @Schema(description = "职称")
     private String title;
 
-    @Schema(description = "学硕名额")
-    private Integer academicSlots;
-
-    @Schema(description = "专硕名额")
-    private Integer professionalSlots;
-
 
 }

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

@@ -50,7 +50,11 @@ public class studentSelectSupervisorRecordPageReqVO extends PageParam {
     @Schema(description = "导师姓名")
     private String supervisor;
 
+    @Schema(description = "学生姓名")
+    private String studentName;
 
+    @Schema(description = "学生年级")
+    private String studentGrade;
 
 
 

+ 11 - 2
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentSelectSupervisorRecord/vo/studentSelectSupervisorRecordRespVO.java

@@ -67,8 +67,11 @@ public class studentSelectSupervisorRecordRespVO {
     @Schema(description = "学生成果要求")
     private String studentAchievementRequirement;
 
-    @Schema(description = "导师同意日期")
-    private LocalDate agreeDate;
+    @Schema(description = "学生签字日期")
+    private LocalDate studentSignDate;
+
+    @Schema(description = "导师签字日期")
+    private LocalDate supervisorSignDate;
 
     @Schema(description = "专业")
     private String major;
@@ -85,4 +88,10 @@ public class studentSelectSupervisorRecordRespVO {
     @Schema(description = "导师类型")
     private String supervisorType;
 
+    @Schema(description = "项目名称")
+    private String projectName;
+
+    @Schema(description = "学生年级")
+    private String studentGrade;
+
 }

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

@@ -19,17 +19,15 @@ public class studentSelectSupervisorRecordSaveReqVO {
     private Integer id;
 
     @Schema(description = "项目id", requiredMode = Schema.RequiredMode.REQUIRED, example = "20003")
-//    @NotNull(message = "项目id不能为空")
     private Integer projectId;
 
     @Schema(description = "学生id", requiredMode = Schema.RequiredMode.REQUIRED, example = "14632")
-//    @NotNull(message = "学生id不能为空")
     private Long studentId;
 
     @Schema(description = "校内导师id", example = "24599")
     private Long supervisorId;
 
-    @Schema(description = "选择状态(0编辑(撤回),1待处理,2同意,3退回)", example = "1")
+    @Schema(description = "选择状态(0编辑(撤回),1待处理,2同意,3退回,4志愿编辑)", example = "1")
     @DictFormat("system_student_select_record_select_type")
     private Integer selectType;
 
@@ -45,7 +43,10 @@ public class studentSelectSupervisorRecordSaveReqVO {
     @Schema(description = "校外导师id", example = "17747")
     private Integer externalSupervisorId;
 
-    @Schema(description = "同意日期")
-    private LocalDate agreeDate;
+    @Schema(description = "学生签字日期")
+    private LocalDate studentSignDate;
+
+    @Schema(description = "导师签字日期")
+    private LocalDate supervisorSignDate;
 
 }

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

@@ -63,7 +63,6 @@ public class studentSelectionProjectController {
         //   3. 新增互选记录(同时只有一条未审批的记录,通过以后不可以新增) 4. 查看互选记录  5.
         // TODO 学院 1.创建项目  2. 修改项目 3.批量打印 ,师生互选表。 4.
 
-
         //还剩
         //TODO批量打印
         if (createReqVO.getStudentStartTime().isAfter(createReqVO.getSupervisorConfirmDeadline())){
@@ -169,4 +168,11 @@ public class studentSelectionProjectController {
                         BeanUtils.toBean(list, studentSelectionProjectRespVO.class));
     }
 
+    @GetMapping("/getAllProject")
+    @Operation(summary = "获取所有项目")
+    public CommonResult<List<studentSelectionProjectRespVO>> getAllProject() {
+        List<studentSelectionProjectDO> result =studentSelectionProjectService.getAllProject();
+        return success(BeanUtils.toBean(result, studentSelectionProjectRespVO.class));
+    }
+
 }

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

@@ -107,16 +107,16 @@ public class supervisorSelectionSettingController {
     @Operation(summary = "获得导师学硕专硕名额设置分页")
     @PreAuthorize("@ss.hasPermission('system:supervisor-selection-setting:query')")
     public CommonResult<PageResult<supervisorSelectionSettingRespVO>> getSupervisorSelectionSettingPage(@Valid supervisorSelectionSettingPageReqVO pageReqVO) {
-        LocalDateTime dateTime = LocalDateTime.now();
-        studentSelectionProjectSaveReqVO project = BeanUtils.toBean(studentSelectionProjectService.getStudentSelectionProjectByYear(dateTime.getYear()), studentSelectionProjectSaveReqVO.class);
-        Long loginId = SecurityFrameworkUtils.getLoginUserId();
-        Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(loginId);
-        if ((roleIds.contains(112L) || roleIds.contains(113L)) && project.getSupervisorConfirmDeadline().isBefore(dateTime)) {
-            return error(1, "该项目已过截至日期");
-        }else {
+//        LocalDateTime dateTime = LocalDateTime.now();
+//        studentSelectionProjectSaveReqVO project = BeanUtils.toBean(studentSelectionProjectService.getStudentSelectionProjectByYear(dateTime.getYear()), studentSelectionProjectSaveReqVO.class);
+//        Long loginId = SecurityFrameworkUtils.getLoginUserId();
+//        Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(loginId);
+//        if ((roleIds.contains(112L) || roleIds.contains(113L)) && project.getSupervisorConfirmDeadline().isBefore(dateTime)) {
+//            return error(1, "该项目已过截至日期");
+//        }else {
             PageResult<supervisorSelectionSettingDO> pageResult = supervisorSelectionSettingService.getSupervisorSelectionSettingPage(pageReqVO);
             return success(BeanUtils.toBean(pageResult, supervisorSelectionSettingRespVO.class));
-        }
+//        }
     }
 
     @GetMapping("/export-excel")

+ 15 - 2
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/studentSelectSupervisorRecord/studentSelectSupervisorRecordDO.java

@@ -68,9 +68,15 @@ public class studentSelectSupervisorRecordDO extends BaseDO {
     private String supervisorSignature;
 
     /**
-     * 导师同意日期
+     * 学生签字日期
      */
-    private LocalDate agreeDate;
+    private LocalDate studentSignDate;
+
+    /**
+     * 导师签字日期
+     */
+    private LocalDate supervisorSignDate;
+
 
     //硕士类型
     @TableField(exist = false)
@@ -84,12 +90,19 @@ public class studentSelectSupervisorRecordDO extends BaseDO {
     //学生姓名
     @TableField(exist = false)
     private String studentName;
+
+    @TableField(exist = false)
+    private String studentGrade;
+
     //导师姓名
     @TableField(exist = false)
     private String supervisor;
     //导师类型
     @TableField(exist = false)
     private String supervisorType;
+    //项目名称
+    @TableField(exist = false)
+    private String projectName;
 
 
 

+ 22 - 5
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/studentSelectSupervisorRecord/studentSelectSupervisorRecordMapper.java

@@ -7,11 +7,13 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
 import cn.iocoder.yudao.module.system.dal.dataobject.studentSelectSupervisorRecord.studentSelectSupervisorRecordDO;
+import cn.iocoder.yudao.module.system.dal.dataobject.studentSelectionProject.studentSelectionProjectDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
 import org.apache.ibatis.annotations.Mapper;
 import cn.iocoder.yudao.module.system.controller.admin.studentSelectSupervisorRecord.vo.*;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
 
 /**
  * 师生互选记录 Mapper
@@ -29,10 +31,15 @@ public interface studentSelectSupervisorRecordMapper extends BaseMapperX<student
                 .betweenIfPresent(studentSelectSupervisorRecordDO::getSupervisorApproveTime, reqVO.getSupervisorApproveTime())
                 .selectAll(studentSelectSupervisorRecordDO.class)
                 .leftJoin(AdminUserDO.class,AdminUserDO::getId,studentSelectSupervisorRecordDO::getStudentId)//关联学生信息
+                .leftJoin(studentSelectionProjectDO.class,studentSelectionProjectDO::getId,studentSelectSupervisorRecordDO::getProjectId)//关联项目
                 .selectAs(AdminUserDO::getNickname,studentSelectSupervisorRecordDO::getStudentName)//学生姓名
+                .selectAs(AdminUserDO::getGrade,studentSelectSupervisorRecordDO::getStudentGrade)//学生年级
                 .selectAs(AdminUserDO::getMasterType,studentSelectSupervisorRecordDO::getMasterType)//硕士类型
                 .selectAs(AdminUserDO::getMajor,studentSelectSupervisorRecordDO::getMajor)//专业
                 .selectAs(AdminUserDO::getIntroduction,studentSelectSupervisorRecordDO::getIntroduction)//简历
+                .selectAs(studentSelectionProjectDO::getProjectName,studentSelectSupervisorRecordDO::getProjectName)//项目名称
+                .likeIfExists(AdminUserDO::getNickname,reqVO.getStudentName())//学生姓名
+                .eqIfExists(AdminUserDO::getGrade,reqVO.getStudentGrade())//学生年级
                 .eqIfExists(studentSelectSupervisorRecordDO::getProjectId, reqVO.getProjectId())
                 .eqIfExists(studentSelectSupervisorRecordDO::getStudentId, reqVO.getStudentId())
                 .eqIfExists(studentSelectSupervisorRecordDO::getSupervisorId, reqVO.getSupervisorId())//学院看招生情况会传导师id
@@ -48,9 +55,9 @@ public interface studentSelectSupervisorRecordMapper extends BaseMapperX<student
                     .orderBy(true, true, studentSelectSupervisorRecordDO::getSelectType)
                     .last("ORDER BY FIELD(select_type, 1,2,3)");
         }else if (roleIds.contains(114L)){//学院看所有的编辑、待处理、退回记录
-            queryWrapperX.inIfPresent(studentSelectSupervisorRecordDO::getSelectType,0,1,2,3)
+            queryWrapperX.inIfPresent(studentSelectSupervisorRecordDO::getSelectType,0,1,2,3,4)
                     .orderBy(true, true, studentSelectSupervisorRecordDO::getSelectType)
-                    .last("ORDER BY FIELD(select_type, 0, 1, 3, 2)");
+                    .last("ORDER BY FIELD(select_type, 4, 1, 3, 2,0)");
         }else if (roleIds.contains(112L)){//学生看自己的
             queryWrapperX.eqIfPresent(studentSelectSupervisorRecordDO::getStudentId,loginUser.getId());
         }
@@ -62,11 +69,15 @@ public interface studentSelectSupervisorRecordMapper extends BaseMapperX<student
         queryWrapperX .betweenIfPresent(studentSelectSupervisorRecordDO::getSupervisorApproveTime, reqVO.getSupervisorApproveTime())
                 .selectAll(studentSelectSupervisorRecordDO.class)
                 .leftJoin(AdminUserDO.class,AdminUserDO::getId,studentSelectSupervisorRecordDO::getStudentId)//关联学生信息
-//                .leftJoin(AdminUserDO.class,AdminUserDO::getId,studentSelectSupervisorRecordDO::getSupervisorId)
+                .leftJoin(studentSelectionProjectDO.class,studentSelectionProjectDO::getId,studentSelectSupervisorRecordDO::getProjectId)//关联项目
                 .selectAs(AdminUserDO::getNickname,studentSelectSupervisorRecordDO::getStudentName)//学生姓名
                 .selectAs(AdminUserDO::getMasterType,studentSelectSupervisorRecordDO::getMasterType)//硕士类型
                 .selectAs(AdminUserDO::getMajor,studentSelectSupervisorRecordDO::getMajor)//专业
                 .selectAs(AdminUserDO::getIntroduction,studentSelectSupervisorRecordDO::getIntroduction)//简历
+                .selectAs(studentSelectionProjectDO::getProjectName,studentSelectSupervisorRecordDO::getProjectName)//项目名称
+
+                .likeIfExists(AdminUserDO::getNickname,reqVO.getStudentName())//学生姓名
+                .eqIfExists(AdminUserDO::getGrade,reqVO.getStudentGrade())//学生年级
                 .eqIfExists(studentSelectSupervisorRecordDO::getProjectId, reqVO.getProjectId())
                 .eqIfExists(studentSelectSupervisorRecordDO::getStudentId, reqVO.getStudentId())
                 .eqIfExists(studentSelectSupervisorRecordDO::getSupervisorId, reqVO.getSupervisorId())//学院看招生情况会传导师id
@@ -81,9 +92,9 @@ public interface studentSelectSupervisorRecordMapper extends BaseMapperX<student
                             .orderBy(true, true, studentSelectSupervisorRecordDO::getSelectType)
                             .last("ORDER BY FIELD(select_type, 1,2,3)");
         }else if (roleIds.contains(114L)){//学院看所有的编辑、待处理、退回记录
-            queryWrapperX.inIfPresent(studentSelectSupervisorRecordDO::getSelectType,0,1,2,3)
+            queryWrapperX.inIfPresent(studentSelectSupervisorRecordDO::getSelectType,0,1,2,3,4)
                     .orderBy(true, true, studentSelectSupervisorRecordDO::getSelectType)
-                            .last("ORDER BY FIELD(select_type, 0, 1, 3, 2)");
+                            .last("ORDER BY FIELD(select_type, 4, 1, 3, 2)");
 
         }else if (roleIds.contains(112L)){//学生看自己的
             queryWrapperX.eqIfPresent(studentSelectSupervisorRecordDO::getStudentId,loginUser.getId());
@@ -96,4 +107,10 @@ public interface studentSelectSupervisorRecordMapper extends BaseMapperX<student
             @Param("studentId") Long studentId,
             @Param("supervisorId") Long supervisorId,
             @Param("selectType") Integer selectType);
+
+
+    //更新待处理到撤回
+    @Update("UPDATE student_select_supervisor_record SET select_type = 0 WHERE project_id = #{projectId} AND select_type = 1 AND deleted =0")
+    void updatePendingSelectType(@Param("projectId") Integer projectId);
+
 }

+ 4 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/studentSelectionProject/studentSelectionProjectMapper.java

@@ -10,6 +10,7 @@ import cn.iocoder.yudao.module.system.controller.admin.studentSelectionProject.v
 import org.apache.ibatis.annotations.Select;
 
 import java.util.Collections;
+import java.util.List;
 import java.util.Set;
 
 /**
@@ -43,4 +44,7 @@ public interface studentSelectionProjectMapper extends BaseMapperX<studentSelect
     }
     @Select("SELECT * FROM supervisor_student_selection_project WHERE YEAR(create_time) = #{year} AND deleted =0")
     studentSelectionProjectDO selectByYear(Integer year);
+
+    @Select("SELECT * FROM supervisor_student_selection_project WHERE deleted =0")
+    List<studentSelectionProjectDO> getAllProject();
 }

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

@@ -347,6 +347,6 @@ public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
     @Update("UPDATE system_users SET introduction = #{introduction} WHERE id = #{id}")
     void updateUserIntroduction(@Param("id") Long id, @Param("introduction") String introduction);
 
-    @Select("SELECT * FROM system_users WHERE supervisor_id = 0 OR Null AND grade = grade AND user_type = '1' AND deleted = 0")
+    @Select("SELECT * FROM system_users WHERE (supervisor_id = 0 OR supervisor_id IS NULL) AND grade = #{grade} AND user_type = '1' AND deleted = 0")
     List<AdminUserDO> getStudentAndSupervisorNull(@Param("grade") String grade);
 }

+ 3 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/studentSelectSupervisorRecord/studentSelectSupervisorRecordService.java

@@ -57,4 +57,7 @@ public interface studentSelectSupervisorRecordService {
 
     studentSelectSupervisorRecordDO getRecordByStudentIdAndSupervisorId( Long studentId ,Long supervisorId,Integer selectType);
 
+    //更新待处理的状态为撤回
+    void updatePendingSelectType(Integer projectId);
+
 }

+ 9 - 1
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/studentSelectSupervisorRecord/studentSelectSupervisorRecordServiceImpl.java

@@ -84,7 +84,10 @@ public class studentSelectSupervisorRecordServiceImpl implements studentSelectSu
         PageResult<studentSelectSupervisorRecordDO> result =studentSelectSupervisorRecordMapper.selectPage(pageReqVO,roleIds,loginUser);
         result.getList().forEach(re->{
             AdminUserDO supervisor =adminUserService.getUser(re.getSupervisorId());
-            re.setSupervisor(supervisor.getNickname());
+            if (supervisor!=null) {
+                re.setSupervisor(supervisor.getNickname());
+                re.setSupervisorType(supervisor.getUserType());
+            }
         });
         return result;
     }
@@ -109,5 +112,10 @@ public class studentSelectSupervisorRecordServiceImpl implements studentSelectSu
     public studentSelectSupervisorRecordDO getRecordByStudentIdAndSupervisorId(Long studentId , Long supervisorId, Integer selectType){
         return studentSelectSupervisorRecordMapper.getRecordByStudentIdAndSupervisorId(studentId,supervisorId,selectType);
     }
+    //更新待处理的记录为撤回
+    @Override
+    public void updatePendingSelectType(Integer projectId){
+        studentSelectSupervisorRecordMapper.updatePendingSelectType(projectId);
+    }
 
 }

+ 3 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/studentSelectionProject/studentSelectionProjectService.java

@@ -5,6 +5,8 @@ import cn.iocoder.yudao.module.system.controller.admin.studentSelectionProject.v
 import cn.iocoder.yudao.module.system.dal.dataobject.studentSelectionProject.studentSelectionProjectDO;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 
+import java.util.List;
+
 /**
  * 师生互选项目 Service 接口
  *
@@ -52,4 +54,5 @@ public interface studentSelectionProjectService {
      */
     PageResult<studentSelectionProjectDO> getStudentSelectionProjectPage(studentSelectionProjectPageReqVO pageReqVO);
 
+    List<studentSelectionProjectDO>getAllProject();
 }

+ 4 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/studentSelectionProject/studentSelectionProjectServiceImpl.java

@@ -88,5 +88,9 @@ public class studentSelectionProjectServiceImpl implements studentSelectionProje
     public studentSelectionProjectDO getStudentSelectionProjectByYear(Integer year){
         return studentSelectionProjectMapper.selectByYear(year);
     }
+    @Override
+     public List<studentSelectionProjectDO>getAllProject(){
+        return studentSelectionProjectMapper.getAllProject();
+    }
 
 }

+ 2 - 0
yudao-server/src/main/java/cn/iocoder/yudao/server/YudaoServerApplication.java

@@ -2,6 +2,7 @@ package cn.iocoder.yudao.server;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.scheduling.annotation.EnableScheduling;
 
 /**
  * 项目的启动类
@@ -14,6 +15,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
  */
 @SuppressWarnings("SpringComponentScan") // 忽略 IDEA 无法识别 ${yudao.info.base-package}
 @SpringBootApplication(scanBasePackages = {"${yudao.info.base-package}.server", "${yudao.info.base-package}.module"})
+//@EnableScheduling
 public class YudaoServerApplication {
 
     public static void main(String[] args) {