浏览代码

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentSelectionProject/studentSelectionProjectController.java
ydmyzx 3 月之前
父节点
当前提交
5e2a0601a6

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

@@ -252,7 +252,7 @@ public class StudentSelectSupervisorRecordController {
                 return error(1, "该老师专硕名额已经满了");
             }
         }
-            //更新志愿
+
             UserSaveReqVO saveReqVO = new UserSaveReqVO();
             saveReqVO.setId(record.getStudentId());
 
@@ -271,7 +271,8 @@ public class StudentSelectSupervisorRecordController {
                     }
                 }
             }
-
+        //更新记录
+          record.setSupervisorId(updateReqVO.getSupervisorId());
           if (record.getSelectType() == 2) {//同意了的
                 //初始化记录里面的签名 TODO
                 record.setSupervisorApproveTime(null);//审批时间
@@ -282,6 +283,7 @@ public class StudentSelectSupervisorRecordController {
             } else if (record.getSelectType() == 1) {//待处理的
                 record.setStudentSignature(null);//学生签名
                 record.setStudentSignDate(null);
+                record.setSelectType(2);//同意
             }
             adminUserService.updateUser(saveReqVO);
             studentSelectSupervisorRecordService.updateRecordNull(BeanUtils.toBean(record, StudentSelectSupervisorRecordSaveReqVO.class));

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

@@ -148,7 +148,14 @@ public class studentSelectionProjectController {
 
                 // 根据 request 中的名额信息设置名额
                 Map<String, String> supervisorQuota = findSupervisorQuotaById(updateReqVO.getSupervisorsWithQuota(), supervisorId);
+
                 if (supervisorQuota != null) {
+                    Integer  occupiedAcademicSlots =adminUserService.countStudentListBySupervisorId(project.getStudentGrade(),supervisorId,1);//占用学硕
+                    Integer  occupiedProfessionalSlots =adminUserService.countStudentListBySupervisorId(project.getStudentGrade(),supervisorId,2);//占用专硕
+
+                    if (Long.parseLong(supervisorQuota.get("academicSlots"))<occupiedAcademicSlots ||Long.parseLong(supervisorQuota.get("professionalSlots"))<occupiedProfessionalSlots){
+                        continue;
+                    }
                     settingSaveReqVO.setAcademicSlots(Integer.valueOf(supervisorQuota.get("academicSlots")));
                     settingSaveReqVO.setProfessionalSlots(Integer.valueOf(supervisorQuota.get("professionalSlots")));
 
@@ -173,24 +180,23 @@ public class studentSelectionProjectController {
                 .collect(Collectors.toList());
 
         // 更新已有的导师(名额发生变化的导师)
-        for (supervisorSelectionSettingDO supervisor : originSupervisors) {
-
-            Integer  occupiedAcademicSlots =adminUserService.countStudentListBySupervisorId(project.getStudentGrade(),supervisor.getSupervisorId(),1);//占用学硕
-            Integer  occupiedProfessionalSlots =adminUserService.countStudentListBySupervisorId(project.getStudentGrade(),supervisor.getSupervisorId(),2);//占用专硕
+        List<String> errorSupervisor =new ArrayList<>();
+        for (supervisorSelectionSettingDO supervisorSetting : originSupervisors) {
 
             supervisorSelectionSettingSaveReqVO settingSaveReqVO = new supervisorSelectionSettingSaveReqVO();
-            settingSaveReqVO.setId(supervisor.getId());
-            settingSaveReqVO.setSupervisorId(supervisor.getSupervisorId());
+            settingSaveReqVO.setId(supervisorSetting.getId());
+            settingSaveReqVO.setSupervisorId(supervisorSetting.getSupervisorId());
             settingSaveReqVO.setProjectId(updateReqVO.getId());
 
             // 根据 request 中的名额信息设置名额
-            Map<String, String> supervisorQuota = findSupervisorQuotaById(updateReqVO.getSupervisorsWithQuota(), supervisor.getSupervisorId());
-
+            Map<String, String> supervisorQuota = findSupervisorQuotaById(updateReqVO.getSupervisorsWithQuota(), supervisorSetting.getSupervisorId());
+            AdminUserDO supervisor =adminUserService.getUser(supervisorSetting.getSupervisorId());
             if (supervisorQuota != null) {
-                if (Integer.parseInt(supervisorQuota.get("academicSlots"))<occupiedAcademicSlots){
-                    continue;
-                }
-                if (Integer.parseInt(supervisorQuota.get("professionalSlots"))<occupiedProfessionalSlots){
+                Integer  occupiedAcademicSlots =adminUserService.countStudentListBySupervisorId(project.getStudentGrade(),supervisorSetting.getSupervisorId(),1);//占用学硕
+                Integer  occupiedProfessionalSlots =adminUserService.countStudentListBySupervisorId(project.getStudentGrade(),supervisorSetting.getSupervisorId(),2);//占用专硕
+
+                if (Long.parseLong(supervisorQuota.get("academicSlots"))<occupiedAcademicSlots ||Long.parseLong(supervisorQuota.get("professionalSlots"))<occupiedProfessionalSlots){
+                    errorSupervisor.add(supervisor.getNickname());
                     continue;
                 }
                 settingSaveReqVO.setAcademicSlots(Integer.valueOf(supervisorQuota.get("academicSlots")));
@@ -201,7 +207,9 @@ public class studentSelectionProjectController {
 
         // 更新项目
         studentSelectionProjectService.updateStudentSelectionProject(updateReqVO);
-
+        if (!errorSupervisor.isEmpty()){
+            return error(1,errorSupervisor+"名额设置错误");
+        }
         return success(true);
     }
 

+ 2 - 1
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/studentSelectionProject/vo/studentSelectionProjectPageReqVO.java

@@ -20,9 +20,10 @@ public class studentSelectionProjectPageReqVO extends PageParam {
 
     @Schema(description = "学生开始时间")
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] studentStartTime;
+    private LocalDateTime studentStartTime;
 
     @Schema(description = "导师截止时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
     private LocalDateTime supervisorConfirmDeadline;
 
     @Schema(description = "学生年级")

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

@@ -71,11 +71,8 @@ public class supervisorSelectionSettingController {
         Integer  occupiedAcademicSlots =adminUserService.countStudentListBySupervisorId(project.getStudentGrade(),setting.getSupervisorId(),1);//占用学硕
         Integer  occupiedProfessionalSlots =adminUserService.countStudentListBySupervisorId(project.getStudentGrade(),setting.getSupervisorId(),2);//占用专硕
 
-        if (updateReqVO.getAcademicSlots()<occupiedAcademicSlots){
-            return error(1,"占用学硕名额大于更新学硕名额");
-        }
-        if (updateReqVO.getProfessionalSlots()<occupiedProfessionalSlots){
-            return error(1,"占用专硕名额大于更新专硕名额");
+        if (updateReqVO.getAcademicSlots()<occupiedAcademicSlots || updateReqVO.getProfessionalSlots()<occupiedProfessionalSlots){
+            return error(1,"名额设置错误");
         }
 
         supervisorSelectionSettingService.updateSupervisorSelectionSetting(updateReqVO);

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

@@ -631,7 +631,7 @@ public class UserController {
         studentSelectionProjectSaveReqVO project2 = BeanUtils.toBean(studentSelectionProjectService.getStudentSelectionProjectByYear(date.getYear()),studentSelectionProjectSaveReqVO.class);
         project =project1==null?project2:project1;
         if (project==null){
-            return error(1,"请检查今年是否创建了项目");
+            return success(false);
         }
 
         Integer isStudent = result.getIsStudent();

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

@@ -46,6 +46,9 @@ public class StudentProjectRespVO {
     @Schema(description = "导师名称")
     private String supervisor;
 
+    @Schema(description = "导师Id")
+    private String supervisorId;
+
     @Schema(description = "校外导师名称")
     private String externalSupervisor;
 

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

@@ -63,6 +63,10 @@ public class UserRespVO{
     @ExcelProperty("导师名称")
     private String supervisor;
 
+    @Schema(description = "导师id")
+    @ExcelProperty("导师id")
+    private String supervisorId;
+
     @Schema(description = "导师电话")
     @ExcelProperty("导师电话")
     private String supervisorMobile;

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

@@ -428,9 +428,9 @@
         SELECT
         a.*,r.id,r.project_id,r.supervisor_id,
         CASE
-        WHEN COALESCE(MAX(r.select_type), 0) = 2 THEN 2
-        WHEN COALESCE(MAX(r.select_type), 0) = 1 THEN 1
-        ELSE 0
+        WHEN COALESCE(MAX(CASE WHEN r.select_type = 2 THEN 1 ELSE 0 END),0) = 1 THEN 2  -- 如果有 2
+        WHEN COALESCE(MAX(CASE WHEN r.select_type = 1 THEN 1 ELSE 0 END),0) = 1 THEN 1  -- 如果没有 2,但有 1
+        ELSE 0  -- 其他情况
         END AS selectStatus,
 
         -- 计算 selectStatus 为 1 或 2 的记录 id
@@ -499,8 +499,8 @@
         <!-- 合并 HAVING 子句 -->
         HAVING
         CASE
-        WHEN COALESCE(MAX(r.select_type), 0) = 2 THEN 2
-        WHEN COALESCE(MAX(r.select_type), 0) = 1 THEN 1
+        WHEN COALESCE(MAX(CASE WHEN r.select_type = 2 THEN 1 ELSE 0 END),0) = 1 THEN 2  -- 如果有 2
+        WHEN COALESCE(MAX(CASE WHEN r.select_type = 1 THEN 1 ELSE 0 END),0) = 1 THEN 1  -- 如果没有 2,但有 1
         ELSE 0
         END
         <choose>
@@ -566,8 +566,8 @@
         <!-- 合并 HAVING 条件 -->
         HAVING
         CASE
-        WHEN COALESCE(MAX(r.select_type), 0) = 2 THEN 2
-        WHEN COALESCE(MAX(r.select_type), 0) = 1 THEN 1
+        WHEN COALESCE(MAX(CASE WHEN r.select_type = 2 THEN 1 ELSE 0 END),0) = 1 THEN 2  -- 如果有 2
+        WHEN COALESCE(MAX(CASE WHEN r.select_type = 1 THEN 1 ELSE 0 END),0) = 1 THEN 1  -- 如果没有 2,但有 1
         ELSE 0
         END
         <choose>