Browse Source

1.13,补充

Crazy 6 months ago
parent
commit
ed93ee043f

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

@@ -61,6 +61,19 @@ public class StudentSelectSupervisorRecordController {
     @Resource
     private studentSelectionProjectService studentSelectionProjectService;
 
+    private Integer getOccupiedSlots(String studentGrade ,Long userId,Integer masterType){
+        Integer occupiedSlots = 0;
+        if (userId!=null){
+            AdminUserDO user =adminUserService.getUser(userId);
+            if (user.getUserType().equals("3")){
+                occupiedSlots = adminUserService.countStudentListBySupervisorId(studentGrade,userId, masterType);//
+            }else if (user.getUserType().equals("5")){
+                occupiedSlots = adminUserService.countStudentListByExternalSupervisorId(studentGrade,userId, masterType);//
+            }
+        }
+        return occupiedSlots;
+    }
+
 
     @PostMapping("/create")
     @Operation(summary = "创建师生互选记录")
@@ -74,8 +87,8 @@ public class StudentSelectSupervisorRecordController {
         if ((roleIds.contains(112L) || roleIds.contains(113L)) && project.getSupervisorConfirmDeadline().isBefore(dateTime)) {
             return error(1, "该项目已过截至日期");
         }else {
-            Integer occupiedAcademicSlots = adminUserService.countStudentListBySupervisorId(project.getStudentGrade(),createReqVO.getSupervisorId(), 1);//占用学硕
-            Integer occupiedProfessionalSlots = adminUserService.countStudentListBySupervisorId(project.getStudentGrade(),createReqVO.getSupervisorId(), 2);//占用专硕
+            Integer occupiedAcademicSlots = getOccupiedSlots(project.getStudentGrade(),createReqVO.getSupervisorId(), 1);//占用学硕
+            Integer occupiedProfessionalSlots = getOccupiedSlots(project.getStudentGrade(),createReqVO.getSupervisorId(), 2);//占用专硕
             supervisorSelectionSettingDO supervisorSelectionSetting = supervisorSelectionSettingService.getSettingBySupervisorIdAndProjectId(createReqVO.getSupervisorId(), createReqVO.getProjectId());
 
             if (supervisorSelectionSetting == null || (supervisorSelectionSetting.getAcademicSlots() == null && supervisorSelectionSetting.getProfessionalSlots() == null)) {
@@ -134,8 +147,8 @@ public class StudentSelectSupervisorRecordController {
         }
         Integer selectStatus =adminUserService.getUserSelectStatus(createReqVO.getStudentId(),project.getId());
         if (selectStatus==0) {//未提交的
-            Integer occupiedAcademicSlots = adminUserService.countStudentListBySupervisorId(project.getStudentGrade(), createReqVO.getSupervisorId(), 1);//占用学硕
-            Integer occupiedProfessionalSlots = adminUserService.countStudentListBySupervisorId(project.getStudentGrade(), createReqVO.getSupervisorId(), 2);//占用专硕
+            Integer occupiedAcademicSlots = getOccupiedSlots(project.getStudentGrade(), createReqVO.getSupervisorId(), 1);//占用学硕
+            Integer occupiedProfessionalSlots = getOccupiedSlots(project.getStudentGrade(), createReqVO.getSupervisorId(), 2);//占用专硕
             supervisorSelectionSettingDO supervisorSelectionSetting = supervisorSelectionSettingService.getSettingBySupervisorIdAndProjectId(createReqVO.getSupervisorId(), project.getId());
 
             if (supervisorSelectionSetting == null || (supervisorSelectionSetting.getAcademicSlots() == null && supervisorSelectionSetting.getProfessionalSlots() == null)) {
@@ -207,8 +220,8 @@ public class StudentSelectSupervisorRecordController {
         studentSelectionProjectSaveReqVO project = BeanUtils.toBean(studentSelectionProjectService.getStudentSelectionProject(record.getProjectId()), studentSelectionProjectSaveReqVO.class);
 
         AdminUserDO user =adminUserService.getUser(record.getStudentId());
-        Integer  occupiedAcademicSlots =adminUserService.countStudentListBySupervisorId(project.getStudentGrade(),updateReqVO.getSupervisorId(),1);//占用学硕
-        Integer  occupiedProfessionalSlots =adminUserService.countStudentListBySupervisorId(project.getStudentGrade(),updateReqVO.getSupervisorId(),2);//占用专硕
+        Integer  occupiedAcademicSlots =getOccupiedSlots(project.getStudentGrade(),updateReqVO.getSupervisorId(),1);//占用学硕
+        Integer  occupiedProfessionalSlots =getOccupiedSlots(project.getStudentGrade(),updateReqVO.getSupervisorId(),2);//占用专硕
         supervisorSelectionSettingDO supervisorSelectionSetting = supervisorSelectionSettingService.getSettingBySupervisorIdAndProjectId(updateReqVO.getSupervisorId(), record.getProjectId());
         // 检查导师是否有名额设置
         if (supervisorSelectionSetting == null || (supervisorSelectionSetting.getAcademicSlots() == null && supervisorSelectionSetting.getProfessionalSlots() == null)) {
@@ -330,8 +343,8 @@ public class StudentSelectSupervisorRecordController {
                 Long loginId = SecurityFrameworkUtils.getLoginUserId();
                 Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(loginId);
 
-                Integer occupiedAcademicSlots = adminUserService.countStudentListBySupervisorId(project.getStudentGrade(), loginId, 1);//占用学硕名额
-                Integer occupiedProfessionalSlots = adminUserService.countStudentListBySupervisorId(project.getStudentGrade(), loginId, 2);//占用专硕名额
+                Integer occupiedAcademicSlots = getOccupiedSlots(project.getStudentGrade(), loginId, 1);//占用学硕名额
+                Integer occupiedProfessionalSlots = getOccupiedSlots(project.getStudentGrade(), loginId, 2);//占用专硕名额
 
                 supervisorSelectionSettingDO supervisorSelectionSetting = supervisorSelectionSettingService.getSettingBySupervisorIdAndProjectId(loginId, project.getId());
                 // 检查导师是否有名额设置

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

@@ -316,7 +316,7 @@ public class studentSelectionProjectController {
     }
 
     @GetMapping("/getProjectSupervisors")
-    @Operation(summary = "获取当前项目的导师")
+    @Operation(summary = "获取当前项目的全部导师")
     public CommonResult<List<AdminUserDO>> getProjectSupervisors() {
         // 获取项目数据并转换成相应的 VO
         LocalDate date =LocalDate.now();
@@ -336,6 +336,27 @@ public class studentSelectionProjectController {
         return success(supervisors);
     }
 
+    @GetMapping("/getProjectInnerSupervisors")
+    @Operation(summary = "获取当前项目的校内导师列表")
+    public CommonResult<List<AdminUserDO>> getProjectInnerSupervisors() {
+        // 获取项目数据并转换成相应的 VO
+        LocalDate date =LocalDate.now();
+        Integer lastYear =date.getYear()-1 ;
+        studentSelectionProjectSaveReqVO project =new studentSelectionProjectSaveReqVO();
+        studentSelectionProjectSaveReqVO project1 = BeanUtils.toBean(studentSelectionProjectService.getStudentSelectionProjectByYear(lastYear),studentSelectionProjectSaveReqVO.class);
+        studentSelectionProjectSaveReqVO project2 = BeanUtils.toBean(studentSelectionProjectService.getStudentSelectionProjectByYear(date.getYear()),studentSelectionProjectSaveReqVO.class);
+        project =project1==null?project2:project1;
+        if (project==null) {
+            return error(1,"还没有创建互选项目");
+        }
+
+        List<Long> supervisorIds = project.getSupervisorIds();
+        Set<Long> newSupervisorIds = new HashSet<>(supervisorIds);
+        List<AdminUserDO> supervisors = adminUserService.getUserList(newSupervisorIds);
+
+        return success(supervisors);
+    }
+
     @GetMapping("/getStudentSelectExternalSupervisorsList")
     @Operation(summary = "获取当前项目所有选择校外导师的")
     public CommonResult<List<AdminUserDO>> getStudentSelectExternalSupervisorsList(@RequestParam("projectId") Long projectId) {

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

@@ -151,10 +151,14 @@ public class supervisorSelectionSettingController {
         }
         Integer  occupiedAcademicSlots =adminUserService.countStudentListBySupervisorId(project.getStudentGrade(),loginId,1);//占用学硕
         Integer  occupiedProfessionalSlots =adminUserService.countStudentListBySupervisorId(project.getStudentGrade(),loginId,2);//占用专硕
+        Integer agentAcademicSlots  =adminUserService.countAgentStudentListBySupervisorId(project.getStudentGrade(),loginId,1);//代理学硕
+        Integer agentProfessionalSlots  =adminUserService.countAgentStudentListBySupervisorId(project.getStudentGrade(),loginId,2);//代理专硕
         supervisorSelectionSettingDO settingDO = supervisorSelectionSettingService.getSettingBySupervisorIdAndProjectId(loginId,project.getId());
         settingDO.setOccupiedAcademicSlots(occupiedAcademicSlots);
         settingDO.setOccupiedAcademicSlots(occupiedProfessionalSlots);
-        return success(supervisorSelectionSettingService.getSettingBySupervisorIdAndProjectId(loginId,project.getId()));
+        settingDO.setAgentAcademicSlots(agentAcademicSlots);
+        settingDO.setAgentProfessionalSlots(agentProfessionalSlots);
+        return success(settingDO);
     }
 
 }

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

@@ -85,6 +85,18 @@ public class supervisorSelectionSettingDO extends BaseDO {
     @TableField(exist = false)
     private  Integer  occupiedProfessionalSlots;
 
+    /**
+     * 代理学硕名额
+     */
+    @TableField(exist = false)
+    private  Integer  agentAcademicSlots;
+
+    /**
+     * 代理专硕名额
+     */
+    @TableField(exist = false)
+    private  Integer  agentProfessionalSlots;
+
     @TableField(exist = false)
     private  Integer selectType;
 

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

@@ -329,9 +329,15 @@ public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
             "HAVING COUNT(sa.id) > 2;")
     List<AdminUserDO> getStudentErrorAttendance();
 
-    @Select("SELECT COUNT(*) FROM system_users WHERE grade =#{grade} AND supervisor_id = #{supervisorId} AND master_type = #{masterType} AND user_type = '1' AND deleted = 0")
+    @Select("SELECT COUNT(*) FROM system_users WHERE grade =#{grade} AND supervisor_id = #{supervisorId} AND (external_supervisor_id IS NULL OR external_supervisor_id != 0)  AND master_type = #{masterType} AND user_type = '1' AND deleted = 0")
     Integer countStudentListBySupervisorId(@Param("grade") String grade,@Param("supervisorId") Long supervisorId, @Param("masterType") Integer masterType);
 
+    @Select("SELECT COUNT(*) FROM system_users WHERE grade =#{grade} AND external_supervisor_id = #{externalSupervisorId} AND master_type = #{masterType} AND user_type = '1' AND deleted = 0")
+    Integer countStudentListByExternalSupervisorId(@Param("grade") String grade,@Param("externalSupervisorId") Long externalSupervisorId, @Param("masterType") Integer masterType);
+
+    //代理人数
+    @Select("SELECT COUNT(*) FROM system_users WHERE grade =#{grade} AND supervisor_id = #{supervisorId} AND external_supervisor_id IS NOT NULL AND external_supervisor_id != 0  AND master_type = #{masterType} AND user_type = '1' AND deleted = 0")
+    Integer countAgentStudentListBySupervisorId(@Param("grade") String grade,@Param("supervisorId") Long supervisorId, @Param("masterType") Integer masterType);
 
     //弹窗值
     @Select("SELECT * FROM system_is_pop WHERE id = 1")

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

@@ -94,10 +94,24 @@ public class supervisorSelectionSettingServiceImpl implements supervisorSelectio
 
         result.getList().forEach(re->{
             Long supervisorId = re.getSupervisorId();
-            Integer  occupiedAcademicSlots =adminUserService.countStudentListBySupervisorId(project.getStudentGrade(),supervisorId,1);//占用学硕
-            Integer  occupiedProfessionalSlots =adminUserService.countStudentListBySupervisorId(project.getStudentGrade(),supervisorId,2);//占用专硕
+            AdminUserDO user =adminUserService.getUser(re.getSupervisorId());
+            Integer  occupiedAcademicSlots =null;
+            Integer  occupiedProfessionalSlots =null;
+            Integer  agentAcademicSlots =null;
+            Integer  agentProfessionalSlots =null;
+            if (user.getUserType().equals("3")){
+                occupiedAcademicSlots =adminUserService.countStudentListBySupervisorId(project.getStudentGrade(),supervisorId,1);//占用学硕
+                occupiedProfessionalSlots =adminUserService.countStudentListBySupervisorId(project.getStudentGrade(),supervisorId,2);//占用专硕
+                agentAcademicSlots  =adminUserService.countAgentStudentListBySupervisorId(project.getStudentGrade(),supervisorId,1);//代理学硕
+                agentProfessionalSlots  =adminUserService.countAgentStudentListBySupervisorId(project.getStudentGrade(),supervisorId,2);//代理专硕
+            }else if (user.getUserType().equals("5")){
+                occupiedAcademicSlots =adminUserService.countStudentListByExternalSupervisorId(project.getStudentGrade(),supervisorId,1);//占用学硕
+                occupiedProfessionalSlots =adminUserService.countStudentListByExternalSupervisorId(project.getStudentGrade(),supervisorId,2);//占用专硕
+            }
             re.setOccupiedAcademicSlots(occupiedAcademicSlots);
             re.setOccupiedProfessionalSlots(occupiedProfessionalSlots);
+            re.setAgentAcademicSlots(agentAcademicSlots);
+            re.setAgentProfessionalSlots(agentProfessionalSlots);
             if (roleIds.contains(112L)){
                 studentSelectSupervisorRecordDO record1 = studentSelectSupervisorRecordService.getRecordByStudentIdAndSupervisorId(pageReqVO.getProjectId(),loginId,supervisorId,1);//待处理的
                 studentSelectSupervisorRecordDO record2 = studentSelectSupervisorRecordService.getRecordByStudentIdAndSupervisorId(pageReqVO.getProjectId(),loginId,supervisorId,2);//同意的

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

@@ -250,6 +250,10 @@ public interface AdminUserService {
     List<AdminUserDO> getStudentErrorAttendance();
 
     Integer countStudentListBySupervisorId(String grade ,Long supervisorId,Integer masterType);
+    Integer countStudentListByExternalSupervisorId(String grade ,Long externalSupervisorId,Integer masterType);
+    //校内导师代理人数
+    Integer countAgentStudentListBySupervisorId(String grade ,Long supervisorId,Integer masterType);
+
 
     //是否弹窗
     PopDo getPopData();

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

@@ -1181,10 +1181,21 @@ public class AdminUserServiceImpl implements AdminUserService {
     public  List<AdminUserDO> getStudentErrorAttendance(){
         return userMapper.getStudentErrorAttendance();
     }
+
+    //TODO 项目名额相关
     @Override
      public Integer countStudentListBySupervisorId(String grade ,Long supervisorId,Integer masterType){
         return userMapper.countStudentListBySupervisorId(grade,supervisorId,masterType);
     }
+    @Override
+    public Integer countStudentListByExternalSupervisorId(String grade ,Long externalSupervisorId,Integer masterType){
+        return userMapper.countStudentListByExternalSupervisorId(grade,externalSupervisorId,masterType);
+    }
+    //代理人数
+    @Override
+    public Integer countAgentStudentListBySupervisorId(String grade ,Long supervisorId,Integer masterType){
+        return userMapper.countAgentStudentListBySupervisorId(grade,supervisorId,masterType);
+    }
 
     //弹窗值
     @Override