Crazy 6 сар өмнө
parent
commit
076436435d
34 өөрчлөгдсөн 754 нэмэгдсэн , 94 устгасан
  1. 160 3
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentSelectSupervisorRecord/studentSelectSupervisorRecordController.java
  2. 61 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentSelectSupervisorRecord/vo/selectionBookRespVO.java
  3. 10 7
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentSelectSupervisorRecord/vo/studentSelectSupervisorRecordPageReqVO.java
  4. 26 6
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentSelectSupervisorRecord/vo/studentSelectSupervisorRecordRespVO.java
  5. 10 5
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentSelectSupervisorRecord/vo/studentSelectSupervisorRecordSaveReqVO.java
  6. 51 10
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentSelectionProject/studentSelectionProjectController.java
  7. 4 4
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentSelectionProject/vo/studentSelectionProjectSaveReqVO.java
  8. 7 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/supervisorSelectionSetting/vo/supervisorSelectionSettingRespVO.java
  9. 5 2
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/supervisorSelectionSetting/vo/supervisorSelectionSettingSaveReqVO.java
  10. 89 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java
  11. 10 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserProfileController.java
  12. 5 2
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/profile/UserProfileRespVO.java
  13. 5 2
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/profile/UserProfileUpdateReqVO.java
  14. 5 2
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserRespVO.java
  15. 8 4
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/user/UserSaveReqVO.java
  16. 29 10
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/studentSelectSupervisorRecord/studentSelectSupervisorRecordDO.java
  17. 21 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/studentSelectionProject/studentSelectionProjectDO.java
  18. 8 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/supervisorSelectionSetting/supervisorSelectionSettingDO.java
  19. 8 2
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/user/AdminUserDO.java
  20. 36 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/user/PopDo.java
  21. 48 13
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/studentSelectSupervisorRecord/studentSelectSupervisorRecordMapper.java
  22. 3 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/studentSelectionProject/studentSelectionProjectMapper.java
  23. 10 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/supervisorSelectionSetting/supervisorSelectionSettingMapper.java
  24. 14 9
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/AdminUserMapper.java
  25. 3 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/studentSelectSupervisorRecord/studentSelectSupervisorRecordService.java
  26. 25 3
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/studentSelectSupervisorRecord/studentSelectSupervisorRecordServiceImpl.java
  27. 2 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/studentSelectionProject/studentSelectionProjectService.java
  28. 5 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/studentSelectionProject/studentSelectionProjectServiceImpl.java
  29. 2 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/supervisorSelectionSetting/supervisorSelectionSettingService.java
  30. 22 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/supervisorSelectionSetting/supervisorSelectionSettingServiceImpl.java
  31. 9 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java
  32. 32 5
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java
  33. 15 0
      yudao-module-system/yudao-module-system-biz/src/main/resources/Mapper/studentSelectSupervisorRecord/studentSelectSupervisorRecordMapper.xml
  34. 6 0
      yudao-module-system/yudao-module-system-biz/src/main/resources/Mapper/user/AdminUserMapper.xml

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

@@ -1,6 +1,14 @@
 package cn.iocoder.yudao.module.system.controller.admin.studentSelectSupervisorRecord;
 package cn.iocoder.yudao.module.system.controller.admin.studentSelectSupervisorRecord;
 
 
 import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
+import cn.iocoder.yudao.module.system.controller.admin.supervisorSelectionSetting.vo.supervisorSelectionSettingSaveReqVO;
+import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserSaveReqVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.supervisorSelectionSetting.supervisorSelectionSettingDO;
+import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
+import cn.iocoder.yudao.module.system.service.permission.PermissionService;
+import cn.iocoder.yudao.module.system.service.supervisorSelectionSetting.supervisorSelectionSettingService;
+import cn.iocoder.yudao.module.system.service.user.AdminUserService;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.validation.annotation.Validated;
@@ -12,6 +20,8 @@ import io.swagger.v3.oas.annotations.Operation;
 import javax.validation.constraints.*;
 import javax.validation.constraints.*;
 import javax.validation.*;
 import javax.validation.*;
 import javax.servlet.http.*;
 import javax.servlet.http.*;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.util.*;
 import java.util.*;
 import java.io.IOException;
 import java.io.IOException;
 
 
@@ -19,6 +29,8 @@ import cn.iocoder.yudao.framework.common.pojo.PageParam;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.error;
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 
 
 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
@@ -38,18 +50,33 @@ public class studentSelectSupervisorRecordController {
 
 
     @Resource
     @Resource
     private studentSelectSupervisorRecordService studentSelectSupervisorRecordService;
     private studentSelectSupervisorRecordService studentSelectSupervisorRecordService;
+    @Resource
+    private AdminUserService adminUserService;
+    @Resource
+    private supervisorSelectionSettingService supervisorSelectionSettingService;
+    @Resource
+    private PermissionService permissionService;
 
 
 
 
     @PostMapping("/create")
     @PostMapping("/create")
     @Operation(summary = "创建师生互选记录")
     @Operation(summary = "创建师生互选记录")
     @PreAuthorize("@ss.hasPermission('system:student-select-supervisor-record:create')")
     @PreAuthorize("@ss.hasPermission('system:student-select-supervisor-record:create')")
-    public CommonResult<Integer> createStudentSelectSupervisorRecord(@Valid @RequestBody studentSelectSupervisorRecordSaveReqVO createReqVO) {
+    public CommonResult<String> createStudentSelectSupervisorRecord(@Valid @RequestBody studentSelectSupervisorRecordSaveReqVO createReqVO) {
         Long loginId = SecurityFrameworkUtils.getLoginUserId();
         Long loginId = SecurityFrameworkUtils.getLoginUserId();
+        studentSelectSupervisorRecordDO record1 =studentSelectSupervisorRecordService.getRecordByStudentIdAndSupervisorId(loginId,null,2);//同意
+        studentSelectSupervisorRecordDO record2 =studentSelectSupervisorRecordService.getRecordByStudentIdAndSupervisorId(loginId,null,1);//待处理
+
+        if (record1!=null){
+            return error(1,"请求已通过了");
+        }else if (record2!=null){
+            return error(1,"还有请求在待处理中");
+        }
         createReqVO.setStudentId(loginId);
         createReqVO.setStudentId(loginId);
-        createReqVO.setSelectType(0L);
+        createReqVO.setSelectType(1);//待处理
         String StudentSignature =createReqVO.getStudentSignature();
         String StudentSignature =createReqVO.getStudentSignature();
         System.out.println("电子签名"+StudentSignature);
         System.out.println("电子签名"+StudentSignature);
-        return success(studentSelectSupervisorRecordService.createStudentSelectSupervisorRecord(createReqVO));
+        studentSelectSupervisorRecordService.createStudentSelectSupervisorRecord(createReqVO);
+        return success("请求提交成功");
     }
     }
 
 
 //    撤回,同意,退回,
 //    撤回,同意,退回,
@@ -100,4 +127,134 @@ public class studentSelectSupervisorRecordController {
                         BeanUtils.toBean(list, studentSelectSupervisorRecordRespVO.class));
                         BeanUtils.toBean(list, studentSelectSupervisorRecordRespVO.class));
     }
     }
 
 
+    //通过,
+    @PutMapping("/agree")
+    @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);
+        }
+        return success(true);
+    }
+
+    // 退回,
+    @PutMapping("/refuse")
+    @Operation(summary = "退回")
+    @PreAuthorize("@ss.hasPermission('system:student-select-supervisor-record:refuse')")
+    public CommonResult<Boolean> refuseStudentSelectSupervisorRecord(@Valid @RequestBody studentSelectSupervisorRecordSaveReqVO updateReqVO) {
+        LocalDateTime dateTime =LocalDateTime.now();
+        updateReqVO.setSupervisorApproveTime(dateTime);
+        updateReqVO.setSelectType(3);
+        studentSelectSupervisorRecordService.updateStudentSelectSupervisorRecord(updateReqVO);
+        return success(true);
+    }
+
+    //传导师id
+    @PutMapping("/withdraw")
+    @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);
+//        updateReqVO.setSupervisorId(0L);
+        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);
+       AdminUserDO student =adminUserService.getUser(record.getStudentId());
+       AdminUserDO supervisor =adminUserService.getUser(record.getSupervisorId());
+       supervisorSelectionSettingDO superVisorSetting = supervisorSelectionSettingService.getSettingBySupervisorId(record.getSupervisorId());
+       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")) {
+            result.setSupervisorType("校外导师");
+        }
+       result.setStudentAchievementRequirement(superVisorSetting.getStudentAchievementRequirement());
+        return success(result);
+    }
+
+
+    //通过方法和志愿填报方法都是这个
+    @PutMapping("/updateSelectionBook")
+    @Operation(summary = "更新互选表数据")
+    @PreAuthorize("@ss.hasPermission('system:student-select-supervisor-record:updateSelection')")
+    public CommonResult<String> updateSelectionBook(selectionBookRespVO updateVo) {
+        Long loginId =SecurityFrameworkUtils.getLoginUserId();
+        Set<Long> roleIds =permissionService.getUserRoleIdListByUserId(loginId);
+        //填写简介
+        UserSaveReqVO userSaveReqVO = new UserSaveReqVO();
+        userSaveReqVO.setId(loginId);
+
+        if (userSaveReqVO.getIntroduction()!=null&&!userSaveReqVO.getIntroduction().isEmpty()) {
+            userSaveReqVO.setIntroduction(userSaveReqVO.getIntroduction());//用户简历
+        }
+
+        studentSelectSupervisorRecordSaveReqVO recordUpdateReqVO =new studentSelectSupervisorRecordSaveReqVO();
+        if (roleIds.contains(112L)){
+            //学生提交签名//在创建的时候提交了
+
+        }else if (roleIds.contains(113L)){//导师
+            //导师提交签名,通过的时候提交
+//            if (updateVo.getSupervisorSignature()!=null&&!updateVo.getSupervisorSignature().isEmpty()) {
+//                recordUpdateReqVO.setId(updateVo.getId());
+//                recordUpdateReqVO.setStudentSignature(updateVo.getSupervisorSignature());
+//                studentSelectSupervisorRecordService.updateStudentSelectSupervisorRecord(recordUpdateReqVO);
+//            }
+            //导师填写信息
+            //1.研究方向
+            if (updateVo.getSupervisorMajor()!=null&&!updateVo.getSupervisorMajor().isEmpty()){
+                userSaveReqVO.setMajor(updateVo.getSupervisorMajor());
+            }
+            //学生成果要求,和名额填写
+            supervisorSelectionSettingDO setting = supervisorSelectionSettingService.getSettingBySupervisorId(loginId);
+            if (updateVo.getStudentAchievementRequirement()!=null&&!updateVo.getStudentAchievementRequirement().isEmpty()){
+                setting.setStudentAchievementRequirement(updateVo.getStudentAchievementRequirement());
+            }
+            if (updateVo.getProfessionalSlots()!=null||updateVo.getAcademicSlots()!=null){
+                setting.setAcademicSlots(updateVo.getProfessionalSlots());
+                setting.setProfessionalSlots(updateVo.getProfessionalSlots());
+            }
+            supervisorSelectionSettingService.updateSupervisorSelectionSetting(BeanUtils.toBean(setting, supervisorSelectionSettingSaveReqVO.class));
+        }
+        userSaveReqVO.setIsSelectionInformation(1);//已经填写了信息
+        adminUserService.updateUser(userSaveReqVO);
+        return success("填写成功");
+    }
+
+    @GetMapping("/getRecordList")
+    @Operation(summary = "获取选择记录列表")
+    @PreAuthorize("@ss.hasPermission('system:student-select-supervisor-record:getRecordList')")
+    public CommonResult<List<studentSelectSupervisorRecordRespVO>> getRecordSelectSupervisorRecordList(@Valid studentSelectSupervisorRecordPageReqVO listReqVO) {
+        return success(BeanUtils.toBean(studentSelectSupervisorRecordService.getStudentSelectSupervisorRecordList(listReqVO),studentSelectSupervisorRecordRespVO.class));
+    }
+
 }
 }

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

@@ -0,0 +1,61 @@
+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;
+import java.util.Date;
+
+@Schema(description = "管理后台 - 师生互选项目 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class selectionBookRespVO {
+
+    @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 supervisorMajor;
+
+    @Schema(description = "学生联系电话")
+    private String studentMobile;
+
+    @Schema(description = "导师名称")
+    private String supervisor;
+
+    @Schema(description = "导师类型/校内或校外")
+    private String supervisorType;
+
+    @Schema(description = "学生成果要求")
+    private String studentAchievementRequirement;
+
+    @Schema(description = "导师电子签名")
+    private String supervisorSignature;
+
+    @Schema(description = "学生电子签名")
+    private String studentSignature;
+
+    @Schema(description = "导师同意日期")
+    private LocalDate agreeDate;
+
+    @Schema(description = "简介")
+    private String introduction;
+
+    @Schema(description = "学硕名额")
+    private Integer academicSlots;
+
+    @Schema(description = "专硕名额")
+    private Integer professionalSlots;
+
+
+}

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

@@ -19,17 +19,13 @@ public class studentSelectSupervisorRecordPageReqVO extends PageParam {
     private Integer projectId;
     private Integer projectId;
 
 
     @Schema(description = "学生id", example = "14632")
     @Schema(description = "学生id", example = "14632")
-    private Integer studentId;
+    private Long studentId;
 
 
     @Schema(description = "校内导师id", example = "24599")
     @Schema(description = "校内导师id", example = "24599")
-    private Integer supervisorId;
-
-    @Schema(description = "选择时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] selectTime;
+    private Long supervisorId;
 
 
     @Schema(description = "选择状态(0编辑(撤回),1待处理,2同意,3退回)", example = "1")
     @Schema(description = "选择状态(0编辑(撤回),1待处理,2同意,3退回)", example = "1")
-    private Long selectType;
+    private Integer selectType;
 
 
     @Schema(description = "学生电子签名")
     @Schema(description = "学生电子签名")
     private String studentSignature;
     private String studentSignature;
@@ -51,4 +47,11 @@ public class studentSelectSupervisorRecordPageReqVO extends PageParam {
     @Schema(description = "硕士类型")
     @Schema(description = "硕士类型")
     private Integer masterType;
     private Integer masterType;
 
 
+    @Schema(description = "导师姓名")
+    private String supervisor;
+
+
+
+
+
 }
 }

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

@@ -1,8 +1,11 @@
 package cn.iocoder.yudao.module.system.controller.admin.studentSelectSupervisorRecord.vo;
 package cn.iocoder.yudao.module.system.controller.admin.studentSelectSupervisorRecord.vo;
 
 
 import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
 import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
+import com.baomidou.mybatisplus.annotation.TableField;
 import io.swagger.v3.oas.annotations.media.Schema;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 import lombok.*;
+
+import java.time.LocalDate;
 import java.util.*;
 import java.util.*;
 import org.springframework.format.annotation.DateTimeFormat;
 import org.springframework.format.annotation.DateTimeFormat;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
@@ -23,15 +26,11 @@ public class studentSelectSupervisorRecordRespVO {
 
 
     @Schema(description = "学生id", requiredMode = Schema.RequiredMode.REQUIRED, example = "14632")
     @Schema(description = "学生id", requiredMode = Schema.RequiredMode.REQUIRED, example = "14632")
     @ExcelProperty("学生id")
     @ExcelProperty("学生id")
-    private Integer studentId;
+    private Long studentId;
 
 
     @Schema(description = "校内导师id", example = "24599")
     @Schema(description = "校内导师id", example = "24599")
     @ExcelProperty("校内导师id")
     @ExcelProperty("校内导师id")
-    private Integer supervisorId;
-
-    @Schema(description = "选择时间")
-    @ExcelProperty("选择时间")
-    private LocalDateTime selectTime;
+    private Long supervisorId;
 
 
     @Schema(description = "选择状态(0编辑(撤回),1待处理,2同意,3退回)", example = "1")
     @Schema(description = "选择状态(0编辑(撤回),1待处理,2同意,3退回)", example = "1")
     @ExcelProperty("选择状态(0编辑(撤回),1待处理,2同意,3退回)")
     @ExcelProperty("选择状态(0编辑(撤回),1待处理,2同意,3退回)")
@@ -61,4 +60,25 @@ public class studentSelectSupervisorRecordRespVO {
     @DictFormat("system_student_master_type")
     @DictFormat("system_student_master_type")
     private Integer masterType;
     private Integer masterType;
 
 
+    @Schema(description = "学生成果要求")
+    private String studentAchievementRequirement;
+
+    @Schema(description = "导师同意日期")
+    private LocalDate agreeDate;
+
+    @Schema(description = "专业")
+    private String major;
+
+    @Schema(description = "简历")
+    private String introduction;
+
+    @Schema(description = "学生姓名")
+    private String studentName;
+
+    @Schema(description = "导师姓名")
+    private String supervisor;
+
+    @Schema(description = "导师类型")
+    private String supervisorType;
+
 }
 }

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

@@ -1,7 +1,11 @@
 package cn.iocoder.yudao.module.system.controller.admin.studentSelectSupervisorRecord.vo;
 package cn.iocoder.yudao.module.system.controller.admin.studentSelectSupervisorRecord.vo;
 
 
+import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
+import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
 import io.swagger.v3.oas.annotations.media.Schema;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 import lombok.*;
+
+import java.time.LocalDate;
 import java.util.*;
 import java.util.*;
 import javax.validation.constraints.*;
 import javax.validation.constraints.*;
 import org.springframework.format.annotation.DateTimeFormat;
 import org.springframework.format.annotation.DateTimeFormat;
@@ -23,13 +27,11 @@ public class studentSelectSupervisorRecordSaveReqVO {
     private Long studentId;
     private Long studentId;
 
 
     @Schema(description = "校内导师id", example = "24599")
     @Schema(description = "校内导师id", example = "24599")
-    private Integer supervisorId;
-
-    @Schema(description = "选择时间")
-    private LocalDateTime selectTime;
+    private Long supervisorId;
 
 
     @Schema(description = "选择状态(0编辑(撤回),1待处理,2同意,3退回)", example = "1")
     @Schema(description = "选择状态(0编辑(撤回),1待处理,2同意,3退回)", example = "1")
-    private Long selectType;
+    @DictFormat("system_student_select_record_select_type")
+    private Integer selectType;
 
 
     @Schema(description = "学生电子签名")
     @Schema(description = "学生电子签名")
     private String studentSignature;
     private String studentSignature;
@@ -46,4 +48,7 @@ public class studentSelectSupervisorRecordSaveReqVO {
     @Schema(description = "硕士类型")
     @Schema(description = "硕士类型")
     private Integer masterType;
     private Integer masterType;
 
 
+    @Schema(description = "同意日期")
+    private LocalDate agreeDate;
+
 }
 }

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

@@ -1,6 +1,7 @@
 package cn.iocoder.yudao.module.system.controller.admin.studentSelectionProject;
 package cn.iocoder.yudao.module.system.controller.admin.studentSelectionProject;
 
 
 import cn.iocoder.yudao.module.system.controller.admin.supervisorSelectionSetting.vo.supervisorSelectionSettingSaveReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.supervisorSelectionSetting.vo.supervisorSelectionSettingSaveReqVO;
+import cn.iocoder.yudao.module.system.dal.dataobject.supervisorSelectionSetting.supervisorSelectionSettingDO;
 import cn.iocoder.yudao.module.system.service.supervisorSelectionSetting.supervisorSelectionSettingService;
 import cn.iocoder.yudao.module.system.service.supervisorSelectionSetting.supervisorSelectionSettingService;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 import javax.annotation.Resource;
 import javax.annotation.Resource;
@@ -13,6 +14,7 @@ import io.swagger.v3.oas.annotations.Operation;
 import javax.validation.constraints.*;
 import javax.validation.constraints.*;
 import javax.validation.*;
 import javax.validation.*;
 import javax.servlet.http.*;
 import javax.servlet.http.*;
+import java.time.LocalDate;
 import java.util.*;
 import java.util.*;
 import java.io.IOException;
 import java.io.IOException;
 
 
@@ -58,21 +60,29 @@ public class studentSelectionProjectController {
         //  TODO 学生: 1. 写一个添加简历的 接口, 上传pdf简历(字符串存文件路径)。 2. 查看接口,详情,查看老师的招生信息(还剩几个名额)
         //  TODO 学生: 1. 写一个添加简历的 接口, 上传pdf简历(字符串存文件路径)。 2. 查看接口,详情,查看老师的招生信息(还剩几个名额)
         //   (一个教师列表,一个教师详情)
         //   (一个教师列表,一个教师详情)
         //   3. 新增互选记录(同时只有一条未审批的记录,通过以后不可以新增) 4. 查看互选记录  5.
         //   3. 新增互选记录(同时只有一条未审批的记录,通过以后不可以新增) 4. 查看互选记录  5.
+        // TODO 学院 1.创建项目  2. 修改项目 3.批量打印 ,师生互选表。 4.
 
 
 
 
-        // TODO 学院 1.创建项目  2. 修改项目 3.批量打印 ,师生互选表。 4.
+        //还剩
+        //TODO批量打印
         if (createReqVO.getStudentStartTime().isAfter(createReqVO.getSupervisorConfirmDeadline())){
         if (createReqVO.getStudentStartTime().isAfter(createReqVO.getSupervisorConfirmDeadline())){
             return error(1,"时间设置错误");
             return error(1,"时间设置错误");
         }
         }
-        Integer projectId =studentSelectionProjectService.createStudentSelectionProject(createReqVO);
-        //创建初始化的导师名额设置
-        supervisorSelectionSettingSaveReqVO settingSaveReqVO =new supervisorSelectionSettingSaveReqVO();
-        if (createReqVO.getSupervisorIds()!=null||!createReqVO.getSupervisorIds().isEmpty()){
-            createReqVO.getSupervisorIds().forEach(supervisorId->{
-                settingSaveReqVO.setSupervisorId(supervisorId);
-                settingSaveReqVO.setProjectId(projectId);
-                supervisorSelectionSettingService.createSupervisorSelectionSetting(settingSaveReqVO);
-            });
+        LocalDate date = LocalDate.now();
+        studentSelectionProjectDO project = studentSelectionProjectService.getStudentSelectionProjectByYear(date.getYear());
+        if (project!=null){
+            return error(1,"今年已经创建过项目了");
+        }else {
+            Integer projectId = studentSelectionProjectService.createStudentSelectionProject(createReqVO);
+            //创建初始化的导师名额设置
+            supervisorSelectionSettingSaveReqVO settingSaveReqVO = new supervisorSelectionSettingSaveReqVO();
+            if (createReqVO.getSupervisorIds() != null && !createReqVO.getSupervisorIds().isEmpty()) {
+                createReqVO.getSupervisorIds().forEach(supervisorId -> {
+                    settingSaveReqVO.setSupervisorId(supervisorId);
+                    settingSaveReqVO.setProjectId(projectId);
+                    supervisorSelectionSettingService.createSupervisorSelectionSetting(settingSaveReqVO);
+                });
+            }
         }
         }
         return success("创建项目成功");
         return success("创建项目成功");
     }
     }
@@ -84,6 +94,37 @@ public class studentSelectionProjectController {
         if (updateReqVO.getStudentStartTime().isAfter(updateReqVO.getSupervisorConfirmDeadline())){
         if (updateReqVO.getStudentStartTime().isAfter(updateReqVO.getSupervisorConfirmDeadline())){
             return error(1,"时间设置错误");
             return error(1,"时间设置错误");
         }
         }
+        //创建新的教师设置
+        studentSelectionProjectSaveReqVO project = BeanUtils.toBean(studentSelectionProjectService.getStudentSelectionProject(updateReqVO.getId()),studentSelectionProjectSaveReqVO.class);
+
+        List<Long> originSupervisorIds = project.getSupervisorIds();
+        List<Long> newSupervisorIds = new ArrayList<>(updateReqVO.getSupervisorIds()); // 先复制一份新的列表
+
+        if (!originSupervisorIds.isEmpty()){
+            newSupervisorIds.removeAll(originSupervisorIds); // 从 newSupervisorIds 中移除 originSupervisorIds 中的元素
+        }
+        if (!newSupervisorIds.isEmpty()){
+            supervisorSelectionSettingSaveReqVO settingSaveReqVO = new supervisorSelectionSettingSaveReqVO();
+            newSupervisorIds.forEach(supervisorId -> {
+                settingSaveReqVO.setSupervisorId(supervisorId);
+                settingSaveReqVO.setProjectId(updateReqVO.getId());
+                supervisorSelectionSettingService.createSupervisorSelectionSetting(settingSaveReqVO);
+            });
+        }
+
+        // 删除原来存在于 originSupervisorIds 中,但新设置中没有的导师
+        if (!originSupervisorIds.isEmpty()) {
+            List<Long> removedSupervisorIds = new ArrayList<>(originSupervisorIds);
+            removedSupervisorIds.removeAll(updateReqVO.getSupervisorIds()); // 找出被移除的导师ID
+
+            if (!removedSupervisorIds.isEmpty()) {
+                removedSupervisorIds.forEach(supervisorId -> {
+                    supervisorSelectionSettingDO settingDO = supervisorSelectionSettingService.getSettingBySupervisorId(supervisorId);
+                    supervisorSelectionSettingService.deleteSupervisorSelectionSetting(settingDO.getId());
+                });
+            }
+        }
+        //更新
         studentSelectionProjectService.updateStudentSelectionProject(updateReqVO);
         studentSelectionProjectService.updateStudentSelectionProject(updateReqVO);
         return success(true);
         return success(true);
     }
     }

+ 4 - 4
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentSelectionProject/vo/studentSelectionProjectSaveReqVO.java

@@ -19,19 +19,19 @@ public class studentSelectionProjectSaveReqVO {
     private String projectName;
     private String projectName;
 
 
     @Schema(description = "学生开始时间", requiredMode = Schema.RequiredMode.REQUIRED)
     @Schema(description = "学生开始时间", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "学生开始时间不能为空")
+//    @NotNull(message = "学生开始时间不能为空")
     private LocalDateTime studentStartTime;
     private LocalDateTime studentStartTime;
 
 
     @Schema(description = "导师截止时间", requiredMode = Schema.RequiredMode.REQUIRED)
     @Schema(description = "导师截止时间", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "导师截止时间不能为空")
+//    @NotNull(message = "导师截止时间不能为空")
     private LocalDateTime supervisorConfirmDeadline;
     private LocalDateTime supervisorConfirmDeadline;
 
 
     @Schema(description = "学生年级", requiredMode = Schema.RequiredMode.REQUIRED)
     @Schema(description = "学生年级", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotEmpty(message = "学生年级不能为空")
+//    @NotEmpty(message = "学生年级不能为空")
     private String studentGrade;
     private String studentGrade;
 
 
     @Schema(description = "导师数组", requiredMode = Schema.RequiredMode.REQUIRED)
     @Schema(description = "导师数组", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotEmpty(message = "导师不能为空")
+//    @NotEmpty(message = "导师不能为空")
     private List<Long> supervisorIds;
     private List<Long> supervisorIds;
 
 
     @Schema(description = "是否开启导师弹窗")
     @Schema(description = "是否开启导师弹窗")

+ 7 - 1
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/supervisorSelectionSetting/vo/supervisorSelectionSettingRespVO.java

@@ -23,7 +23,7 @@ public class supervisorSelectionSettingRespVO {
 
 
     @Schema(description = "导师id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     @Schema(description = "导师id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     @ExcelProperty("导师id")
     @ExcelProperty("导师id")
-    private Integer supervisorId;
+    private Long supervisorId;
 
 
     @Schema(description = "学硕名额")
     @Schema(description = "学硕名额")
     @ExcelProperty("学硕名额")
     @ExcelProperty("学硕名额")
@@ -32,6 +32,9 @@ public class supervisorSelectionSettingRespVO {
     @Schema(description = "专硕名额")
     @Schema(description = "专硕名额")
     @ExcelProperty("专硕名额")
     @ExcelProperty("专硕名额")
     private Integer professionalSlots;
     private Integer professionalSlots;
+
+    @Schema(description = "学生成果要求")
+    private String studentAchievementRequirement;
     
     
     @Schema(description = "已经占用的学硕名额")
     @Schema(description = "已经占用的学硕名额")
     private  Integer  occupiedAcademicSlots;
     private  Integer  occupiedAcademicSlots;
@@ -49,4 +52,7 @@ public class supervisorSelectionSettingRespVO {
     @ExcelProperty("创建时间")
     @ExcelProperty("创建时间")
     private LocalDateTime createTime;
     private LocalDateTime createTime;
 
 
+    @Schema(description = "选择状态")
+    private  Integer selectType;
+
 }
 }

+ 5 - 2
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/supervisorSelectionSetting/vo/supervisorSelectionSettingSaveReqVO.java

@@ -13,11 +13,11 @@ public class supervisorSelectionSettingSaveReqVO {
     private Integer id;
     private Integer id;
 
 
     @Schema(description = "项目id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     @Schema(description = "项目id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    @NotNull(message = "项目id不能为空")
+//    @NotNull(message = "项目id不能为空")
     private Integer projectId;
     private Integer projectId;
 
 
     @Schema(description = "导师id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     @Schema(description = "导师id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    @NotNull(message = "导师id不能为空")
+//    @NotNull(message = "导师id不能为空")
     private Long supervisorId;
     private Long supervisorId;
 
 
     @Schema(description = "学硕名额")
     @Schema(description = "学硕名额")
@@ -26,4 +26,7 @@ public class supervisorSelectionSettingSaveReqVO {
     @Schema(description = "专硕名额")
     @Schema(description = "专硕名额")
     private Integer professionalSlots;
     private Integer professionalSlots;
 
 
+    @Schema(description = "学生成果要求")
+    private String studentAchievementRequirement;
+
 }
 }

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

@@ -11,14 +11,18 @@ import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
 import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptListReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptListReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptSaveReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptSaveReqVO;
+import cn.iocoder.yudao.module.system.controller.admin.studentSelectionProject.vo.studentSelectionProjectSaveReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.*;
 import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.*;
 
 
 import cn.iocoder.yudao.module.system.convert.user.UserConvert;
 import cn.iocoder.yudao.module.system.convert.user.UserConvert;
 import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
+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.AdminUserDO;
+import cn.iocoder.yudao.module.system.dal.dataobject.user.PopDo;
 import cn.iocoder.yudao.module.system.enums.common.SexEnum;
 import cn.iocoder.yudao.module.system.enums.common.SexEnum;
 import cn.iocoder.yudao.module.system.service.dept.DeptService;
 import cn.iocoder.yudao.module.system.service.dept.DeptService;
 import cn.iocoder.yudao.module.system.service.permission.PermissionService;
 import cn.iocoder.yudao.module.system.service.permission.PermissionService;
+import cn.iocoder.yudao.module.system.service.studentSelectionProject.studentSelectionProjectService;
 import cn.iocoder.yudao.module.system.service.user.AdminUserService;
 import cn.iocoder.yudao.module.system.service.user.AdminUserService;
 
 
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Operation;
@@ -26,6 +30,7 @@ import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.Parameters;
 import io.swagger.v3.oas.annotations.Parameters;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import io.swagger.v3.oas.annotations.tags.Tag;
 
 
+import org.apache.ibatis.annotations.Param;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
@@ -36,6 +41,7 @@ import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import javax.validation.Valid;
 import java.io.*;
 import java.io.*;
 
 
+import java.time.LocalDate;
 import java.util.*;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
@@ -56,6 +62,8 @@ public class UserController {
     private DeptService deptService;
     private DeptService deptService;
     @Resource
     @Resource
     private PermissionService permissionService;
     private PermissionService permissionService;
+    @Resource
+    private studentSelectionProjectService studentSelectionProjectService;
 
 
     @PostMapping("/create")
     @PostMapping("/create")
     @Operation(summary = "新增用户")
     @Operation(summary = "新增用户")
@@ -546,5 +554,86 @@ public class UserController {
         return success(result);
         return success(result);
     }
     }
 
 
+    //学生
+    @PutMapping("/updateUserIntroduction")
+    @Operation(summary = "更新用户简历PDF")
+    public CommonResult<Boolean> updateUserIntroduction(@Param("introduction") String introduction) {
+        userService.updateUserIntroduction(introduction);
+        return success(true);
+    }
+
+    //TODO弹窗相关
+    //判断用户是否应该弹窗
+    @GetMapping("/getIsPop")
+    @Operation(summary = "获得登录用户是否开启弹窗")
+    public CommonResult<Boolean> getIsPop() {
+        PopDo result = userService.getPopData();
+        Long loginId =SecurityFrameworkUtils.getLoginUserId();
+        LocalDate date =LocalDate.now();
+        AdminUserDO loginUser =userService.getUser(loginId);
+        Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(loginId);
+        //TODO为了变成list
+        studentSelectionProjectSaveReqVO project = BeanUtils.toBean(studentSelectionProjectService.getStudentSelectionProjectByYear(date.getYear()),studentSelectionProjectSaveReqVO.class);
+
+        Integer isStudent = result.getIsStudent();
+        Integer isSupervisor =result.getIsSupervisor();
+        //学生填写
+        if (roleIds.contains(112L)){
+            if (isStudent==1&&loginUser.getGrade().equals(project.getStudentGrade())){
+                return success(true);
+            }else {
+                return success(false);
+            }
+        }else if (roleIds.contains(113L)){
+            if (isSupervisor==1&&project.getSupervisorIds().contains(loginId)){
+                return success(true);
+            }else {
+                return success(false);
+            }
+        }
+        return success(false);
+    }
+
+    @PutMapping("/updateIsPop")
+    @Operation(summary = "更新是否弹窗")
+    @PreAuthorize("@ss.hasPermission('system:user:updateIsPop')")
+    public CommonResult<Boolean> updateIsPop( @RequestBody PopDo popData) {
+        System.out.println(popData);
+        if (popData.getIsStudent() != null || popData.getIsSupervisor() != null) {
+            userService.updatePop(popData);
+            LocalDate date =LocalDate.now();
+            studentSelectionProjectSaveReqVO project = BeanUtils.toBean(studentSelectionProjectService.getStudentSelectionProjectByYear(date.getYear()),studentSelectionProjectSaveReqVO.class);
+            //更新导师的
+            List<Long> supervisorIds = project.getSupervisorIds();
+            UserSaveReqVO saveReqVO =new UserSaveReqVO();
+            UserPageReqVO studentVo =new UserPageReqVO();
+            studentVo.setGrade(project.getStudentGrade());
+            if (supervisorIds!=null&&!supervisorIds.isEmpty()){
+                for (Long supervisorId : supervisorIds){
+                    saveReqVO.setId(supervisorId);
+                    saveReqVO.setIsSelectionInformation(popData.getIsSupervisor() == 1 ? 1 : 0);
+                    userService.updateUser(saveReqVO);
+                }
+            }
+            //更新学生
+            List<AdminUserDO> studentList = userService.getUserList1(studentVo);
+            if (studentList!=null&&!studentList.isEmpty()){
+                saveReqVO =new UserSaveReqVO();
+                for (AdminUserDO student :studentList){
+                    saveReqVO.setId(student.getId());
+                    saveReqVO.setIsSelectionInformation(popData.getIsStudent() == 1 ? 1 : 0);
+                    userService.updateUser(saveReqVO);
+                }
+            }
+        }
+        return success(true);
+    }
+
+    @GetMapping("/getPopData")
+    @Operation(summary = "获得弹窗值")
+    @PreAuthorize("@ss.hasPermission('system:user:getPopData')")
+    public CommonResult<PopDo> getPopData() {
+        return success( userService.getPopData());
+    }
 
 
 }
 }

+ 10 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserProfileController.java

@@ -7,28 +7,36 @@ import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission;
 import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileRespVO;
 import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileRespVO;
 import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO;
+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.convert.user.UserConvert;
 import cn.iocoder.yudao.module.system.convert.user.UserConvert;
 import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.dept.PostDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.dept.PostDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.social.SocialUserDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.social.SocialUserDO;
+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.AdminUserDO;
 import cn.iocoder.yudao.module.system.service.dept.DeptService;
 import cn.iocoder.yudao.module.system.service.dept.DeptService;
 import cn.iocoder.yudao.module.system.service.dept.PostService;
 import cn.iocoder.yudao.module.system.service.dept.PostService;
 import cn.iocoder.yudao.module.system.service.permission.PermissionService;
 import cn.iocoder.yudao.module.system.service.permission.PermissionService;
 import cn.iocoder.yudao.module.system.service.permission.RoleService;
 import cn.iocoder.yudao.module.system.service.permission.RoleService;
 import cn.iocoder.yudao.module.system.service.social.SocialUserService;
 import cn.iocoder.yudao.module.system.service.social.SocialUserService;
+import cn.iocoder.yudao.module.system.service.studentSelectionProject.studentSelectionProjectService;
 import cn.iocoder.yudao.module.system.service.user.AdminUserService;
 import cn.iocoder.yudao.module.system.service.user.AdminUserService;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Operation;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartFile;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import javax.validation.Valid;
 import javax.validation.Valid;
+import java.time.LocalDate;
 import java.util.List;
 import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@@ -54,6 +62,8 @@ public class UserProfileController {
     private RoleService roleService;
     private RoleService roleService;
     @Resource
     @Resource
     private SocialUserService socialService;
     private SocialUserService socialService;
+    @Resource
+    private studentSelectionProjectService studentSelectionProjectService;
 
 
     @GetMapping("/get")
     @GetMapping("/get")
     @Operation(summary = "获得登录用户信息")
     @Operation(summary = "获得登录用户信息")

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

@@ -103,7 +103,10 @@ public class UserProfileRespVO {
     @Schema(description = "照片url")
     @Schema(description = "照片url")
     private String photoUrl;
     private String photoUrl;
 
 
-    @Schema(description = "学生成果要求")
-    private String studentAchievementRequirement;
+    @Schema(description = "是否填写互选信息")
+    private Integer isSelectionInformation;
+
+    @Schema(description = "招生简介PDF")
+    private String introduction;
 
 
 }
 }

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

@@ -67,7 +67,10 @@ public class UserProfileUpdateReqVO {
     @Schema(description = "用户头像")
     @Schema(description = "用户头像")
     private String avatar;
     private String avatar;
 
 
-    @Schema(description = "学生成果要求")
-    private String studentAchievementRequirement;
+    @Schema(description = "招生简介PDF")
+    private String introduction;
+
+    @Schema(description = "是否填写互选信息")
+    private Integer isSelectionInformation;
 
 
 }
 }

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

@@ -123,11 +123,14 @@ public class UserRespVO{
     @Schema(description = "用户照片是达成毕业条件")
     @Schema(description = "用户照片是达成毕业条件")
     private Long isGraduate;
     private Long isGraduate;
 
 
-    @Schema(description = "学生成果要求")
-    private String studentAchievementRequirement;
+    @Schema(description = "招生简介PDF")
+    private String introduction;
 
 
     @Schema(description = "校外导师id")
     @Schema(description = "校外导师id")
     private Long externalSupervisorId;
     private Long externalSupervisorId;
 
 
+    @Schema(description = "是否填写互选信息")
+    private Integer isSelectionInformation;
+
 
 
 }
 }

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

@@ -49,14 +49,14 @@ public class UserSaveReqVO {
 
 
     @Schema(description = "用户邮箱", example = "yudao@iocoder.cn")
     @Schema(description = "用户邮箱", example = "yudao@iocoder.cn")
     @Email(message = "邮箱格式不正确")
     @Email(message = "邮箱格式不正确")
-    @NotBlank(message = "用户邮箱不能为空")
+//    @NotBlank(message = "用户邮箱不能为空")
     @Size(max = 50, message = "邮箱长度不能超过 50 个字符")
     @Size(max = 50, message = "邮箱长度不能超过 50 个字符")
     @DiffLogField(name = "用户邮箱")
     @DiffLogField(name = "用户邮箱")
     private String email;
     private String email;
 
 
     @Schema(description = "手机号码", example = "15601691300")
     @Schema(description = "手机号码", example = "15601691300")
     @Mobile
     @Mobile
-    @NotBlank(message = "用户手机号码不能为空")
+//    @NotBlank(message = "用户手机号码不能为空")
     @DiffLogField(name = "手机号码")
     @DiffLogField(name = "手机号码")
     private String mobile;
     private String mobile;
 
 
@@ -107,12 +107,16 @@ public class UserSaveReqVO {
     @Schema(description = "年级")
     @Schema(description = "年级")
     private String grade;
     private String grade;
 
 
-    @Schema(description = "学生成果要求")
-    private String studentAchievementRequirement;
+    @Schema(description = "招生简介PDF")
+    private String introduction;
 
 
     @Schema(description = "校外导师id")
     @Schema(description = "校外导师id")
     private Long externalSupervisorId;
     private Long externalSupervisorId;
 
 
+    @Schema(description = "是否填写互选信息")
+    private Integer isSelectionInformation;
+
+
     // ========== 仅【创建】时,需要传递的字段 ==========
     // ========== 仅【创建】时,需要传递的字段 ==========
 
 
     @Schema(description = "密码", requiredMode = Schema.RequiredMode.REQUIRED, example = "123456")
     @Schema(description = "密码", requiredMode = Schema.RequiredMode.REQUIRED, example = "123456")

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

@@ -1,11 +1,13 @@
 package cn.iocoder.yudao.module.system.dal.dataobject.studentSelectSupervisorRecord;
 package cn.iocoder.yudao.module.system.dal.dataobject.studentSelectSupervisorRecord;
 
 
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 import lombok.*;
+
+import java.time.*;
 import java.util.*;
 import java.util.*;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
-import java.time.LocalDateTime;
 import com.baomidou.mybatisplus.annotation.*;
 import com.baomidou.mybatisplus.annotation.*;
 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
 
 
@@ -38,23 +40,20 @@ public class studentSelectSupervisorRecordDO extends BaseDO {
     /**
     /**
      * 学生id
      * 学生id
      */
      */
-    private Integer studentId;
+    private Long studentId;
     /**
     /**
      * 校内导师id
      * 校内导师id
      */
      */
-    private Integer supervisorId;
+    private Long supervisorId;
     /**
     /**
      * 校外导师id
      * 校外导师id
      */
      */
-    private Integer externalSupervisorId;
-    /**
-     * 选择时间
-     */
-    private LocalDateTime selectTime;
+    private Long externalSupervisorId;
+
     /**
     /**
      * 选择状态(0编辑(撤回),1待处理,2同意,3退回)
      * 选择状态(0编辑(撤回),1待处理,2同意,3退回)
      */
      */
-    private Long selectType;
+    private Integer selectType;
     /**
     /**
      * 学生电子签名
      * 学生电子签名
      */
      */
@@ -69,9 +68,29 @@ public class studentSelectSupervisorRecordDO extends BaseDO {
     private String supervisorSignature;
     private String supervisorSignature;
 
 
     /**
     /**
-     * 硕士类型
+     * 导师同意日期
      */
      */
+    private LocalDate agreeDate;
+
+    //硕士类型
+    @TableField(exist = false)
     private Integer masterType;
     private Integer masterType;
+    //专业
+    @TableField(exist = false)
+    private String major;
+    //简历
+    @TableField(exist = false)
+    private String introduction;
+    //学生姓名
+    @TableField(exist = false)
+    private String studentName;
+    //导师姓名
+    @TableField(exist = false)
+    private String supervisor;
+    //导师类型
+    @TableField(exist = false)
+    private String supervisorType;
+
 
 
 
 
 }
 }

+ 21 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/studentSelectionProject/studentSelectionProjectDO.java

@@ -4,6 +4,8 @@ import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 import lombok.*;
 
 
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
 
 
 import com.baomidou.mybatisplus.annotation.*;
 import com.baomidou.mybatisplus.annotation.*;
 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
@@ -59,4 +61,23 @@ public class studentSelectionProjectDO extends BaseDO {
      */
      */
     private Integer isStudent;
     private Integer isStudent;
 
 
+//    public List<Long> getSupervisorIds() {
+//        if (supervisorIds == null || supervisorIds.isEmpty()) {
+//            return new ArrayList<>();
+//        }
+//
+//        // 清洗掉 [ 和 ] 字符
+//        String cleanedIds = supervisorIds.replaceAll("[\\[\\]]", "").trim();
+//        // 使用逗号分割数字字符串
+//        String[] idsArray = cleanedIds.split(",");
+//        List<Long> idsList = new ArrayList<>();
+//        for (String id : idsArray) {
+//            try {
+//                idsList.add(Long.parseLong(id.trim())); // 转换为 Long 类型并加入列表
+//            } catch (NumberFormatException e) {
+//                System.err.println("无法转换为 Long 类型: " + id);
+//            }
+//        }
+//        return idsList;
+//    }
 }
 }

+ 8 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/supervisorSelectionSetting/supervisorSelectionSettingDO.java

@@ -44,6 +44,11 @@ public class supervisorSelectionSettingDO extends BaseDO {
      */
      */
     private Integer professionalSlots;
     private Integer professionalSlots;
 
 
+    /**
+     * 学生成果要求
+     */
+    private String studentAchievementRequirement;
+
     /**
     /**
      * 导师姓名
      * 导师姓名
      */
      */
@@ -68,4 +73,7 @@ public class supervisorSelectionSettingDO extends BaseDO {
     @TableField(exist = false)
     @TableField(exist = false)
     private  Integer  occupiedProfessionalSlots;
     private  Integer  occupiedProfessionalSlots;
 
 
+    @TableField(exist = false)
+    private  Integer selectType;
+
 }
 }

+ 8 - 2
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/user/AdminUserDO.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
 import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 import lombok.*;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 
 
@@ -139,9 +140,14 @@ public class AdminUserDO extends TenantBaseDO {
     private LocalDateTime photoUpdateTime;
     private LocalDateTime photoUpdateTime;
 
 
     /**
     /**
-     * 学生成果要求
+     * 招生简介PDF
      */
      */
-    private String studentAchievementRequirement;
+    private String introduction;
+
+    /**
+     * 是否填写互选信息
+     */
+    private Integer isSelectionInformation;
 
 
 
 
     /**
     /**

+ 36 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/user/PopDo.java

@@ -0,0 +1,36 @@
+package cn.iocoder.yudao.module.system.dal.dataobject.user;
+
+import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
+import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO;
+import cn.iocoder.yudao.module.system.enums.common.SexEnum;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
+import lombok.*;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+
+import java.time.LocalDateTime;
+import java.util.Set;
+
+/**
+ * 管理后台的用户 DO
+ *
+ * @author 芋道源码
+ */
+@TableName(value = "system_is_pop", autoResultMap = true) // 由于 SQL Server 的 system_user 是关键字,所以使用 system_users
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class PopDo extends TenantBaseDO {
+
+    @TableId
+    private Long id;
+
+    private Integer isStudent;
+
+    private Integer isSupervisor;
+}

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

@@ -5,6 +5,7 @@ import java.util.*;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 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.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.studentSelectSupervisorRecord.studentSelectSupervisorRecordDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Mapper;
@@ -22,18 +23,23 @@ public interface studentSelectSupervisorRecordMapper extends BaseMapperX<student
 
 
     default PageResult<studentSelectSupervisorRecordDO> selectPage(studentSelectSupervisorRecordPageReqVO reqVO, Set<Long>roleIds, AdminUserDO loginUser) {
     default PageResult<studentSelectSupervisorRecordDO> selectPage(studentSelectSupervisorRecordPageReqVO reqVO, Set<Long>roleIds, AdminUserDO loginUser) {
 
 
-        LambdaQueryWrapperX<studentSelectSupervisorRecordDO> queryWrapperX =new LambdaQueryWrapperX<>();
+        MPJLambdaWrapperX<studentSelectSupervisorRecordDO> queryWrapperX =new MPJLambdaWrapperX<>();
 
 
-        queryWrapperX.eqIfPresent(studentSelectSupervisorRecordDO::getProjectId, reqVO.getProjectId())
-                .eqIfPresent(studentSelectSupervisorRecordDO::getStudentId, reqVO.getStudentId())
-                .eqIfPresent(studentSelectSupervisorRecordDO::getSupervisorId, reqVO.getSupervisorId())//学院看招生情况会传导师id
-                .betweenIfPresent(studentSelectSupervisorRecordDO::getSelectTime, reqVO.getSelectTime())
-                .eqIfPresent(studentSelectSupervisorRecordDO::getSelectType, reqVO.getSelectType())
-                .eqIfPresent(studentSelectSupervisorRecordDO::getStudentSignature, reqVO.getStudentSignature())
-                .betweenIfPresent(studentSelectSupervisorRecordDO::getCreateTime, reqVO.getCreateTime())
+        queryWrapperX
                 .betweenIfPresent(studentSelectSupervisorRecordDO::getSupervisorApproveTime, reqVO.getSupervisorApproveTime())
                 .betweenIfPresent(studentSelectSupervisorRecordDO::getSupervisorApproveTime, reqVO.getSupervisorApproveTime())
-                .eqIfPresent(studentSelectSupervisorRecordDO::getSupervisorSignature, reqVO.getSupervisorSignature())
-                .eqIfPresent(studentSelectSupervisorRecordDO::getExternalSupervisorId, reqVO.getExternalSupervisorId())
+                .selectAll(studentSelectSupervisorRecordDO.class)
+                .leftJoin(AdminUserDO.class,AdminUserDO::getId,studentSelectSupervisorRecordDO::getStudentId)//关联学生信息
+                .selectAs(AdminUserDO::getNickname,studentSelectSupervisorRecordDO::getStudentName)//学生姓名
+                .selectAs(AdminUserDO::getMasterType,studentSelectSupervisorRecordDO::getMasterType)//硕士类型
+                .selectAs(AdminUserDO::getMajor,studentSelectSupervisorRecordDO::getMajor)//专业
+                .selectAs(AdminUserDO::getIntroduction,studentSelectSupervisorRecordDO::getIntroduction)//简历
+                .eqIfExists(studentSelectSupervisorRecordDO::getProjectId, reqVO.getProjectId())
+                .eqIfExists(studentSelectSupervisorRecordDO::getStudentId, reqVO.getStudentId())
+                .eqIfExists(studentSelectSupervisorRecordDO::getSupervisorId, reqVO.getSupervisorId())//学院看招生情况会传导师id
+                .eqIfExists(studentSelectSupervisorRecordDO::getSelectType, reqVO.getSelectType())
+                .eqIfExists(studentSelectSupervisorRecordDO::getStudentSignature, reqVO.getStudentSignature())
+                .eqIfExists(studentSelectSupervisorRecordDO::getSupervisorSignature, reqVO.getSupervisorSignature())
+                .eqIfExists(studentSelectSupervisorRecordDO::getExternalSupervisorId, reqVO.getExternalSupervisorId())
                 .orderByDesc(studentSelectSupervisorRecordDO::getId);
                 .orderByDesc(studentSelectSupervisorRecordDO::getId);
         if (roleIds.contains(113L)){//校内导师(查看选择了自己的)
         if (roleIds.contains(113L)){//校内导师(查看选择了自己的)
             queryWrapperX.eqIfPresent(studentSelectSupervisorRecordDO::getSupervisorId,loginUser.getId());
             queryWrapperX.eqIfPresent(studentSelectSupervisorRecordDO::getSupervisorId,loginUser.getId());
@@ -43,8 +49,37 @@ public interface studentSelectSupervisorRecordMapper extends BaseMapperX<student
         return selectPage(reqVO,queryWrapperX);
         return selectPage(reqVO,queryWrapperX);
     }
     }
 
 
-    @Select("SELECT COUNT(*) FROM student_select_supervisor_record WHERE project_id =#{projectId} AND supervisor_id =#{supervisorId} AND master_type = #{masterType}")
-    Integer getSelectionOccupiedSlots(@Param("projectId") Integer projectId, @Param("supervisorId") Integer supervisorId,@Param("masterType")Integer masterType);
-
+    default List<studentSelectSupervisorRecordDO> selectList(studentSelectSupervisorRecordPageReqVO reqVO,Set<Long>roleIds, AdminUserDO loginUser){
+        MPJLambdaWrapperX<studentSelectSupervisorRecordDO> queryWrapperX =new MPJLambdaWrapperX<>();
+        queryWrapperX .betweenIfPresent(studentSelectSupervisorRecordDO::getSupervisorApproveTime, reqVO.getSupervisorApproveTime())
+                .selectAll(studentSelectSupervisorRecordDO.class)
+                .leftJoin(AdminUserDO.class,AdminUserDO::getId,studentSelectSupervisorRecordDO::getStudentId)//关联学生信息
+//                .leftJoin(AdminUserDO.class,AdminUserDO::getId,studentSelectSupervisorRecordDO::getSupervisorId)
+                .selectAs(AdminUserDO::getNickname,studentSelectSupervisorRecordDO::getStudentName)//学生姓名
+                .selectAs(AdminUserDO::getMasterType,studentSelectSupervisorRecordDO::getMasterType)//硕士类型
+                .selectAs(AdminUserDO::getMajor,studentSelectSupervisorRecordDO::getMajor)//专业
+                .selectAs(AdminUserDO::getIntroduction,studentSelectSupervisorRecordDO::getIntroduction)//简历
+                .eqIfExists(studentSelectSupervisorRecordDO::getProjectId, reqVO.getProjectId())
+                .eqIfExists(studentSelectSupervisorRecordDO::getStudentId, reqVO.getStudentId())
+                .eqIfExists(studentSelectSupervisorRecordDO::getSupervisorId, reqVO.getSupervisorId())//学院看招生情况会传导师id
+                .eqIfExists(studentSelectSupervisorRecordDO::getSelectType, reqVO.getSelectType())
+                .eqIfExists(studentSelectSupervisorRecordDO::getStudentSignature, reqVO.getStudentSignature())
+                .eqIfExists(studentSelectSupervisorRecordDO::getSupervisorSignature, reqVO.getSupervisorSignature())
+                .eqIfExists(studentSelectSupervisorRecordDO::getExternalSupervisorId, reqVO.getExternalSupervisorId())
+                .orderByDesc(studentSelectSupervisorRecordDO::getId);
+        if (roleIds.contains(113L)){
+            queryWrapperX.eqIfPresent(studentSelectSupervisorRecordDO::getSupervisorId,loginUser.getId());
+        }else if (roleIds.contains(114L)){//学院看所有的同意记录
+            queryWrapperX.inIfPresent(studentSelectSupervisorRecordDO::getSelectType,1,2,3);
+        }else if (roleIds.contains(112L)){//学生看自己的
+            queryWrapperX.eqIfPresent(studentSelectSupervisorRecordDO::getStudentId,loginUser.getId());
+        }
+        return selectList(queryWrapperX);
+    }
 
 
+    //只能查一直只有一条记录的,同意/未处理
+    studentSelectSupervisorRecordDO getRecordByStudentIdAndSupervisorId(
+            @Param("studentId") Long studentId,
+            @Param("supervisorId") Long supervisorId,
+            @Param("selectType") Integer selectType);
 }
 }

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

@@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.system.dal.dataobject.studentSelectionProject.stu
 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Mapper;
 import cn.iocoder.yudao.module.system.controller.admin.studentSelectionProject.vo.*;
 import cn.iocoder.yudao.module.system.controller.admin.studentSelectionProject.vo.*;
+import org.apache.ibatis.annotations.Select;
 
 
 import java.util.Collections;
 import java.util.Collections;
 import java.util.Set;
 import java.util.Set;
@@ -40,5 +41,6 @@ public interface studentSelectionProjectMapper extends BaseMapperX<studentSelect
 
 
         return selectPage(reqVO,queryWrapperX);
         return selectPage(reqVO,queryWrapperX);
     }
     }
-
+    @Select("SELECT * FROM supervisor_student_selection_project WHERE YEAR(create_time) = #{year} AND deleted =0")
+    studentSelectionProjectDO selectByYear(Integer year);
 }
 }

+ 10 - 1
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/supervisorSelectionSetting/supervisorSelectionSettingMapper.java

@@ -8,10 +8,12 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
 import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
 import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.studentAttendance.StudentAttendanceDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.studentAttendance.StudentAttendanceDO;
+import cn.iocoder.yudao.module.system.dal.dataobject.studentSelectSupervisorRecord.studentSelectSupervisorRecordDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.supervisorSelectionSetting.supervisorSelectionSettingDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.supervisorSelectionSetting.supervisorSelectionSettingDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Mapper;
 import cn.iocoder.yudao.module.system.controller.admin.supervisorSelectionSetting.vo.*;
 import cn.iocoder.yudao.module.system.controller.admin.supervisorSelectionSetting.vo.*;
+import org.apache.ibatis.annotations.Select;
 
 
 /**
 /**
  * 导师学硕专硕名额设置 Mapper
  * 导师学硕专硕名额设置 Mapper
@@ -21,7 +23,7 @@ import cn.iocoder.yudao.module.system.controller.admin.supervisorSelectionSettin
 @Mapper
 @Mapper
 public interface supervisorSelectionSettingMapper extends BaseMapperX<supervisorSelectionSettingDO> {
 public interface supervisorSelectionSettingMapper extends BaseMapperX<supervisorSelectionSettingDO> {
 
 
-    default PageResult<supervisorSelectionSettingDO> selectPage(supervisorSelectionSettingPageReqVO reqVO) {
+    default PageResult<supervisorSelectionSettingDO> selectPage(supervisorSelectionSettingPageReqVO reqVO ,Set<Long> roleIds, AdminUserDO loginUser) {
 
 
         MPJLambdaWrapperX<supervisorSelectionSettingDO> mpjLambdaWrapperX = new MPJLambdaWrapperX<>();
         MPJLambdaWrapperX<supervisorSelectionSettingDO> mpjLambdaWrapperX = new MPJLambdaWrapperX<>();
 
 
@@ -29,6 +31,7 @@ public interface supervisorSelectionSettingMapper extends BaseMapperX<supervisor
                 .betweenIfPresent(supervisorSelectionSettingDO::getCreateTime, reqVO.getCreateTime())
                 .betweenIfPresent(supervisorSelectionSettingDO::getCreateTime, reqVO.getCreateTime())
                 .selectAll(supervisorSelectionSettingDO.class)
                 .selectAll(supervisorSelectionSettingDO.class)
                 .leftJoin(AdminUserDO.class, AdminUserDO::getId, supervisorSelectionSettingDO::getSupervisorId)
                 .leftJoin(AdminUserDO.class, AdminUserDO::getId, supervisorSelectionSettingDO::getSupervisorId)
+//                .leftJoin(studentSelectSupervisorRecordDO.class,studentSelectSupervisorRecordDO::getStudentId,)
                 .selectAs(AdminUserDO::getNickname,supervisorSelectionSettingDO::getSupervisorName)//导师姓名
                 .selectAs(AdminUserDO::getNickname,supervisorSelectionSettingDO::getSupervisorName)//导师姓名
                 .selectAs(AdminUserDO::getUserType,supervisorSelectionSettingDO::getUserType)//导师类型
                 .selectAs(AdminUserDO::getUserType,supervisorSelectionSettingDO::getUserType)//导师类型
                 .eqIfExists(supervisorSelectionSettingDO::getProjectId, reqVO.getProjectId())
                 .eqIfExists(supervisorSelectionSettingDO::getProjectId, reqVO.getProjectId())
@@ -36,7 +39,13 @@ public interface supervisorSelectionSettingMapper extends BaseMapperX<supervisor
                 .eqIfExists(supervisorSelectionSettingDO::getAcademicSlots, reqVO.getAcademicSlots())
                 .eqIfExists(supervisorSelectionSettingDO::getAcademicSlots, reqVO.getAcademicSlots())
                 .eqIfExists(supervisorSelectionSettingDO::getProfessionalSlots, reqVO.getProfessionalSlots())
                 .eqIfExists(supervisorSelectionSettingDO::getProfessionalSlots, reqVO.getProfessionalSlots())
                 .orderByDesc(supervisorSelectionSettingDO::getId);
                 .orderByDesc(supervisorSelectionSettingDO::getId);
+
         return selectPage(reqVO,mpjLambdaWrapperX);
         return selectPage(reqVO,mpjLambdaWrapperX);
     }
     }
 
 
+    @Select("SELECT * FROM supervisor_selection_setting WHERE supervisor_id = #{supervisorId} AND deleted =0")
+    supervisorSelectionSettingDO getSettingBySupervisorId(Long supervisorId);
+
+
+
 }
 }

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

@@ -9,6 +9,7 @@ import cn.iocoder.yudao.framework.security.core.LoginUser;
 import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 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.UserPageReqVO;
 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
+import cn.iocoder.yudao.module.system.dal.dataobject.user.PopDo;
 import cn.iocoder.yudao.module.system.dal.dataobject.userAchievement.UserAchievementDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.userAchievement.UserAchievementDO;
 import cn.iocoder.yudao.module.system.service.permission.PermissionService;
 import cn.iocoder.yudao.module.system.service.permission.PermissionService;
 import cn.iocoder.yudao.module.system.service.user.AdminUserService;
 import cn.iocoder.yudao.module.system.service.user.AdminUserService;
@@ -16,10 +17,7 @@ import com.baomidou.mybatisplus.annotation.DbType;
 import com.baomidou.mybatisplus.extension.toolkit.Db;
 import com.baomidou.mybatisplus.extension.toolkit.Db;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import org.apache.catalina.User;
 import org.apache.catalina.User;
-import org.apache.ibatis.annotations.Insert;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.*;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import java.util.*;
 import java.util.*;
@@ -335,10 +333,17 @@ public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
             "HAVING COUNT(sa.id) > 2;")
             "HAVING COUNT(sa.id) > 2;")
     List<AdminUserDO> getStudentErrorAttendance();
     List<AdminUserDO> getStudentErrorAttendance();
 
 
-    @Select("SELECT COUNT(*)  FROM system_user WHERE supervisor_id =#{supervisorId} AND master_type =#{masterType} AND deleted =0")
-    Integer countStudentListBySupervisorId(@Param("supervisorId") Integer supervisorId,@Param("masterType")Integer masterType);
+    @Select("SELECT COUNT(*) FROM system_users WHERE supervisor_id = #{supervisorId} AND master_type = #{masterType} AND user_type = '1' AND deleted = 0")
+    Integer countStudentListBySupervisorId(@Param("supervisorId") Integer supervisorId, @Param("masterType") Integer masterType);
 
 
-//    //是否开启弹窗
-//    @Select("SELECT is_selection_")
-//    Map<String,Integer>
+
+    //弹窗值
+    @Select("SELECT * FROM system_is_pop WHERE id = 1")
+    PopDo selectPopData();
+
+    @Update("UPDATE system_is_pop SET is_student = #{popData.isStudent}, is_supervisor = #{popData.isSupervisor} WHERE id = 1")
+    void updateIsPop(@Param("popData") PopDo popData);
+
+    @Update("UPDATE system_users SET introduction = #{introduction} WHERE id = #{id}")
+    void updateUserIntroduction(@Param("id") Long id, @Param("introduction") String introduction);
 }
 }

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

@@ -53,6 +53,8 @@ public interface studentSelectSupervisorRecordService {
      */
      */
     PageResult<studentSelectSupervisorRecordDO> getStudentSelectSupervisorRecordPage(studentSelectSupervisorRecordPageReqVO pageReqVO);
     PageResult<studentSelectSupervisorRecordDO> getStudentSelectSupervisorRecordPage(studentSelectSupervisorRecordPageReqVO pageReqVO);
 
 
-    Integer getSelectionOccupiedSlots( Integer projectId, Integer supervisorId,Integer masterType);
+    List<studentSelectSupervisorRecordDO> getStudentSelectSupervisorRecordList(studentSelectSupervisorRecordPageReqVO pageReqVO);
+
+    studentSelectSupervisorRecordDO getRecordByStudentIdAndSupervisorId( Long studentId ,Long supervisorId,Integer selectType);
 
 
 }
 }

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

@@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
 import cn.iocoder.yudao.module.system.service.permission.PermissionService;
 import cn.iocoder.yudao.module.system.service.permission.PermissionService;
 import cn.iocoder.yudao.module.system.service.user.AdminUserService;
 import cn.iocoder.yudao.module.system.service.user.AdminUserService;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.validation.annotation.Validated;
@@ -80,12 +81,33 @@ public class studentSelectSupervisorRecordServiceImpl implements studentSelectSu
         Long loginId = SecurityFrameworkUtils.getLoginUserId();
         Long loginId = SecurityFrameworkUtils.getLoginUserId();
         AdminUserDO loginUser = adminUserService.getUser(loginId);
         AdminUserDO loginUser = adminUserService.getUser(loginId);
         Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(loginId);
         Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(loginId);
-        return studentSelectSupervisorRecordMapper.selectPage(pageReqVO,roleIds,loginUser);
+        PageResult<studentSelectSupervisorRecordDO> result =studentSelectSupervisorRecordMapper.selectPage(pageReqVO,roleIds,loginUser);
+        result.getList().forEach(re->{
+            AdminUserDO supervisor =adminUserService.getUser(re.getSupervisorId());
+            re.setSupervisor(supervisor.getNickname());
+        });
+        return result;
     }
     }
 
 
     @Override
     @Override
-    public Integer getSelectionOccupiedSlots( Integer projectId, Integer supervisorId ,Integer masterType){
-        return studentSelectSupervisorRecordMapper.getSelectionOccupiedSlots(projectId,supervisorId,masterType);
+    public List<studentSelectSupervisorRecordDO> getStudentSelectSupervisorRecordList(studentSelectSupervisorRecordPageReqVO listReqVO){
+        Long loginId = SecurityFrameworkUtils.getLoginUserId();
+        AdminUserDO loginUser = adminUserService.getUser(loginId);
+        Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(loginId);
+        List<studentSelectSupervisorRecordDO> result = studentSelectSupervisorRecordMapper.selectList(listReqVO,roleIds,loginUser);
+        result.forEach(re->{
+            AdminUserDO supervisor =adminUserService.getUser(re.getSupervisorId());
+            if (supervisor!=null) {
+                re.setSupervisor(supervisor.getNickname());
+                re.setSupervisorType(supervisor.getUserType());
+            }
+        });
+        return result;
+    }
+
+    @Override
+    public studentSelectSupervisorRecordDO getRecordByStudentIdAndSupervisorId(Long studentId , Long supervisorId, Integer selectType){
+        return studentSelectSupervisorRecordMapper.getRecordByStudentIdAndSupervisorId(studentId,supervisorId,selectType);
     }
     }
 
 
 }
 }

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

@@ -42,6 +42,8 @@ public interface studentSelectionProjectService {
      */
      */
     studentSelectionProjectDO getStudentSelectionProject(Integer id);
     studentSelectionProjectDO getStudentSelectionProject(Integer id);
 
 
+    studentSelectionProjectDO getStudentSelectionProjectByYear(Integer year);
+
     /**
     /**
      * 获得师生互选项目分页
      * 获得师生互选项目分页
      *
      *

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

@@ -53,6 +53,7 @@ public class studentSelectionProjectServiceImpl implements studentSelectionProje
         validateStudentSelectionProjectExists(updateReqVO.getId());
         validateStudentSelectionProjectExists(updateReqVO.getId());
         // 更新
         // 更新
         studentSelectionProjectDO updateObj = BeanUtils.toBean(updateReqVO, studentSelectionProjectDO.class);
         studentSelectionProjectDO updateObj = BeanUtils.toBean(updateReqVO, studentSelectionProjectDO.class);
+//        System.out.println(updateReqVO.getSupervisorIds());
         studentSelectionProjectMapper.updateById(updateObj);
         studentSelectionProjectMapper.updateById(updateObj);
     }
     }
 
 
@@ -82,5 +83,9 @@ public class studentSelectionProjectServiceImpl implements studentSelectionProje
         Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(loginId);
         Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(loginId);
         return studentSelectionProjectMapper.selectPage(pageReqVO,roleIds,loginUser);
         return studentSelectionProjectMapper.selectPage(pageReqVO,roleIds,loginUser);
     }
     }
+    @Override
+    public studentSelectionProjectDO getStudentSelectionProjectByYear(Integer year){
+        return studentSelectionProjectMapper.selectByYear(year);
+    }
 
 
 }
 }

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

@@ -52,4 +52,6 @@ public interface supervisorSelectionSettingService {
      */
      */
     PageResult<supervisorSelectionSettingDO> getSupervisorSelectionSettingPage(supervisorSelectionSettingPageReqVO pageReqVO);
     PageResult<supervisorSelectionSettingDO> getSupervisorSelectionSettingPage(supervisorSelectionSettingPageReqVO pageReqVO);
 
 
+    supervisorSelectionSettingDO getSettingBySupervisorId(Long id);
+
 }
 }

+ 22 - 1
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/supervisorSelectionSetting/supervisorSelectionSettingServiceImpl.java

@@ -1,5 +1,9 @@
 package cn.iocoder.yudao.module.system.service.supervisorSelectionSetting;
 package cn.iocoder.yudao.module.system.service.supervisorSelectionSetting;
 
 
+import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
+import cn.iocoder.yudao.module.system.dal.dataobject.studentSelectSupervisorRecord.studentSelectSupervisorRecordDO;
+import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
+import cn.iocoder.yudao.module.system.service.permission.PermissionService;
 import cn.iocoder.yudao.module.system.service.studentSelectSupervisorRecord.studentSelectSupervisorRecordService;
 import cn.iocoder.yudao.module.system.service.studentSelectSupervisorRecord.studentSelectSupervisorRecordService;
 import cn.iocoder.yudao.module.system.service.user.AdminUserService;
 import cn.iocoder.yudao.module.system.service.user.AdminUserService;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
@@ -34,6 +38,8 @@ public class supervisorSelectionSettingServiceImpl implements supervisorSelectio
     private AdminUserService adminUserService;
     private AdminUserService adminUserService;
     @Resource
     @Resource
     private studentSelectSupervisorRecordService studentSelectSupervisorRecordService;
     private studentSelectSupervisorRecordService studentSelectSupervisorRecordService;
+    @Resource
+    private PermissionService permissionService;
 
 
     @Override
     @Override
     public Integer createSupervisorSelectionSetting(supervisorSelectionSettingSaveReqVO createReqVO) {
     public Integer createSupervisorSelectionSetting(supervisorSelectionSettingSaveReqVO createReqVO) {
@@ -74,15 +80,30 @@ public class supervisorSelectionSettingServiceImpl implements supervisorSelectio
 
 
     @Override
     @Override
     public PageResult<supervisorSelectionSettingDO> getSupervisorSelectionSettingPage(supervisorSelectionSettingPageReqVO pageReqVO) {
     public PageResult<supervisorSelectionSettingDO> getSupervisorSelectionSettingPage(supervisorSelectionSettingPageReqVO pageReqVO) {
-        PageResult<supervisorSelectionSettingDO> result =supervisorSelectionSettingMapper.selectPage(pageReqVO);
+        Long loginId = SecurityFrameworkUtils.getLoginUserId();
+        AdminUserDO loginUser = adminUserService.getUser(loginId);
+        Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(loginId);
+        PageResult<supervisorSelectionSettingDO> result =supervisorSelectionSettingMapper.selectPage(pageReqVO,roleIds,loginUser);
+
         result.getList().forEach(re->{
         result.getList().forEach(re->{
             Integer supervisorId =re.getSupervisorId();
             Integer supervisorId =re.getSupervisorId();
             Integer  occupiedAcademicSlots =adminUserService.countStudentListBySupervisorId(supervisorId,1);//占用学硕
             Integer  occupiedAcademicSlots =adminUserService.countStudentListBySupervisorId(supervisorId,1);//占用学硕
             Integer  occupiedProfessionalSlots =adminUserService.countStudentListBySupervisorId(supervisorId,2);//占用专硕
             Integer  occupiedProfessionalSlots =adminUserService.countStudentListBySupervisorId(supervisorId,2);//占用专硕
             re.setOccupiedAcademicSlots(occupiedAcademicSlots);
             re.setOccupiedAcademicSlots(occupiedAcademicSlots);
             re.setOccupiedProfessionalSlots(occupiedProfessionalSlots);
             re.setOccupiedProfessionalSlots(occupiedProfessionalSlots);
+            if (roleIds.contains(112L)){
+                studentSelectSupervisorRecordDO record = studentSelectSupervisorRecordService.getRecordByStudentIdAndSupervisorId(loginId, Long.valueOf(supervisorId),1);//待处理的
+                if (record!=null){
+                    re.setSelectType(1);
+                }
+            }
+
         });
         });
         return result;
         return result;
     }
     }
+    @Override
+   public supervisorSelectionSettingDO getSettingBySupervisorId(Long supervisorId){
+        return supervisorSelectionSettingMapper.getSettingBySupervisorId(supervisorId);
+    }
 
 
 }
 }

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

@@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfi
 import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.*;
 import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.*;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
+import cn.iocoder.yudao.module.system.dal.dataobject.user.PopDo;
 import cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper;
 import cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
 
 
@@ -241,6 +242,14 @@ public interface AdminUserService {
     List<AdminUserDO> getStudentErrorAttendance();
     List<AdminUserDO> getStudentErrorAttendance();
 
 
     Integer countStudentListBySupervisorId(Integer supervisorId,Integer masterType);
     Integer countStudentListBySupervisorId(Integer supervisorId,Integer masterType);
+
+    //是否弹窗
+    PopDo getPopData();
+
+    //更新弹窗
+    void updatePop(PopDo popDo);
+    //
+    void updateUserIntroduction(String introduction);
 }
 }
 
 
 
 

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

@@ -24,13 +24,16 @@ import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.*;
 import cn.iocoder.yudao.module.system.controller.admin.userAchievement.vo.UserAchievementPageReqVO;
 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.dept.DeptDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.dept.UserPostDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.dept.UserPostDO;
+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.AdminUserDO;
+import cn.iocoder.yudao.module.system.dal.dataobject.user.PopDo;
 import cn.iocoder.yudao.module.system.dal.dataobject.userAchievement.UserAchievementDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.userAchievement.UserAchievementDO;
 import cn.iocoder.yudao.module.system.dal.mysql.dept.UserPostMapper;
 import cn.iocoder.yudao.module.system.dal.mysql.dept.UserPostMapper;
 import cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper;
 import cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper;
 import cn.iocoder.yudao.module.system.service.dept.DeptService;
 import cn.iocoder.yudao.module.system.service.dept.DeptService;
 import cn.iocoder.yudao.module.system.service.dept.PostService;
 import cn.iocoder.yudao.module.system.service.dept.PostService;
 import cn.iocoder.yudao.module.system.service.permission.PermissionService;
 import cn.iocoder.yudao.module.system.service.permission.PermissionService;
+import cn.iocoder.yudao.module.system.service.studentSelectionProject.studentSelectionProjectService;
 import cn.iocoder.yudao.module.system.service.tenant.TenantService;
 import cn.iocoder.yudao.module.system.service.tenant.TenantService;
 import cn.iocoder.yudao.module.system.service.userAchievement.UserAchievementService;
 import cn.iocoder.yudao.module.system.service.userAchievement.UserAchievementService;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.annotations.VisibleForTesting;
@@ -38,6 +41,7 @@ import com.mzt.logapi.context.LogRecordContext;
 import com.mzt.logapi.service.impl.DiffParseFunction;
 import com.mzt.logapi.service.impl.DiffParseFunction;
 import com.mzt.logapi.starter.annotation.LogRecord;
 import com.mzt.logapi.starter.annotation.LogRecord;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
@@ -46,6 +50,7 @@ import org.springframework.transaction.annotation.Transactional;
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import javax.validation.ConstraintViolationException;
 import javax.validation.ConstraintViolationException;
 import java.io.InputStream;
 import java.io.InputStream;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.util.*;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
@@ -91,6 +96,9 @@ public class AdminUserServiceImpl implements AdminUserService {
     @Resource
     @Resource
     private FileApi fileApi;
     private FileApi fileApi;
 
 
+    @Resource
+    private studentSelectionProjectService studentSelectionProjectService;
+
 
 
     @Override
     @Override
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
@@ -922,7 +930,7 @@ public class AdminUserServiceImpl implements AdminUserService {
                 validateUserForCreateOrUpdate(existUser.getId(), null, importUser.getMobile(), importUser.getEmail(),
                 validateUserForCreateOrUpdate(existUser.getId(), null, importUser.getMobile(), importUser.getEmail(),
                         deptId , null,null,importUser.getUserNumber());
                         deptId , null,null,importUser.getUserNumber());
             } catch (ServiceException ex) {
             } catch (ServiceException ex) {
-                respVO.getFailureUsernames().put(importUser.getNickname(), ex.getMessage());
+                respVO.getFailureUsernames().put(existUser.getNickname(), ex.getMessage());
                 return;
                 return;
             }
             }
             UserSaveReqVO updateUser = BeanUtils.toBean(importUser, UserSaveReqVO.class);
             UserSaveReqVO updateUser = BeanUtils.toBean(importUser, UserSaveReqVO.class);
@@ -998,7 +1006,7 @@ public class AdminUserServiceImpl implements AdminUserService {
                 validateUserForCreateOrUpdate(existUser.getId(), null, importUser.getMobile(), importUser.getEmail(),
                 validateUserForCreateOrUpdate(existUser.getId(), null, importUser.getMobile(), importUser.getEmail(),
                         null , null,importUser.getSupervisor(),importUser.getUserNumber());
                         null , null,importUser.getSupervisor(),importUser.getUserNumber());
             } catch (ServiceException ex) {
             } catch (ServiceException ex) {
-                respVO.getFailureUsernames().put(importUser.getNickname(), ex.getMessage());
+                respVO.getFailureUsernames().put(existUser.getNickname(), ex.getMessage());
                 return;
                 return;
             }
             }
             UserSaveReqVO  updateUser = BeanUtils.toBean(importUser, UserSaveReqVO.class);
             UserSaveReqVO  updateUser = BeanUtils.toBean(importUser, UserSaveReqVO.class);
@@ -1076,14 +1084,14 @@ public class AdminUserServiceImpl implements AdminUserService {
                 roleIds.add(112L);//学生权限
                 roleIds.add(112L);//学生权限
                 permissionService.assignUserRole(userId,roleIds);
                 permissionService.assignUserRole(userId,roleIds);
 
 
-                respVO.getCreateUsernames().add(importUser.getNickname());
+                respVO.getCreateUsernames().add(newUser.getNickname());
                 return;
                 return;
             }
             }
 
 
             // 2.2.2 如果存在,不允许更新
             // 2.2.2 如果存在,不允许更新
             if (!isUpdateSupport) {
             if (!isUpdateSupport) {
                 if (importUser.getUsername()!=null) {
                 if (importUser.getUsername()!=null) {
-                    respVO.getFailureUsernames().put(importUser.getNickname(), USER_USERNUMBER_EXISTS.getMsg());
+                    respVO.getFailureUsernames().put(existUser.getNickname(), USER_USERNUMBER_EXISTS.getMsg());
                     return;
                     return;
                 }
                 }
             }
             }
@@ -1093,7 +1101,7 @@ public class AdminUserServiceImpl implements AdminUserService {
                 validateUserForCreateOrUpdate(existUser.getId(), null, importUser.getMobile(), importUser.getEmail(),
                 validateUserForCreateOrUpdate(existUser.getId(), null, importUser.getMobile(), importUser.getEmail(),
                         deptId , null, importUser.getSupervisor(),importUser.getUserNumber());
                         deptId , null, importUser.getSupervisor(),importUser.getUserNumber());
             } catch (ServiceException ex) {
             } catch (ServiceException ex) {
-                respVO.getFailureUsernames().put(importUser.getNickname(), ex.getMessage());
+                respVO.getFailureUsernames().put(existUser.getNickname(), ex.getMessage());
                 return;
                 return;
             }
             }
 
 
@@ -1180,5 +1188,24 @@ public class AdminUserServiceImpl implements AdminUserService {
      public Integer countStudentListBySupervisorId(Integer supervisorId,Integer masterType){
      public Integer countStudentListBySupervisorId(Integer supervisorId,Integer masterType){
         return userMapper.countStudentListBySupervisorId(supervisorId,masterType);
         return userMapper.countStudentListBySupervisorId(supervisorId,masterType);
     }
     }
+
+    //弹窗值
+    @Override
+    public PopDo getPopData(){
+        return userMapper.selectPopData();
+    }
+
+    //更新弹窗
+    @Override
+    public void updatePop(PopDo popData){
+            userMapper.updateIsPop(popData);
+    }
+
+    //跟新用户简历
+    @Override
+    public void updateUserIntroduction(String introduction){
+        Long loginId =SecurityFrameworkUtils.getLoginUserId();
+        userMapper.updateUserIntroduction(loginId,introduction);
+    }
 }
 }
 
 

+ 15 - 0
yudao-module-system/yudao-module-system-biz/src/main/resources/Mapper/studentSelectSupervisorRecord/studentSelectSupervisorRecordMapper.xml

@@ -9,4 +9,19 @@
         文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
         文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
      -->
      -->
 
 
+    <select id="getRecordByStudentIdAndSupervisorId" resultType="cn.iocoder.yudao.module.system.dal.dataobject.studentSelectSupervisorRecord.studentSelectSupervisorRecordDO">
+            SELECT * FROM student_select_supervisor_record
+            WHERE deleted = 0
+            <if test="studentId != null">
+                AND student_id = #{studentId}
+            </if>
+            <if test="supervisorId != null">
+                AND supervisor_id = #{supervisorId}
+            </if>
+            <if test="selectType != null">
+                AND select_type = #{selectType}
+            </if>
+    </select>
+
+
 </mapper>
 </mapper>

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

@@ -397,4 +397,10 @@
         ORDER BY
         ORDER BY
         a.id
         a.id
     </select>
     </select>
+
+    <select id="selectIsPop" resultType="Long">
+
+    </select>
+
+
 </mapper>
 </mapper>