소스 검색

Merge branch 'master' of http://gogs.gisvg.com/YDM/graduate

47 3 달 전
부모
커밋
eb7c2cd33b

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

@@ -194,9 +194,29 @@ public class StudentSelectSupervisorRecordController {
             } else if (record2 != null) {
                 return error(1, "还有请求在待处理中");
             }
+            //更新志愿
+            UserSaveReqVO saveReqVO = new UserSaveReqVO();
+            saveReqVO.setId(createReqVO.getStudentId());
+
+    //            设置导师id和校外导师id
+            if (createReqVO.getSupervisorId() != null) {
+                AdminUserDO supervisor = adminUserService.getUser(createReqVO.getSupervisorId());
+                if (supervisor != null) {
+                    if (supervisor.getUserType().equals("3")) { //如果是校内导师
+                        saveReqVO.setSupervisorId(createReqVO.getSupervisorId());
+                    } else if (supervisor.getUserType().equals("5")) {//如果是校外导师
+                        saveReqVO.setExternalSupervisorId(createReqVO.getSupervisorId());
+                        //还要添加校内导师的id(直接就是校外导师的合作导师)
+                        if (supervisor.getSupervisorId() != null && supervisor.getSupervisorId() != 0) {
+                            saveReqVO.setSupervisorId(supervisor.getSupervisorId());
+                        }
+                    }
+                }
+            }
             createReqVO.setProjectId(project.getId());
             createReqVO.setSelectType(2);//同意
 
+            adminUserService.updateUser(saveReqVO);
             studentSelectSupervisorRecordService.createStudentSelectSupervisorRecord(createReqVO);
         return success("请求提交成功");
     }
@@ -232,7 +252,7 @@ public class StudentSelectSupervisorRecordController {
                 return error(1, "该老师专硕名额已经满了");
             }
         }
-            //更新志愿
+
             UserSaveReqVO saveReqVO = new UserSaveReqVO();
             saveReqVO.setId(record.getStudentId());
 
@@ -251,7 +271,8 @@ public class StudentSelectSupervisorRecordController {
                     }
                 }
             }
-
+        //更新记录
+          record.setSupervisorId(updateReqVO.getSupervisorId());
           if (record.getSelectType() == 2) {//同意了的
                 //初始化记录里面的签名 TODO
                 record.setSupervisorApproveTime(null);//审批时间
@@ -262,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));

+ 23 - 5
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,16 +180,25 @@ public class studentSelectionProjectController {
                 .collect(Collectors.toList());
 
         // 更新已有的导师(名额发生变化的导师)
-        for (supervisorSelectionSettingDO supervisor : originSupervisors) {
+        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) {
+                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")));
                 settingSaveReqVO.setProfessionalSlots(Integer.valueOf(supervisorQuota.get("professionalSlots")));
                 supervisorSelectionSettingService.updateSupervisorSelectionSetting(settingSaveReqVO);
@@ -191,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();

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

@@ -85,4 +85,10 @@ public class StudentProjectRespVO {
     @Schema(description = "项目id")
     private Long projectId;
 
+    @Schema(description = "选中的导师Id")
+    private String selectSupervisorId;
+
+    @Schema(description = "选中的导师名称")
+    private String selectSupervisor;
+
 }

+ 4 - 4
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/studentAttendance/StudentAttendanceMapper.java

@@ -54,11 +54,11 @@ public interface StudentAttendanceMapper extends BaseMapperX<StudentAttendanceDO
                 .orderByDesc(StudentAttendanceDO::getClockInTime);
 
         if (roleIds != null && !roleIds.isEmpty()) {
-            if (roleIds.contains(113L)) {//是教师 只出现在老师工作间下面的学生考勤情况
-                if(dept_id != null && dept_id != 0 ){
+            if (roleIds.contains(113L)) {//是教师 导师下面的
+                if (dept_id==null||dept_id==0) {
+                    queryWrapper.eqIfPresent(StudentAttendanceDO::getSupervisorId, loginId);
+                }else {
                     queryWrapper.eqIfPresent(StudentAttendanceDO::getDeptId, dept_id);
-                }else {//不查
-                    queryWrapper.eqIfPresent(StudentAttendanceDO::getDeptId,-1);
                 }
             } else if (roleIds.contains(112L)) {//是学生,只显示自己的
                 queryWrapper.eqIfPresent(StudentAttendanceDO::getStudentId, loginId);

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

@@ -426,11 +426,11 @@
 
     <select id="getIsPassedStudentsPage" resultType="cn.iocoder.yudao.module.system.controller.admin.user.vo.user.StudentProjectRespVO">
         SELECT
-        a.*,r.id,r.project_id,
+        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
@@ -442,7 +442,9 @@
         COALESCE(system_dept.name, "测绘学院") AS deptName,
         supervisor_user.nickname AS supervisor,
         supervisor_user.mobile AS supervisorMobile,
-        externalSupervisor_user.nickname AS externalSupervisor
+        externalSupervisor_user.nickname AS externalSupervisor,
+        selectSupervisor_user.nickname AS selectSupervisor,
+        r.supervisor_id AS selectSupervisorId
         FROM
         system_users a
         LEFT JOIN
@@ -452,6 +454,8 @@
         LEFT JOIN
         system_users externalSupervisor_user ON externalSupervisor_user.id = a.external_supervisor_id AND externalSupervisor_user.deleted = 0
         LEFT JOIN
+        system_users selectSupervisor_user ON selectSupervisor_user.id = a.id AND selectSupervisor_user.deleted = 0
+        LEFT JOIN
         system_dept system_dept ON system_dept.id = a.dept_id
         WHERE
         1=1
@@ -495,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>
@@ -520,6 +524,7 @@
         LEFT JOIN student_select_supervisor_record r ON r.student_id = a.id AND r.deleted = 0 AND r.project_id = #{projectId}
         LEFT JOIN system_users supervisor_user ON supervisor_user.id = a.supervisor_id AND supervisor_user.deleted = 0
         LEFT JOIN system_users externalSupervisor_user ON externalSupervisor_user.id = a.external_supervisor_id AND externalSupervisor_user.deleted = 0
+        LEFT JOIN system_users selectSupervisor_user ON selectSupervisor_user.id = a.id AND selectSupervisor_user.deleted = 0
         LEFT JOIN system_dept system_dept ON system_dept.id = a.dept_id
         WHERE 1 = 1
         <if test="reqVO.username != null and reqVO.username != ''">
@@ -561,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>